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 的重点不是“让模型能调用函数”,而是让工具调用在权限、参数、错误和副作用上可控。