对话Chat
针对描述会话的消息列表,模型将返回响应。
对话创建模型响应 Create chat completion Beta
https://api.openai.com/v1/chat/completions (opens in a new tab)
为给定的聊天对话创建模型响应。
请求正文
model
字符串类型,必填项。要使用的模型的 ID。有关与 Chat API 一起使用哪些模型的详细信息,请参见模型端点兼容性表。
messages
数组类型,必填项。包含对话历史描述的消息列表。
role
字符串类型,必填项。该消息作者的角色。可选值为 system
、user
或 assistant
。
content
字符串类型,必填项。消息的内容。
name
字符串类型,可选。该消息的作者名称。可包含小写字母、大写字母、数字和下划线,最长长度为 64 个字符。
temperature
数字类型,可选。默认为 1。要使用的采样温度(temperature),介于 0 和 2 之间。较高的值(如 0.8)会使输出更随机,而较低的值(如 0.2)则会使其更加专注和确定。
我们通常建议只修改此参数或 top_p
一个参数而不是两个同时修改。
top_p
数字类型,可选。默认为 1。一种称为“核心采样”的采样替代方法,其中模型考虑概率质量值在前 top_p 的标记的结果。因此,0.1 意味着仅考虑概率质量值前 10% 的标记。
我们通常建议只修改此参数或 temperature
一个参数而不是两个同时修改。
n
整数类型,可选。默认为 1。要生成的每个输入消息的聊天完成选项数量。
stream
布尔类型,可选。默认为 false。如果设置,则会发送部分消息增量,类似于 ChatGPT。随着标记的可用性,标记将作为仅数据的服务器推送事件 (opens in a new tab)发送,流将以 data: [DONE]
消息终止。请参见 OpenAI Cookbook 中的示例代码 (opens in a new tab)。
stop
字符串或数组类型,可选。默认为 null。API 最多将生成 4 个序列,这些序列将停止生成更多标记。
max_tokens
整数类型,可选。默认为 inf。要生成的最大令牌数。
输入令牌和生成的令牌的总长度受模型上下文长度的限制。
presence_penalty
数字类型,可选。默认为 0。介于 -2.0 和 2.0 之间的数字。正值会根据新标记在迄今为止的文本中出现的频率惩罚新标记,增加模型谈论新话题的可能性。
frequency_penalty
数字类型,可选。默认为 0。范围在 -2.0 到 2.0 之间的数字。正值会根据其在文本中的现有频率惩罚新标记,从而减少模型重复同一行的可能性。
logit_bias
Map 类型,可选。默认为 null。修改出现在完成中的指定标记的可能性。
接受一个将标记(由标记器中其标记 ID 指定)映射到从 -100 到 100 的关联偏差值的 JSON 对象。在采样之前,数学上会将偏差添加到模型生成的对数几率中。确切的影响将因模型而异,但-1 到 1 之间的值应该会减少或增加选择的可能性;像 -100 或 100 这样的值应该会导致禁止或选择相关标记的独家选择。
user
字符串类型,可选。表示您的最终用户的唯一标识符,可帮助 OpenAI 监视和检测滥用。了解更多。
请求示例(Python方式)
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",
"messages": [{"role": "user", "content": "Hello!"}]
}'
请求参数(Parameters)
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}
响应体 (Response)
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": " Hello there, how may I assist you today?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}