函数调用(Function Calling)
**函数调用(Function Calling)**让 大语言模型以结构化 JSON 形式输出"调用哪个工具、传什么参数",再由宿主程序执行实际工具(如查数据库、调 API、跑代码)。
工作流程
- 定义工具 schema:每个工具用 JSON Schema 描述名称、描述、参数。
- 传入 LLM:连同用户问题一起送进模型。
- 模型决策:要么直接回答,要么输出"调用工具 X,参数 Y"。
- 宿主执行:程序解析 JSON、调用工具、把结果回传模型。
- 模型再生成:基于工具结果生成最终回答。
主流支持
- OpenAI:原生
tools参数。 - Anthropic Claude:
tools参数,结构类似。 - Google Gemini:
function_declarations。 - 开源模型:Llama 3.1+、Qwen2.5、Mistral 等都已支持。
实战经验
- 工具描述要详细:模型看不到代码,只能看 description 和参数说明。
- 参数用枚举:可选值枚举能让模型少出错。
- 错误处理:工具调用失败时要让模型能"重试"或"换工具"。
- 并行调用:GPT-4 等支持一次返回多个 tool call,宿主并行执行。