OpenAI 在开发者文档中系统阐述了 Function Calling:通过在请求里声明函数(tools),模型会在需要时返回要调用的函数名与参数,应用据此执行并把结果再传回模型,形成“推理—调用—反馈”的闭环。该能力现以 Responses API 为推荐路径,支持文本、图像等多模态交互与托管工具协作,替代以往以 Chat Completions 为主的用法。
指南强调以 JSON Schema 描述函数参数并建议采用更严格的约束(如不允许额外属性),配合 Structured Outputs 可显著提高可解析性与一致性;同时提供 tool_choice(auto/required/none)与多次/并行工具调用的范式,支持将工具返回结果加入后续上下文继续推理。迁移文档给出了从 Assistants/Chat Completions 过渡到 Responses 的差异点与示例。文档亦提醒:模型只负责“建议调用”,真实执行与安全校验需由开发者把关,并在需要时进行参数验证与权限控制。
常见问题
Q:Function Calling 与 Responses API 的关系?
A:Responses 是当前推荐接口,原生承载工具调用、事件化输出与多模态,取代旧版以 Chat Completions 为主的形态。
Q:如何让模型“必须”调用函数?
A:在请求中设置 tool_choice 为 required,或仅提供必选工具并在提示中明确约束。
Q:能否与结构化输出一起用?
A:可以。以 JSON Schema 严格约束函数参数,结合 Structured Outputs 要求最终回答按 schema 返回,减少解析与幻觉。
Q:一次能调用多个函数吗?
A:支持在一次响应中返回多个工具调用,应用应按顺序执行并把结果作为后续轮次输入。
Q:迁移要点有哪些?
A:函数定义与返回项在 Responses 中采用新的事件/项目形态;需按迁移指南更新请求体与解析逻辑。