llm 0.33
Simon Willison’s Weblog Simon Willison ● Covered by 3 sources
llm 0.33 updates embedding keys, template stacking, and the OpenAI Python client. It also adds reasoning summaries for Responses API models.
Based on reporting by Simon Willison’s Weblog, Simon Willison — read the original for the full story.
Summary, retelling and take written by AI under human oversight; images are AI-generated illustrations. How we work · Report an error
Simon Willison’s llm 0.33 release is mostly about tightening the seams. The biggest plumbing change is a move to OpenAI Python library 3.x, along with a switch from httpx to httpx2. Willison says he already shipped a quick 0.32.1 fix for the old setup, but this release is the fuller cleanup.
The embedding side gets a more useful key story. llm embed and llm embed-multi now accept --key, and the underlying Python methods accept key= too. That key is passed down to embedding plugins per call, instead of forcing shared model state to change. Plugins that still look at self.key aren’t broken; there’s a compatibility fallback for them.
That brings embeddings in line with regular LLM models, which already use the same pattern for keys. It sounds small. It usually is. But in tools like this, small consistency changes are the difference between a pleasant CLI and a pile of special cases nobody wants to debug at 11 p.m.
There’s also a neat tweak to templates. llm prompt -t/--template can now be repeated, so templates can be stacked in order. That means one template can supply a model and default options, while another contributes the prompt text. Willison even points out a pattern where you save a model-plus-options template, save a prompt template separately, then combine them at run time.
Finally, reasoning-capable Responses API models now support a reasoning_summary option with auto, concise, and detailed. It works with llm openai endpoint --responses, and Willison says it should help when testing models that mimic OpenAI’s Responses API in their own way.
My take — AI-written commentary, not fact-checked reporting
This is the good kind of AI tooling work: less spectacle, more making the sharp edges stop cutting people. The industry keeps celebrating bigger models, while the real daily pain is usually state handling, CLI flags, and API drift. Boring fixes win more sessions than flashy demos do.
Read more about this at: Simon Willison’s Weblog