Skip to content

Releases: karthink/gptel

Version v0.9.7

05 Dec 04:23
Compare
Choose a tag to compare

Version 0.9.7 adds dynamic directives, a better rewrite interface, streaming support to the gptel request API, and more flexible model/backend configuration

Breaking changes

gptel-rewrite-menu has been obsoleted. Use gptel-rewrite instead.

Backends

  • Add support for OpenAI's o1-preview and o1-mini
  • Add support for Anthropic's Claude 3.5 Haiku
  • Add support for xAI (contributed by @WuuBoLin)
  • Add support for Novita AI (contributed by @jasonhp)

Notable new features and UI changes

gptel's directives (see gptel-directives) can now be dynamic, and include more than the system message. You can "pre-fill" a conversation with canned user/LLM messages. Directives can now be functions that dynamically generate the system message and conversation history based on the current context. This paves the way for fully flexible task-specific templates, which the UI does not yet support in full. This design was suggested by @meain. (#375)

gptel's rewrite interface has been reworked. If using a streaming endpoint, the rewritten text is streamed in as a preview placed over the original. In all cases, clicking on the preview brings up a dispatch you can use to easily diff, ediff, merge, accept or reject the changes (4ae9c1b), and you can configure gptel to run one of these actions automatically. See the README for examples. This design was suggested by @meain. (#375)

gptel-abort, used to cancel requests in progress, now works across the board, including when not using Curl or with gptel-rewrite (7277c00).

The gptel-request API now explicitly supports streaming responses (7277c00), making it easy to write your own helpers or features with streaming support. The API also supports gptel-abort to stop and clean up responses.

You can now unset the system message -- different from setting it to an empty string. gptel will also automatically disable the system message when using models that don't support it (0a2c07a).

Support for including PDFs with requests to Anthropic models has been added. (These queries are cached, so you pay only 10% of the token cost of the PDF in follow-up queries.) Note that document support (PDFs etc) for Gemini models has been available since v0.9.5. (0f173ba, #459)

When defining a gptel model or backend, you can specify arbitrary parameters to be sent with each request. This includes the (many) API options across all APIs that gptel does not yet provide explicit support for (bcbbe67). This feature was suggested by @tillydray (#471).

New transient command option to easily remove all included context chunks (a844612), suggested by @metachip and @gavinhughes.

Bug fixes and other news

  • Pressing RET on included files in the context inspector buffer now pops up the file correctly.
  • API keys are stripped of whitespace before sending.
  • Multiple UI, backend and prompt construction bugs have been fixed.

Pull requests

New Contributors

Full Changelog: v0.9.6...v0.9.7

Version v0.9.6

17 Oct 05:14
Compare
Choose a tag to compare

Version 0.9.6 is a bugfix release

New features and UI changes

gptel now displays more model details when switching the active LLM. This includes model descriptions, capabilities, context window sizes, input and output costs and the last time the model was updated by the provider. This feature was contributed by @benthamite.

Bug fixes

The last release included bugs that made gptel unusable with the Gemini backend. These have been fixed.

Contributors

Full Changelog: v0.9.5...v0.9.6

Version v0.9.5

12 Oct 08:04
Compare
Choose a tag to compare

Version 0.9.5 adds support for media/images, better rewrite interface, more models/backends

Breaking changes

The value of gptel-model, the LLM in use, is now expected to be a symbol, not a string. This change is necessary to support per-model capabilities like image support. As of this release, gptel deals with models specified as strings gracefully and issues a warning, but this will be an unhandled error in future releases.

Backends

  • Add support for Deepseek (contributed by @jamorphy)
  • Add support for Cerebras (#372, contributed by @bytegorilla)
  • Add support for OpenAI's gpt-4o-mini
  • Add support for Gemini's gemini-1.5-flash and gemini-1.5-pro
  • Add support for Github Models (#386, contributed by @gs-101)
  • Add support for system messages to Gemini models, as the API now supports them

New features

gptel now supports multi-modal models, i.e. models that can accept image or other binary input. Supported media files can be added to the context with gptel-add-file, or included as links in chat buffers. See the README for more information.

You can now specify more model metadata when defining gptel-models. This includes a description string, supported capabilities and a list of supported mime-types for multi-modal input. See the documentation of any of the backend-creation functions gptel-make-* for details.

UI changes

gptel's "rewrite" or "refactoring" interface has been redesigned. Rewriting is now a two step process, but stays out of your way and provides better control over how changes are applied: you can evaluate the suggested changes via a diff/ediff/merge conflict + smerge interface and apply them granularly. See the README for details.

Bug fixes and other news

  • Fix incompatibilities with older Org versions (< 9.7).
  • Fix prompt creation bugs in Org mode.
  • Fix more bugs with setting transient switches buffer-locally in gptel-menu.

New Contributors, Acknowledgments

Thanks to @daedsidog, @bradmont, @mateialexandru, @wlauppe and @nfedyashev for discussions and feedback.

Full Changelog: v0.9.0...v0.9.5

Version 0.9.0

24 Jun 02:07
Compare
Choose a tag to compare

Version 0.9.0 adds gptel-context and support for more models/backends

Backends

  • Add support for OpenAI's gpt-4o (#313, contributed by @axelknock)
  • Add support for Anthropic's claude-3-5-sonnet-20240620 (#331, contributed by @erwald).
  • Add support for the PrivateGPT backend (#312, contributed by @Aquan1412).

New feature

gptel can now include arbitrary regions, buffers or files with requests. This is useful as background context for queries. For example, when you want to talk about the contents of code buffers/files in your project in a chat buffer. These additional contexts are "live" and not "snapshots", i.e. they are scanned at the time of the query.

This feature is available via the gptel-add command or from gptel's transient menu. See the README for more details.

This feature was contributed by @daedsidog.

UI changes

  • Calling M-x gptel now asks the user to pick an existing chat buffer or name a new one. A suitable default name is chosen if the user leaves the field blank. The prefix-arg behavior of gptel has been removed for now.
  • New option gptel-track-response in non-chat buffers to control whether gptel distinguishes between the user's prompts and LLM responses. (The two are always distinguished in dedicated chat buffers.) This option can also be set from the transient menu.

Bug fixes and other news

  • gptel-org-branching-context now requires Org 9.67 or later.
  • Fix bugs with one-shot Markdown to Org conversion.
  • Fix bugs with setting transient switches buffer-locally in gptel-menu.

Version 0.8.6

01 May 20:22
Compare
Choose a tag to compare

Version 0.8.6 is a bugfix release

NonGNU ELPA

gptel is now available on NonGNU ELPA. This means it is directly installable via M-x package-install without the need to add MELPA to the list of package archives.

Backends

  • Add support for OpenRouter (#282)
  • Add support for Gemini 1.5 (#284)
  • Add support for GPT 4 Turbo (#286)

Bug fixes

Several bugs have been fixed:

  • gptel's status in the header line now updates when sending queries from the transient menu. (#293)
  • More Org elements are supported in the Markdown to Org converter (#296)
  • gptel now supports saving and resuming chats when using Ollama (#181)
  • Ollama integration is now stateless, resolving a number of bugs (#270, #279)
  • Fix Ollama response parsing errors (#179)

Version 0.8.5

04 Apr 08:03
Compare
Choose a tag to compare

Version 0.8.5 adds the following features:

gptel and Org mode

Additional features are now available when using gptel in Org mode:

  • By default the context for a query is the contents of the buffer up to the cursor. You can set the context to be the lineage of the current Org heading by enabling gptel-org-branching-context. This makes each heading at a given level a different branch of the conversation.
  • Limit the conversation context to an Org heading by setting gptel-org-set-topic. (This is an alternative to branching context.)
  • Set the current gptel configuration (backend, model, system message, temperature and max tokens) as Org properties under the current heading with the command gptel-org-set-properties. When these properties are present, they override the buffer-specific or global settings. (#141)
  • On-the-fly conversion of responses to Org mode has been smoothed out further. For best results, ask the LLM to respond only in Markdown if you are using Org mode.

UI

  • The current system prompt is now shown (in truncated form) in the header-line in gptel chat buffers (#274).

Bug fixes

Several bugs have been fixed:

  • (Anthropic) Attach additional directive correctly when interacting with Anthropic Claude models (#276)
  • (Anthropic) Handle edge cases when parsing partial responses (#261)
  • (All backends) Fix empty responses caused by json.el parsing errors when libjansson support is not available (#251, #264)
  • (Ollama) Fix parsing errors caused by the libjansson transition (#255)
  • The dry-run commands now perform an actual dry-run, i.e. everything except sending the queries (#276).
  • The cursor can now be moved by functions in gptel-post-response-hook. (#269)

Version 0.8.0

17 Mar 04:26
Compare
Choose a tag to compare

Version 0.8.0 adds the following features:

Backends

  • Support for the Anthropic API and Claude 3 models
  • Support for Groq
  • Updated OpenAI model list.

UI and configuration

There have been many improvements to the gptel's transient menu interface:

  • From the menu, you can now attach an additional directive to the next query on top of the system message. This is useful for specific instructions that change with each query, like when refactoring code and regenerating or refining responses.
  • Some introspection commands have been added to the menu: you can see exactly what will be sent (as a Lisp or JSON object) with the next query. To enable these commands in the menu, turn on gptel-log-level, which see.
  • Various aspects of the menu have been tuned to be more efficient and cause less friction.
  • Model and query parameters (including the system message) are now global variables by default. This is to make it easier to work at a project level without having to set them in each buffer. You can continue to set them at a buffer-local level (the previous default) using a switch in the menu.

Other

  • gptel now uses libjansson if Emacs is compiled with support for it. This makes json parsing about 3x faster. (LLM responses are typically not large, so there is only a modest increase in parsing speed and Emacs' responsiveness when using gptel.)
  • Org mode output when streaming responses is much improved, with most edge cases resolved.

Deprecation notice

  • The dedicated "refactor" or "rewrite" menus are deprecated and will be removed in the next major release. Note that all of their functionality (including ediff-ing) is now available from the main gptel menu.

Version 0.7.0

21 Feb 08:20
Compare
Choose a tag to compare

Version 0.7.0 adds the following features:

Backends

  • Support for Perplexity.ai (contributed by @dbactual)
  • Updated OpenAI model list.
  • Better support for Gemini
  • Support for arbitrary curl arguments (for HTTP requests) that gptel does not provide customization options for (contributed by @r0man)

UI and configuration

  • Response regeneration and history: You can now regenerate a response at point and cycle through past versions of the response at point. These are accessible from the transient menu when the point is over a response.
  • Customizable display-buffer action to choose where gptel chat windows are placed when chat buffers are created with M-x gptel.

Version 0.6.5

03 Feb 22:39
Compare
Choose a tag to compare

Version 0.6.5 adds the following features:

Backends

  • Support for the Kagi summarizer engine(s).
  • Support for Together.ai and Anyscale.
  • Updated OpenAI model list.

UI and configuration

  • gptel handles the case of trying to use unsupported models for a backend (contributed by @joaotavora).
  • Easier configuration for OpenAI backends (header does not need to be specified)
  • Redirect responses to any buffer, not just gptel chat sessions.
  • Optional logging of all requests/response data.

Bug fixes

  • Persist multi-line directives in saved files correctly.
  • Org-conversion bug fixes.

Many more minor bug fixes.

Version 0.6.0

13 Jan 07:38
Compare
Choose a tag to compare

Version 0.6.0 adds the following features:

Backends

  • Support for Kagi's FastGPT model

UI

  • Descriptions of directives when picking them.
  • Option to choose the kill-ring contents as the prompt.

Additionally there are bug fixes involving auto-scrolling, the customize interface, and improved documentation and polish.