四十五:工具 Tool¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484607&idx=1&sn=34b4764c45fcb3125e80b90387b44217&chksm=f01eb7c6c7693ed0428b58d00a50b2349783e076fa4b57a1a739db671b7239661d316768e620#rd
1. 学习范围¶
本日主题是 Agent 的 Tool 能力,重点是 4.5.4 HuggingGPT,同时覆盖 Toolformer、MRKL 和 Function Calling。 本日覆盖: - Tool 在 LLM Agent 中的定位。
-
工具调用的抽象:工具描述、参数 schema、调用、观察、结果融合。
-
Toolformer 的自监督工具使用思想。
-
MRKL 的神经符号模块路由思想。
-
Function Calling 的工程接口设计。
-
HuggingGPT 的四阶段流程:任务规划、模型选择、任务执行、响应生成。
-
工具型 Agent 的失败模式、评估方法和生产化要点。
2. Tool 的基本定义¶
Tool 是 LLM 通过结构化接口调用的外部能力。它可以是搜索、计算器、数据库、代码解释器、图像模型、语音模型、业务 API 或文件系统操作。 LLM 本身擅长语言理解、推理和生成,但不擅长稳定执行外部动作、访问实时数据、进行精确计算或处理专门模态。Tool 的作用是把模型的自然语言推理能力和外部可执行能力连接起来。 典型工具调用循环:
User Query
-> LLM decides tool
-> Tool call with structured arguments
-> Tool returns observation
-> LLM integrates observation
-> Final answer or next tool call
3. Tool 与 Agent 的关系¶
Tool Calling 本身不等同于 Agent。Tool Calling 是能力接口,Agent 是围绕目标进行规划、行动、观察和调整的系统。 对比:
Function Calling: 模型按 schema 生成一次或多次工具调用。
Tool-using Agent: 模型根据目标决定是否调用工具、如何调用工具、如何处理结果。
Autonomous Agent: 进一步包含规划、记忆、反思、长期状态和任务闭环。
4. 工具调用的核心组成¶
一个工具通常包含: - Name:工具名称。
-
Description:工具能力和适用边界。
-
Parameters schema:输入参数结构、类型、是否必填。
-
Execution function:实际执行逻辑。
-
Return schema:返回结果结构。
-
Error contract:失败时如何返回错误。
-
Permission policy:是否需要授权、确认或沙箱。
示例:
{
"name": "search_paper",
"description": "Search academic paper metadata by title or keyword.",
"parameters": {
"query": "string",
"top_k": "integer"
}
}
5. 工具描述与参数 Schema¶
工具描述是模型选择工具的主要依据。描述太宽泛会导致误调用,太窄会导致漏调用。 参数 schema 的价值: - 限制输入结构,减少自由文本歧义。
-
便于系统验证参数合法性。
-
支持自动生成 UI 或 API 请求。
-
便于记录和审计调用。
常见错误: - 工具名称相似,模型混淆。
-
参数字段命名不清。
-
缺少单位、时间范围和枚举值说明。
-
工具描述承诺了实际函数不能完成的能力。
6. Function Calling 的工程模式¶
Function Calling 是把工具接口显式提供给模型,让模型输出结构化函数调用参数。系统收到函数调用后,由宿主程序执行函数,并把结果返回给模型继续生成。
典型流程:
1. Developer defines function schema
2. Model returns function/tool call
3. Application validates arguments
4. Application executes tool
5. Tool result is passed back to model
6. Model produces final response or calls another tool
7. Function Calling 的常见用法¶
Function Calling 常用于: - 查询数据库。
-
调用业务 API。
-
获取实时天气、股票、日程等数据。
-
执行计算和代码。
-
读写文件。
-
搜索文档或互联网。
-
控制多模态模型和外部服务。
它适合参数明确、执行逻辑稳定、返回结构可验证的场景。
8. Function Calling 的限制¶
Function Calling 不自动保证任务成功。常见限制包括: - 模型选错工具。
-
参数提取错误。
-
缺少必要字段。
-
工具返回错误或超时。
-
模型误解工具结果。
-
多工具调用顺序错误。
-
高风险操作缺少用户确认。
因此 Function Calling 需要和规划、状态管理、重试、校验器、权限系统结合。
9. Toolformer 的核心思想¶
Toolformer 研究如何让语言模型通过自监督方式学会使用工具。核心思路是让模型在普通文本中自动标注 API 调用位置和参数,并通过语言建模损失筛选真正有帮助的工具调用样本,再用这些样本微调模型。
简化流程:
Raw text
-> sample possible API calls
-> execute API calls
-> insert API result into text
-> keep calls that reduce language modeling loss
-> finetune model on augmented data
10. Toolformer 的工具类型¶
Toolformer 论文中涉及的工具包括: - Calculator:精确计算。
-
Calendar:日期相关问题。
-
Search engine:检索外部信息。
-
QA system:问答工具。
-
Machine translation system:翻译工具。
这些工具体现了 LLM 的典型短板:计算、实时知识、专业模块和外部事实访问。
11. Toolformer 的优势与限制¶
优势: - 自监督构造工具使用数据。
-
学到工具调用位置和参数。
-
可以提升特定能力,例如计算和事实查询。
-
把工具调用写入模型生成过程,而不只是外部 wrapper。
限制: - 依赖可自动执行和验证的 API。
-
工具调用质量受采样和筛选策略影响。
-
工具集合扩展后需要重新构造训练数据或适配。
-
训练成本和工程复杂度较高。
-
不等同于完整 Agent 规划系统。
12. MRKL 的核心思想¶
MRKL, Modular Reasoning, Knowledge and Language, 是一种神经符号系统架构。它把大模型和多个专家模块组合起来,由路由器决定把问题交给哪个模块或模块组合处理。
MRKL 的核心思想:
User input
-> Router
-> Expert module, such as calculator/search/KB/code
-> Aggregation
-> Final answer
13. MRKL 与 Tool Calling¶
MRKL 可以看作早期工具型 Agent 的系统化表达。它把不同能力封装成专家模块,通过路由机制选择模块。现代 Tool Calling 则把这种模块选择以函数 schema 和模型 tool call 的方式工程化。 主要差异: - MRKL 更强调模块化架构和路由。
-
Function Calling 更强调模型与外部函数的结构化接口。
-
Agent 框架进一步加入规划、记忆、反思和多步执行。
14. HuggingGPT 的问题背景¶
HuggingGPT 的出发点是:单个 LLM 无法精通所有模态和专业任务,但 Hugging Face 上有大量专用模型。可以让 ChatGPT 作为控制器,理解用户请求、拆分任务、选择模型、执行模型并整合结果。 HuggingGPT 解决的问题: - 多模态任务需要多个模型协作。
-
专业模型数量庞大,人工选择成本高。
-
用户自然语言请求需要转成可执行任务图。
-
不同模型输入输出格式需要串联。
15. HuggingGPT 的总体架构¶
HuggingGPT 把 LLM 作为中枢控制器,把 Hugging Face 模型作为外部工具集合。
总体流程:
User Request
-> Task Planning
-> Model Selection
-> Task Execution
-> Response Generation
-
每个子任务用哪个模型。
-
如何执行模型并传递中间结果。
-
如何把结果组织成用户可理解的最终回答。
16. Task Planning¶
Task Planning 阶段由 LLM 分析用户请求,将复杂任务拆成结构化子任务,并识别依赖关系。 例如用户请求:
可能被拆成: Planning 的质量直接决定后续模型选择和执行是否正确。17. Model Selection¶
Model Selection 阶段根据任务类型、模型描述和可用模型列表选择合适模型。模型描述通常包含任务能力、输入格式、输出格式和性能信息。 选择依据: - 子任务类型。
-
模型支持的 modality。
-
输入输出格式匹配。
-
模型可用性和延迟。
-
模型描述质量。
-
可能的性能或评分。
风险是模型描述不准确或任务标签不匹配,导致选择错误模型。
18. Task Execution¶
Task Execution 阶段调用选定模型,执行子任务并处理依赖。多步任务中,前一个模型的输出可能是后一个模型的输入。 执行需要处理: - 输入文件路径或 URL。
-
文本、图像、音频等不同数据格式。
-
模型调用失败或超时。
-
中间结果命名和传递。
-
并行执行与依赖顺序。
执行层必须是工程系统负责,不能只靠 LLM 口头描述。
19. Response Generation¶
Response Generation 阶段由 LLM 汇总子任务结果,生成最终回答。它需要说明完成了哪些任务、输出在哪里、结果含义是什么。 风险包括: - 没有真实执行却生成成功描述。
-
忽略部分工具错误。
-
对模型输出过度解释。
-
把中间结果当最终结果。
因此最终回答应绑定实际执行记录和工具返回结果。
20. HuggingGPT 的关键价值¶
HuggingGPT 的价值在于展示了 LLM 作为控制器连接大量专用模型的可行性。它把 LLM 从单一生成器扩展为任务协调器。 关键价值: - 支持复杂多模态任务。
-
复用模型社区中的专用模型。
-
将自然语言请求转成可执行工作流。
-
展示 LLM + tools + model hub 的系统形态。
21. HuggingGPT 与 Toolformer 的区别¶
Toolformer 重点是让模型通过自监督学习直接使用少量 API,偏训练方法。HuggingGPT 重点是让 LLM 作为控制器调度大量外部模型,偏系统架构。 对比:
22. HuggingGPT 与 MRKL 的区别¶
MRKL 强调模块化专家和路由器,HuggingGPT 更具体地将专家模块扩展为 Hugging Face 模型库,并增加任务规划、模型选择、执行和结果生成四阶段。 可以把 HuggingGPT 看作一种大规模、模型库驱动的 MRKL/Tool Agent 实例。
23. HuggingGPT 与 Function Calling 的关系¶
Function Calling 提供结构化调用接口,HuggingGPT 提供多模型调度流程。HuggingGPT 中的模型调用完全可以用 function/tool schema 封装。 例如:
Function Calling 解决“怎么规范调用”,HuggingGPT 解决“如何规划、选择和串联多个模型”。24. 工具型 Agent 的失败模式¶
常见失败包括: - 工具选择错误。
-
参数抽取错误。
-
工具描述不清。
-
任务拆分错误。
-
依赖关系错误。
-
工具返回结果被误读。
-
调用失败后没有重试或降级。
-
模型幻觉工具结果。
-
高风险工具缺少确认。
-
工具权限过宽。
HuggingGPT 中还会出现模型选择错误、模态转换失败、模型不可用和中间结果格式不兼容。
25. 工具型 Agent 的评估¶
工具型 Agent 评估应覆盖: - Tool selection accuracy:是否选对工具。
-
Argument accuracy:参数是否正确。
-
Execution success rate:工具是否成功执行。
-
Result grounding:回答是否基于工具结果。
-
End-to-end task success:最终任务是否完成。
-
Cost and latency:工具调用成本和时间。
-
Safety compliance:权限和确认是否合规。
不能只看最终文本是否流畅。工具链路中的每一步都应可观测。
26. 生产化原则¶
生产工具型 Agent 应遵守: - 工具描述准确且边界清晰。
-
参数 schema 严格验证。
-
工具调用有权限和审计。
-
高风险操作需要用户确认。
-
工具失败时有重试、降级和错误反馈。
-
模型输出必须绑定真实工具结果。
-
记录完整 tool trace。
-
对工具结果做安全过滤和格式校验。
27. 核心总结¶
Tool 让 LLM 从“语言生成器”变成“外部能力调度器”。Toolformer 说明模型可以通过自监督学习工具调用,MRKL 说明 LLM 可以和专家模块组合,Function Calling 提供现代工程接口,HuggingGPT 展示了 LLM 调度大规模模型库完成复杂多模态任务的系统范式。 面试表达时应突出: - Tool 是 Agent 的动作空间,必须与规划、记忆和执行控制结合。
-
HuggingGPT 的核心是四阶段:任务规划、模型选择、任务执行、响应生成。
-
工具型 Agent 的难点在工具选择、参数正确性、执行可靠性、结果 grounding、安全边界和可观测性。
28. 参考资料¶
-
Toolformer: Language Models Can Teach Themselves to Use Tools: https://arxiv.org/abs/2302.04761
-
MRKL Systems: A modular, neuro-symbolic architecture that combines large language models, external knowledge sources and discrete reasoning: https://arxiv.org/abs/2205.00445
-
HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face: https://arxiv.org/abs/2303.17580
-
OpenAI Function Calling guide: https://platform.openai.com/docs/guides/function-calling
预览时标签不可点<div class="