当用户说“帮我算一下33加77”,大模型为啥能准确调用函数来算?
这背后用的就是 ——Function Calling 策略。 今天我们就把这个机制讲明白。
第一步:注册工具开发者需要先把工具“挂到菜单上”,供大模型选择使用: { "name":"add", "description":"执行加法运算", "parameters": { "type":"object", "properties": { "a": {"type":"number"}, "b": {"type":"number"} } } }
👆这相当于告诉大模型:“你有个叫 add 的工具,能处理两个数字相加。” 注意几点: - 名字不能模糊(
get_weather总比tool_1好)
第二步:生成调用指令用户提问:“33加77等于多少?” 大模型不是直接算答案,而是生成一个结构化的调用请求: { "tool_call": { "name":"add", "arguments": {"a":33,"b":77} } }
这叫工具调用意图,本质是模型说:“我打算调用这个函数,参数如下。”
第三步:谁来执行?不是模型自己执行工具调用,而是“外面的智能体系统”根据 JSON 指令去找对应函数执行,然后把结果再交回给大模型。 可以简单理解成: 大模型:“我判断要用加法函数。” 智能体:“好的我来调。” 大模型:“收到结果,我来组织答案。”
模型到底做了什么?Function Calling 策略下,大模型的角色只有三个:
想让模型调用得准,重点优化这两块: system_prompt ="你是一个可以调用工具的智能体。遇到适合使用工具的问题,请优先使用工具。"
训练依赖:模型得支持Function CallingFunction Calling 是靠模型“训练”出来的。只有经过结构化函数调用数据训练/微调的大模型才能做到: 代表模型:GPT-4、Claude 3、qwen-plus等。
Function Calling 的优点:
小结一句话:Function Calling 就是让大模型当“项目经理”,提出清晰的“调用需求”,让智能体来跑流程。比起靠 prompt 引导的混沌行为,Function Calling 是结构化、可控、工程化的解决方案。
|