聊天
给定一个组成对话的消息列表,模型将返回一个响应。
相关指南:聊天完成
创建聊天完成
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,则在 content
的 message
中返回每个输出令牌的日志概率。
top_logprobs
可选的
整数或 null
在每个令牌位置最可能的令牌返回,每个都带有相关的日志概率。logprobs
必须设置为 true
如果使用此参数。
max_tokens
可选的
整数或 null
可以在聊天完成中生成的最大数量的令牌。
总的输入令牌和生成的令牌数量受模型的上下文长度限制。示例 Python 代码以计算令牌。
n
可选的
整数或 null
默认为 1
为每个输入消息生成的聊天完成选择的数量。请注意,您将因所有选择中的生成令牌数量而受到费用。保持 n
为 1
以最大限度地降低成本。
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,则在 content
的 message
中返回每个输出令牌的日志概率。
top_logprobs
可选的
整数或 null
在每个令牌位置最可能的令牌返回,每个都带有相关的日志概率。logprobs
必须设置为 true
如果使用此参数。
max_tokens
可选的
整数或 null
可以在聊天完成中生成的最大数量的令牌。
总的输入令牌和生成的令牌数量受模型的上下文长度限制。示例 Python 代码以计算令牌。
n
可选的
整数或 null
默认为 1
为每个输入消息生成的聊天完成选择的数量。请注意,您将因所有选择中的生成令牌数量而受到费用。保持 n
为 1
以最大限度地降低成本。
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 完成对象
表示模型根据提供的输入返回的聊天完成响应。
属性 | 类型 | 描述 |
---|---|---|
id | string | 聊天完成的唯一标识符。 |
choices | array | 聊天完成选项的列表。如果 n 大于 1,可能有多个。 |
created | integer | 创建聊天完成的 Unix 时间戳(以秒为单位)。 |
model | string | 用于聊天完成的模型。 |
system_fingerprint | string | 此指纹表示模型运行的后端配置。可以与 seed 请求参数一起使用,以了解可能影响确定性的后端更改。 |
object | string | 对象类型,始终为 chat.completion 。 |
usage | object | 完成请求的使用统计信息。 |
使用方法
{
"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
}
}
聊天完成块对象
表示基于提供的输入由模型返回的聊天完成响应的流式块。
属性 | 类型 | 描述 |
---|---|---|
id | string | 聊天完成的唯一标识符。每个块都有相同的ID。 |
choices | array | 聊天完成选项的列表。如果n 大于1,则可以包含多个元素。如果您设置stream_options: {"include_usage": true} ,则最后一个块可以为空。 |
created | integer | 创建聊天完成的Unix时间戳(以秒为单位)。每个块都有相同的时间戳。 |
model | string | 生成完成的模型。 |
system_fingerprint | string | 此指纹表示模型运行的后端配置。可以与seed 请求参数一起使用,以了解可能影响确定性的后端更改。 |
object | string | 对象类型,始终为chat.completion.chunk 。 |
usage | object | 当您在请求中设置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"
}
]
}