gptel, gptel-transient: Fix read temperature from minibuffer (#85)
gptel-transient.el (gtel--transient-read-variable): Use a custom transient infix reader. gptel.el (gptel--request-data): Don't use `gptel--numberize'.
This commit is contained in:
parent
b92fc389d7
commit
a660e13a8b
2 changed files with 13 additions and 11 deletions
|
@ -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
|
||||
|
||||
|
|
11
gptel.el
11
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
|
||||
|
|
Loading…
Add table
Reference in a new issue