Forked from github.com/karthink/gptel
Find a file
Karthik Chikmagalur 88995a6436 gptel-curl: Add curl module and playback feature.
Conditionally solves #2.

gptel.el (gptel-use-curl, gptel-parse-response, gptel--playback,
gptel-send, gptel-playback): New user options `gptel-playback',
`gptel-use-curl`. The former controls whether the response is played
back in chunks, which is done by the function `gptel--playback'. The
response returned by `gptel-get-response' and `gptel--curl-get-response'
is now a plist with the content and status.

gptel-curl.el (gptel--curl-get-args, gptel--curl-get-response,
gptel--curl-sentinel): Add support for curl when available.  Set it to
the default. `url-retrieve' is full of fangs that multibyte you.
2023-03-08 01:22:14 -08:00
img Add gptel.el and a README. 2023-03-05 18:13:32 -08:00
gptel-curl.el gptel-curl: Add curl module and playback feature. 2023-03-08 01:22:14 -08:00
gptel.el gptel-curl: Add curl module and playback feature. 2023-03-08 01:22:14 -08:00
README.org Update license. 2023-03-05 18:13:32 -08:00

GPTel: A simple ChatGPT client for Emacs

GPTel is a simple, no-frills ChatGPT client for Emacs.

/tristan/gptel/media/commit/88995a643616e7853e9abbeee67cf470458110d8/img/gptel.png

  • Requires an OpenAI API key.
  • No external dependencies, only Emacs. Also, it's async.
  • Interaction is in a Markdown (or text) buffer.
  • Supports conversations (not just one-off queries) and multiple independent sessions.
  • You can go back and edit your previous prompts, or even ChatGPT's previous responses when continuing a conversation. These will be fed back to ChatGPT.

Installation

Package.el

Clone this repository and run M-x package-install-file.

Installing the markdown-mode package is optional.

Straight

  (straight-use-package '(gptel :host github :repo "karthink/gptel"))

Installing the markdown-mode package is optional.

Manual

Install emacs-aio, (M-x package-install⏎ emacs-aio⏎), then clone this repository and load this file:

(add-to-list 'load-path "/path/to/gptel/")
(require 'gptel)

Installing the markdown-mode package is optional.

Usage

Procure an OpenAI API key.

Optional: Set gptel-api-key to the key or to a function that returns the key (more secure).

Run M-x gptel to start or switch to the ChatGPT buffer. It will ask you for the key if you skipped the previous step.

Run it with a prefix-arg (C-u M-x gptel) to start a new session.

In the gptel buffer, send your prompt with M-x gptel-send, bound to C-c RET.

That's it. You can go back and edit previous prompts and responses if you want.

Why another ChatGPT client?

Existing Emacs clients don't reliably let me use it the simple way I can in the browser. They will get better, but I wanted something for now.

Also, AI-assisted work is a new way to use Emacs. It's not yet clear what the best Emacs interface to tools like it is.

  • Should it be part of CAPF (completions-at-point-functions)?
  • A dispatch menu from anywhere that can act on selected regions?
  • A comint/shell-style REPL?
  • One-off queries in the minibuffer (like shell-command)?
  • A refactoring tool in code buffers?
  • An org-babel interface?

Maybe all of these, I don't know yet. As a start, I wanted to replicate the web browser usage pattern so I can build from there and don't need to switch to the browser every time. The code is very minimal right now at ~150 lines.

Will you add feature X?

Maybe, I'd like to experiment a bit first.

  • Support for Org Mode instead of Markdown, including source blocks etc, is planned.
  • I'm experimenting with using it in code buffers.