Tools

AI-generated text

llm 0.33 released: OpenAI Python 3.x support, httpx2 migration and embedding key handling expanded

The llm package reached version 0.33, upgrading to OpenAI's Python 3.x client and replacing the HTTP dependency from httpx to httpx2.

llm 0.33 released: OpenAI Python 3.x support, httpx2 migration and embedding key handling expanded

The llm package's 0.33 release introduces several notable updates: an upgrade to the OpenAI Python client, a change of HTTP client dependency, expanded embedding key handling, and convenience improvements for prompt templates and Responses-style models.

OpenAI Python 3.x and httpx2

The project now uses the OpenAI Python library 3.x and has switched its HTTP client dependency from httpx to httpx2. These changes aim to ensure compatibility with the newer OpenAI Python client and updated HTTP behavior. Related issues: #1608, #1631.

A quick 0.32.1 fix was shipped the day before, but 0.33 provides a more comprehensive resolution to the issues addressed.

Embedding key handling (CLI and API)

The CLI commands llm embed and llm embed-multi now accept the --key option. On the Python API side, the following methods accept a key= parameter: EmbeddingModel.embed(), EmbeddingModel.embed_multi(), Collection.embed() and Collection.embed_multi().

The implementation passes the per-call resolved key to embedding plugins without modifying shared model state. Existing plugins that read self.key continue to work via a compatibility fallback. Contributor thanks go to ChrisJr404. Related issues: #757, #1620.

As a result, embedding models now follow the same key-handling pattern as regular LLM models, simplifying per-call configuration.

Repeated templates for prompts (-t/--template)

The llm prompt -t/--template option can now be repeated; repeated templates are combined in order. This allows model configuration and options from one template to be applied together with a prompt from another template. The release notes provide an example pattern:

  • llm -m gpt-5.6-luna -o reasoning_effort high --save lhigh
  • llm "Generate an SVG of a pelican riding a bicycle" --save pelican
  • llm -t lhigh -t pelican

This enables creating templates that package a model with default options and then reusing those templates with other prompts.

reasoning_summary option for Responses-capable models

Reasoning-capable Responses API models now support a reasoning_summary option with values auto, concise, and detailed. This option can be used with llm openai endpoint --responses. It is particularly useful when exercising different models that provide their own imitation of the OpenAI Responses API. Related issue: #1600.

Summary

Version 0.33 focuses on compatibility and usability improvements: upgrading the OpenAI client, migrating to httpx2, refining embedding key handling, and adding convenient features for template composition and Responses-style model behavior. The release consolidates several related issues and follows a quick 0.32.1 hotfix with a more complete update.