Function Calling

函数调用

让 LLM 输出"该调用哪个函数、参数是什么"的结构化指令,由你的代码实际执行。

详解

Function Calling 是 Agent 工程的发动机。它的关键洞察是:模型本身并不会执行任何函数,它只是看到你提供的工具描述(Tool Schema),然后输出一段结构化的 JSON 告诉你"我建议调用 get_weather,参数是 {city: 北京}"。真正的执行——HTTP 请求、数据库查询、Shell 命令——全部由你的代码完成。执行完成后,你把结果作为一条 role="tool" 的新消息追加到对话历史里,再次调用模型,模型才能基于工具返回值给出最终回答。所以一次完整的 Function Calling 至少包含两次模型调用:第一次决定调什么工具,第二次基于工具结果回答用户。

一个类比
像你和老板沟通:你先告诉他你能做什么(工具清单);他说"去查张三的合同"(function call);你跑去执行;执行完把结果汇报回来(tool result);他基于这个结果再做决策。模型扮演老板,你的代码是执行者。
举个例子
用户问:"北京今天多少度?"
模型输出(第一轮):{"tool_calls": [{"name": "get_weather", "arguments": {"city": "北京"}}]}
你的代码执行 get_weather('北京'),拿到 "22°C 晴"
再次调用模型(带上 tool result),模型输出(第二轮):"北京今天 22 度,天气晴朗。"
PYTHON 示例
相关概念