Skip to content

Commit

Permalink
feat(ai): neo-configurations for gptel
Browse files Browse the repository at this point in the history
I misunderstand gptel for a long time. It's powerful and flexible, allow me to
ask LLM in any buffer and write in org-mode style, even persist chatting
sessions in text files. With customized directives and system messages, I can
make LLM play different roles - that's amazing!
  • Loading branch information
rennsax committed Sep 21, 2024
1 parent b7655f6 commit 6c1cf96
Showing 1 changed file with 37 additions and 10 deletions.
47 changes: 37 additions & 10 deletions lisp/init-ai.el
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,50 @@
;;; Commentary:
;;; Code:


;;; gptel
(use-package gptel
:init
(celeste/prepare-package transient)
(celeste/prepare-package compat)
(celeste/prepare-package gptel)
:commands (gptel
gptel-send)
(celeste/prepare-package (transient compat markdown-mode))
(celeste/package-autoload 'gptel)
(with-eval-after-load 'embark
(defvar-keymap embark-gptel-map
:doc "Keymap for gptel."
:parent nil
"a" #'gptel-add
"m" #'gptel-menu
"s" #'gptel-send)
(fset 'embark-gptel-map embark-gptel-map)
(keymap-set embark-region-map "g" #'embark-gptel-map))
:config
;; `gptel-curl-get-response'
(require 'gptel-curl)
;; `gptel-system-prompt'
(require 'gptel-transient)
(setq gptel-display-buffer-action nil)
(setq gptel-default-mode 'org-mode)
(add-hook 'gptel-mode-hook
(defun +gptel-mode-override-settings ()
(when (fboundp 'whitespace-display-mode)
(whitespace-display-mode -1))
(auto-fill-mode -1)
(visual-line-mode +1)))

;; Customize prompt/response prefixes. These prefixes will be trimmed to form
;; the final request body, check `gptel--parse-buffer'.
(setq gptel-prompt-prefix-alist
'((markdown-mode . "**Prompt**: ")
(org-mode . "*Prompt*: ")
(text-mode . "### ")))
(setq gptel-response-prefix-alist
'((markdown-mode . "**Response**:\n")
(org-mode . "*Response*:\n")
(text-mode . "")))

;; This is necessary for using `gptel-menu' in Vterm buffer.
(with-eval-after-load 'vterm
(keymap-unset vterm-copy-mode-map "<return>" t))

(setq gptel-display-buffer-action (list #'display-buffer-same-window))
)



(provide 'init-ai)
;;; init-ai.el ends here

Expand Down

0 comments on commit 6c1cf96

Please sign in to comment.