PyLMKit(3):基于角色扮演的应用案例

news2025/1/13 21:17:45

角色扮演应用案例RolePlay

0.项目信息

  • 日期: 2023-12-2
  • 作者:小知
  • 课题: 通过设置角色模板并结合在线搜索、记忆和知识库功能,实现典型的对话应用功能。这个功能是大模型应用的基础功能,在后续其它RAG等功能中都会用到这个功能。
  • 功能与作用:RolePlay角色扮演是一种基础功能,也是重要的功能。现在在各大大模型企业的APP中可以看到很多关于短视频文案、小红书文案、高情商朋友圈等这些功能的底层逻辑是基于角色扮演中设置不同的角色模板实现的。
  • GitHub:https://github.com/52phm/pylmkit
  • PyLMKit官网教程
    • PyLMKit应用(online application)
    • English document
    • 中文文档

PyLMKit RolePlay
在这里插入图片描述

1.下载安装

# 下载安装
pip install pylmkit -U --user

2.设置API KEY

应用哪个大模型,就提前设置好该大模型对应的 API KEY

import os


# openai chatgpt
os.environ['openai_api_key'] = ""

# 百度
os.environ['qianfan_ak'] = ""
os.environ['qianfan_sk'] = ""

# 阿里
os.environ["DASHSCOPE_API_KEY"] = ""

# 科大讯飞-星火
os.environ["spark_appid"] = ""
os.environ["spark_apikey"] = ""
os.environ["spark_apisecret"] = ""
os.environ["spark_domain"] = "generalv3"

# 智谱AI
os.environ['zhipu_apikey'] = ""

或者在.env文件中批量加载设置好的API KEY,加载方法如下:

from dotenv import load_dotenv

# load .env
load_dotenv()

3.加载大语言模型

导入大语言模型,在本案例中使用百度千帆大模型作为例子进行介绍。

from pylmkit.llms import ChatQianfan  # 百度-千帆
from pylmkit.llms import ChatSpark  # 讯飞-星火
from pylmkit.llms import ChatZhipu  # 清华-智谱
from pylmkit.llms import ChatHunyuan  # 腾讯-混元
from pylmkit.llms import ChatBaichuan  # 百川
from pylmkit.llms import ChatTongyi  # 阿里-通义
from pylmkit.llms import ChatOpenAI  # OpenAI

model = ChatQianfan()

4.选择记忆功能

PyLMKit 设计了四种记忆功能,分别如下:

  • MemoryHistoryLength:记忆历史长度,强调使用近期多长的记忆内容;
  • MemoryConversationsNumber:记忆对数数,强调使用近期N组对话作为记忆的内容;
  • MemorySummary:记忆摘要,强调精简提取记忆;
  • 暂未公布

本案例使用MemoryHistoryLength记忆功能,使得大语言模型能到根据该历史记忆记住上下文内容,以便连贯回答用户的问题。(更多关于记忆的用法,可以在后续memory专题中查阅)

from pylmkit.memory import MemoryHistoryLength


memory = MemoryHistoryLength(memory_length=500, streamlit_web=False)  # 在python中运行
# memory2 = MemoryHistoryLength(memory_length=500, streamlit_web=True)  # 在streamlit web中运行

5.设计角色模板

大语言模型是一种一对多关系的模型架构,其中表示大语言模型,而表示下游任务,比如写作、客服、分析数据等这些都属于下游任务。
因此需要我们通过设计提示词模板去引导大语言模型高效且有质量地完成指定下游任务

在设计角色模板之前,我们先来了解PyLMKit中一些必须固定的关键词:

  • {query}:表示这是用户输入的提问内容;
  • {search}:表示线上实时搜索引擎搜索返回的内容;
  • {memory}:表示记忆的内容;
  • {ra}:表示知识库搜索返回的内容。

下面我们来看一个角色模板的例子:

# 它们所在的位置,表示它们内容所嵌入的位置
role_template = "{memory}\n {search}\n 用户提问:{query}"

# 当然,你还可以进一步设计模板
role_template = "历史对话内容:{memory}\n 搜索的相似内容:{search} {ra}\n 请结合上述内容回答问题:{query}"

model.invoke(query="如何学习python?")

角色模板决定大语言模型回答的质量,因此角色模板需要反复打磨,以设计一个高质量的角色模板,对问题的解决效果可以达到事半功倍。

另外,值得注意的是,如果你设计的角色模板的关键词,不在[query, search, ra, memory]中,那么你需要额外添加新的变量和变量值,例如:

role_template = "{memory}\n 请为我推荐{query}的{topic}"

# 额外的关键字,可以像 topic="美食" 一样添加,多个也是一样的步骤进行添加
model.invoke(query='北京', topic="美食")
role_template = "{memory}\n 请为我推荐{query}的{topic}"

6.加载角色扮演应用

RolePlay角色扮演是一种基础功能,也是重要的功能。现在在各大大模型企业的APP中可以看到很多关于短视频文案、小红书文案、高情商朋友圈等这些功能的底层逻辑是基于角色扮演中设置不同的角色模板实现的。

from pylmkit.app import RolePlay


rp = RolePlay(
    role_template=role_template,  # 角色模板
    llm_model=model,  # 大语言模型
    memory=memory,  # 记忆
    # online_search_kwargs={},
    online_search_kwargs={'topk': 2, 'timeout': 20},  # 搜索引擎配置,不开启则可以设置为 online_search_kwargs={}
    return_language="中文"
)

7.在python中运行

while True:
    query = input("User query:")
    topic = input("User topic:")
    response, refer = rp.invoke(query, topic=topic)
    print("\nAI:", response)
    print("\nRefer\n:", refer)
User query:北京
User topic:美食


2023-12-02 01:28:27 - httpx - INFO - HTTP Request: POST https://duckduckgo.com "HTTP/2 200 OK"
2023-12-02 01:28:29 - httpx - INFO - HTTP Request: GET https://links.duckduckgo.com/d.js?q=%E5%8C%97%E4%BA%AC&kl=wt-wt&l=wt-wt&s=0&df=&vqd=4-45222965241755774163610013696327482249&o=json&sp=0&ex=-1 "HTTP/2 200 OK"



AI: 北京有很多美食,以下是为您推荐的一些美食:

1. 北京烤鸭:是北京最著名的传统美食,具有独特的皮脆肉嫩、肥而不腻的口味。

2. 炸酱面:是一道非常受欢迎的主食,面条劲道,炸酱味道浓郁,可以搭配各种蔬菜和肉类。

3. 炒肝:是一种传统早点,主要原料是猪大肠和猪肝,口感鲜美,适合早餐食用。

4. 羊肉串:是北京街头巷尾最常见的烧烤之一,肉质鲜嫩,味道鲜美。

5. 豆汁儿:是北京传统特色小吃之一,由绿豆制作而成,味道独特,需要慢慢品尝。

6. 爆肚:是北京传统小吃,口感鲜美,特别适合夏天食用。

7. 涮羊肉:是一种传统的火锅美食,口感鲜美,涮出的羊肉非常嫩滑。

除此之外,北京还有各种烤肉、烧麦、饺子、包子、馄饨等美食,您可以根据自己的口味选择尝试。

Refer
: [1] **https://zh.wikipedia.org/wiki/北京市**  北京古迹众多,著名的有紫禁城、天坛、颐和园、圆明园、北海公园等;胡同和四合院作为北京老城的典型民居形式,已经是北京历史重要的文化符号 。北京是中国重要的旅游城镇,被《米其林旅游指南》评为"三星级旅游推荐"(最高级别)目的地 。

[2] **https://baike.baidu.com/item/北京市/126069**  北京市(Beijing),简称"京",古称燕京、北平,中华民族的发祥地之一,是中华人民共和国首都、直辖市、国家中心城市、超大城市,国务院批复确定的中国政治中心、文化中心、国际交往中心、科技创新中心,中国历史文化名城和古都之一,世界一线城市。截至2023年10月,北京市下辖16个区,总 ...

在streamlit web中运行

要在终端中运行:假设你的.py文件名为main.py,那么在终端运行:

streamlit run main.py
# main.py
from pylmkit.core.base import BaseWebUI
from pylmkit.memory import MemoryHistoryLength


web = BaseWebUI(language='zh')  # 使用中文网站
memory = MemoryHistoryLength(memory_length=web.param(label="记忆长度", type='int', value=500),  # 添加页面交互参数
                             streamlit_web=True
                            )

web.run(
    obj=rp.invoke,
    input_param=[{"name": "query", "label": "地点", "type": "chat"},
                 {"name": "topic", "label": "主题", "type": "text"},
                 ],
    output_param=[{'label': '结果', 'name': 'response', 'type': 'chat'},
                  {'label': '参考', 'name': 'refer', 'type': 'refer'}
                  ]
)





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1277727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础项目开发1:量产工具——UI系统(五)

前言: 前面我们已经把显示系统、输入系统、文字系统搭建好了,现在我们就要给它实现按钮操作了,也就是搭建UI系统,下面让我们一起实现UI系统的搭建吧 目录 一、按钮数据结构抽象 ui.h 二、按键编程 1.button.c 2.disp_manager…

赤峰学院师资培养管理系统的设计与实现

摘 要 随着我国国民经济建设的蓬勃发展和信息技术的越发成熟,各个行业都在积极使用现代化的管理工具,不断改善企业的服务质量,提高工作效率。对师资培养进行现代化的管理,提高工作效率是师资培养管理系统的一大优点。本文是一篇关…

Aspice(Automotive Software Process Improvement and Capability Determination)

Aspice(Automotive Software Process Improvement and Capability Determination) 1. 引言:ASPICE概述 定义 ASPICE简介:ASPICE(Automotive Software Process Improvement and Capability Determination)…

Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2

Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2 概要方法1.打开Qt Creator中的Kit,这里我直接附上几张截图,不同的版本打开位置可能有所不同,总之最终目的是要打开构建套件(Kit)2.可以看到构建套件里面有包含了“构建套件K…

栈顺序存储的实现(详解)

栈是一种数据结构,它具有后进先出(LIFO)的特性。栈可以用来存储一组元素,并且只能在栈顶进行插入和删除操作。栈的基本概念包括: 1. 入栈(push):将元素添加到栈顶的操作。 2. 出栈&…

【halcon】C# halcon 内存暴增

1 读取图片需要及时手动释放 一个6M的图片通过halcon进行加载&#xff0c;大约会消耗200M的内存&#xff0c;如果等待GC回收&#xff0c;而你又在不停的读取图片&#xff0c;你的内存占用&#xff0c;将在短时间内飙升。 2 halcon控件显示图片需要清空。 /// <summary>…

Motion 5 for Mac,释放创意,打造精彩视频特效!

Motion 5 for Mac是一款强大的视频后期特效处理软件&#xff0c;为Mac用户提供了无限的创意可能性。无论你是专业的影视制作人&#xff0c;还是想为个人视频添加独特特效的爱好者&#xff0c;Motion 5都能满足你的需求&#xff0c;让你的视频脱颖而出。 Motion 5提供了丰富多样…

数据链路层之VLAN基本概念和基本原理

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

线程与多线程编程

1. 线程 1.1 概念 线程又可以称为轻量级进程 &#xff0c;在进程的基础上做出了改进。 一个进程在刚刚启动时&#xff0c;做的第一件事就是申请内存和资源&#xff0c;进程需要把依赖的代码和数据&#xff0c;从磁盘加载到内存中这件事是比较耗费时间的&#xff0c;有的业务…

国产AI边缘计算盒子,双核心A55丨2.5Tops算力

边缘计算盒子 双核心A55丨2.5Tops算力 ● 2.5TopsINT8算力&#xff0c;支持INT8/INT4/FP16多精度混合量化。 ● 4路以上1080p30fps视频编解码&#xff0c;IVE模块独立提供图像基础算子加速。 ● 支持Caffe、ONNX/PyTorch深度学习框架&#xff0c;提供resnet50、yolov5等AI算…

vue项目报错及解决npm run build:prod打包错误

vue项目报错及解决npm run build:prod打包错误 执行dev环境时加载失败了该变量&#xff0c;在package.json文件中 删掉 解决方法&#xff1a; 打包成功&#xff1a;

kerberos详解

一、介绍 kerberos概述 Kerberos始于20世纪80年代早期麻省理工学院&#xff08;MIT&#xff09;的一个研究项目&#xff0c;是一个网络身份验证系统。Kerberos提供的完整定义是安全的、单点登录的、可信的第三方相互身份验证服务。 认证过程 相关概念 KDC&#xff08;key D…

GD32 定时器输入捕获模式测量PWM占空比和频率

简介 利用GD32 定时器的PWM输入捕获模式来实现PWM波形的占空比和频率的测量。相应的简介可以参考GD32用户手册中关于定时器输入捕获的章节&#xff0c;PWM输入捕获模式是输入捕获模式的一个特例。(记录自己学习过程&#xff0c;如有错误请留言指出) 原理 如何利用定时器测量…

JavaSE-习题-循环结构等

第 1 题&#xff08;编程题&#xff09; 题目名称&#xff1a; 打印 X 图形 题目内容&#xff1a; https://www.nowcoder.com/practice/83d6afe3018e44539c51265165806ee4 假设i代表行&#xff0c;j代表列&#xff0c;当ij 或者 ij1 n&#xff0c;此时为星号。其余的都是空格。…

杨志丰:OceanBase助力企业应对数据库转型深水区挑战

11 月 16 日&#xff0c;OceanBase 在北京顺利举办 2023 年度发布会&#xff0c;正式宣布&#xff1a;将持续践行“一体化”产品战略&#xff0c;为关键业务负载打造一体化数据库。OceanBase 产品总经理杨志丰发表了《助力企业应对数据库转型深水区挑战》主题演讲。 以下为演讲…

SmartSoftHelp8,SQL语句美化,格式化,压缩

SQL语句美化&#xff0c;格式化&#xff0c;压缩 下载地址&#xff1a;https://pan.baidu.com/s/1zBgeYsqWnSlNgiKPR2lUYg?pwd8888

在oracle中的scn技术

SCN可以说是Oracle中一个很基础的部分&#xff0c;但同时它也是一个很重要的。它是系统中维持数据的一致性和顺序恢复的重要标志&#xff0c;是数据库非常重要的一种数据结构。 转载&#xff1a;深入剖析 - Oracle SCN机制详细解读 - 知乎 (zhihu.com)https://zhuanlan.zhihu.…

【计算机概论 ①】- 电脑:辅助人脑的好工具

目录 一、电脑硬件的五大单元 二、一切设计的起点&#xff1a;CPU 的架构 三、其他单元的设备 四、运行流程 五、电脑的分类 六、电脑上面常用的计算单位&#xff08;容量、速度等&#xff09; 操作系统跟硬件有相当程度的关联性&#xff0c;所以&#xff0c;如果不了解一…

详解原生Spring框架下的类切入点表达式与切入点函数

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

汉威科技家电传感器解决方案,助力智能家电市场蓬勃发展

2017年以来&#xff0c;我国家电市场承压前行&#xff0c;零售总额基本保持在9000亿元左右&#xff0c;虽然距离万亿市场只有一步之遥&#xff0c;却一直未能企及。随着物联网、传感器、AI、云计算、大数据、5G等技术的快速发展迭代&#xff0c;智能家电成为行业转型发展的突破…