- Add Muse Spark and Muse Spark Contributor models (usable as Open AI compatible model, or with OpenRouter)
- Added tool IDs to Ollama streaming for better context-keeping, by yibie
- Add GPT 6.0 Astra, Gemini 3.8 Flash (now the default)
- Throw meaningful error if ports are strings instead of integer; also fix the documentation
- Fixed Qwen3 identification regex
- No longer send Open AI reasoning if unset in the
llm-chat-prompt, by İsa Mert Gürbüz
- Use success callback when there is partial tool call success, with multi-output
:errorskey - Always add errors to the prompt after tool calling
- Add Qwen 3.8, GLM 5.3, GPT 5.6 Sol / Terra / Luna and Gemini 3.7 Flash (now the default)
- Fix missing symbol for Gemini 3.6 Flash
- Default to Gemini 3.6 Flash for Gemini
- Added Claude 5 Opus and Sonnet, defaulted Claude to Claude 5 Sonnet
- Added Kimi K3.
- Added Gemini 3.6 Flash and 3.5 Flash Lite, and removed temperature settings for these models.
- Fix some incorrect model identification issues.
- Fixed Deepseek streaming tool calling, by İsa Mert Gürbüz.
- Fixed Audio API support for Open AI-compatible providers and Ollama providers by Sergey Kostyaev.
- Added Claude Opus 4.8, StepFun 3.7 Flash, and Claude Fable 5
- Don’t send json format when unsupported; add
json-responseto more models that support it. - Fix OpenAI compatible names
- Switch Open AI to Responses API, for more functionality
- Keep reasoning information between turns for improved performance in tool calling for Open AI and Claude (Gemini does this already).
- Fix error with logged tool calls
- Fix behavior when tool calling has an error; we no longer call the success result as well
- Fix error with Claude tool use requests
- Fix error with Claude 4.5 Haiku and reasoning support
- Tweaked Claude name and capabilities to not always support reasoning
- Added Gemini 3.5, Qwen 3.7
- Fix for OpenRouter breakage
- Fix json encoding error caused by utf-8 strings for Open AI and Ollama
- Add Claude Opus 4.7, Kimi K2.6, Qwen 3.6, Chat GPT 5.5, Mistral Medium 3.5, XiaoMi 2.5, and Deepseek V4.
- Improved support for Open AI streaming for tool calls, by Renato Ferreira.
- Add reasoning controls to DeepSeek and OpenAI
- Fix reasoning for Claude Opus 4.7 and Chat GPT.
- Changed default Claude model to 4.6 Sonnet
- Fix text extraction for Claude when using reasoning
- Return token counts when streaming
- Return token counts for DeepSeek
- Fix lack of reasoning response when doing tool calls
- Added support for Open AI compatible
reasoning_contentandreasoningblocks for streaming
- Add
:input-tokensand:output-tokensto multioutput result. - Fixed inability of zero-arg tools to be called
- Added OpenRouter as a top-level model type
- Add support for Open AI compatible
reasoning_contentandreasoningblocks - Added Qwen 3.5, LFM2 and LFM 2.5 Thinking
- Added Gemini 3.1 Pro, Gemini 3.1 Flash Lite
- Added Chat GPT 5.4, with extra context
- Added StepFun 3.5 Flash
- Added Gemma 4
- Added Claude Sonnet 4.6
- Check for tool use mismatches and define new errors for them
- Normalize false values in tool args or tool call results
- Add Claude Opus 4.6
- Fix bug running two async calls in parallel
- Set Gemini default to 3.0 pro
- Added Kimi k2.5, GLM-5, and Qwen 3 Coder Next
- Increased the default context length for unknown models to be more up to date
- Allow Ollama authed keys to be functions
- Improved the tool calling docs
- Fix for running tools in the original buffer with streaming
- Removed bad interactions made in Ollama tool calls
- Fixed Ollama tool calling requests
- Fixed Ollama reasoning, whose API has changed
- Added gpt-oss, supported low/medium/high reasoning with Ollama
- Run tools in the original buffer
- Fixed breakage in Ollama streaming tool calling
- Fixed incorrect Ollama streaming tool use capability reporting
- Add Gemini 3 Flash
- Add Chat GPT post 5.0 series models, such as 5.1 and 5.2
- Fix error on empty Claude responses
- Add tool calling options, for forbidding or forcing tool choice.
- Fix bug (or perhaps breaking change) in Ollama tool use.
- Add Gemini 3 model, update Gemini code to pass thought signatures
- Add
json-responsecapability to Claude 4.5 and 4.1 Opus models - Set Sonnet 4.5 as the default Claude model
- Fix outdated max output settings in Claude
- Add Claude Opus 4.5
- Add reasoning output for Gemini.
- Add Claude 4.5 Sonnet and Haiku to support models, fix model matching for other Claude models.
- Fix Open AI issue in using
non-stardard-params. - Fix incorrect vectorzation of alists in
non-standard-params.
- Add JSON response capabilities to Gemini, which had a non-standard API.
- Add Claude 4.1 to supported models
- Add thinking control to Gemini / Vertex.
- Change default Vertex, Gemini model to Gemini 2.5 Pro.
- Add Gemini 2.5 Flash model
- Fix Vertex / Gemini streaming tool calls
- Add Open AI GPT-5 models
- Add
thinkingoption to control the amount of thinking that happens for reasoning models. - Fix incorrectly low default Claude max tokens
- Fix Claude extraction of text and reasoning results when reasoning
- Add Claude 4 models
- Fix error using Open AI for batch embeddings
- Add streaming tool calls for Ollama
- Fix Ollama tool-use booleans
- Call tools with
nilwhen called with false JSON values. - Fix bug in ollama batch embedding generation.
- Add Qwen 3 and Gemma 3 to model list.
- Fix broken model error message
- Fix reasoning model and streaming incompatibility
- Add
llm-ollama-authedprovider, which is like Ollama but takes a key. - Set Gemini 2.5 Pro to be the default Gemini model
- Fix
llm-batch-embeddings-asyncso it returns all embeddings - Add Open AI 4.1, o3, Gemini 2.5 Flash
- Fix issue with some Open AI compatible providers needing models to be passed by giving a non-nil default.
- Add Gemini 2.5 Pro
- Fix issue with JSON return specs which pass booleans
- Fix issue with Ollama incorrect requests when passing non-standard params.
- Add
multi-outputas an option, allowing all llm results to return, call, or stream multiple kinds of data via a plist. This allows separating out reasoning, as well as optionally returning text as well as tool uses at the same time. - Added
llm-modelsto get a list of models from a provider. - Fix misnamed
llm-capabilitiesoutput to refer totool-useandstreaming-tool-use(which is new). - Fixed Claude streaming tool use (via Paul Nelson)
- Added Deepseek service
- Add Gemini 2.0 pro experimental model, default to 2.0 flash
- Add Open AI’s o3 mini model
- Add Claude 3.7 sonnet
- Fix Claude’s capabilities to reflect that it can use tools
- Added ability to set
keep_aliveoption for Ollama correctly.
- Add GitHub’s GitHub Models
- Accept lists as nonstandard
- Add Deepseek R1 model
- Show the chat model as the name for Open-AI compatible models (via @whhone)
- Change
llm-tool-functiontollm-tool, changemake-llm-tool-functionto take any arguments.
- Incompatible change to function calling, which is now tool use, affecting arguments and methods.
- Support image understanding in Claude
- Support streaming tool use in Claude
- Add
llm-models-addas a convenience method to add a model to the known list.
- Add ability to output according to a JSON spec.
- Add Gemini 2.0 Flash, Gemini 2.0 Flash Thinking, and Llama 3.3 and QwQ models.
- Fix Open AI context length sizes, which are mostly smaller than advertised.
- Add JSON mode, for most providers with the exception of Claude.
- Add ability for keys to be functions, thanks to Daniel Mendler.
- Fix extra argument in
llm-batch-embeddings-async.
- Add media handling, for images, videos, and audio.
- Add batch embeddings capability (currently for just Open AI and Ollama).
- Add Microsoft Azure’s Open AI
- Remove testing and other development files from ELPA packaging.
- Remove vendored
plz-event-sourceandplz-media-type, and add requirements. - Update list of Ollama models for function calling.
- Centralize model list so things like Vertex and Open AI compatible libraries can have more accurate context lengths and capabilities.
- Update default Gemini chat model to Gemini 1.5 Pro.
- Update default Claude chat model to latest Sonnet version.
- Fix issue in some Open AI compatible providers with empty function call arguments
- Fix problem with Open AI’s
llm-chat-token-limit. - Fix Open AI and Gemini’s parallel function calling.
- Add variable
llm-prompt-default-max-tokensto put a cap on number of tokens regardless of model size.
- More fixes with Claude and Ollama function calling conversation, thanks to Paul Nelson.
- Make
llm-chat-streaming-to-pointmore efficient, just inserting new text, thanks to Paul Nelson. - Don’t output streaming information when
llm-debugis true, since it tended to be overwhelming.
- Fix compiled functions not being evaluated in
llm-prompt. - Use Ollama’s new
embedAPI instead of the obsolete one. - Fix Claude function calling conversations
- Fix issue in Open AI streaming function calling.
- Update Open AI and Claude default chat models to the later models.
- Support Ollama function calling, for models which support it.
- Make sure every model, even unknown models, return some value for
llm-chat-token-limit. - Add token count for llama3.1 model.
- Make
llm-capabilitieswork model-by-model for embeddings and functions
- Introduced
llm-promptfor prompt management and creation from generators. - Removed Gemini and Vertex token counting, because
llm-promptuses token counting often and it’s best to have a quick estimate than a more expensive more accurate count.
- Fix Open AI’s gpt4-o context length, which is lower for most paying users than the max.
- Add support for HTTP / HTTPS proxies.
- Add “non-standard params” to set per-provider options.
- Add default parameters for chat providers.
- Move to
plzbackend, which usescurl. This helps move this package to a stronger foundation backed by parsing to spec. Thanks to Roman Scherer for contributing theplzextensions that enable this, which are currently bundled in this package but will eventually become their own separate package. - Add model context information for Open AI’s GPT 4-o.
- Add model context information for Gemini’s 1.5 models.
- Fix mangled copyright line (needed to get ELPA version unstuck).
- Fix Vertex response handling bug.
- Fix various issues with the 0.14 release
- Introduce new way of creating prompts: llm-make-chat-prompt, deprecating the older ways.
- Improve Vertex error handling
- Add Claude’s new support for function calling.
- Refactor of providers to centralize embedding and chat logic.
- Remove connection buffers after use.
- Fixes to provider more specific error messages for most providers.
- Refactor of warn-non-nonfree methods.
- Add non-free warnings for Gemini and Claude.
- Send connection issues to error callbacks, and fix an error handling issue in Ollama.
- Fix issue where, in some cases, streaming does not work the first time attempted.
- Fix issue in
llm-ollamawith not using provider host for sync embeddings. - Fix issue in
llm-openaiwhere were incompatible with some Open AI-compatible backends due to assumptions about inconsequential JSON details.
- Add provider
llm-claude, for Anthropic’s Claude.
- Introduce function calling, now available only in Open AI and Gemini.
- Introduce
llm-capabilities, which returns a list of extra capabilities for each backend. - Fix issue with logging when we weren’t supposed to.
- Introduce llm logging (for help with developing against
llm), setllm-logto non-nil to enable logging of all interactions with thellmpackage. - Change the default interaction with ollama to one more suited for converesations (thanks to Thomas Allen).
- Default to the new “text-embedding-3-small” model for Open AI. Important: Anyone who has stored embeddings should either regenerate embeddings (recommended) or hard-code the old embedding model (“text-embedding-ada-002”).
- Fix response breaking when prompts run afoul of Gemini / Vertex’s safety checks.
- Change Gemini streaming to be the correct URL. This doesn’t seem to have an effect on behavior.
- Add
llm-chat-token-limitto find the token limit based on the model. - Add request timeout customization.
- Allow users to change the Open AI URL, to allow for proxies and other services that re-use the API.
- Add
llm-nameandllm-cancel-requestto the API. - Standardize handling of how context, examples and history are folded into
llm-chat-prompt-interactions.
- Upgrade Google Cloud Vertex to Gemini - previous models are no longer available.
- Added
geminiprovider, which is an alternate endpoint with alternate (and easier) authentication and setup compared to Cloud Vertex. - Provide default for
llm-chat-asyncto fall back to streaming if not defined for a provider.
- Add provider
llm-llamacpp. - Fix issue with Google Cloud Vertex not responding to messages with a system interaction.
- Fix use of
(pos-eol)which is not compatible with Emacs 28.1.
- Fix incompatibility with older Emacs introduced in Version 0.5.1.
- Add support for Google Cloud Vertex model
text-bisonand variants. llm-ollamacan now be configured with a scheme (http vs https).
- Implement token counting for Google Cloud Vertex via their API.
- Fix issue with Google Cloud Vertex erroring on multibyte strings.
- Fix issue with small bits of missing text in Open AI and Ollama streaming chat.
- Fixes for conversation context storage, requiring clients to handle ongoing conversations slightly differently.
- Fixes for proper sync request http error code handling.
llm-ollamacan now be configured with a different hostname.- Callbacks now always attempts to be in the client’s original buffer.
- Add provider
llm-gpt4all.
- Add helper function
llm-chat-streaming-to-point. - Add provider
llm-ollama.
- Streaming support in the API, and for the Open AI and Vertex models.
- Properly encode and decode in utf-8 so double-width or other character sizes don’t cause problems.
- Changes in how we make and listen to requests, in preparation for streaming functionality.
- Fix overzealous change hook creation when using async llm requests.
- Remove the dependency on non-GNU request library.