如今,仅能对话的大模型已不足以应对复杂需求。真正的生产力,在于让模型能自主调用工具,将思考转化为行动——这正是 Function/Tool Calling(工具调用) 的核心。
简单来说,工具调用允许你向大模型“注册”一系列函数(工具),模型便能根据你的问题,智能地选择并调用最合适的工具,附上正确的参数,最终将工具执行结果转化为你能理解的答案。
1. 基础定义
function.name: 函数唯一标识。function.description: 用自然语言描述函数作用,这是模型选择工具的关键依据。parameters: 详细定义参数的名称、类型、描述及是否必需。2. 工作原理
function.name 和 function.arguments。虽然目标都是让模型与外界交互,但工具调用与经典的 ReAct(推理+行动) 提示工程在实现哲学上迥异:
维度 | ReAct 提示词工程 | 工具调用 (Function Calling) |
|---|---|---|
核心思想 | 通过提示词模板,引导模型进行“思考 -> 行动 -> 观察”的循环。 | 预先声明函数签名,模型直接输出结构化的调用指令。 |
控制权 | 流程控制(何时思考、何时调用)嵌入在提示词中,由模型主导。 | 函数接口由开发者定义,模型仅负责匹配和填充参数。 |
灵活性 | 高,适合复杂、多步骤、需动态规划的任务(如Agent)。 | 中,适合步骤明确、接口固定的单次或简单链式调用。 |
开发复杂度 | 需精心设计提示模板与中间状态管理,调试复杂。 | 相对较低,聚焦于函数定义与参数处理,框架支持好。 |
典型场景 | 自主研究、复杂问题拆解、多工具交替使用。 | API调用、数据库查询、代码执行、插件系统集成。 |
集成支持 | 是LangChain、AutoGPT等Agent框架的核心范式。 | 获OpenAI、Anthropic、DeepSeek等主流模型及LangChain原生支持。 |
简单比喻:ReAct 像是给了模型一份“问题解决流程手册”;而工具调用则是给了它一套“标准化工具操作指南”,让模型直接按图索骥。
我们通过一个“让模型使用Python计算0.9111的立方”的例子,拆解整个过程。
第1步:定义工具在请求的 tools 字段中,我们提供两个工具:一个获取当前时间,一个执行简单代码。
{
"tools": [
{
"type": "function",
"function": {
"name": "simple_code",
"description": "A tool for running code and getting the result back...",
"parameters": {
"properties": {
"code": { "type": "string", "description": "要执行的代码" },
"language": { "type": "string", "description": "语言,仅支持 'python3' 或 'javascript'" }
},
"required": ["language", "code"],
"type": "object"
}
}
}
// ... 其他工具
]
}清晰的 description 是模型做出正确选择的关键。
第2步:模型请求调用模型识别出需要计算,于是返回一个 tool_calls 响应,指明要调用 simple_code,并生成了正确的参数。
{
"role": "assistant",
"content": "", // 注意,内容可能为空
"tool_calls": [
{
"function": {
"name": "simple_code", // 选择了正确的工具
"arguments": { // 生成了合规的参数
"code": "print(0.9111 ** 3)",
"language": "python3"
}
}
}
]
}第3步:执行工具并返回结果你的后端执行 simple_code("python3", "print(0.9111 ** 3)"),得到结果 "0.756307034631",然后将此结果以特定格式追加到对话历史中。
{
"role": "tool",
"content": "0.756307034631" // 工具执行的结果
}第4步:模型生成最终答案模型接收到工具返回的结果后,整合信息,生成面向用户的友好回答。
{
"role": "assistant",
"content": "0.9111 raised to the power of 3 is approximately **0.7563**."
}工具调用的想象力边界正在急速扩展:
function.description 和参数描述是模型理解的唯一依据,务必清晰、准确。工具调用不仅是一项技术特性,更是大模型从“认知智能”迈向“行动智能”的关键一步。它将大模型从万事屋的“参谋”,升级为能够直接调用数字世界“武器装备”的“实干家”。
掌握它,你构建的应用将突破纯文本的藩篱,真正融入业务流,解决实际问题。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。