函数调用 / 工具调用
也叫: 工具调用 · Tool Calling
函数调用(也叫工具调用)是模型的一种能力:它可以输出一个结构化请求,指定要调用哪个函数、传什么参数,而不是只能生成自然语言文本。
一个只会输出文本的模型,最多只能用文字描述自己想做什么,剩下的事得靠别人去解析这段文字再执行——而自然语言天然是模糊的,解析起来并不可靠。函数调用给了模型一份明确定义好的函数列表(名称、说明、期望的参数),模型想用某个函数时,输出的就是一个符合这份定义的结构化调用,而不是一段散文。
真正执行函数的是调用方应用,模型本身不执行任何东西。模型只负责表达意图——调用哪个函数、传什么参数——应用去跑真正的逻辑,再把结果喂回给模型,让它拿着这个新信息继续往下推理。
这是目前绝大多数 Agent 工具使用背后的底层机制。不管一个 Agent 是在搜网页、执行 shell 命令,还是调用某个 MCP 服务端暴露的工具,背后的模式其实都一样:模型输出结构化调用,某个东西去执行它,结果再被带回对话里。
怎么运作
调用方应用会给每个可用的函数定义好名称、自然语言描述,以及参数的 schema,这份定义会被放进模型的上下文里。当模型判断某个函数相关时,输出的是一个结构化对象——函数名加参数值——而不是自然语言文本。应用解析这个结构化输出,用这些参数真正执行对应的函数,再把结果作为一条新消息返回给模型,供它继续推理或生成下一步输出。
举个例子
比如给模型定义了一个 get_weather(location: string) 函数,用户问『东京天气怎么样』时,模型不会凭训练数据里的印象瞎猜答案,而是输出类似 get_weather({"location": "东京"}) 这样的结构化调用;调用方应用去真正查一次天气,把当前情况返回给模型,再由模型汇报给用户。
和相关概念的区别
函数/工具调用是模型调用某一个具体函数时用的底层机制。MCP 在这个机制之上做了一层标准化,让这些函数(以及相关的资源、提示词)能在不同工具和应用之间被统一发现和接入,而不需要为每一个都手写定义。
常见误解
常见问题
AI 里的函数调用是什么?
工具调用和函数调用是一回事吗?
模型会自己执行函数吗?
最近核实: 2026-08-28