跳转到内容
主导航

创建对话补全

POST/chat/completions

正在启动新项目?我们建议尝试使用 Responses,以充分利用最新的 OpenAI 平台功能。对比 聊天补全与 Responses


为给定的聊天对话创建模型响应。请在文本生成视觉音频指南中了解更多信息。

参数支持可能会根据用于生成响应的模型而有所不同,尤其是对于较新的推理模型。下面注明了仅推理模型支持的参数。有关推理模型中当前不支持参数的状态,请参考推理指南

返回一个聊天补全对象,如果请求是流式的,则返回聊天补全分块(chunk)对象的流式序列。

请求体参数JSON展开 收起
messages: 数组,元素为 ChatCompletionMessageParam

迄今为止组成对话的消息列表。根据您使用的模型,支持不同的消息类型(模态),例如文本图像音频

以下之一
ChatCompletionDeveloperMessageParam object { content, role, name }

开发者提供的指令,模型应该遵守,无论用户发送什么消息。对于 o1 及更新的模型,developer 消息取代了以前的 system 消息。

content: string数组,元素为 ChatCompletionContentPartText { text, type }

开发者消息的内容。

以下之一
TextContent = string

开发者消息的内容。

ArrayOfContentParts = 数组,元素为 ChatCompletionContentPartText { text, type }

具有定义类型的元素组成的内容部分数组。对于开发者消息,仅支持 text 类型。

text: string

文本内容。

type: "text"

内容部分的类型。

role: "developer"

消息作者的角色,在此情况下为 developer

name: 可选 string

参与者的可选名称。为模型提供信息以区分具有相同角色的参与者。

ChatCompletionSystemMessageParam object { content, role, name }

开发者提供的指令,模型应该遵守,无论用户发送什么消息。对于 o1 及更新的模型,请改用 developer 消息来实现此目的。

content: string数组,元素为 ChatCompletionContentPartText { text, type }

系统消息的内容。

以下之一
TextContent = string

系统消息的内容。

ArrayOfContentParts = 数组,元素为 ChatCompletionContentPartText { text, type }

具有定义类型的元素组成的内容部分数组。对于系统消息,仅支持 text 类型。

text: string

文本内容。

type: "text"

内容部分的类型。

role: "system"

消息作者的角色,在此情况下为 system

name: 可选 string

参与者的可选名称。为模型提供信息以区分具有相同角色的参与者。

ChatCompletionUserMessageParam object { content, role, name }

终端用户发送的消息,包含提示词或附加的上下文信息。

content: string数组,元素为 ChatCompletionContentPart

用户消息的内容。

以下之一
TextContent = string

消息的文本内容。

ArrayOfContentParts = 数组,其元素为 ChatCompletionContentPart

具有定义类型的内容片段数组。支持的选项因用于生成响应的模型而异。可以包含文本、图像或音频输入。

以下之一
ChatCompletionContentPartText object { text, type }

了解 文本输入

text: string

文本内容。

type: "text"

内容部分的类型。

ChatCompletionContentPartImage object { image_url, type }

了解 图像输入

image_url: object { url, detail }
url: string

图像的 URL 或 Base64 编码的图像数据。

格式uri
detail: 可选 "auto""low""high"

指定图像的细节级别。请在 视觉指南 中了解更多信息。

以下之一
"auto"
"low"
"high"
type: "image_url"

内容部分的类型。

ChatCompletionContentPartInputAudio object { input_audio, type }

了解 音频输入

input_audio: object { data, format }
data: string

Base64 编码的音频数据。

format: "wav""mp3"

编码音频数据的格式。目前支持 “wav” 和 “mp3”。

以下之一
"wav"
"mp3"
type: "input_audio"

内容部分的类型。始终为 input_audio

FileContentPart object { file, type }

了解用于文本生成的 文件输入

file: object { file_data, file_id, filename }
file_data: 可选 string

Base64 编码的文件数据,在将文件作为字符串传递给模型时使用。

file_id: 可选 string

用作输入的已上传文件的 ID。

filename: 可选 string

文件名,在将文件作为字符串传递给模型时使用。

type: "file"

内容部分的类型。始终为 file

role: "user"

消息作者的角色,在这种情况下为 user

name: 可选 string

参与者的可选名称。为模型提供信息以区分具有相同角色的参与者。

ChatCompletionAssistantMessageParam object { role, audio, content, 还有 4 个 }

模型响应用户消息而发送的消息。

role: "assistant"

消息作者的角色,在此情况下为 assistant

audio: 可选 object { id }

关于模型上一次音频响应的数据。了解更多

id: string

模型上一次音频响应的唯一标识符。

content: 可选 string数组,元素为 ChatCompletionContentPartText { text, type } ChatCompletionContentPartRefusal { refusal, type }

助手消息的内容。除非指定了 tool_callsfunction_call,否则为必填项。

以下之一
TextContent = string

助手消息的内容。

ArrayOfContentParts = 数组,元素为 ChatCompletionContentPartText { text, type } ChatCompletionContentPartRefusal { refusal, type }

具有定义类型的元素组成的内容部分数组。可以是一个或多个 text 类型,或者恰好是一个 refusal 类型。

以下之一
ChatCompletionContentPartText object { text, type }

了解 文本输入

text: string

文本内容。

type: "text"

内容部分的类型。

ChatCompletionContentPartRefusal object { refusal, type }
refusal: string

模型生成的拒绝消息。

type: "refusal"

内容部分的类型。

已弃用function_call: 可选 object { arguments, name }

已弃用并由 tool_calls 代替。模型生成的应调用的函数名称和参数。

arguments: string

调用该函数所需的参数,由模型以 JSON 格式生成。请注意,模型生成的不一定是有效的 JSON,并且可能会幻觉出函数 schema 中未定义的参数。在调用函数之前,请在代码中验证这些参数。

name: string

要调用的函数名称。

name: 可选 string

参与者的可选名称。为模型提供信息以区分具有相同角色的参与者。

refusal: 可选 string

助手的拒绝消息。

tool_calls: 可选 数组,元素为 ChatCompletionMessageToolCall

由模型生成的工具调用,例如函数调用。

以下之一
ChatCompletionMessageFunctionToolCall object { id, function, type }

对模型创建的函数工具的调用。

id: string

工具调用的 ID。

function: object { arguments, name }

模型调用的函数。

arguments: string

调用该函数所需的参数,由模型以 JSON 格式生成。请注意,模型生成的不一定是有效的 JSON,并且可能会幻觉出函数 schema 中未定义的参数。在调用函数之前,请在代码中验证这些参数。

name: string

要调用的函数名称。

type: "function"

工具的类型。目前仅支持 function

ChatCompletionMessageCustomToolCall object { id, custom, type }

对模型创建的自定义工具的调用。

id: string

工具调用的 ID。

custom: object { input, name }

模型调用的自定义工具。

input: string

由模型生成的自定义工具调用的输入。

name: string

要调用的自定义工具的名称。

type: "custom"

工具的类型。始终为 custom

ChatCompletionToolMessageParam object { content, role, tool_call_id }
content: string数组,元素为 ChatCompletionContentPartText { text, type }

工具消息的内容。

以下之一
TextContent = string

工具消息的内容。

ArrayOfContentParts = 数组,元素为 ChatCompletionContentPartText { text, type }

具有定义类型的内容片段数组。对于工具消息,仅支持 text 类型。

text: string

文本内容。

type: "text"

内容部分的类型。

role: "tool"

消息作者的角色,在这种情况下为 tool

tool_call_id: string

此消息所响应的工具调用。

ChatCompletionFunctionMessageParam object { content, name, role }
content: string

函数消息的内容。

name: string

要调用的函数名称。

role: "function"

消息作者的角色,在此情况下为 function

model: string"gpt-5.4""gpt-5.4-mini""gpt-5.4-nano"还有 75 个

用于生成响应的模型 ID,例如 gpt-4oo3。OpenAI 提供了广泛的模型,具有不同的功能、性能特征和价格点。请参阅模型指南以浏览和对比可用模型。

以下之一
string
"gpt-5.4""gpt-5.4-mini""gpt-5.4-nano"还有 75 个

用于生成响应的模型 ID,例如 gpt-4oo3。OpenAI 提供了广泛的模型,具有不同的功能、性能特征和价格点。请参阅模型指南以浏览和对比可用模型。

以下之一
"gpt-5.4"
"gpt-5.4-mini"
"gpt-5.4-nano"
"gpt-5.4-mini-2026-03-17"
"gpt-5.4-nano-2026-03-17"
"gpt-5.3-chat-latest"
"gpt-5.2"
"gpt-5.2-2025-12-11"
"gpt-5.2-chat-latest"
"gpt-5.2-pro"
"gpt-5.2-pro-2025-12-11"
"gpt-5.1"
"gpt-5.1-2025-11-13"
"gpt-5.1-codex"
"gpt-5.1-mini"
"gpt-5.1-chat-latest"
"gpt-5"
"gpt-5-mini"
"gpt-5-nano"
"gpt-5-2025-08-07"
"gpt-5-mini-2025-08-07"
"gpt-5-nano-2025-08-07"
"gpt-5-chat-latest"
"gpt-4.1"
"gpt-4.1-mini"
"gpt-4.1-nano"
"gpt-4.1-2025-04-14"
"gpt-4.1-mini-2025-04-14"
"gpt-4.1-nano-2025-04-14"
"o4-mini"
"o4-mini-2025-04-16"
"o3"
"o3-2025-04-16"
"o3-mini"
"o3-mini-2025-01-31"
"o1"
"o1-2024-12-17"
"o1-preview"
"o1-preview-2024-09-12"
"o1-mini"
"o1-mini-2024-09-12"
"gpt-4o"
"gpt-4o-2024-11-20"
"gpt-4o-2024-08-06"
"gpt-4o-2024-05-13"
"gpt-4o-audio-preview"
"gpt-4o-audio-preview-2024-10-01"
"gpt-4o-audio-preview-2024-12-17"
"gpt-4o-audio-preview-2025-06-03"
"gpt-4o-mini-audio-preview"
"gpt-4o-mini-audio-preview-2024-12-17"
"gpt-4o-search-preview"
"gpt-4o-mini-search-preview"
"gpt-4o-search-preview-2025-03-11"
"gpt-4o-mini-search-preview-2025-03-11"
"chatgpt-4o-latest"
"codex-mini-latest"
"gpt-4o-mini"
"gpt-4o-mini-2024-07-18"
"gpt-4-turbo"
"gpt-4-turbo-2024-04-09"
"gpt-4-0125-preview"
"gpt-4-turbo-preview"
"gpt-4-1106-preview"
"gpt-4-vision-preview"
"gpt-4"
"gpt-4-0314"
"gpt-4-0613"
"gpt-4-32k"
"gpt-4-32k-0314"
"gpt-4-32k-0613"
"gpt-3.5-turbo"
"gpt-3.5-turbo-16k"
"gpt-3.5-turbo-0301"
"gpt-3.5-turbo-0613"
"gpt-3.5-turbo-1106"
"gpt-3.5-turbo-0125"
"gpt-3.5-turbo-16k-0613"
audio: 可选 ChatCompletionAudioParam { format, voice }

音频输出参数。当使用 modalities: ["audio"] 请求音频输出时必填。了解更多

format: "wav""aac""mp3"还有 3 个

指定输出音频格式。必须是 wavmp3flacopuspcm16 之一。

以下之一
"wav"
"aac"
"mp3"
"flac"
"opus"
"pcm16"
voice: string"alloy""ash""ballad"还有 7 个object { id }

模型用于响应的声音。支持的内置声音包括 alloyashballadcoralechofablenovaonyxsageshimmermarincedar。您也可以提供包含 id 的自定义声音对象,例如 { "id": "voice_1234" }

以下之一
string
"alloy""ash""ballad"另外 7 个
以下之一
"alloy"
"ash"
"ballad"
"coral"
"echo"
"sage"
"shimmer"
"verse"
"marin"
"cedar"
ID 对象 { id }

自定义声音引用。

id: string

自定义声音 ID,例如 voice_1234

frequency_penalty: 可选 number

介于 -2.0 和 2.0 之间的数字。正值会根据新 token 在迄今为止的文本中出现的频率对其进行惩罚,从而降低模型逐字重复同一行文字的可能性。

最小值-2
最大值2
已弃用function_call: 可选 "none""auto"ChatCompletionFunctionCallOption { name }

已弃用,建议使用 tool_choice 代替。

控制模型调用哪个函数(如果有)。

none 表示模型不会调用函数,而是生成消息。

auto 表示模型可以在生成消息和调用函数之间进行选择。

通过 {"name": "my_function"} 指定特定函数会强制模型调用该函数。

当不存在函数时,默认为 none。如果存在函数,则默认为 auto

以下之一
"none""auto"

none 表示模型不会调用函数,而是生成消息。auto 表示模型可以在生成消息和调用函数之间进行选择。

以下之一
"none"
"auto"
ChatCompletionFunctionCallOption object { name }

通过 {"name": "my_function"} 指定特定函数会强制模型调用该函数。

name: string

要调用的函数名称。

已弃用functions: 可选 数组,元素为 object { name, description, parameters }

已弃用,建议使用 tools 代替。

模型可能会为其生成 JSON 输入的函数列表。

name: string

要调用的函数名称。必须为 a-z、A-Z、0-9,或包含下划线和连字符,最大长度为 64。

description: 可选 string

函数功能的描述,模型以此来决定何时以及如何调用该函数。

parameters: 可选 FunctionParameters

该函数接受的参数,描述为 JSON Schema 对象。有关示例,请参阅指南;有关该格式的文档,请参阅 JSON Schema 参考

省略 parameters 将定义一个参数列表为空的函数。

logit_bias: 可选 map[number]

修改指定 token 在补全中出现的可能性。

接受一个 JSON 对象,该对象将 token(通过其在分词器中的 token ID 指定)映射到关联的偏差值(从 -100 到 100)。从数学上讲,偏差会在采样前添加到模型生成的对数概率(logits)中。具体效果因模型而异,但介于 -1 和 1 之间的值应该会降低或增加被选择的可能性;像 -100 或 100 这样的值应该会导致禁用或独占选择相关的 token。

logprobs: 可选 boolean

是否返回输出 token 的对数概率。如果为 true,则返回 messagecontent 中返回的每个输出 token 的对数概率。

max_completion_tokens: 可选 number

可为补全生成的 token 数量的上限,包括可见的输出 token 和推理 token

已弃用max_tokens: 可选 number

聊天补全中可生成的最大 token 数量。此值可用于控制通过 API 生成的文本的成本

此值现已弃用,建议使用 max_completion_tokens 代替,且与o 系列模型不兼容。

metadata: 可选的 Metadata

可以附加到对象的 16 个键值对集合。这对于以结构化格式存储对象的附加信息,以及通过 API 或仪表板查询对象非常有用。

键是最大长度为 64 个字符的字符串。值是最大长度为 512 个字符的字符串。

modalities: 可选 数组,其元素为 "text""audio"

您希望模型生成的输出类型。大多数模型都能够生成文本,这是默认设置

["text"]

gpt-4o-audio-preview 模型也可用于生成音频。要请求此模型同时生成文本和音频响应,您可以使用

["text", "audio"]

以下之一
"text"
"audio"
n: 可选 number

为每条输入消息生成多少个聊天补全选项。请注意,您将根据所有选项中生成的 token 数量被收费。请将 n 保持为 1 以最小化成本。

最小值1
最大值128
parallel_tool_calls: 可选的 布尔值

在工具使用期间是否启用并行函数调用

prediction: 可选 ChatCompletionPredictionContent { content, type }

静态预测输出内容,例如正在重新生成的文本文件的内容。

content: string数组,元素为 ChatCompletionContentPartText { text, type }

生成模型响应时应匹配的内容。如果生成的 token 与此内容匹配,则可以更快地返回整个模型响应。

以下之一
TextContent = string

用于预测输出(Predicted Output)的内容。这通常是您要进行微调修改并重新生成的文件的文本。

ArrayOfContentParts = 数组,元素为 ChatCompletionContentPartText { text, type }

具有定义类型的内容片段数组。支持的选项因用于生成响应的模型而异。可以包含文本输入。

text: string

文本内容。

type: "text"

内容部分的类型。

type: "content"

您要提供的预测内容的类型。当前该类型始终为 content

presence_penalty: 可选 number

介于 -2.0 和 2.0 之间的数字。正值会根据新 token 是否出现在迄今为止的文本中对其进行惩罚,从而增加模型谈论新主题的可能性。

最小值-2
最大值2
prompt_cache_key: 可选 string

由 OpenAI 用于缓存相似请求的响应,以优化您的缓存命中率。取代了 user 字段。了解更多

prompt_cache_retention: 可选 "in_memory""24h"

提示词缓存的保留策略。设置为 24h 以启用扩展提示词缓存,这可以使缓存的前缀保持活跃更长时间,最长可达 24 小时。了解更多

以下之一
"in_memory"
"24h"
reasoning_effort: 可选 ReasoningEffort

限制推理模型在推理上的力度。目前支持的值有 noneminimallowmediumhighxhigh。减小推理力度可以加快响应速度,并减少响应中用于推理的 token 数量。

  • gpt-5.1 默认为 none,即不进行推理。gpt-5.1 支持的推理力度值为 nonelowmediumhigh。在 gpt-5.1 中,所有推理力度值都支持工具调用。
  • gpt-5.1 之前的所有模型默认推理力度为 medium,且不支持 none
  • gpt-5-pro 模型默认(且仅支持)high 推理力度。
  • gpt-5.1-codex-max 之后的所有模型都支持 xhigh
以下之一
"none"
"minimal"
"low"
"medium"
"high"
"xhigh"
response_format: 可选 ResponseFormatText { type } ResponseFormatJSONSchema { json_schema, type } ResponseFormatJSONObject { type }

一个指定模型必须输出的格式的对象。

设置为 { "type": "json_schema", "json_schema": {...} } 可启用结构化输出(Structured Outputs),从而确保模型符合您提供的 JSON 模式。在结构化输出指南中了解更多信息。

设置为 { "type": "json_object" } 可启用较旧的 JSON 模式,从而确保模型生成的消息是有效的 JSON。对于支持 json_schema 的模型,首选使用 json_schema

以下之一
ResponseFormatText object { type }

默认响应格式。用于生成文本响应。

type: "text"

正在定义的响应格式类型。始终为 text

ResponseFormatJSONSchema object { json_schema, type }

JSON 模式响应格式。用于生成结构化 JSON 响应。了解有关结构化输出的更多信息。

json_schema: object { name, description, schema, strict }

结构化输出配置选项,包括一个 JSON 模式。

name: string

响应格式的名称。必须为 a-z、A-Z、0-9,或包含下划线和连字符,最大长度为 64。

description: 可选 string

响应格式用途的描述,模型用它来决定如何以该格式进行响应。

schema: 可选 map[unknown]

响应格式的模式,描述为一个 JSON 模式对象。在此处了解如何构建 JSON 模式。

strict: 可选 boolean

生成输出时是否启用严格模式遵守。如果设置为 true,模型将始终遵循 schema 字段中定义的精确模式。当 stricttrue 时,仅支持 JSON 模式的一个子集。要了解更多信息,请阅读结构化输出指南

type: "json_schema"

正在定义的响应格式类型。始终为 json_schema

ResponseFormatJSONObject object { type }

JSON 对象响应格式。一种较旧的生成 JSON 响应的方法。对于支持 json_schema 的模型,推荐使用它。请注意,如果没有系统或用户消息指示,模型将不会生成 JSON。

type: "json_object"

正在定义的响应格式类型。始终为 json_object

safety_identifier: 可选 string

一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用用户。该 ID 应为唯一标识每个用户的字符串,最大长度为 64 个字符。我们建议对他们的用户名或邮箱地址进行哈希处理,以避免向我们发送任何身份识别信息。了解更多

maxLength64
已弃用seed: 可选 number

此功能目前处于 Beta 测试阶段。如果指定了该参数,我们的系统将尽最大努力进行确定性采样,以便使用相同的 seed 和参数的重复请求应返回相同的结果。确定性并不能保证,您应该参考 system_fingerprint 响应参数以监控后端的更改。

最小值-9223372036854776000
最大值9223372036854776000
service_tier: 可选 "auto""default""flex"还有 2 个

指定用于处理请求的服务层级类型。

  • 如果设置为 ‘auto’,则将使用项目设置中配置的服务层级处理请求。除非另有配置,否则项目将默认使用 ‘default’。
  • 如果设置为 ‘default’,则将以所选模型的标准价格和性能处理请求。
  • 如果设置为 ‘flex’ 或 ‘priority’,则请求将使用相应的服务层级进行处理。
  • 未设置时,默认行为为 ‘auto’。

设置 service_tier 参数时,响应体将包含基于实际用于服务请求的处理模式的 service_tier 值。此响应值可能与参数中设置的值不同。

以下之一
"auto"
"default"
"flex"
"scale"
"priority"
stop: 可选 string数组,元素为 string

最新的推理模型 o3o4-mini 不支持此参数。

最多 4 个序列,API 将在这些序列处停止生成后续 token。返回的文本中将不包含停止序列。

以下之一
string
数组,元素为 string
store: 可选 boolean

是否存储此聊天补全请求的输出,以便在我们的模型蒸馏评估 (evals)产品中使用。

支持文本和图像输入。注意:超过 8MB 的图像输入将被丢弃。

stream: 可选 boolean

如果设置为 true,模型响应数据将在生成时使用服务器发送事件 (SSE)流式传输到客户端。有关更多信息,请参阅下面的流式传输部分,以及有关如何处理流式传输事件的流式传输响应指南。

stream_options: 可选 ChatCompletionStreamOptions { include_obfuscation, include_usage }

流式响应的选项。仅在设置 stream: true 时才设置此项。

include_obfuscation: 可选 boolean

当为 true 时,将启用流混淆。流混淆会在流式增量事件的 obfuscation 字段中添加随机字符,以规范化有效负载大小,从而缓解某些旁路攻击。默认情况下会包含这些混淆字段,但它们会给数据流增加少量开销。如果您信任应用程序与 OpenAI API 之间的网络连接,可以将 include_obfuscation 设置为 false 以优化带宽。

include_usage: 可选 boolean

如果设置,将在 data: [DONE] 消息之前流式传输一个额外的块(chunk)。该块上的 usage 字段将显示整个请求的 token 使用情况统计信息,且 choices field 将始终为空数组。

所有其他块也将包含 usage 字段,但其值为 null。注意:如果流中断,您可能无法收到包含该请求总 token 使用情况的最后一个使用情况块。

temperature: 可选 number

要使用的采样温度,介于 0 和 2 之间。较高的值(如 0.8)会使输出更加随机,而较低的值(如 0.2)会使其更加集中且确定。我们通常建议修改此参数或 top_p,但不要同时修改两者。

最小值0
最大值2
tool_choice: 可选 ChatCompletionToolChoiceOption

控制模型调用哪些工具(如果有)。none 表示模型不会调用任何工具,而是生成一条消息。auto 表示模型可以在生成消息或调用一个或多个工具之间进行选择。required 表示模型必须调用一个或多个工具。通过 {"type": "function", "function": {"name": "my_function"}} 指定特定工具会强制模型调用该工具。

当没有工具时,默认值为 none。如果存在工具,默认值为 auto

以下之一
ToolChoiceMode = "none""auto""required"

none 表示模型不会调用任何工具,而是生成一条消息。auto 表示模型可以在生成消息或调用一个或多个工具之间进行选择。required 表示模型必须调用一个或多个工具。

以下之一
"none"
"auto"
"required"
ChatCompletionAllowedToolChoice object { allowed_tools, type }

将模型可用的工具限制为预定义的一组工具。

allowed_tools: ChatCompletionAllowedTools { mode, tools }

将模型可用的工具限制为预定义的一组工具。

mode: "auto""required"

将模型可用的工具限制为预定义的一组工具。

auto 允许模型在允许的工具中进行选择并生成消息。

required 要求模型调用一个或多个允许的工具。

以下之一
"auto"
"required"
tools: 数组,其元素为 map[unknown]

模型应被允许调用的工具定义列表。

对于 Chat Completions API,工具定义列表可能类似于

[
  { "type": "function", "function": { "name": "get_weather" } },
  { "type": "function", "function": { "name": "get_time" } }
]
type: "allowed_tools"

允许的工具配置类型。始终为 allowed_tools

ChatCompletionNamedToolChoice object { function, type }

指定模型应使用的工具。用于强制模型调用特定函数。

function: object { name }
name: string

要调用的函数名称。

type: "function"

对于函数调用,类型始终为 function

ChatCompletionNamedToolChoiceCustom object { custom, type }

指定模型应使用的工具。用于强制模型调用特定的自定义工具。

custom: object { name }
name: string

要调用的自定义工具的名称。

type: "custom"

对于自定义工具调用,类型始终为 custom

tools: 可选 数组,元素为 ChatCompletionTool

模型可以调用的工具列表。您可以提供自定义工具函数工具

以下之一
ChatCompletionFunctionTool object { function, type }

可用于生成响应的函数工具。

function: FunctionDefinition { name, description, parameters, strict }
name: string

要调用的函数名称。必须为 a-z、A-Z、0-9,或包含下划线和连字符,最大长度为 64。

description: 可选 string

函数功能的描述,模型以此来决定何时以及如何调用该函数。

parameters: 可选 FunctionParameters

该函数接受的参数,描述为 JSON Schema 对象。有关示例,请参阅指南;有关该格式的文档,请参阅 JSON Schema 参考

省略 parameters 将定义一个参数列表为空的函数。

strict: 可选 boolean

在生成函数调用时是否启用严格模式(严格遵守 schema)。如果设置为 true,模型将完全遵循 parameters 字段中定义的 schema。当 stricttrue 时,仅支持 JSON Schema 的子集。在函数调用指南中了解有关结构化输出(Structured Outputs)的更多信息。

type: "function"

工具的类型。目前仅支持 function

ChatCompletionCustomTool object { custom, type }

使用指定格式处理输入的自定义工具。

custom: object { name, description, format }

自定义工具的属性。

name: string

自定义工具的名称,用于在工具调用中进行标识。

description: 可选 string

自定义工具的可选描述,用于提供更多上下文。

format: 可选 object { type } object { grammar, type }

自定义工具的输入格式。默认是无限制的文本。

以下之一
TextFormat object { type }

无限制的自由格式文本。

type: "text"

无限制的文本格式。始终为 text

GrammarFormat object { grammar, type }

用户定义的语法。

grammar: object { definition, syntax }

您选择的语法。

definition: string

语法定义。

syntax: "lark""regex"

语法定义的语法。必须为 larkregex 之一。

以下之一
"lark"
"regex"
type: "grammar"

语法格式。始终为 grammar

type: "custom"

自定义工具的类型。始终为 custom

top_logprobs: 可选 number

一个介于 0 到 20 之间的整数,指定在每个 token 位置返回的最大最可能 token 数量,每个 token 都有一个关联的对数概率。在某些情况下,返回的 token 数量可能会少于请求的数量。如果使用此参数,必须将 logprobs 设置为 true

最小值0
最大值20
top_p: 可选 number

温度采样的替代方案,称为核采样(nucleus sampling),其中模型仅考虑具有 top_p 概率质量的 token 的结果。因此,0.1 意味着仅考虑包含前 10% 概率质量的 token。

我们通常建议修改此参数或 temperature,但不要同时修改两者。

最小值0
maximum1
已弃用user: 可选 string

此字段正在被 safety_identifierprompt_cache_key 取代。请改用 prompt_cache_key 以维持缓存优化。您最终用户的稳定标识符。用于通过更好地分桶相似请求来提高缓存命中率,并帮助 OpenAI 检测和防止滥用。了解更多

verbosity: 可选 "low""medium""high"

限制模型响应的详细程度。较低的值将导致更简短的响应,而较高的值将导致更详细的响应。目前支持的值有 lowmediumhigh

以下之一
"low"
"medium"
"high"
web_search_options: 可选 object { search_context_size, user_location }

该工具会在网络上搜索相关的结果以用于响应中。了解关于网络搜索工具的更多信息。

search_context_size: 可选 "low""medium""high"

关于用于搜索的上下文窗口空间量的高层级指导。lowmediumhigh 之一。默认为 medium

以下之一
"low"
"medium"
"high"
user_location: 可选 object { approximate, type }

搜索的近似位置参数。

approximate: object { city, country, region, timezone }

搜索的近似位置参数。

city: 可选 string

用户所在城市的自由文本输入,例如 San Francisco

country: 可选 string

用户的两位字母 ISO 国家代码,例如 US

region: 可选 string

用户所在区域的自由文本输入,例如 California

timezone: 可选 string

用户的 IANA 时区,例如 America/Los_Angeles

type: "approximate"

位置估算的类型。始终为 approximate

返回展开 收起
ChatCompletion object { id, choices, created, 还有 5 个 }

表示模型根据提供的输入返回的对话补全响应。

id: string

对话补全的唯一标识符。

choices: 数组,元素为 object { finish_reason, index, logprobs, message }

对话补全选项的列表。如果 n 大于 1,可以包含多个选项。

finish_reason: "stop""length""tool_calls"还有 2 个

模型停止生成 token 的原因。如果模型达到了自然停止点或提供了停止序列,则为 stop;如果达到了请求中指定的全局最大 token 数,则为 length;如果由于我们的内容过滤器标记而省略了内容,则为 content_filter;如果模型调用了工具,则为 tool_calls;如果模型调用了函数(已弃用),则为 function_call

以下之一
"stop"
"length"
"tool_calls"
"content_filter"
"function_call"
index: number

该选项在选项列表中的索引。

logprobs: object { content, refusal }

该选项的对数概率信息。

content: 数组,元素为 ChatCompletionTokenLogprob { token, bytes, logprob, top_logprobs }

包含对数概率信息的邮件内容 token 列表。

token: string

Token。

bytes: 数组,元素为 number

代表该 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示且必须合并其字节表示以生成正确文本表示的情况下非常有用。如果该 token 没有字节表示,则可以为 null

logprob: number

该 token 的对数概率(如果它在最可能的前 20 个 token 之内)。否则,使用值 -9999.0 来表示该 token 极不可能。

top_logprobs: 数组,元素为 object { token, bytes, logprob }

在此 token 位置上最有可能的 token 及其对数概率的列表。条目数量可能会少于请求的 top_logprobs

token: string

Token。

bytes: 数组,元素为 number

代表该 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示且必须合并其字节表示以生成正确文本表示的情况下非常有用。如果该 token 没有字节表示,则可以为 null

logprob: number

该 token 的对数概率(如果它在最可能的前 20 个 token 之内)。否则,使用值 -9999.0 来表示该 token 极不可能。

refusal: 数组,元素为 ChatCompletionTokenLogprob { token, bytes, logprob, top_logprobs }

包含对数概率信息的拒绝消息 token 列表。

token: string

Token。

bytes: 数组,元素为 number

代表该 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示且必须合并其字节表示以生成正确文本表示的情况下非常有用。如果该 token 没有字节表示,则可以为 null

logprob: number

该 token 的对数概率(如果它在最可能的前 20 个 token 之内)。否则,使用值 -9999.0 来表示该 token 极不可能。

top_logprobs: 数组,元素为 object { token, bytes, logprob }

在此 token 位置上最有可能的 token 及其对数概率的列表。条目数量可能会少于请求的 top_logprobs

token: string

Token。

bytes: 数组,元素为 number

代表该 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示且必须合并其字节表示以生成正确文本表示的情况下非常有用。如果该 token 没有字节表示,则可以为 null

logprob: number

该 token 的对数概率(如果它在最可能的前 20 个 token 之内)。否则,使用值 -9999.0 来表示该 token 极不可能。

message: ChatCompletionMessage { content, refusal, role, 还有 4 个 }

由模型生成的对话补全消息。

content: string

消息的内容。

refusal: string

模型生成的拒绝消息。

role: "assistant"

此消息作者的角色。

annotations: 可选 数组,元素为 object { type, url_citation }

消息的批注(如果适用),例如在使用 网络搜索工具 时。

type: "url_citation"

URL 引用的类型。始终为 url_citation

url_citation: object { end_index, start_index, title, url }

使用网络搜索时的 URL 引用。

end_index: number

消息中 URL 引用最后一个字符的索引。

start_index: number

消息中 URL 引用第一个字符的索引。

title: string

网页资源的标题。

url: string

网页资源的 URL。

格式uri
audio: 可选 ChatCompletionAudio { id, data, expires_at, transcript }

如果请求了音频输出模态,则此对象包含关于模型音频响应的数据。了解更多

id: string

此音频响应的唯一标识符。

data: string

由模型生成的 Base64 编码的音频字节,格式在请求中指定。

expires_at: number

此音频响应在服务器上不再可访问以用于多轮对话的 Unix 时间戳(以秒为单位)。

格式unixtime
transcript: string

模型生成的音频文本转写。

已弃用function_call: 可选 object { arguments, name }

已弃用并由 tool_calls 代替。模型生成的应调用的函数名称和参数。

arguments: string

调用该函数所需的参数,由模型以 JSON 格式生成。请注意,模型生成的不一定是有效的 JSON,并且可能会幻觉出函数 schema 中未定义的参数。在调用函数之前,请在代码中验证这些参数。

name: string

要调用的函数名称。

tool_calls: 可选 数组,元素为 ChatCompletionMessageToolCall

由模型生成的工具调用,例如函数调用。

以下之一
ChatCompletionMessageFunctionToolCall object { id, function, type }

对模型创建的函数工具的调用。

id: string

工具调用的 ID。

function: object { arguments, name }

模型调用的函数。

arguments: string

调用该函数所需的参数,由模型以 JSON 格式生成。请注意,模型生成的不一定是有效的 JSON,并且可能会幻觉出函数 schema 中未定义的参数。在调用函数之前,请在代码中验证这些参数。

name: string

要调用的函数名称。

type: "function"

工具的类型。目前仅支持 function

ChatCompletionMessageCustomToolCall object { id, custom, type }

对模型创建的自定义工具的调用。

id: string

工具调用的 ID。

custom: object { input, name }

模型调用的自定义工具。

input: string

由模型生成的自定义工具调用的输入。

name: string

要调用的自定义工具的名称。

type: "custom"

工具的类型。始终为 custom

created: number

创建对话补全时的 Unix 时间戳(以秒为单位)。

格式unixtime
model: string

用于对话补全的模型。

object: "chat.completion"

对象类型,始终为 chat.completion

service_tier: 可选 "auto""default""flex"还有 2 个

指定用于处理请求的服务层级类型。

  • 如果设置为 ‘auto’,则将使用项目设置中配置的服务层级处理请求。除非另有配置,否则项目将默认使用 ‘default’。
  • 如果设置为 ‘default’,则将以所选模型的标准价格和性能处理请求。
  • 如果设置为 ‘flex’ 或 ‘priority’,则请求将使用相应的服务层级进行处理。
  • 未设置时,默认行为为 ‘auto’。

设置 service_tier 参数时,响应体将包含基于实际用于服务请求的处理模式的 service_tier 值。此响应值可能与参数中设置的值不同。

以下之一
"auto"
"default"
"flex"
"scale"
"priority"
已弃用system_fingerprint: 可选 string

此指纹代表模型运行的后端配置。

可以与 seed 请求参数结合使用,以了解何时进行了可能影响确定性的后端更改。

usage: 可选 CompletionUsage { completion_tokens, prompt_tokens, total_tokens, 还有 2 个 }

补全请求的使用率统计数据。

completion_tokens: number

生成的补全中的 token 数量。

prompt_tokens: number

提示词(prompt)中的 token 数量。

total_tokens: number

请求中使用的总 token 数量(提示词 + 补全)。

completion_tokens_details: 可选 object { accepted_prediction_tokens, audio_tokens, reasoning_tokens, rejected_prediction_tokens }

补全中使用的 token 细分。

accepted_prediction_tokens: 可选 number

使用预测输出(Predicted Outputs)时,预测中出现在补全中的 token 数量。

audio_tokens: 可选 number

模型生成的音频输入 token。

reasoning_tokens: 可选 number

模型用于推理生成的 token。

rejected_prediction_tokens: 可选 number

使用预测输出(Predicted Outputs)时,预测中未出现在补全中的 token 数量。然而,与推理 token 类似,在计费、输出和上下文窗口限制方面,这些 token 仍会计入总补全 token 中。

prompt_tokens_details: 可选 object { audio_tokens, cached_tokens }

提示词(prompt)中使用的 token 细分。

audio_tokens: 可选 number

提示词中存在的音频输入 token。

cached_tokens: 可选的 数字

提示词中存在的缓存 token。

创建对话补全

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "VAR_chat_model_id",
    "messages": [
      {
        "role": "developer",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'
{
  "id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
  "object": "chat.completion",
  "created": 1741569952,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I assist you today?",
        "refusal": null,
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 19,
    "completion_tokens": 10,
    "total_tokens": 29,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default"
}

创建对话补全

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-5.4",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "What is in this image?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'
{
  "id": "chatcmpl-B9MHDbslfkBeAs8l4bebGdFOJ6PeG",
  "object": "chat.completion",
  "created": 1741570283,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "The image shows a wooden boardwalk path running through a lush green field or meadow. The sky is bright blue with some scattered clouds, giving the scene a serene and peaceful atmosphere. Trees and shrubs are visible in the background.",
        "refusal": null,
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1117,
    "completion_tokens": 46,
    "total_tokens": 1163,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default"
}

创建对话补全

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "VAR_chat_model_id",
    "messages": [
      {
        "role": "developer",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}

....

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}

创建对话补全

curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": "What is the weather like in Boston today?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_current_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"]
            }
          },
          "required": ["location"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}'
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1699896916,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_current_weather",
              "arguments": "{\n\"location\": \"Boston, MA\"\n}"
            }
          }
        ]
      },
      "logprobs": null,
      "finish_reason": "tool_calls"
    }
  ],
  "usage": {
    "prompt_tokens": 82,
    "completion_tokens": 17,
    "total_tokens": 99,
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  }
}

创建对话补全

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "VAR_chat_model_id",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "logprobs": true,
    "top_logprobs": 2
  }'
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1702685778,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I assist you today?"
      },
      "logprobs": {
        "content": [
          {
            "token": "Hello",
            "logprob": -0.31725305,
            "bytes": [72, 101, 108, 108, 111],
            "top_logprobs": [
              {
                "token": "Hello",
                "logprob": -0.31725305,
                "bytes": [72, 101, 108, 108, 111]
              },
              {
                "token": "Hi",
                "logprob": -1.3190403,
                "bytes": [72, 105]
              }
            ]
          },
          {
            "token": "!",
            "logprob": -0.02380986,
            "bytes": [
              33
            ],
            "top_logprobs": [
              {
                "token": "!",
                "logprob": -0.02380986,
                "bytes": [33]
              },
              {
                "token": " there",
                "logprob": -3.787621,
                "bytes": [32, 116, 104, 101, 114, 101]
              }
            ]
          },
          {
            "token": " How",
            "logprob": -0.000054669687,
            "bytes": [32, 72, 111, 119],
            "top_logprobs": [
              {
                "token": " How",
                "logprob": -0.000054669687,
                "bytes": [32, 72, 111, 119]
              },
              {
                "token": "<|end|>",
                "logprob": -10.953937,
                "bytes": null
              }
            ]
          },
          {
            "token": " can",
            "logprob": -0.015801601,
            "bytes": [32, 99, 97, 110],
            "top_logprobs": [
              {
                "token": " can",
                "logprob": -0.015801601,
                "bytes": [32, 99, 97, 110]
              },
              {
                "token": " may",
                "logprob": -4.161023,
                "bytes": [32, 109, 97, 121]
              }
            ]
          },
          {
            "token": " I",
            "logprob": -3.7697225e-6,
            "bytes": [
              32,
              73
            ],
            "top_logprobs": [
              {
                "token": " I",
                "logprob": -3.7697225e-6,
                "bytes": [32, 73]
              },
              {
                "token": " assist",
                "logprob": -13.596657,
                "bytes": [32, 97, 115, 115, 105, 115, 116]
              }
            ]
          },
          {
            "token": " assist",
            "logprob": -0.04571125,
            "bytes": [32, 97, 115, 115, 105, 115, 116],
            "top_logprobs": [
              {
                "token": " assist",
                "logprob": -0.04571125,
                "bytes": [32, 97, 115, 115, 105, 115, 116]
              },
              {
                "token": " help",
                "logprob": -3.1089056,
                "bytes": [32, 104, 101, 108, 112]
              }
            ]
          },
          {
            "token": " you",
            "logprob": -5.4385737e-6,
            "bytes": [32, 121, 111, 117],
            "top_logprobs": [
              {
                "token": " you",
                "logprob": -5.4385737e-6,
                "bytes": [32, 121, 111, 117]
              },
              {
                "token": " today",
                "logprob": -12.807695,
                "bytes": [32, 116, 111, 100, 97, 121]
              }
            ]
          },
          {
            "token": " today",
            "logprob": -0.0040071653,
            "bytes": [32, 116, 111, 100, 97, 121],
            "top_logprobs": [
              {
                "token": " today",
                "logprob": -0.0040071653,
                "bytes": [32, 116, 111, 100, 97, 121]
              },
              {
                "token": "?",
                "logprob": -5.5247097,
                "bytes": [63]
              }
            ]
          },
          {
            "token": "?",
            "logprob": -0.0008108172,
            "bytes": [63],
            "top_logprobs": [
              {
                "token": "?",
                "logprob": -0.0008108172,
                "bytes": [63]
              },
              {
                "token": "?\n",
                "logprob": -7.184561,
                "bytes": [63, 10]
              }
            ]
          }
        ]
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 9,
    "total_tokens": 18,
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "system_fingerprint": null
}
返回示例
{
  "id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
  "object": "chat.completion",
  "created": 1741569952,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I assist you today?",
        "refusal": null,
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 19,
    "completion_tokens": 10,
    "total_tokens": 29,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default"
}
© . This website operates independently and is not affiliated with or endorsed by OpenAI, Inc. All brand names, logos, and trademarks are the property of their respective owners.