我今天发布了LLM 0.27 版本,增加了对 OpenAI 全新 GPT-5 系列模型的支持,并对LLM 0.26 中引入的工具调用功能进行了一系列改进。以下是带注释的发行说明。
GPT-5
- 新型号:
gpt-5
、gpt-5-mini
和gpt-5-nano
。 #1229
我本来希望能早点把这些发布出来,但自上次发布以来,LLM 已经积累了相当多的其他变化,我想以 GPT-5 为借口把所有这些都打包并发布出来。
这些模型的工作原理与其他 OpenAI 模型大致相同,但它们有一个新的reasoning_effort
选项,即minimal
。你可以这样尝试:
设置“最小”几乎完全消除了模型的“思考”时间,使其行为更像 GPT-4o。 llm -m gpt-5 'A letter advocating for cozy boxes for pelicans in Half Moon Bay harbor' -o reasoning_effort minimal
这是它写给我的信,成本为 20 输入,706 输出 = 0.007085 美元,即 0.7085 美分。
您可以将默认模型设置为 GPT-5-mini(因为它更便宜一些),如下所示:
模板中的工具llm models default gpt-5-mini
我认为这是新版本中最重要的功能。
我在 LLM 0.26 中添加了 LLM 的工具调用功能。您可以通过 Python API 调用它们,也可以通过命令行调用它们,如下所示:
这是llm -T llm_version -T llm_time 'Tell the time, then show the version'
运行该命令后, llm logs -c
的输出记录 -c。
此示例表明您必须使用-T/--tool
选项一次或多次明确列出您想要向模型公开的所有工具。
在 LLM 0.27 中,您现在可以将这些工具集合保存到模板中。现在让我们尝试一下:
现在llm -T llm_version -T llm_time -m gpt-5 --save mytools
mytools
是一个捆绑了这两个工具的模板,并将默认模型设置为 GPT-5。我们可以像这样运行它:
我们来做点更有趣的事吧。我的博客有一个llm -t mytools 'Time then version'
我可以针对Datasette 镜像运行查询。我将使用llm-tools-datasette插件将其转换为工具驱动的模板。此插件使用一个“工具箱”,它看起来有点像一个类。相关描述请见此处。
llm install llm-tools-datasette # Now create that template llm --tool 'Datasette("https://datasette.simonwillison.net/simonwillisonblog")' \ -m gpt-5 -s 'Use Datasette tools to answer questions' --save blog
现在我可以向数据库询问这样的问题:llm install llm-tools-datasette # Now create that template llm --tool 'Datasette("https://datasette.simonwillison.net/simonwillisonblog")' \ -m gpt-5 -s 'Use Datasette tools to answer questions' --save blog
这llm -t blog 'top ten tags by number of entries
--td
选项代表--tools-debug
– 这意味着我们可以看到所有正在运行的工具调用。
这是上述的输出:
Top 10 tags by number of entries (excluding drafts): - quora — 1003 - projects — 265 - datasette — 238 - python — 213 - ai — 200 - llms — 200 - generative-ai — 197 - weeknotes — 193 - web-development — 166 - startups — 157
此处有包含工具痕迹的完整记录Top 10 tags by number of entries (excluding drafts): - quora — 1003 - projects — 265 - datasette — 238 - python — 213 - ai — 200 - llms — 200 - generative-ai — 197 - weeknotes — 193 - web-development — 166 - startups — 157
。
我对存储配置工具的能力感到非常兴奋
我想构建一个工具,可以将 SVG 渲染成图像,然后返回该图像,以便模型能够看到它所绘制的内容。原因如下。
我添加这些是因为人们对 Datasette 的 MCP 插件很感兴趣。MCP 的部分挑战在于,用户需要提供服务器的 URL,但我们需要检查该服务器,并动态添加我们在那里发现的工具。新的.add_tool()
方法可以做到这一点,而.prepare()
和.prepare_async()
方法为我们提供了一种可靠的方法,可以在类构造函数之外运行一些发现代码,从而允许它在必要时进行异步调用。
这些钩子对于在 Python API 层实现更复杂的工具调用非常有用。除了调试和日志记录之外,它们还允许 Python 代码拦截工具调用,并根据其实际操作取消或延迟调用。
- 一些模型提供程序可以从同一个已配置的 URL 提供不同的模型 – 例如llm-llama-server 。这些提供程序的插件现在可以使用
response.set_resolved_model(model_id)
方法将已解析的模型 ID 记录到 LLM 日志中。 #1117
这解决了我一段时间以来的一个问题:我的一些插件会为后台由多个不同模型处理的请求记录相同的模型 ID,从而降低了我的日志的价值。现在,如果提示的模型 ID 与请求的模型 ID 不同,新机制允许插件记录更准确的模型 ID。
- llm 日志的新选项
-l/--latest
llm logs -q searchterm
用于按日期排序搜索日志(最近的在前),而不是默认的相关性搜索。 #1177
我的个人日志数据库现在已经增长到超过 8,000 条,对其进行全文搜索查询经常会返回去年的结果,而这些结果对我来说已经不再相关。能够找到与“pelican svg”匹配的最新提示就更加有用了。
其余内容均为错误修复和文档改进:
错误修复和文档
register_embedding_models
钩子现在已记录。 #1049- 显示
llm templates show invalid-template-name
。 #1053- 在
llm chat
中更优雅地处理无效的工具名称。 #1104- 在插件目录中添加工具插件部分。 #1110
- 如果传递的类不是
Toolbox
的子类,则在register(Klass)
时会出错。 #1114- 为所有
llm
CLI 命令的--help
添加-h
。 #1134- 将缺失的
dataclasses
添加到高级模型插件文档中。 #1137- 修复了
llm logs -T llm_version "version" --async
错误地只记录了一个日志条目(而它应该记录两个)的错误。 #1150extra-openai-models.yaml
中的所有额外 OpenAI 模型键现在都已记录。 #1228
标签:项目、人工智能、 Datasette 、带注释的发布说明、生成式人工智能、法学硕士、法学硕士、法学硕士工具使用、 GPT-5
原文: https://simonwillison.net/2025/Aug/11/llm-027/#atom-everything