互联网资讯 · 2024年1月4日

基于ChatGLM的多角色交互式聊天机器人:融合行空板与大模型

随着人工智能技术的迅猛发展,大型语言模型成为了热门话题。国际上的GPT-3、BERT等模型备受关注,而国内的本土语言模型ChatGLM也引起了广泛关注。ChatGLM是由清华大学开发的强大语言生成模型,结合了深度学习技术和大量中文语料的训练成果。它在自然语言理解和生成方面展现了出色性能,为国内的自然语言处理研究与应用提供了有力支持。

通过使用行空板和UGB喇叭,你可以制作一个有趣好玩的聊天机器人应用。只需修改角色描述,你就能打造属于自己的个性化聊天机器人,它能以多个角色身份与你进行对话。

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

硬件准备

行空板,USB线,USB喇叭

行空板是一款专为Python学习和使用设计的新一代国产开源硬件,采用单板计算机架构,集成LCD彩屏、WiFi蓝牙、多种常用传感器和丰富的拓展接口。同时,其自带Linux操作系统和Python环境,还预装了常用的Python库,只需两步就能进行Python学习。

功能分解

 

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

具体操作

 

1、注册智谱api:智谱AI开放平台,https://open.bigmodel.cn/,选择验证码登录,输入手机号和验证码完成册。点击API keys, 点击“去认证”,进行实名认证。

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

 

2、注册并获取微软语音服务API密钥

 

(1)注册微软的账号,输入网址:https://portal.azure.com/,用邮箱创建新账号。

新用户有一年的免费额度但需要信用卡验证。如果没有条件申请微软的语音服务API,也可以使用百度的语音服务API,文章的最后提供了使用ChatGLM和百度API的实现代码。

(2)通过验证: 创建好账号登录后会进入以下页面https://portal.azure.com/#home面对新用户,微软提供了1年的免费服务但需要通过验证,这里有两种验证方法。(1)visa/银联卡验证(2)大学生能无需信用卡,使用学生邮箱验证。

(3)申请资源: 验证通过后,在Azure门户中,点击左上角的“+ 创建资源”按钮。之后会跳转到如下页面,按照提示完成填写信息。

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

3、加载行空板-安装库-行空板联网

 

(1)加载行空板 :第一步:使用USB线将行空板连接在电脑上。按照步骤加载行空板,创建好文件后,可以看到一个名为“chatbot.py”的文件,双击打开。

(2)安装所需要的库,依次输入PIP指令,点击“运行”

(3)行空板联网:调用API必须要联网。由于在本项目中,使用了智谱清言的API和微软的语音API,所以要为行空板连接网络。(1)打开浏览器,输入“10.1.2.3”进行行空板页面。(2)选择“网络设置”,选择WIFI ,输入密码,注意行空板仅支持2.4GWIFI热点。点击“连接”,行空板成功联网会显示“连接成功”,如下图。

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

 

4、编程

 

(1)调用chatglm的API: 参考官方的API调用文档,定义一个名为ChatGPT的类,代表聊天机器。为了测试效果,在主循环中获取用户输入,将用户的输入传给聊天机器人,打印聊天机器人的回复。

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

(2)实现多轮对话: 点击右上角的运行,开始在终端打字,与机器人进行对话。以下是测试对话截图,”You”部分是输入的内容,“chatbot”是调用智谱API,使用模型chatglm_turbo,获取的回复

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

当聊天机器人给出谜语后,回复“猜不出来”时,期待的是聊天机器人能告诉谜语的答案。但显然根据它的回复,模型没有理解语意是猜不出上轮对话的谜语。这个现象是因为与模型的对话是单轮的形式,即问一答一;而在处理复杂的对话场景时,理解上下文和实现多轮对话是非常重要的。期待的效果是聊天机器人能结合上下文的语境,实现多轮对话。要解决这个问题,可以将整个对话历史作为输入发送给模型,而不仅仅是最新的用户消息。这样,模型就可以看到整个对话的上下文,并据此生成回复。

为了让聊天机器人能理解上下文的语境,可以在__init__ 方法中添加 self.dialogue 列表,用于存储对话历史。在 send_message 方法中,将用户的消息和模型的回复都添加到对话历史中,然后将整个对话历史转化为一个字符串,作为提示发送给模型。

“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人

(3)创建角色字典,实现多角色选择

现在我们已经成功实现了多轮对话,在与聊天机器人对话时,它是以人工智能助手(assistant)的身份。怎么能实现角色扮演呢?为了实现这个功能,可以在 ChatGPT 类中添加一个 self.role 属性来存储角色描述。然后,我们可以修改 send_message 方法,使其在将对话历史转化为字符串时,首先添加角色描述。这样,模型就会知道它应该扮演的角色,从而生成符合角色的回复。

5、UI设计

 

按照同样的逻辑在行空板上进行UI设计。

6、实现语音交互功能

实现语音交互功能,在角色图片的下方添加一个麦克风图片,当点击麦克风图片开始录音,并使用百度语音识别API实现语音转文字作为对话内容传给聊天机器人,再调用百度语音合成API将聊天机器人的回复播报出来。

借助ChatGLM语言生成模型和多种人工智能技术,我们可以创建一个有趣而富有趣味性的聊天机器人应用。只需准备一块行空板和一个UGB喇叭,就能得到一个可以扮演多个角色与你进行对话的机器人助手。通过自定义角色描述,你可以打造一个完全符合个性化需求的聊天机器人!让我们一起开始这个有趣的项目吧!

关于“行空板+大模型”——基于ChatGLM的多角色交互式聊天机器人 ”详细实现过程,关注“行空板”公众号” ,了解更多。

上海智位机器人

 

上海智位机器人成立于2010年,是全球领先的从事开源硬件、机器人产品和科创教育的高科技企业,打造了DFRobot、蘑菇云科创教育等品牌,是国内最早的创客理念引入者和倡导者,创客教育的开拓者和引领者。旗下拥有中国最大的线上DF创客社区和国家级创客空间——蘑菇云创客空间,提供丰富的线上和线下学习资源,构建了一个自由、开放和富于创造力的交流空间。其Gravity产品已被全球超过100万开发者选用。合作伙伴包括微软、英特尔、Autodesk、霍尼韦尔、NASA、MIT等知名厂商和机构。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册