summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-08-31 20:06:06 -0500
committerCraig Jennings <c@cjennings.net>2025-08-31 20:06:06 -0500
commit719a5fc3d10c2e8852423575100c1b0b7ac2192d (patch)
tree273a1f8e80b40d7d150e350554462952ed54efae /modules
parentf6e4ddeafdcf6184355cc9d0c70035019718447c (diff)
downloaddotemacs-719a5fc3d10c2e8852423575100c1b0b7ac2192d.tar.gz
dotemacs-719a5fc3d10c2e8852423575100c1b0b7ac2192d.zip
configured anthropic's claude. Genericized assistant org heading
Diffstat (limited to 'modules')
-rw-r--r--modules/ai-config.el56
1 files changed, 33 insertions, 23 deletions
diff --git a/modules/ai-config.el b/modules/ai-config.el
index a94d23fa8..9ab14cfde 100644
--- a/modules/ai-config.el
+++ b/modules/ai-config.el
@@ -52,14 +52,14 @@
(defvar ai-keymap
(let ((map (make-sparse-keymap)))
- (define-key map (kbd "t") #'cj/toggle-gptel)
- (define-key map (kbd "x") #'cj/gptel-clear-buffer)
- (define-key map (kbd "m") #'gptel-menu)
+ (define-key map (kbd "t") #'cj/toggle-gptel)
+ (define-key map (kbd "x") #'cj/gptel-clear-buffer)
+ (define-key map (kbd "m") #'gptel-menu)
(define-key map (kbd "r") #'gptel-rewrite)
(define-key map (kbd "f") #'gptel-add-file)
(define-key map (kbd "b") #'gptel-add-buffer)
- (define-key map (kbd "p") #'gptel-system-prompt)
- map)
+ (define-key map (kbd "p") #'gptel-system-prompt)
+ map)
"Keymap for AI-related commands (prefix \\<ai-keymap>).")
(global-set-key (kbd "M-a") ai-keymap)
@@ -76,24 +76,24 @@
(gptel-expert-commands t)
(gptel-track-media t)
(gptel-include-reasoning 'ignore)
- (gptel-model 'o4-mini) ;; keep or change to your preferred model
+ (gptel-model 'o4-mini) ;; default only - may change in config below
(gptel-log-level 'info)
(gptel--debug nil)
:config
- ;; Directives
+ ;; Directives -- see ai-directives.el in modules directory.
(setq gptel-directives
- `((default . ,default-directive)
- (accountant . ,accountant-directive)
- (coder . ,coder-directive)
- (chat . ,chat-directive)
- (contractor . ,contractor-directive)
- (emacs . ,emacs-directive)
- (email . ,email-directive)
- (historian . ,historian-directive)
- (proofreader . ,proofreader-directive)
- (llm-prompt . ,prompt-directive)
- (qa . ,qa-directive)
- (reviewer . ,reviewer-directive)))
+ `((default . ,default-directive)
+ (accountant . ,accountant-directive)
+ (coder . ,coder-directive)
+ (chat . ,chat-directive)
+ (contractor . ,contractor-directive)
+ (emacs . ,emacs-directive)
+ (email . ,email-directive)
+ (historian . ,historian-directive)
+ (proofreader . ,proofreader-directive)
+ (llm-prompt . ,prompt-directive)
+ (qa . ,qa-directive)
+ (reviewer . ,reviewer-directive)))
;; Dynamic user prefix for org-mode heading (string, refreshed just before send)
(defun cj/gptel--fresh-org-prefix ()
@@ -109,12 +109,12 @@
(cj/gptel--fresh-org-prefix)))
(advice-add 'gptel-send :before #'cj/gptel--refresh-org-prefix)
- ;; AI header on each reply: (e.g. "*** ChatGPT: <model> [timestamp]")
+ ;; AI header on each reply: (e.g. "*** AI: <model> [timestamp]")
(defun cj/gptel-backend-and-model ()
"Return backend, model, and timestamp as a single string."
(let* ((backend (pcase (bound-and-true-p gptel-backend)
((and v (pred vectorp)) (aref v 1)) ;; display name if vector
- (_ "ChatGPT")))
+ (_ "AI")))
(model (format "%s" (or (bound-and-true-p gptel-model) "")))
(ts (format-time-string "[%Y-%m-%d %H:%M:%S]")))
(format "%s: %s %s" backend model ts)))
@@ -126,7 +126,7 @@
(insert (format "*** %s\n" (cj/gptel-backend-and-model)))))
(defun cj/gptel-clear-buffer ()
- "Erase the contents of the *AI-Assistant* buffer leaving initial org heading."
+ "Erase the contents of the *AI-Assistant* buffer leaving initial org heading."
(interactive)
(let ((buf (get-buffer "*AI-Assistant*")))
(if (not buf)
@@ -142,7 +142,15 @@
;; ---- Auth: pick the API key from your auth source
(setq auth-sources `((:source ,authinfo-file)))
- (setq gptel-api-key (auth-source-pick-first-password :host "api.openai.com")))
+ (setq gptel-api-key (auth-source-pick-first-password :host "api.openai.com"))
+ (setq anthropic-api-key (auth-source-pick-first-password :host "api.anthropic.com"))
+
+ ;; Setup Anthropic's Claude
+ (setq gptel-backend (gptel-make-anthropic "Claude"
+ :stream t :key anthropic-api-key))
+ (setq gptel-model 'claude-3-opus-4-20250514)
+
+ )
;; -------------------------------- GPTel-Magit --------------------------------
@@ -150,5 +158,7 @@
:defer t
:hook (magit-mode . gptel-magit-install))
+
+
(provide 'ai-config)
;;; ai-config.el ends here