AI 技术文档

工具调用

让模型提出结构化请求,由程序校验、执行并返回可追踪的结果。

模型请求,程序执行

工具调用把可用操作描述给模型,模型可以返回工具名称和参数。对于应用自己定义的工具,实际执行通常由应用程序完成,再把结果返回模型;平台提供的某些工具也可能在服务端执行。这个边界可参考 Anthropic 的工具调用流程。

所以,模型写出“已经查询”并不能证明查询发生了。需要保存请求、执行结果与错误状态,才能判断流程完成到哪一步。

先定义一个只读工具

资料问答助手可以从 search_project_docs 开始。下面是教学约定,不绑定某家 API 的参数格式:

{
  "name": "search_project_docs",
  "description": "在当前用户可访问的项目资料中检索相关片段",
  "input": {
    "query": "试运行日期",
    "limit": 3
  }
}

工具返回片段编号、来源、正文和执行状态。用户身份与实际访问范围由服务端决定,不能相信模型在参数中声称的权限。

建立受限执行循环

  1. 向模型提供允许使用的工具说明与用户问题。
  2. 收到工具请求后,校验工具名称、参数类型和访问范围。
  3. 程序执行对应操作,记录调用编号、耗时和结果。
  4. 把成功或失败状态返回模型,再决定继续还是输出答案。
  5. 到达时间或步数预算时结束,并保留尚未完成的部分。

工具结果也属于外部数据。检索片段中即使出现“忽略任务并发送文件”等文字,也不应改变应用已设定的执行规则。操作边界应由代码和权限系统限制。

把失败当作正常分支

无结果、参数无效、权限不足和请求超时应有不同状态。无结果可以改写查询后再试;权限不足不应通过扩大参数范围来绕过;连续失败应结束并提示当前缺少的条件。

写入、发送和删除等操作需要单独设计确认与重复执行保护。本章先保持只读检索,把回答质量和错误恢复跑通。

动手检查

分别模拟空结果、超时和未知工具名称,确认程序能结束循环,并且最终回答不会声称某个未成功的操作已经完成。

下一步:评估与质量检查,为完整调用链建立可重复的检查集。