聊天

给定一个组成对话的消息列表,模型将返回一个响应。

相关指南:聊天完成

创建聊天完成

POST https://api.openai.com/v1/chat/completions

创建模型响应的给定聊天会话。

请求正文

messages

必需的

数组

一个组成对话的消息列表。示例 Python 代码

model

必需的

字符串

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

frequency_penalty

可选的

数字或 null

默认为 0

-2.0 和 2.0 之间的数字。正值根据其在文本中到目前为止的频率对新令牌的模型概率进行惩罚,从而减少模型重复相同行的可能性。

有关频率和存在惩罚的更多信息,请参阅文本生成参数详细信息

logit_bias

可选的

映射

默认为 null

修改指定令牌在完成中出现的可能性。

接受 JSON 对象,将令牌(由令牌器中的令牌 ID 指定)映射到相关偏差值从 -100 到 100。数学上,偏差添加到模型生成的日志之前采样。具体效果将因模型而异,但 -1 到 1 之间的值应该会降低或增加选择的可能性;像 -100 或 100 这样的值应该会导致相关令牌的禁止或专门选择。

logprobs

可选的

布尔值或 null

默认为 false

是否返回输出令牌的日志概率或否。如果为 true,则在 contentmessage 中返回每个输出令牌的日志概率。

top_logprobs

可选的

整数或 null

在每个令牌位置最可能的令牌返回,每个都带有相关的日志概率。logprobs 必须设置为 true 如果使用此参数。

max_tokens

可选的

整数或 null

可以在聊天完成中生成的最大数量的令牌

总的输入令牌和生成的令牌数量受模型的上下文长度限制。示例 Python 代码以计算令牌。

n

可选的

整数或 null

默认为 1

为每个输入消息生成的聊天完成选择的数量。请注意,您将因所有选择中的生成令牌数量而受到费用。保持 n1 以最大限度地降低成本。

presence_penalty

可选的

数字或 null

默认为 0

-2.0 和 2.0 之间的数字。正值会根据它们是否出现在文本中到目前为止,对新的令牌进行惩罚,从而增加了模型谈论新主题的可能性。

有关频率和存在惩罚的更多信息,请参阅文本生成参数详细信息

response_format

可选的

对象

默认为 null

一个对象,指定模型必须输出的格式。与 GPT-4 Turbo 和所有 GPT-3.5 Turbo 模型新于 gpt-3.5-turbo-1106 的兼容。

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

重要提示: 在使用 JSON 模式时,您必须通过系统或用户消息指示模型生成 JSON。否则,模型可能会生成一系列空白,直到生成达到令牌限制或会话超过最大上下文长度,导致长时间运行且似乎“困”在请求中。请注意,在 finish_reason="length" 的情况下,消息内容可能会部分截断。

seed

可选的

整数或 null

默认为 null

如果指定,我们的系统将尽最大努力使采样确定性,这意味着重复具有相同 seed 和参数的请求应该返回相同的结果。

确定性不能保证,您应该参考 system_fingerprint 响应参数以监控后端的更改。

stop

可选的

字符串 / 数组 / null

默认为 null

最多 4 个序列,API 将在此处停止生成更多的令牌。

stream

可选的

布尔值或 null

默认为 false

如果设置,则部分消息 delta 将作为数据仅服务器发送的事件 在它们可用时发送,并且流由 data: [DONE] 消息终止。示例 Python 代码

stream_options

可选的

对象或 null

默认为 null

只有在您将 stream: true 时设置此选项。

temperature

可选的

数字或 null

默认为 1

0 和 2 之间的采样温度。较高的值(例如 0.8)使输出更加随机,而较低的值(例如 0.2)使其更加焦虑和确定性。

我们通常建议更改此参数或 top_p,但不是两者。

top_p

可选的

数字或 null

默认为 1

替代采样温度的选项,称为核心采样,其中模型考虑具有 top_p 概率质量的令牌。因此,0.1 意味着仅考虑具有前 10% 概率质量的令牌。

我们通常建议更改此参数或 temperature,但不是两者。

tools

可选的

数组

默认为 null

模型可能调用的工具列表。当前,仅支持函数作为工具。使用此参数提供函数列表,最多 128 个函数。

tool_choice

可选的

字符串或对象

默认为 null

控制模型是否调用工具以及哪个工具。

  • none 意味着模型不会调用任何工具,而是生成一个消息。
  • auto 意味着模型可以在生成消息和调用一个或多个工具之间进行选择。
  • required 意味着模型必须调用一个或多个工具。
  • 通过指定 {"type": "function", "function": {"name": "my_function"}} 强制模型调用该工具。

如果未提供工具,则 none 是默认值。如果提供了工具,则 auto 是默认值。

返回

返回一个聊天完成对象,或者如果请求是流的,则返回一个流序列的聊天完成 chunk 对象。

以下是将上述 markdown 文档翻译成中文的版本:

创建聊天完成

POST https://api.openai.com/v1/chat/completions

创建模型响应的给定聊天会话。

请求正文

messages

必需的

数组

一个组成对话的消息列表。示例 Python 代码

model

必需的

字符串

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

frequency_penalty

可选的

数字或 null

默认为 0

-2.0 和 2.0 之间的数字。正值根据其在文本中到目前为止的频率对新令牌的模型概率进行惩罚,从而减少模型重复相同行的可能性。

有关频率和存在惩罚的更多信息,请参阅文本生成参数详细信息

logit_bias

可选的

映射

默认为 null

修改指定令牌在完成中出现的可能性。

接受 JSON 对象,将令牌(由令牌器中的令牌 ID 指定)映射到相关偏差值从 -100 到 100。数学上,偏差添加到模型生成的日志之前采样。具体效果将因模型而异,但 -1 到 1 之间的值应该会降低或增加选择的可能性;像 -100 或 100 这样的值应该会导致相关令牌的禁止或专门选择。

logprobs

可选的

布尔值或 null

默认为 false

是否返回输出令牌的日志概率或否。如果为 true,则在 contentmessage 中返回每个输出令牌的日志概率。

top_logprobs

可选的

整数或 null

在每个令牌位置最可能的令牌返回,每个都带有相关的日志概率。logprobs 必须设置为 true 如果使用此参数。

max_tokens

可选的

整数或 null

可以在聊天完成中生成的最大数量的令牌

总的输入令牌和生成的令牌数量受模型的上下文长度限制。示例 Python 代码以计算令牌。

n

可选的

整数或 null

默认为 1

为每个输入消息生成的聊天完成选择的数量。请注意,您将因所有选择中的生成令牌数量而受到费用。保持 n1 以最大限度地降低成本。

presence_penalty

可选的

数字或 null

默认为 0

-2.0 和 2.0 之间的数字。正值会根据它们是否出现在文本中到目前为止,对新的令牌进行惩罚,从而增加了模型谈论新主题的可能性。

有关频率和存在惩罚的更多信息,请参阅文本生成参数详细信息

response_format

可选的

对象

默认为 null

一个对象,指定模型必须输出的格式。与 GPT-4 Turbo 和所有 GPT-3.5 Turbo 模型新于 gpt-3.5-turbo-1106 的兼容。

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

重要提示: 在使用 JSON 模式时,您必须通过系统或用户消息指示模型生成 JSON。否则,模型可能会生成一系列空白,直到生成达到令牌限制或会话超过最大上下文长度,导致长时间运行且似乎“困”在请求中。请注意,在 finish_reason="length" 的情况下,消息内容可能会部分截断。

seed

可选的

整数或 null

默认为 null

如果指定,我们的系统将尽最大努力使采样确定性,这意味着重复具有相同 seed 和参数的请求应该返回相同的结果。

确定性不能保证,您应该参考 system_fingerprint 响应参数以监控后端的更改。

stop

可选的

字符串 / 数组 / null

默认为 null

最多 4 个序列,API 将在此处停止生成更多的令牌。

stream

可选的

布尔值或 null

默认为 false

如果设置,则部分消息 delta 将作为数据仅服务器发送的事件 在它们可用时发送,并且流由 data: [DONE] 消息终止。示例 Python 代码

stream_options

可选的

对象或 null

默认为 null

只有在您将 stream: true 时设置此选项。

temperature

可选的

数字或 null

默认为 1

0 和 2 之间的采样温度。较高的值(例如 0.8)使输出更加随机,而较低的值(例如 0.2)使其更加焦虑和确定性。

我们通常建议更改此参数或 top_p,但不是两者。

top_p

可选的

数字或 null

默认为 1

替代采样温度的选项,称为核心采样,其中模型考虑具有 top_p 概率质量的令牌。因此,0.1 意味着仅考虑具有前 10% 概率质量的令牌。

我们通常建议更改此参数或 temperature,但不是两者。

tools

可选的

数组

默认为 null

模型可能调用的工具列表。当前,仅支持函数作为工具。使用此参数提供函数列表,最多 128 个函数。

tool_choice

可选的

字符串或对象

默认为 null

控制模型是否调用工具以及哪个工具。

  • none 意味着模型不会调用任何工具,而是生成一个消息。
  • auto 意味着模型可以在生成消息和调用一个或多个工具之间进行选择。
  • required 意味着模型必须调用一个或多个工具。
  • 通过指定 {"type": "function", "function": {"name": "my_function"}} 强制模型调用该工具。

如果未提供工具,则 none 是默认值。如果提供了工具,则 auto 是默认值。

返回

返回一个聊天完成对象,或者如果请求是流的,则返回一个流序列的聊天完成 chunk 对象。

图像输入

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-turbo",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "这个图片中有什么?"
          },
          {
            "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-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\n这个图片显示着一条木质的步道穿越着茂盛的绿色湿地。"
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

默认

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo-16k",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

响应

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "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
  }
}

流媒体

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo-16k",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'

响应

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "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-3.5-turbo-0125", "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-3.5-turbo-0125", "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-4-turbo",
  "messages": [
    {
      "role": "user",
      "content": "What'\''s 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-3.5-turbo-0125",
  "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
  }
}

Logprobs

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo-16k",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "logprobs": true,
    "top_logprobs": 2
  }'


响应

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1702685778,
  "model": "gpt-3.5-turbo-0125",
  "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
  },
  "system_fingerprint": null
}

chat 完成对象

表示模型根据提供的输入返回的聊天完成响应。

属性类型描述
idstring聊天完成的唯一标识符。
choicesarray聊天完成选项的列表。如果 n 大于 1,可能有多个。
createdinteger创建聊天完成的 Unix 时间戳(以秒为单位)。
modelstring用于聊天完成的模型。
system_fingerprintstring此指纹表示模型运行的后端配置。可以与 seed 请求参数一起使用,以了解可能影响确定性的后端更改。
objectstring对象类型,始终为 chat.completion
usageobject完成请求的使用统计信息。

使用方法

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "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
  }
}

聊天完成块对象

表示基于提供的输入由模型返回的聊天完成响应的流式块。

属性类型描述
idstring聊天完成的唯一标识符。每个块都有相同的ID。
choicesarray聊天完成选项的列表。如果n大于1,则可以包含多个元素。如果您设置stream_options: {"include_usage": true},则最后一个块可以为空。
createdinteger创建聊天完成的Unix时间戳(以秒为单位)。每个块都有相同的时间戳。
modelstring生成完成的模型。
system_fingerprintstring此指纹表示模型运行的后端配置。可以与seed请求参数一起使用,以了解可能影响确定性的后端更改。
objectstring对象类型,始终为chat.completion.chunk
usageobject当您在请求中设置stream_options: {"include_usage": true}时,仅存在可选字段。如果存在,则除了最后一个块之外,它包含整个请求的令牌使用统计信息。
{
  "id": "chatcmpl-123",
  "object": "chat.completion.chunk",
  "created": 1694268190,
  "model": "gpt-3.5-turbo-0125",
  "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-3.5-turbo-0125",
  "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-3.5-turbo-0125",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [
    {
      "index": 0,
      "delta": {},
      "logprobs": null,
      "finish_reason": "stop"
    }
  ]
}

Was this page helpful?