gptel: Fix model/backend mismatch (#242)

* gptel.el (gptel--sanitize-model, gptel): Check for mismatches
between the default values of gptel-backend and gptel-model when
starting a new gptel chat.  Previously the default value of
gptel-backend was compared against the buffer-local value of
gptel-model.
This commit is contained in:
Karthik Chikmagalur 2024-03-09 14:26:45 -08:00
parent 5e9e36d854
commit 3d6147830e

View file

@ -1210,19 +1210,20 @@ See `gptel-curl--get-response' for its contents.")
"Could not parse HTTP response."))))) "Could not parse HTTP response.")))))
(cl-defun gptel--sanitize-model (&key (backend gptel-backend) (cl-defun gptel--sanitize-model (&key (backend gptel-backend)
(model gptel-model)
(shoosh t)) (shoosh t))
"Check if `gptel-model' is available in BACKEND, adjust accordingly. "Check if MODEL is available in BACKEND, adjust accordingly.
If SHOOSH is true, don't issue a warning." If SHOOSH is true, don't issue a warning."
(let* ((available (gptel-backend-models backend))) (let* ((available (gptel-backend-models backend)))
(unless (member gptel-model available) (unless (member model available)
(let ((fallback (car available))) (let ((fallback (car available)))
(unless shoosh (unless shoosh
(display-warning (display-warning
'gptel 'gptel
(format (concat "Preferred `gptel-model' \"%s\" not" (format (concat "Preferred `gptel-model' \"%s\" not"
"supported in \"%s\", using \"%s\" instead") "supported in \"%s\", using \"%s\" instead")
gptel-model (gptel-backend-name backend) fallback))) model (gptel-backend-name backend) fallback)))
(setq-local gptel-model fallback))))) (setq-local gptel-model fallback)))))
;;;###autoload ;;;###autoload
@ -1265,6 +1266,7 @@ INTERACTIVEP is t when gptel is called interactively."
(visual-line-mode 1)) (visual-line-mode 1))
(t (funcall gptel-default-mode))) (t (funcall gptel-default-mode)))
(gptel--sanitize-model :backend (default-value 'gptel-backend) (gptel--sanitize-model :backend (default-value 'gptel-backend)
:model (default-value 'gptel-model)
:shoosh nil) :shoosh nil)
(unless gptel-mode (gptel-mode 1)) (unless gptel-mode (gptel-mode 1))
(goto-char (point-max)) (goto-char (point-max))