feat(ai): Add gptel switch and allow use ollama alongside gemini
This commit is contained in:
@@ -12,26 +12,24 @@
|
||||
;; Cliente LLM (ollama, chatgpt, gemini, etc.)
|
||||
(use-package gptel
|
||||
:config
|
||||
(if (getenv "GEMINI_KEY")
|
||||
(setq gptel-model 'gemini-2.5-flash
|
||||
gptel-backend (gptel-make-gemini "Gemini"
|
||||
:key (getenv "GEMINI_KEY")
|
||||
:stream t))
|
||||
(setq gptel-model 'cajina/gemma4_e2b-q2_k_xl:v01
|
||||
gptel-backend (gptel-make-ollama "Ollama"
|
||||
:host "localhost:11434"
|
||||
:request-params '(:think nil)
|
||||
:stream t
|
||||
:models '("mistral:latest"
|
||||
"deepseek-r1:1.5b"
|
||||
"gemma3n:e2b"
|
||||
"gemma4:e2b"
|
||||
"cajina/gemma4_e2b-q2_k_xl:v01"
|
||||
"deepcoder"
|
||||
"glm-5.1:cloud"
|
||||
"gemma4:latest"
|
||||
"gemini-3-flash-preview:cloud")))
|
||||
)
|
||||
(setq gptel-model 'gemma4:e2b
|
||||
gptel-backend (gptel-make-ollama "Ollama"
|
||||
:host "localhost:11434"
|
||||
:stream t
|
||||
:models '("mistral:latest"
|
||||
"deepseek-r1:1.5b"
|
||||
"gemma3n:e2b"
|
||||
"gemma4:e2b"
|
||||
"cajina/gemma4_e2b-q2_k_xl:v01"
|
||||
"deepcoder"
|
||||
"glm-5.1:cloud"
|
||||
"gemma4:latest"
|
||||
"gemini-3-flash-preview:cloud")))
|
||||
(when (getenv "GEMINI_KEY")
|
||||
(setq gptel-model 'gemini-2.5-flash
|
||||
gptel-backend (gptel-make-gemini "Gemini"
|
||||
:key (getenv "GEMINI_KEY")
|
||||
:stream t)))
|
||||
(setq gptel-default-mode 'org-mode
|
||||
gptel-prompt-prefix-alist
|
||||
'((markdown-mode . "# User\n\n")
|
||||
@@ -44,7 +42,33 @@
|
||||
gptel-directives
|
||||
'((default . "You are a large language model living in Emacs and a helpful assistant. Respond concisely in Spanish."))
|
||||
)
|
||||
(setopt gptel-include-reasoning nil)) ;; Mantener hasta resolver: https://github.com/ragnard/gptel-magit/issues/8
|
||||
(setopt gptel-include-reasoning nil) ;; Mantener hasta resolver: https://github.com/ragnard/gptel-magit/issues/8
|
||||
|
||||
(defun gptel-switch+model ()
|
||||
"Switch to gptel backend and model in a single completion prompt."
|
||||
(interactive)
|
||||
(let (choices)
|
||||
(dolist (pair gptel--known-backends)
|
||||
(let* ((backend-name (car pair))
|
||||
(backend (cdr pair))
|
||||
(models
|
||||
(and (fboundp 'gptel-backend-models)
|
||||
(gptel-backend-models backend))))
|
||||
(when models
|
||||
(dolist (model models)
|
||||
(push (cons ; (format "%s:%s" backend-name model)
|
||||
(format "%s → %s"
|
||||
(propertize backend-name 'face 'font-lock-keyword-face)
|
||||
(propertize (symbol-name model) 'face 'font-lock-function-name-face))
|
||||
(cons backend-name model))
|
||||
choices)))))
|
||||
(let* ((choice
|
||||
(completing-read "Model: " (mapcar #'car choices) nil t))
|
||||
(sel (cdr (assoc choice choices))))
|
||||
(setq gptel-backend (cdr (assoc (car sel) gptel--known-backends))
|
||||
gptel-model (cdr sel))
|
||||
(message "gptel set to %s:%s" (car sel) (cdr sel)))))
|
||||
)
|
||||
|
||||
;; (use-package copilot
|
||||
;; :hook (prog-mode . copilot-mode)
|
||||
|
||||
Reference in New Issue
Block a user