它是什么
函数调用是工具调用的一种结构化接口:应用把可用函数的说明和参数 Schema 提供给模型,模型返回要调用的函数及参数。它让应用不必从自由文本里猜测执行意图,但模型返回的是调用请求,不是函数已经运行的证明。[S1][S2]
为什么需要它
若模型只回复“请查询订单 123”,程序还要解析句子、判断字段并处理歧义;稍微改变措辞就可能失败。函数调用把意图收敛到已声明的函数和字段,使应用更容易验证、记录和测试,也能把函数结果与具体调用关联起来,再交给模型组织最终回答。[S1]
它如何工作
应用声明函数名、用途、参数类型与必填规则,并把它们随请求发送给模型。模型可能直接回答,也可能返回函数选择和参数;应用检查 Schema、业务规则、用户权限和副作用后执行函数,再把带调用标识的结果回传。模型随后解释结果或发起下一次调用。OpenAI 和 Anthropic 的字段名称不同,但“声明 -> 请求 -> 执行 -> 回传”是共同主干。[S1][S2]
必须澄清的误会
函数调用 ≠ 工具调用。 函数调用是「把工具请求表达成结构化数据」的格式约定;工具调用是完整能力,还包括工具清单、权限、结果校验与失败后的重新决策。
函数调用 ≠ API 调用。 函数调用发生在模型与应用之间,解决「模型想调什么」;API 调用发生在应用与外部系统之间,解决「怎么真的调通」。
真实例子
客服助手可以获得 get_order(order_id) 和 request_refund(order_id, reason) 两个函数。用户只问物流时,模型应调用查询函数;用户要求退款时,即使生成了格式正确的参数,应用仍要核验订单归属、退款期限和操作权限。未通过时返回业务错误,由助手解释原因,而不是因为 JSON 合法就创建退款。
什么时候适合与不适合
函数调用适合连接边界清楚的 API、数据库查询和业务动作,也适合需要可靠字段而非自然语言的流程。纯文本创作不一定需要它。严格 Schema 能约束结构,却不能证明参数真实、业务允许或函数安全;函数描述含糊也会导致选错工具。应用仍需鉴权、限流、超时、错误处理和审计。[S1][S2]
亲自试一下
为“预约会议室”写一个函数契约,限定日期、开始时间、时长和人数。准备六个测试:正常预约、日期缺失、人数超限、用户无权限、时段冲突和重复提交。分别写出 Schema 校验、业务校验与执行层应处理的问题;只有三层责任没有混在一起,契约才算清楚。
接下来学什么
先回到工具调用理解完整执行循环,再用结构化输出区分“生成数据”和“发起动作”;接入现有服务时继续学习API 调用。
来源与修订
函数工具、调用请求、结果关联和结构化参数参考 OpenAI 官方指南 [S1];客户端工具由应用执行并回传结果的责任边界参考 Anthropic 官方文档 [S2]。Schema 方言、严格模式和消息字段变化较快,正文不固定具体请求代码。
Learning questions
这个概念出现在哪些题里
下面的题目直接引用了本词条,适合先做判断,再回到正文核对边界。
Case practice
这个概念出现在哪些案例里
案例中的这些关卡会把概念放进业务约束、证据与取舍里练一遍。
Learning navigation
学习导航
沿认知链路:你现在在第 5 站,下一站是「给流程 · 怎么把做法沉淀下来」:先沿主路径补上这一层。
Relation topology
拓扑图谱网络 · 一度关联场
可拖拽节点、滚轮缩放、点击节点探索函数调用的一层关系
3 个节点 · 3 条直接关系
交互图谱之外,本页下方保留完整文字关系与词条链接。
Source register
核验来源
- Function callingOpenAI · 访问于 2026-07-30
- How tool use worksAnthropic · 访问于 2026-07-30
发布 2026-07-30 · 更新 2026-07-30 · 核验 2026-07-30