创建聊天完成

帖子 https://api.openai.com/v1/chat/completions

为给定的聊天对话创建模型响应。在文本生成愿景、 和语音导览。source

请求正文

到目前为止,包含对话的消息列表。根据你使用的模型,不同的消息类型(模态)是 支持,如文本图像音频source

要使用的模型的 ID。有关哪些模型可与 Chat API 配合使用的详细信息,请参阅模型端点兼容性表。source

是否存储此聊天完成请求的输出 用于我们的 Model DistillationEVALS 产品。source

用于筛选补全的开发人员定义的标记和值 在仪表板中。source

介于 -2.0 和 2.0 之间的数字。正值会根据新标记到目前为止在文本中的现有频率来惩罚新标记,从而降低模型逐字重复同一行的可能性。source

请参阅有关频率和存在处罚的更多信息。source

修改指定标记出现在补全中的可能性。source

接受一个 JSON 对象,该对象将令牌(由其在 tokenizer 中的令牌 ID 指定)映射到从 -100 到 100 的关联偏差值。从数学上讲,偏差在采样之前被添加到模型生成的 logit 中。确切的效果因模型而异,但 -1 和 1 之间的值应降低或增加选择的可能性;像 -100 或 100 这样的值应该导致禁止或独占选择相关令牌。source

是否返回输出 Token 的对数概率。如果为 true,则返回contentmessage.source

一个介于 0 和 20 之间的整数,指定在每个标记位置最有可能返回的标记数,每个标记都有一个关联的对数概率。logprobs必须设置为true如果使用该参数。source

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

此值现已弃用,取而代之的是max_completion_tokens,并且与 O1 系列型号不兼容。source

可以为完成生成的标记数的上限,包括可见的输出标记和推理标记source

为每个输入消息生成多少个聊天完成选项。请注意,您将根据所有选项中生成的令牌数量付费。保持n1以最大限度地降低成本。source

您希望模型为此请求生成的 Output types。 大多数模型都能够生成文本,这是默认设置:source

["text"]source

gpt-4o-audio-previewmodel 还可用于生成音频。自 请求此模型同时生成文本和音频响应,您可以 用:source

["text", "audio"]source

预测输出的配置 这可以大大缩短模型大部分 响应是提前知道的。当您 重新生成一个文件,仅对大部分内容进行细微更改。source

音频输出参数。当请求音频输出时是必需的modalities: ["audio"].了解更多source

介于 -2.0 和 2.0 之间的数字。正值根据新标记到目前为止是否出现在文本中来惩罚新标记,从而增加模型讨论新主题的可能性。source

请参阅有关频率和存在处罚的更多信息。source

一个对象,用于指定模型必须输出的格式。兼容 GPT-4oGPT-4o miniGPT-4 Turbo 和所有更新的 GPT-3.5 Turbo 型号gpt-3.5-turbo-1106.source

设置为{ "type": "json_schema", "json_schema": {...} }启用结构化输出,以确保模型与您提供的 JSON 架构匹配。在结构化输出指南中了解更多信息。source

设置为{ "type": "json_object" }启用 JSON 模式,以确保模型生成的消息是有效的 JSON。source

重要提示:使用 JSON 模式时,还必须通过系统或用户消息指示模型自行生成 JSON。否则,模型可能会生成无休止的空格流,直到生成达到令牌限制,从而导致长时间运行且似乎“卡住”的请求。另请注意,如果出现以下情况,消息内容可能会被部分截断finish_reason="length",这表示已超过代数max_tokens或对话超过了最大上下文长度。source

此功能处于 Beta 阶段。 如果指定,我们的系统将尽最大努力确定性地进行采样,以便使用相同的seed和 parameters 应返回相同的结果。 确定性是不能保证的,您应该参考system_fingerprintresponse 参数来监控后端的更改。source

指定用于处理请求的延迟层。此参数与订阅了 Scale Tier 服务的客户相关:source

  • 如果设置为 'auto',并且项目启用了 Scale tier,则系统将使用 Scale Tier 积分,直到它们用完。
  • 如果设置为“auto”,并且项目未启用扩展层,则将使用正常运行时间 SLA 较低且无延迟保证的默认服务层级处理请求。
  • 如果设置为“default”,则将使用正常运行时间 SLA 较低且无延迟保证的默认服务层级处理请求。
  • 如果未设置,则默认行为为 'auto'。

设置此参数后,响应正文将包含service_tier利用。source

最多 4 个序列,API 将在其中停止生成更多令牌。source

如果设置,将发送部分消息增量,就像在 ChatGPT 中一样。令牌将在可用时作为仅限数据、服务器发送的事件发送,流由data: [DONE]消息。Python 代码示例source

流式处理响应的选项。仅在设置stream: true.source

要使用的采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定。source

我们通常建议更改此 或top_p但不能两者兼而有之。source

使用温度进行采样的替代方法,称为核抽样,其中模型考虑具有top_p概率质量的标记的结果。所以 0.1 意味着只考虑包含前 10% 概率质量的 token。source

我们通常建议更改此 或temperature但不能两者兼而有之。source

模型可以调用的工具列表。目前,仅支持将函数作为工具。使用此函数提供模型可能为其生成 JSON 输入的函数列表。最多支持 128 个函数。source

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

none是不存在工具时的默认值。auto如果存在工具,则为默认值。source

是否在工具使用过程中启用并行函数调用source

代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。了解更多source

已弃用,取而代之的是tool_choice.source

控制模型调用哪个 (如果有) 函数。none表示模型不会调用函数,而是生成一条消息。auto表示模型可以在生成消息或调用函数之间进行选择。 通过{"name": "my_function"}强制模型调用该函数。source

none是不存在函数时的默认值。auto如果存在函数,则为默认值。source

已弃用,取而代之的是tools.source

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

返回

返回聊天完成对象,如果请求是流式的,则返回聊天完成区块对象的流式序列。source

示例请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'
响应
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4o-mini",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21,
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  }
}