README.org
October 31, 2023 ยท View on GitHub
#+TITLE: ChatGPT.el
[[https://chat.openai.com/chat][ChatGPT]] in Emacs.
** Features
- Send regions of text to ChatGPT
- Syntax highlighting for returned code
- Uses [[https://github.com/llm-workflow-engine/llm-workflow-engine][llm-workflow-engine]], so can customize as needed ** News
- 9/10/2023: Status - I use this every day and is stable. Please submit an issue if not.
- 7/8/2023: Shortcut customization has been reworked, see [[Code Query Shortcuts][here]].
** Installation
*** Dependency
Set your [[https://platform.openai.com/account/api-keys][OpenAI API key]]. In
.zshrc/bashrc, #+begin_src shell export OPENAI_API_KEY=<API_KEY> #+end_src For Windows users, see [[https://www.computerhope.com/issues/ch000549.htm][here]].
Install [[https://github.com/llm-workflow-engine/llm-workflow-engine][llm-workflow-engine]] (lwe): #+begin_src shell pip install --upgrade pip pip install setuptools pip install git+https://github.com/llm-workflow-engine/llm-workflow-engine #+end_src
If you encounter any problems, please submit an issue or refer to [[https://github.com/llm-workflow-engine/llm-workflow-engine][llm-workflow-engine]] (formerly chatgpt-wrapper).
*** [[https://github.com/radian-software/straight.el][Straight]] #+begin_src emacs-lisp (use-package chatgpt :straight (:host github :repo "joshcho/ChatGPT.el" :files ("dist" "*.el")) :bind ("C-c q" . chatgpt-query)) #+end_src
*** [[https://github.com/quelpa/quelpa][Quelpa]] #+begin_src emacs-lisp (require 'quelpa-use-package) (use-package chatgpt :quelpa ((chatgpt :fetcher git :url "https://github.com/joshcho/ChatGPT.el.git") :upgrade t) :bind ("C-c q" . chatgpt-query)) #+end_src
*** [[https://www.spacemacs.org/][Spacemacs]]
Assuming Quelpa installation:
In dotspacemacs/user-config function,
#+begin_src emacs-lisp
(global-set-key (kbd "C-c q") #'chatgpt-query)
#+end_src
In dotspacemacs/layers function for setq-default,
#+begin_src emacs-lisp
dotspacemacs-additional-packages
'(
(chatgpt :location (recipe
:fetcher github
:repo "joshcho/ChatGPT.el"))
;; other additional packages...
)
#+end_src
*** [[https://github.com/doomemacs/doomemacs][Doom Emacs]]
In packages.el ,
#+begin_src emacs-lisp
(package! chatgpt
:recipe (:host github :repo "joshcho/ChatGPT.el" :files ("dist" "*.el")))
#+end_src
In config.el ,
#+begin_src emacs-lisp
(use-package! chatgpt
:defer t
:bind ("C-c q" . chatgpt-query))
#+end_src
** Usage
Press C-c q to query ChatGPT. Select a code block before C-c q to query the code.
** Customization
*** Chat
Configure default model, system message, browser backend, etc. with [[https://llm-workflow-engine.readthedocs.io/en/latest/configuration.html][llm-workflow-engine]].
*** Code Query Shortcuts
Customize chatgpt-code-query-map for your own prompt shortcuts. Note that "custom" is a reserved prompt shortcut.
#+begin_src emacs-lisp (setq chatgpt-code-query-map '( ;; ChatGPT.el defaults, string for each shortcut ("bug" . "There is a bug in the following, please help me fix it.") ("doc" . "Please write the documentation for the following.") ("improve" . "Please improve the following.") ("understand" . "What is the following?") ("refactor" . "Please refactor the following.") ("suggest" . "Please make suggestions for the following.") ;; your shortcut ("prompt-name" . "My custom prompt."))) #+end_src
If you previously had customizations, note that we use strings now, not format strings.
** Limitations
- Multiline input is not supported yet
** Related Projects