OpenAI
页面内容为机器翻译。查看英文原文

OpenAI API 中的函数调用

什么是函数调用?它在 OpenAI API 中如何工作?

更新于:14 days ago

截至 2025 年 3 月 11 日,我们已发布全新 Agents 平台的构建模块。详情请参阅我们的 API 文档:Responses API、工具(包括 Web SearchFile SearchComputer Use),以及带有 TracingAgents SDK

函数调用允许你将 OpenAI 模型连接到外部工具和系统。这可用于许多场景,例如为 AI 助手赋予能力,或在你的应用程序与 LLM 之间构建深度集成。

请在我们的函数调用开发者指南中了解更多。

2024 年 6 月,我们推出了结构化输出。在函数定义中通过设置 strict: true 开启后,结构化输出会保证模型为函数调用生成的参数与你在函数定义中提供的 JSON 模式完全匹配。

2024 年 10 月,我们推出了“生成任何内容”功能,允许开发者描述一个函数、直接粘贴函数,或粘贴你的代码并生成有效的函数模式。在此帮助中心文章中了解有关“生成任何内容”的更多信息

如何使用函数调用?

函数调用适用于大量用例,例如:

  • 让助手获取数据

  • 让助手执行操作

  • 让助手执行计算

  • 构建丰富的工作流

  • 一个数据提取管道,用于获取原始文本,然后将其转换为结构化数据并保存在数据库中。

函数调用在 Responses API 中受支持,该 API 统一了此前分散在 Chat Completions APIAssistants API 中的能力。

如何使用 JSON 模式?

开启 JSON 模式后,除了一些需要你检测并妥善处理的边缘情况外,模型的输出会确保为有效 JSON。

要通过 Chat Completions API 请求 JSON 模式,请在受支持的模型上将 response_format 设置为 { "type": "json_object" }。使用 Responses API 时,在适用情况下,将 text.format 设置为 { "type": "json_object" },例如 text: { "format": { "type": "json_object" } }。在任一 API 中,JSON 模式仅在满足模型/消息/工具前提条件时才有效(例如,模型支持 json_object,对话包含生成 JSON 的指令,并且任何工具约束都是兼容的)。在有效输入上下文中,至少一条请求消息或输入消息必须包含不区分大小写形式的 json,例如 JSONjsonJson;否则,API 会返回错误。在 Responses 中,仅顶层 instructions 字段并不能满足此验证要求。在兼容的模型/路径上使用函数调用时,JSON 约束会自动应用于函数调用参数;不兼容的模型或工具/响应格式组合可能会被拒绝,或可能不会使用受 JSON 约束的采样。

重要说明:

  • 使用 JSON 模式时,你必须始终通过对话中的某条消息指示模型生成 JSON,例如通过系统消息。如果未包含生成 JSON 的明确指令,模型可能会生成无尽的空白字符流,请求也可能持续运行,直到达到 Token 限制。为帮助确保你不会忘记,除非相关输入消息或指令以不区分大小写的某种形式包含 json 一词,否则 JSON 模式会拒绝请求。

  • JSON 模式并不保证输出符合任何特定模式,只保证它有效且可无错误解析。你应使用结构化输出来确保它符合你的模式;如果无法做到,则应使用验证库,并可能结合重试来确保输出符合你所需的模式。

  • 你的应用程序必须检测并处理可能导致模型输出不是完整 JSON 对象的边缘情况(见下文)

这篇文章对你有帮助吗?