Tool-Use Agent的工具调用与函数思维链
Tool-Use(工具使用)是Agent连接外部世界的关键能力。请解释Function Calling的原理、工具描述的格式设计,以及如何通过Few-shot示例和约束解码确保工具调用的正确性。
回答
我是大山
Tool-Use让LLM调用外部工具(API、数据库、计算器等)扩展其能力边界。
Function Calling原理:
- 在Prompt中提供工具的描述(名称、参数、功能)
- LLM生成JSON格式的调用请求
- 系统解析JSON,执行工具,返回结果
工具描述格式(OpenAI风格): 名称、描述、参数(类型、属性、必需项)
确保调用正确性的技术:
- Few-shot示例:在Prompt中提供1-3个工具调用的完整样例
- 约束解码(Guided/Structured Decoding):
- 使用JSON Schema约束LLM输出格式(如Outlines、LMQL)
- 确保输出一定JSON可用,不会出现格式错误
- 参数验证:工具执行前做类型检查和必要参数检查
- 错误处理:工具失败后返回错误观察,LLM可重新尝试或调整参数
调用模式:
- 单步调用:一次推理调用一个工具
- 多步链式:前一个工具的输出作为后一个工具的输入
- 并行调用:一次推理触发多个独立工具
典型框架:
- OpenAI Function Calling (GPT-4/3.5)
- Claude Tool Use
- LangChain Toolkits
Tool-Use是Agent具备'动手能力'的基石,大幅扩展了LLM的应用边界。