大语言模型中,role为user、assistant、system有什么区别
这里写目录标题
- 大语言模型中,role为user、assistant、system有什么区别
- 要实现多轮对话,也就说要记住历史问答,该如何设置System、User、Assistant?
- 管理历史对话
大语言模型中,role为user、assistant、system有什么区别
在大语言模型中,通常涉及到三种角色:用户(user)、助手(assistant)和系统(system)。它们的区别在于其在对话或交互过程中扮演的角色和功能。
系统(system):
- 系统是指整个大语言模型或者其中的某个部分,负责处理用户输入并生成相应的输出。
- 明确对话的主题或领域(例如,技术支持、教育、娱乐等)
- 指示模型扮演特定角色(例如,老师、顾问等)。
用户(user):
- 用户是指与系统进行交互的个体或实体,通常是真实的人类用户或其他系统。
- 用户通过输入文本、语音或其他形式与系统进行沟通,提出问题、请求信息或执行操作。
助手(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世界杯什么时候
举行?"
}
]
}'
要实现多轮对话,也就说要记住历史问答,该如何设置System、User、Assistant?
让大模型记住历史问答,就要传递上下文,在每次请求中,将之前的对话内容作为上下文传递给模型。其实就是初始化一个列表,将大模型每次的回答,保存给Assistant,append到列表中。
import openai
# 初始化对话历史
conversation_history = [
{"role": "system", "content": "你是一个智能助手,专注于提供技术支持。请记住用户的历史问题和你的回答,以便在后续对话中提供更好的帮助。"}
]
# 用户的第一个问题
user_input = "我需要安装一个软件,你能告诉我怎么做吗?"
conversation_history.append({"role": "user", "content": user_input})
# 调用API生成响应
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=conversation_history
)
# 获取助手的回答
assistant_response = response['choices'][0]['message']['content']
conversation_history.append({"role": "assistant", "content": assistant_response})
print(assistant_response)
# 用户的第二个问题
user_input = "上次你提到如何安装软件,我想知道如何配置它。"
conversation_history.append({"role": "user", "content": user_input})
# 调用API生成响应
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=conversation_history
)
# 获取助手的回答
assistant_response = response['choices'][0]['message']['content']
conversation_history.append({"role": "assistant", "content": assistant_response})
print(assistant_response)
管理历史对话
在进行几轮对话后,上下文可能非常长:
- 在对话进行到一定阶段后,可以对之前的对话进行摘要,以减少上下文的长度,同时保留关键信息。
- 如果有可能,使用外部存储(如数据库或会话管理系统)来保存用户的历史对话,以便在后续对话中调用。
参考:
- https://blog.csdn.net/qq_43276566/article/details/139956449
- https://blog.csdn.net/Tory2/article/details/132823810