大模型 Tool Use 准确率可达 99%,但前提是工具足够简单
目录:
最近在做 Agent 开发时,我发现一个有意思的现象:大模型调用工具的准确率其实可以非常高,达到 99% 甚至更高——但这有一个关键前提:工具本身要足够简单。这也解释了一个行业趋势:越来越多的平台服务在做 Tools 化时,选择的路径是写 CLI,而不是暴露复杂的 SDK 或 REST API。
Tool Use 的准确率到底取决于什么
先澄清一个误区:当我们说”大模型会用工具”,不是说模型理解了工具的底层实现,而是说模型能正确地生成符合工具调用规范的结构化输出。
一次工具调用,模型需要做对三件事:
- 选对工具:在多个可用工具中选择正确的那个
- 填对参数:根据上下文生成正确的参数值
- 理解返回值:正确解读工具的返回结果并据此行动
1 | 用户意图 → 选择工具 → 构造参数 → 调用执行 → 解读结果 |
每一步的准确率相乘,就是最终的端到端准确率。如果每步 99%,四步下来也只有 96%。如果某一步只有 95%,整体就掉到 90% 以下了。
这意味着:要提高 Tool Use 的整体准确率,每一步都必须尽可能简单。
什么样的工具调用是”简单”的
我们来对比两种风格的工具定义。
复杂工具:一个典型的 REST API
1 | { |
模型需要理解嵌套结构、条件参数(canary_percent 只在 strategy 为 canary 时有效)、单位格式(512Mi)、参数间的约束关系。出错概率大幅上升。
简单工具:等效的 CLI 命令
1 | deploy create <service-name> --env staging --replicas 2 --memory 512Mi |
同样的操作,CLI 风格把它压缩成了一个扁平的、线性的命令。大部分参数有合理的默认值,用户(和模型)只需要指定关心的那几个。
这就是 CLI 的核心优势:它天然就是为”简单调用”设计的。
为什么 CLI 是大模型最好的工具接口
CLI 之所以适合作为 LLM 的工具接口,原因可以归纳为以下几点:
1. 参数是扁平的
CLI 的参数结构天然是一维的:command subcommand --flag value。没有嵌套 JSON,没有复杂的对象结构。对模型来说,生成一个扁平的字符串远比构造一个多层嵌套的 JSON 对象容易。
2. 有丰富的训练数据
互联网上有海量的 CLI 使用示例。从 Stack Overflow 到 GitHub Issues,从官方文档到博客教程,模型在预训练阶段已经见过无数的 CLI 调用。这意味着模型对 CLI 的”语法直觉”非常好。
1 | # 模型见过数百万次这类命令 |
这些模式已经深深刻入了模型的权重中。
3. 默认值减少了决策负担
好的 CLI 设计会为大多数参数提供合理的默认值。模型只需要填写真正必要的参数,而不是面对一个巨大的参数表逐一做决策。决策越少,出错的空间就越小。
4. 帮助信息就是最好的工具描述
--help 的输出格式高度标准化,本质上就是一份精简的工具使用说明。把它直接塞进 system prompt 或工具描述里,模型就能很好地理解如何使用:
1 | Usage: deploy create <service> [options] |
5. 组合优于复杂
Unix 哲学的”做好一件事”在 LLM 时代获得了新的生��。与其设计一个参数爆炸的万能工具,不如提供多个职责单一的小命令,让模型自己编排调用顺序:
1 | # 三个简单命令,比一个复杂命令更不容易出错 |
实际数据印证
我在 OpenClaw 项目中做过对比测试。把同一组平台操作分别封装成两种工具:
工具风格
平均参数数量
嵌套层级
Tool Use 准确率
复杂 JSON Schema
8-15 个
2-3 层
~87%
CLI 风格(扁平参数)
3-5 个
0 层
~99%
差距非常显著。当工具参数超过 7 个、或出现嵌套结构时,模型的准确率会明显下降。而 CLI 风格的工具,即便执行的是同样的底层操作,准确率却稳定在 99% 左右。
设计 LLM 友好工具的实践建议
基于以上观察,如果你正在为大模型设计工具接口,这里有几条实用建议:
保持参数扁平化
1 | # 不好:嵌套参数 |
拆分复杂操作为多个简单命令
一个命令只做一件事。宁可让模型调用三次简单工具,也不要让它一次调用一个复杂工具。三次各 99% 的准确率(97%)仍然优于一次 87% 的准确率。
提供合理的默认值
能省的参数就省。模型不需要显式指定的参数,就不应该要求它指定。
返回值要结构清晰
工具的输出同样要简单明了。模型需要能一眼看懂返回的结果,才能正确地进行下一步推理。
1 | # 好的返回:简单直接 |
结论
大模型用工具的能力已经足够强了——在简单工具上,准确率可以做到 99% 以上。瓶颈不在模型,而在工具的设计。
CLI 之所以成为平台服务 Tools 化的最佳载体,不是因为它是什么新技术,恰恰是因为它足够老、足够简单、足够标准化。几十年的 Unix 哲学为 LLM 时代的工具设计提供了现成的答案:
保持简单。做好一件事。通过组合解决复杂问题。
当你在设计 AI Agent 的工具接口时,不妨先问自己一个问题:这个操作能不能用一行命令描述清楚?如果不能,那可能不是模型的问题,而是你的工具还不够简单。
AI LLM tool-use CLI AI-agents architecture best-practices
