Tool Use
Tool Use / Function Calling 是把模型的语言能力连接到外部函数、API、数据库、文件系统或业务系统的机制。
1. 解决什么问题
LLM 本身只能生成文本。很多任务需要它真正“做事”:
- 查询数据库
- 调用 API
- 读取文件
- 执行计算
- 创建工单
- 修改代码
Tool Use 的价值是把“会说”变成“能调用外部能力”。
2. 基本流程
用户目标
-> 模型判断是否需要工具
-> 生成结构化工具参数
-> 系统执行工具
-> 工具返回结果
-> 模型继续分析或输出答案3. 工具定义应包含什么
一个好的工具定义至少包括:
- 名称
- 用途说明
- 输入 schema
- 输出 schema
- 错误格式
- 权限边界
- 是否有副作用
工具描述不是越长越好,而是要让模型准确知道何时调用、如何调用、不能用来做什么。
4. 工程护栏
4.1 参数校验
不要相信模型生成的参数一定合法。
需要:
- schema 校验
- 类型校验
- 枚举校验
- 长度和范围限制
4.2 权限控制
工具执行必须按用户和任务权限限制。
高风险工具要人工确认,例如:
- 删除数据
- 发起支付
- 修改权限
- 发布生产变更
4.3 幂等与回滚
有副作用的工具要考虑:
- 重试是否安全
- 是否需要幂等 key
- 是否可回滚
- 是否记录审计日志
4.4 输出约束
工具返回给模型的内容应尽量结构化,避免返回大量无关文本。
5. 常见失败模式
- 工具描述模糊,模型误调用
- 工具参数缺少校验
- 工具返回噪声太多
- 工具权限过大
- 错误信息不结构化,模型无法恢复
- 有副作用工具被重复调用
6. 与 MCP 的关系
Tool Use 是能力模式,MCP 是一种标准化接入协议。
可以理解为:
- Tool Use:模型调用工具这件事
- MCP:用统一协议把工具、资源和提示暴露给 AI 应用
7. 一句话总结
Tool Use 的重点不是“让模型能调用函数”,而是让工具调用在权限、参数、错误和副作用上可控。