事件经过
Simon Willison, 热门 llm Python CLI 和库的创建者,已开始对该工具的抽象层进行重大架构重构。这个标记为 research- llm-apis 2026-04-04 的新公开仓库记录了这一项目,是一个准备性研究阶段,旨在处理当前抽象层无法支持的供应商特性——最显著的是服务端工具执行。
llm 库目前通过插件系统为数以百计的模型提供统一的接口,涵盖数十家供应商。过去一年,随着 Anthropic、OpenAI、Google (Gemini) 和 Mistral 等提供商添加了新功能,现有抽象层已开始 显现其局限性。
技术深度解析
为了理解各提供商之间的原始 API 表面,Willison 利用 Claude Code 阅读了四家提供商的官方 Python 客户端库,并生成了直接访问底层 JSON API 的 curl 命令。目标是捕获各种场景下的流式和非流式响应结构。
这项研究的成果——包括生成的脚本和捕获的 JSON 响应——现在存放在一个专门的 GitHub 仓库中。这种方法在方法论上值得注意:与阅读文档( 通常滞后于实现)不同,Claude Code 分析了实际的客户端库源代码,以推断 API 在实践中的行为。
为什么服务端工具执行会打破现有模型
当前 llm 抽象假设了一个请求-响应循环,其中工具调用由客户端处理。现在 Anthropic 和 OpenAI 的 API 支持服务端工具执行,提供商的基础设施可以直接调用工具并返回结果,无需客户端管理循环。这从根本上改变了 调用签名、流式事件类型和客户端需要实现的状态机。
例如,带有服务端工具使用的流式响应可能发出以下事件类型:
- Anthropic API 中流中段的
tool_use块 - OpenAI 流式块中的
tool_callsdelta - Gemini
GenerateContent Response中的函数调用部分
每个提供商使用不同的字段名称、不同的分块策略,以及不同的工具完成信号约定 。当前的 llm 插件接口没有为插件作者暴露足够的表面区域来正确处理这些差异。
研究 产物
仓库包含针对每个提供商的 curl 命令和原始 JSON 捕获,分别在流式(text/event-stream)和非 流式模式下。这为项目提供了每个 API 今天实际返回的具体、版本化的参考点——这将 指导 Willison 接下来设计的新抽象基类和插件协议。
工具使用场景的典型非流式捕获将包括完整的 stop_reason、tool_use 内容块,以及模型决定传递给工具的输入 JSON。流式等效版本显示这些相同 字段如何通过带 index 偏移量的增量 delta 事件到达。
谁应该 关注
LLM 插件作者应该密切关注。任何当前包装已添加工具执行功能的提供 商的插件,很可能需要在新抽象层发布时进行更新。Willison 的研究阶段表明,插件协议即将迎来破坏性或 至少是附加性的变更。
使用 llm CLI 进行脚本编写或自动化工作流程的 Python 开发者应该知道底层插件 API 正在变动。当前的插件接口——以 Model、Response 和 Conversation 类为中心——可能会添加新的可选方法或抽象属性。
AI 供应商的工具团队可能会 发现这个研究仓库作为其流式和非流式 API 实际行为的一个独立第三方快照很有用,可 与竞争对手进行比较。
本周行动建议
- Star 或 watch GitHub 上的
research-llm-apis仓库,以跟踪 Willison 何时开始将研究转化为实际的接口提案。 - 如果你维护
llm插件,审计你的提供商现在是否支持服务端工具执行,并记录你的当前实现默默丢弃的任何流式事件类型。 - 使用
llm -- no-stream与流式模式运行现有的llmCLI 来对比你的提供商,以了解你的插件当前暴露与 丢弃了什么。 - 直接在 GitHub 上查看 Anthropic、OpenAI 和 Gemini Python SDK 源代码——这是 Willison 使用 Claude Code 自动化的相同练习——以识别 过去六个月中添加的你的集成未处理的新响应字段。
这个研究阶段的直接 交付物是一个版本化的 JSON 参考语料库。抽象重构本身尚未提出,但拥有每个 API 返回内容的干净经验数据 是设计一个不掩盖重要差异的接口的正确前提条件。