我今天早上发布了 LLM 0.32,这是该项目自最初启动以来最重要的新版本。新版本包含对可见推理轨迹、服务端提供商工具、重新设计的内容寻址 SQLite 日志、新模型,以及由 OpenAI Responses API 启用的新功能的支持。我还发布了 llm-anthropic 插件的新版本,该插件本身也有大量更新。
LLM CLI 用户的主要功能
现在,针对推理模型运行 LLM 会将其推理轨迹显示到标准错误输出,这样你就可以看到它们在“思考”什么,而不会将这些信息包含在可能通过管道传递给其他工具的标准输出中。添加 -R/--hide-reasoning 参数可关闭此功能。

LLM 开箱即用地支持 GPT-5.6 模型系列,并且现在与 llm "prompt" 一起使用的新的默认模型是价格低廉但功能强大的 GPT-5.6 Luna。
LLM 调用现在可以使用来自各种提供商的服务端工具。OpenAI 提供了一个代码执行环境作为服务端工具;LLM 现在可以像这样运行受益于该环境的提示词:
llm --tool CodeInterpreter 'Show current python and SQLite versions' OpenAI 还获得了一个 WebSearch 工具。
llm-anthropic 插件添加了 WebSearch、WebFetch、CodeExecution 和 AnthropicMCP,看起来像这样:
llm -m claude-sonnet-5 -T 'AnthropicMCP("https://datasette.simonwillison.net/-/mcp")' \ 'how many rows in the blog_blogmark table?'
这会导致 Anthropic 在与他们的 API 进行单次请求/响应交互的过程中,针对我的新 datasette-mcp 插件执行 MCP 调用。
新的 llm openai endpoint 命令提供了一个工具,可以通过一行命令针对任何兼容 OpenAI 的端点执行提示词。这些操作不会被记录,这使得它成为一个方便的工具,可以用来针对任何使用 LLM API 世界通用语言的服务运行一次性提示词。
以下是我如何使用它,通过 uvx(无需安装 LLM)并混合使用 llm-tools-quickjs 工具插件,针对运行在我本地主机 LM Studio API 中的 Gemma 4 12B 运行提示词:
uvx --with llm-tools-quickjs \
llm openai endpoint http://localhost:1234/v1 -m google/gemma-4-12b \
-T QuickJS 'Use QuickJS to multiply 3434 * 2434' --td 
Python API 中的新功能
LLM 的 Python API 之前要求你先创建一个对话,然后逐条向其中发送消息。这是对 LLM 真实工作方式的一种抽象,因为实际上每个请求都携带了此前所有消息的完整历史记录。这种抽象在某些更高级的场景下开始变得碍事,因此新版本引入了 `model.prompt(messages=[])` 参数,可以这样使用:
import llm from llm import user, assistant, system model = llm.get_model("gpt-5.6-luna") response = model.prompt(messages=[ system("You are a helpful pirate."), user("What is the capital of France?"), assistant("Paris, matey."), user("And Germany?"), ]) print(response.text())
LLM 之前每次提示词都会返回一个可迭代的字符串序列。当模型返回字符串响应时,这种方式效果很好,但未能预见到模型会朝着怎样奇特的形态演变。如今,许多模型会返回推理文本、输出字符串、工具调用,甚至图像附件的混合内容。使用 LLM 0.32,你可以这样操作:
for event in model.prompt("Explain cats").stream_events(): if event.type == "reasoning": print(f"[thinking] {event.chunk}", end="", flush=True) elif event.type == "text": print(event.chunk, end="", flush=True) else: print(f"Other event: {event}")
将这些功能结合起来,我们终于可以为半标准的 OpenAI 聊天补全 API 提供一个稳健的实现,我现在已将其作为 `llm-chat-completions-server` 插件发布:
llm install llm-chat-completions-server
llm chat-completions-server --port 9000
# Server is now running on http://127.0.0.1:9000/v1 现在,你可以通过该服务器,使用新的 `llm openai endpoint` 命令来运行针对 LLM 的提示词了!
llm openai endpoint http://127.0.0.1:9000/v1 'hello' -m gpt-5.4-mini 这类 API 面临的更大挑战在于日志记录。如果我们打算支持每次请求都追加消息序列的模式,那么理想情况下,我们应该避免为每一轮对话都记录所有这些重复的 JSON 数据。
解决方案是新的内容可寻址消息存储,其设计借鉴了 Git。你可以在文档中查看它的新架构,但 `llm logs` 和 `llm logs --json` 命令都已升级,可以将该格式转换回易于使用的形式。
其他更新
此版本还有更多内容。0.32 的发布说明相当全面,而 0.32rc2、0.32rc、0.32a3、0.32a2 和 0.32a0 的说明则应该能填补任何遗漏之处。
现有的 LLM 插件应该都能继续正常工作,但提供额外模型的插件需要升级到 0.32 版本,才能完全参与新的流式事件系统。文档中有一份关于如何使用结构化消息和流式事件实现插件的指南。
我已经更新了自己的一些插件:
- llm-anthropic 0.26 新增了对 Claude 5 系列模型的支持,以及 WebSearch、WebFetch、CodeExecution 和 AnthropicMCP 服务端工具。
- llm-gemini、llm-openrouter 和 llm-mistral 也基本就绪,即将发布。
我想 LLM 现在也算是一个智能体框架了
本次发布中不少底层工具层面的改动,是由 Datasette Agent 的需求驱动的。当我刚开始做 LLM 这个项目时,“agent”这个词的定义还非常模糊,以至于我拒绝使用它。到 2025 年 9 月,我逐渐认同了“大语言模型智能体通过循环调用工具来实现目标”这一概念已经足够成熟,我不再需要完全回避这个词了。
工具链现在可以暂停以等待人工批准,并能从已存储的消息历史中恢复执行——这两项功能都是 Datasette Agent 所需要的。
如今再看 LLM,我觉得它已经开始变得非常“智能体化”了。有一款命令行工具,能够将来自不同来源、不同模型的各类工具以一行命令的方式混合搭配使用,同时还包含一个足够强大的 Python 库,足以构建像 Datasette Agent 和 llm-coding-agent 这样的系统,这本身就是一件很妙的事情。
也许 LLM 的下一个版本会把“智能体”的概念直接融入核心库中。我仍在思考这具体会是什么样子。
更多近期文章
- 无状态 MCP 重新引起了我的兴趣(并启发了 mcp-explorer 和 datasette-mcp)- 2026 年 7 月 31 日
- OpenAI 对 Hugging Face 的意外网络攻击,是已经发生的科幻小说 - 2026 年 7 月 22 日
这是 LLM 新版本发布,新增了对推理痕迹、OpenAI Responses、服务端工具以及更智能日志记录的支持,作者 Simon Willison,发布于 2026 年 8 月 4 日。
属于“LLM 新版本发布”系列文章
- 大语言模型可以通过 LLM 0.26 在你的终端中运行工具 - 2025 年 5 月 27 日,晚上 8:35
- LLM 0.27,带注释的发布说明:GPT-5 和改进的工具调用 - 2025 年 8 月 11 日,晚上 11:57
- LLM 0.32a0 是一次重大的向后兼容重构 - 2026 年 4 月 29 日,晚上 7:01
- LLM 新版本发布,新增了对推理痕迹、OpenAI Responses、服务端工具以及更智能日志记录的支持 - 2026 年 8 月 4 日,晚上 11:58
发布
llm-reasoning
model-context-protocol