要使用ChatGPT API与OpenAI的聊天模型进行交互,您必须在消息对象中提供其中一个角色system、user或assistant。在本指南中,我们将讨论在ChatGPT API请求中使用这些角色的含义。
首先,让我们看一下使用OpenAI ChatGPT API的基本请求。
curl -s https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR-API-KEY" \
-d '{
"model": "gpt-3.5-turbo-16k",
"messages": [{"role": "user", "content": "ChatGPT是什么?"}]
}'
要与OpenAI ChatGPT模型进行对话,您必须在消息数组中提供一个或多个消息。每个消息必须与system、user或assistant中的一个角色相关联。
角色表示消息作者的角色。根据角色,ChatGPT了解它应该如何行为以及谁在发起调用。让我们讨论每个角色。
聊天机器人的行为是通用的。“system"角色有助于通过分配特定行为给聊天助手来创建对话的上下文或范围。例如,如果您希望与ChatGPT在与体育相关的话题范围内进行对话,可以将"system"角色分配给聊天助手,并设置内容为"体育专家”。然后ChatGPT会表现得像体育专家一样回答您的问题。"system"角色指示了ChatGPT在对话消息中应该具有哪种个性。
让我们看一个例子。
curl -s https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR-API-KEY" \
-d '{
"model": "gpt-3.5-turbo-16k",
"messages": [{"role": "system", "content": "您是足球专家"}]
}'
结果:
{
"id": "chatcmpl-7WqSSEotClV5cSaxrU0lCHWT6ALIQ",
"object": "chat.completion",
"created": 1688062500,
"model": "gpt-3.5-turbo-16k-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我在这里回答您关于这项运动的任何问题。无论是关于规则、策略、球员还是与足球相关的任何其他问题,都请随时提问!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 38,
"total_tokens": 50
}
}
虽然传递带有系统角色的消息并非必需,但它有助于在内部为对话设置模型行为。
"user"角色代表实际的最终用户,他正在向ChatGPT发送提示。在以下示例中,第一个消息对象和"system"角色并不是必需的。我们使用它来为对话分配上下文。"user"角色指示消息/提示来自最终用户或人类。
curl -s https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR-API-KEY" \
-d '{
"model": "gpt-3.5-turbo-16k",
"messages": [
{
"role": "system",
"content": "您是足球专家"
},
{
"role": "user",
"content": "谁赢得了2018年的FIFA世界杯?"
}
]
}'
结果:
{
"id": "chatcmpl-7WrMNkWGxyX4EXY5iANmHE6I1R27b",
"object": "chat.completion",
"created": 1688065967,
"model": "gpt-3.5-turbo-16k-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "法国赢得了2018年的FIFA世界杯。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 11,
"total_tokens": 36
}
}
"assistant"角色代表响应最终用户提示的实体。这个角色表示消息是助手(聊天模型)的响应。"assistant"角色用于在当前请求中设置模型的先前响应,以保持对话的连贯性。
curl -s https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR-API-KEY" \
-d '{
"model": "gpt-3.5-turbo-16k",
"messages": [
{
"role": "system",
"content": "您是足球专家"
},
{
"role": "user",
"content": "谁赢得了2018年的FIFA世界杯?"
},
{
"role": "assistant",
"content": "法国赢得了2018年的FIFA世界杯。"
},
{
"role": "user",
"content": "下一届FIFA世界杯什么时候
举行?"
}
]
}'
此外,在消息数组中,您可以将角色设置为“assistant”以用于最后的消息对象,它可以是自定义消息。如果消息的角色是“assistant”,ChatGPT会验证最后一条消息的内容的正确性。
结果:
{
"id": "chatcmpl-7WryqleJdvZzz4vtdQs4erG3Kx7mT",
"object": "chat.completion",
"created": 1688068352,
"model": "gpt-3.5-turbo-16k-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "下一届FIFA世界杯计划于2026年举行,将由加拿大、墨西哥和美国联合举办。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 51,
"completion_tokens": 31,
"total_tokens": 82
}
}
在这个快速教程中,我们了解了ChatGPT API消息中“system”、“user”和“assistant”角色的含义,以及如何在API中使用它们。