New features:
- Upgraded to the OpenAI Python library 3.x and switched the HTTP client dependency from
httpxtohttpx2. #1608, #1631 llm embedandllm embed-multinow accept--key. The PythonEmbeddingModel.embed(),EmbeddingModel.embed_multi(),Collection.embed()andCollection.embed_multi()methods acceptkey=too, passing the resolved per-call key to embedding plugins without changing shared model state. Existing plugins that readself.keycontinue to work through a compatibility fallback. Thanks, ChrisJr404. #757, #1620llm logsnow includes the output of server-side tool calls, shown in a Tool results section within the response. These results are also included inllm logs --jsonandllm logs --shortoutput, with a newserver_executedkey distinguishing them from locally executed tool results. #1629llm prompt -t/--templatecan now be repeated to combine templates in order. This allows model configuration and options from one template to be used with a prompt from another.- Expanded the
llm prompt --helpdocumentation for--schemaand--schema-multiwith details and examples of the supported schema DSL. schema_dsl()now raises descriptiveValueErrorexceptions for unknown field types and duplicate field names, instead of silently treating unknown types as strings or overwriting earlier fields. #1607, #1616- Reasoning stream events that contain provider metadata but no text are now preserved as
ReasoningPartobjects. This allows opaque state such as Anthropic signatures and redacted thinking data to round-trip correctly. simonw/llm-anthropic#81 - Reasoning-capable Responses API models now support a
reasoning_summaryoption withauto,concise, anddetailedvalues. This can be used with {ref}llm openai endpoint --responses <openai-endpoint>. #1600 - Conversation prompts now validate that attachments are supported by the selected model before execution, for both synchronous and asynchronous conversations. Thanks, Daniel Peng. #1626, #1628
Bug fixes:
llm logs --data-idsnow setsconversation_idto the ID of the conversation instead of incorrectly duplicating the response ID. Thanks, K Merchant. #1598, #1613- Fixed
llm aliases listraising aValueErrorwhen no aliases are defined. Thanks, Taraka Abhiram. #1602 llm embed-multinow reuses an existing collection's stored embedding model when no default embedding model is configured, and no longer masks unrelatedValueErrorexceptions with a missing-model error. #1523llm tools -m MODELno longer prints a redundant message when the model has no server-side tools.