Simon Willison 博客
精选
79AI 编辑部评分,满分 100

LLM 0.32 发布:新增推理轨迹、OpenAI Responses、服务端工具与更智能的日志

2026-08-05 07:58· 5天前· Simon Willison
AI 导读

Simon Willison 发布 LLM 0.32,这是该项目自启动以来最重要的新版本。新版本支持显示推理轨迹、服务端工具、OpenAI Responses API,并默认使用 GPT-5.6 Luna 模型。

推荐理由

推理追踪输出到标准错误,日志改为内容寻址存储,让 LLM 作为管道工具和代理框架都摆脱了早期消息抽象带来的重复与混乱。

正文 · AI 翻译

我今天早上发布了 LLM 0.32,这是该项目自最初启动以来最重要的新版本。新版本包含对可见推理轨迹、服务端提供商工具、重新设计的内容可寻址 SQLite 日志、新模型以及由 OpenAI Responses API 启用的新功能的支持。我还发布了 llm-anthropic 插件的新版本,该插件本身也有大量更新。

LLM CLI 用户的主要功能

使用 LLM 运行推理模型时,现在会将其推理轨迹显示到标准错误输出中,这样你就可以看到它们在“思考”什么,而不会将这些信息包含在可能通过管道传递给其他工具的标准输出中。添加 -R/--hide-reasoning 可关闭此功能。

Running llm "think about the best thing about pelicans" in the macOS terminal window - grey text outputs saying Exploring pelican qualities, then after a paragraph of that a white paragraph of text comes out saying: The best thing about pelicans is their wonderfully oversized, practical design: that enormous bill and pouch look comical, but they make pelicans remarkably skilled fishers. Even better, many species cooperate—working together to herd fish before scooping them up. They’re a great mix of goofy, graceful, and surprisingly clever.

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)针对运行在我本地主机 LM Studio API 中的 Gemma 4 12B 运行提示词,并顺便混入 llm-tools-quickjs 工具插件的方法:

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

Output reads Tool call: QuickJS_execute_javascript({'javascript': '3434 * 2434'})  8358356 The result of 3434 * 2434 is 8,358,356.

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 chat completions 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 时,“智能体”这个词的定义还非常模糊,所以我一直拒绝使用它。到 2025 年 9 月,我逐渐认同“大语言模型智能体通过循环调用工具来实现目标”这个定义已经足够成熟,我不再需要完全回避这个词了。

工具链现在可以暂停以等待人工审批,并从已存储的消息历史中恢复执行——这两项能力都是 Datasette Agent 所需要的。

如今再看 LLM,它在我眼里已经越来越像一个智能体了。有意思的是,一个命令行工具可以把来自不同来源的工具、搭配不同的模型,以一行命令的方式混搭使用,同时还包含一个足够强大的 Python 库,足以构建像 Datasette Agent 和 llm-coding-agent 这样的系统。

也许 LLM 的下一个版本会把“智能体”这个概念直接内建到核心库中。我还在琢磨这具体会是什么样子。

发布于 2026 年 8 月 4 日晚上 11:58 · 在 Mastodon、Bluesky、Twitter 上关注我,或订阅我的通讯

来源:Simon Willison 博客 · simonwillison.net

LLM 0.32 发布:新增推理轨迹、OpenAI Responses、服务端工具与更智能的日志

Simon Willison 博客·2026-08-05 07:58·5天前·Simon Willison
AI 导读

Simon Willison 发布 LLM 0.32,这是该项目自启动以来最重要的新版本。新版本支持显示推理轨迹、服务端工具、OpenAI Responses API,并默认使用 GPT-5.6 Luna 模型。

正文 · AI 翻译

我今天早上发布了 LLM 0.32,这是该项目自最初启动以来最重要的新版本。新版本包含对可见推理轨迹、服务端提供商工具、重新设计的内容可寻址 SQLite 日志、新模型以及由 OpenAI Responses API 启用的新功能的支持。我还发布了 llm-anthropic 插件的新版本,该插件本身也有大量更新。

LLM CLI 用户的主要功能

使用 LLM 运行推理模型时,现在会将其推理轨迹显示到标准错误输出中,这样你就可以看到它们在“思考”什么,而不会将这些信息包含在可能通过管道传递给其他工具的标准输出中。添加 -R/--hide-reasoning 可关闭此功能。

Running llm "think about the best thing about pelicans" in the macOS terminal window - grey text outputs saying Exploring pelican qualities, then after a paragraph of that a white paragraph of text comes out saying: The best thing about pelicans is their wonderfully oversized, practical design: that enormous bill and pouch look comical, but they make pelicans remarkably skilled fishers. Even better, many species cooperate—working together to herd fish before scooping them up. They’re a great mix of goofy, graceful, and surprisingly clever.

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)针对运行在我本地主机 LM Studio API 中的 Gemma 4 12B 运行提示词,并顺便混入 llm-tools-quickjs 工具插件的方法:

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

Output reads Tool call: QuickJS_execute_javascript({'javascript': '3434 * 2434'})  8358356 The result of 3434 * 2434 is 8,358,356.

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 chat completions 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 时,“智能体”这个词的定义还非常模糊,所以我一直拒绝使用它。到 2025 年 9 月,我逐渐认同“大语言模型智能体通过循环调用工具来实现目标”这个定义已经足够成熟,我不再需要完全回避这个词了。

工具链现在可以暂停以等待人工审批,并从已存储的消息历史中恢复执行——这两项能力都是 Datasette Agent 所需要的。

如今再看 LLM,它在我眼里已经越来越像一个智能体了。有意思的是,一个命令行工具可以把来自不同来源的工具、搭配不同的模型,以一行命令的方式混搭使用,同时还包含一个足够强大的 Python 库,足以构建像 Datasette Agent 和 llm-coding-agent 这样的系统。

也许 LLM 的下一个版本会把“智能体”这个概念直接内建到核心库中。我还在琢磨这具体会是什么样子。

发布于 2026 年 8 月 4 日晚上 11:58 · 在 Mastodon、Bluesky、Twitter 上关注我,或订阅我的通讯

来源:Simon Willison 博客· simonwillison.net