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
|
;; ** 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 ()
|
(transient-define-infix gptel--infix-num-messages-to-send ()
|
||||||
"Number of recent messages to send with each exchange.
|
"Number of recent messages to send with each exchange.
|
||||||
|
|
||||||
|
@ -242,7 +246,7 @@ include."
|
||||||
:variable 'gptel--num-messages-to-send
|
:variable 'gptel--num-messages-to-send
|
||||||
:key "n"
|
:key "n"
|
||||||
:prompt "Number of past messages to include for context (leave empty for all): "
|
: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 ()
|
(transient-define-infix gptel--infix-max-tokens ()
|
||||||
"Max tokens per response.
|
"Max tokens per response.
|
||||||
|
@ -259,7 +263,7 @@ will get progressively longer!"
|
||||||
:variable 'gptel-max-tokens
|
:variable 'gptel-max-tokens
|
||||||
:key "<"
|
:key "<"
|
||||||
:prompt "Response length in tokens (leave empty: default, 80-200: short, 200-500: long): "
|
: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 ()
|
(transient-define-infix gptel--infix-model ()
|
||||||
"AI Model for Chat."
|
"AI Model for Chat."
|
||||||
|
@ -279,9 +283,8 @@ will get progressively longer!"
|
||||||
:class 'transient-lisp-variable
|
:class 'transient-lisp-variable
|
||||||
:variable 'gptel-temperature
|
:variable 'gptel-temperature
|
||||||
:key "t"
|
:key "t"
|
||||||
:reader (lambda (&rest _)
|
:prompt "Set temperature (0.0-2.0, leave empty for default): "
|
||||||
(read-from-minibuffer "Set temperature (0.0-2.0, leave empty for default): "
|
:reader 'gptel--transient-read-variable)
|
||||||
(number-to-string gptel-temperature))))
|
|
||||||
|
|
||||||
;; ** Infix for the refactor/rewrite system message
|
;; ** Infix for the refactor/rewrite system message
|
||||||
|
|
||||||
|
|
7
gptel.el
7
gptel.el
|
@ -630,8 +630,7 @@ there."
|
||||||
(goto-char (point-max))))
|
(goto-char (point-max))))
|
||||||
(t (goto-char (or prompt-end (point-max)))))
|
(t (goto-char (or prompt-end (point-max)))))
|
||||||
(let ((max-entries (and gptel--num-messages-to-send
|
(let ((max-entries (and gptel--num-messages-to-send
|
||||||
(* 2 (gptel--numberize
|
(* 2 gptel--num-messages-to-send)))
|
||||||
gptel--num-messages-to-send))))
|
|
||||||
(prop) (prompts))
|
(prop) (prompts))
|
||||||
(while (and
|
(while (and
|
||||||
(or (not max-entries) (>= max-entries 0))
|
(or (not max-entries) (>= max-entries 0))
|
||||||
|
@ -659,9 +658,9 @@ there."
|
||||||
:messages [,@prompts]
|
:messages [,@prompts]
|
||||||
:stream ,(or (and gptel-stream gptel-use-curl) :json-false))))
|
:stream ,(or (and gptel-stream gptel-use-curl) :json-false))))
|
||||||
(when gptel-temperature
|
(when gptel-temperature
|
||||||
(plist-put prompts-plist :temperature (gptel--numberize gptel-temperature)))
|
(plist-put prompts-plist :temperature gptel-temperature))
|
||||||
(when gptel-max-tokens
|
(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))
|
prompts-plist))
|
||||||
|
|
||||||
;; TODO: Use `run-hook-wrapped' with an accumulator instead to handle
|
;; TODO: Use `run-hook-wrapped' with an accumulator instead to handle
|
||||||
|
|
Loading…
Add table
Reference in a new issue