diff --git a/gptel-transient.el b/gptel-transient.el index 9894be0..7a3daa6 100644 --- a/gptel-transient.el +++ b/gptel-transient.el @@ -230,6 +230,10 @@ Customize `gptel-directives' for task-specific prompts." ;; ** Infixes for model parameters +(defun gptel--transient-read-variable (prompt initial-input history) + "Read value from minibuffer and interpret the result as a Lisp object." + (read-from-minibuffer prompt initial-input read-expression-map t history)) + (transient-define-infix gptel--infix-num-messages-to-send () "Number of recent messages to send with each exchange. @@ -242,7 +246,7 @@ include." :variable 'gptel--num-messages-to-send :key "n" :prompt "Number of past messages to include for context (leave empty for all): " - :reader 'transient-read-number-N0) + :reader 'gptel--transient-read-variable) (transient-define-infix gptel--infix-max-tokens () "Max tokens per response. @@ -259,7 +263,7 @@ will get progressively longer!" :variable 'gptel-max-tokens :key "<" :prompt "Response length in tokens (leave empty: default, 80-200: short, 200-500: long): " - :reader 'transient-read-number-N+) + :reader 'gptel--transient-read-variable) (transient-define-infix gptel--infix-model () "AI Model for Chat." @@ -279,9 +283,8 @@ will get progressively longer!" :class 'transient-lisp-variable :variable 'gptel-temperature :key "t" - :reader (lambda (&rest _) - (read-from-minibuffer "Set temperature (0.0-2.0, leave empty for default): " - (number-to-string gptel-temperature)))) + :prompt "Set temperature (0.0-2.0, leave empty for default): " + :reader 'gptel--transient-read-variable) ;; ** Infix for the refactor/rewrite system message diff --git a/gptel.el b/gptel.el index ba7ca40..8759191 100644 --- a/gptel.el +++ b/gptel.el @@ -263,7 +263,7 @@ By default, `gptel-host' is used as HOST and \"apikey\" as USER." secret) (user-error "No `gptel-api-key' found in the auth source"))) -;; FIXME Should we utf-8 encode the api-key here? +;; FIXME Should we utf-8 encode the api-key here? (defun gptel--api-key () "Get api key from `gptel-api-key'." (pcase gptel-api-key @@ -496,7 +496,7 @@ Model parameters can be let-bound around calls to this function." (set-marker (make-marker) position buffer)))) (full-prompt (cond - ((null prompt) + ((null prompt) (let ((gptel--system-message system)) (gptel--create-prompt start-marker))) ((stringp prompt) @@ -630,8 +630,7 @@ there." (goto-char (point-max)))) (t (goto-char (or prompt-end (point-max))))) (let ((max-entries (and gptel--num-messages-to-send - (* 2 (gptel--numberize - gptel--num-messages-to-send)))) + (* 2 gptel--num-messages-to-send))) (prop) (prompts)) (while (and (or (not max-entries) (>= max-entries 0)) @@ -659,9 +658,9 @@ there." :messages [,@prompts] :stream ,(or (and gptel-stream gptel-use-curl) :json-false)))) (when gptel-temperature - (plist-put prompts-plist :temperature (gptel--numberize gptel-temperature))) + (plist-put prompts-plist :temperature gptel-temperature)) (when gptel-max-tokens - (plist-put prompts-plist :max_tokens (gptel--numberize gptel-max-tokens))) + (plist-put prompts-plist :max_tokens gptel-max-tokens)) prompts-plist)) ;; TODO: Use `run-hook-wrapped' with an accumulator instead to handle