diff --git a/configs/init-ai.el b/configs/init-ai.el index 9088aee..7bbb6f0 100644 --- a/configs/init-ai.el +++ b/configs/init-ai.el @@ -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)