karthink / gptel

A simple LLM client for Emacs
GNU General Public License v3.0
1.04k stars 113 forks source link

Error when calling gptel : (wrong-type-argument gptel-backend nil) #187

Open Jedyle opened 5 months ago

Jedyle commented 5 months ago

Hello,

I'm experiencing an issue than occurs only from the version that adds multi-llm support (https://github.com/karthink/gptel/commit/6419e8f021ef46d9657cbd9bdf631e33378eedeb). Previous versions work for me.

When calling gptel, I get the following error : (wrong-type-argument gptel-backend nil)

Here's my init.el setup

(straight-use-package 'gptel)

(defun read-gptkey-file ()
  "Read the content of `.gptkey' file in `~/.emacs.d/'."
  (with-temp-buffer
    (insert-file-contents (expand-file-name ".gptkey" (concat user-emacs-directory)))
    (buffer-string)))
(setq gptel-api-key (read-gptkey-file))
(setq gptel-model "gpt-3.5-turbo")

Here the error trace :


Debugger entered--Lisp error: (wrong-type-argument gptel-backend nil)
  signal(wrong-type-argument (gptel-backend nil))
  (or (and (memq (type-of backend) cl-struct-gptel-backend-tags) t) (signal 'wrong-type-argument (list 'gptel-backend backend)))
  (progn (or (and (memq (type-of backend) cl-struct-gptel-backend-tags) t) (signal 'wrong-type-argument (list 'gptel-backend backend))) (aref backend 1))
  (format "*%s*" (progn (or (and (memq (type-of backend) cl-struct-gptel-backend-tags) t) (signal 'wrong-type-argument (list 'gptel-backend backend))) (aref backend 1)))
  (let* ((backend (default-value 'gptel-backend)) (backend-name (format "*%s*" (progn (or (and (memq ... cl-struct-gptel-backend-tags) t) (signal 'wrong-type-argument (list ... backend))) (aref backend 1))))) (list (if current-prefix-arg (read-string "Session name: " (generate-new-buffer-name backend-name)) backend-name) (condition-case nil (gptel--get-api-key (progn (or (and (memq ... cl-struct-gptel-backend-tags) t) (signal 'wrong-type-argument (list ... backend))) (aref backend 7))) ((error user-error) (setq gptel-api-key (read-passwd (format "%s API key: " backend-name))))) (and (use-region-p) (buffer-substring (region-beginning) (region-end))) t))
  call-interactively(gptel record nil)
  command-execute(gptel record)
  execute-extended-command(nil "gptel" "gptel")
  funcall-interactively(execute-extended-command nil "gptel" "gptel")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)```

My emacs version is 27.1.

Thanks by advance
karthink commented 5 months ago

It looks like something went wrong during the upgrade. Could you try the following?

  1. Delete and reinstall gptel (instead of upgrading)
  2. If that doesn't work, could you try manually loading gptel.el and gptel-openai.el? One way to do this would be with M-x load-library gptel and M-x load-library gptel-openai.