免责声明:该翻译作品仅供参考,对翻译的准确性和完整性不做任何保证,译者对使用该作品所产生的任何后果不承担责任。如侵犯任何个人或组织的合法权益,请及时联系我以删除相关内容。若发现翻译错误或有更好的建议,欢迎评论和私信我,我将虚心接受并改进。本人不对该翻译作品保留任何权利,但在使用时请勿侵犯其他权利人的合法权益。
对话补全
学习如何使用 OpenAI 的核心 API 端点获取来自语言模型的响应
试用GPT-4o
在实验平台上试用GPT-4o
输入图片以探索GPT-4o(的视觉能力)
查看视觉指南以了解(GPT-4o的)图像理解(能力)
要通过OpenAI API使用这些模型之一,您将向包含输入和API密钥的Chat Completions API发送请求,并接收包含模型输出的响应。
您可以在聊天平台中体验各种模型。如果你不确定使用哪种型号我们的建议是:如果你希望智能程度更高就试试gpt- 4o,如果你希望速度最快和成本最低就试试gpt- 40 -mini。
概述
Chat Completions API支持文本和图像输入,并且可以输出文本内容(包括代码和JSON)。
它通过messages参数接受输入,该参数是一个消息对象数组。
(发送)消息的角色
每个消息对象都有一个角色(可以是system、user、assistant)和内容。
- system消息是可选的,可用于设置对话助手的行为
- user消息提供请求或解释,供对话助手进行回应
- assistant消息用于存储以前的对话助手响应,但也可以由您编写以提供期望行为的例子(一些实例)
默认情况下没有系统消息。使用系统消息可以在用户上下文之外给模型提供指令。您可以为每个会话设置多个系统消息,模型将按照接收消息的顺序读取和解释消息。
开始
聊天模型将messages参数作为输出,返回一个其生成的消息作为输出。虽然聊天格式是为了让多轮对话变得简单,但对于没有连
续的对话上下文的单轮任务(如问答或命令执行)同样有效。
聊天格式:chat format,指的是一种特定的交互方式或结构,用于在对话系统中组织和处理用户与模型之间的交流。在这种格式中,用户的输入和模型的响应被视为消息的序列,这些消息可以包含多轮对话的上下文。
调用Chat Completions API的例子如下:
Python
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
node.js
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const completion = await openai.chat.completions.create({
messages: [{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}],
model: "gpt-4o-mini",
});
console.log(completion.choices[0]);
}
main();
curl
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who won the world series in 2020?"
},
{
"role": "assistant",
"content": "The Los Angeles Dodgers won the World Series in 2020."
},
{
"role": "user",
"content": "Where was it played?"
}
]
}'
要了解更多信息,您可以查看Chat API的完整API参考文档。
(请求中)包含对话历史在用户指令涉及之前的消息时非常重要。在上面的例子中,用户的最终问题“(比赛)在哪里进行?”只有在之前关于World Series in 2020的消息背景下才有意义。由于模型无法记住过去的请求,所以所有相关信息都必须在每个请求中作为对话历史提供。如果对话内容超出了模型的token限制,就需要以某种方式进行缩减。
要模拟在 ChatGPT 中看到的流式返回文本的效果,请将 stream 参数设置为 true。
响应格式
下面是一个Chat Completions API响应的例子:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
"role": "assistant"
},
"logprobs": null
}
],
"created": 1677664795,
"id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
"model": "gpt-4o-mini",
"object": "chat.completion",
"usage": {
"completion_tokens": 17,
"prompt_tokens": 57,
"total_tokens": 74,
"completion_tokens_details": {
"reasoning_tokens": 0
}
}
}
提取对话助手响应的方法:
message = completion.choices[0].message.content
Python和node.js相同,就不分开写了
每个响应将包含一个finish_reason。finish_reason的可能值有:
- stop:API 返回了完整的消息,或者是由通过stop参数提供的其中一个停止序列(用于告知生成模型在特定位置停止生成文本)终止的消息。
- length:模型输出不完整,原因是受到max_tokens参数或token限制
- function_call:模型决定调用一个函数
- content_filter:内容被省略,原因是受到内容过滤器的限制
- null:API 响应仍在进行中或不完整
根据输入参数的不同,模型响应可能包含不同的信息。
下一步
- 探索Chat Completions API的其他功能,如视觉、Function calling或结构化输出
- 查看高阶用法指南了解不同的参数以及如何管理token