大语言模型中,role为user、assistant、system有什么区别

2024-08-27 12:44

本文主要是介绍大语言模型中,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

这篇关于大语言模型中,role为user、assistant、system有什么区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111703

相关文章

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时