隨著人工智能技術(shù)的迅猛發(fā)展,大型語言模型成為了熱門話題。國際上的GPT-3、BERT等模型備受關(guān)注,而國內(nèi)的本土語言模型ChatGLM也引起了廣泛關(guān)注。ChatGLM是由清華大學(xué)開發(fā)的強(qiáng)大語言生成模型,結(jié)合了深度學(xué)習(xí)技術(shù)和大量中文語料的訓(xùn)練成果。它在自然語言理解和生成方面展現(xiàn)了出色性能,為國內(nèi)的自然語言處理研究與應(yīng)用提供了有力支持。
通過使用行空板和UGB喇叭,你可以制作一個(gè)有趣好玩的聊天機(jī)器人應(yīng)用。只需修改角色描述,你就能打造屬于自己的個(gè)性化聊天機(jī)器人,它能以多個(gè)角色身份與你進(jìn)行對(duì)話。
硬件準(zhǔn)備
行空板,USB線,USB喇叭
行空板是一款專為Python學(xué)習(xí)和使用設(shè)計(jì)的新一代國產(chǎn)開源硬件,采用單板計(jì)算機(jī)架構(gòu),集成LCD彩屏、WiFi藍(lán)牙、多種常用傳感器和豐富的拓展接口。同時(shí),其自帶Linux操作系統(tǒng)和Python環(huán)境,還預(yù)裝了常用的Python庫,只需兩步就能進(jìn)行Python學(xué)習(xí)。
功能分解
具體操作
1、注冊(cè)智譜api:智譜AI開放平臺(tái),https://open.bigmodel.cn/,選擇驗(yàn)證碼登錄,輸入手機(jī)號(hào)和驗(yàn)證碼完成冊(cè)。點(diǎn)擊API keys, 點(diǎn)擊“去認(rèn)證”,進(jìn)行實(shí)名認(rèn)證。
2、注冊(cè)并獲取微軟語音服務(wù)API密鑰
(1)注冊(cè)微軟的賬號(hào),輸入網(wǎng)址:https://portal.azure.com/,用郵箱創(chuàng)建新賬號(hào)。
新用戶有一年的免費(fèi)額度但需要信用卡驗(yàn)證。如果沒有條件申請(qǐng)微軟的語音服務(wù)API,也可以使用百度的語音服務(wù)API,文章的最后提供了使用ChatGLM和百度API的實(shí)現(xiàn)代碼。
(2)通過驗(yàn)證: 創(chuàng)建好賬號(hào)登錄后會(huì)進(jìn)入以下頁面https://portal.azure.com/#home面對(duì)新用戶,微軟提供了1年的免費(fèi)服務(wù)但需要通過驗(yàn)證,這里有兩種驗(yàn)證方法。(1)visa/銀聯(lián)卡驗(yàn)證(2)大學(xué)生能無需信用卡,使用學(xué)生郵箱驗(yàn)證。
(3)申請(qǐng)資源: 驗(yàn)證通過后,在Azure門戶中,點(diǎn)擊左上角的“+ 創(chuàng)建資源”按鈕。之后會(huì)跳轉(zhuǎn)到如下頁面,按照提示完成填寫信息。
3、加載行空板-安裝庫-行空板聯(lián)網(wǎng)
(1)加載行空板 :第一步:使用USB線將行空板連接在電腦上。按照步驟加載行空板,創(chuàng)建好文件后,可以看到一個(gè)名為“chatbot.py”的文件,雙擊打開。
(2)安裝所需要的庫,依次輸入PIP指令,點(diǎn)擊“運(yùn)行”
(3)行空板聯(lián)網(wǎng):調(diào)用API必須要聯(lián)網(wǎng)。由于在本項(xiàng)目中,使用了智譜清言的API和微軟的語音API,所以要為行空板連接網(wǎng)絡(luò)。(1)打開瀏覽器,輸入“10.1.2.3”進(jìn)行行空板頁面。(2)選擇“網(wǎng)絡(luò)設(shè)置”,選擇WIFI ,輸入密碼,注意行空板僅支持2.4GWIFI熱點(diǎn)。點(diǎn)擊“連接”,行空板成功聯(lián)網(wǎng)會(huì)顯示“連接成功”,如下圖。
4、編程
(1)調(diào)用chatglm的API: 參考官方的API調(diào)用文檔,定義一個(gè)名為ChatGPT的類,代表聊天機(jī)器。為了測試效果,在主循環(huán)中獲取用戶輸入,將用戶的輸入傳給聊天機(jī)器人,打印聊天機(jī)器人的回復(fù)。
(2)實(shí)現(xiàn)多輪對(duì)話: 點(diǎn)擊右上角的運(yùn)行,開始在終端打字,與機(jī)器人進(jìn)行對(duì)話。以下是測試對(duì)話截圖,"You"部分是輸入的內(nèi)容,“chatbot”是調(diào)用智譜API,使用模型'chatglm_turbo',獲取的回復(fù)
當(dāng)聊天機(jī)器人給出謎語后,回復(fù)“猜不出來”時(shí),期待的是聊天機(jī)器人能告訴謎語的答案。但顯然根據(jù)它的回復(fù),模型沒有理解語意是猜不出上輪對(duì)話的謎語。這個(gè)現(xiàn)象是因?yàn)榕c模型的對(duì)話是單輪的形式,即問一答一;而在處理復(fù)雜的對(duì)話場景時(shí),理解上下文和實(shí)現(xiàn)多輪對(duì)話是非常重要的。期待的效果是聊天機(jī)器人能結(jié)合上下文的語境,實(shí)現(xiàn)多輪對(duì)話。要解決這個(gè)問題,可以將整個(gè)對(duì)話歷史作為輸入發(fā)送給模型,而不僅僅是最新的用戶消息。這樣,模型就可以看到整個(gè)對(duì)話的上下文,并據(jù)此生成回復(fù)。
為了讓聊天機(jī)器人能理解上下文的語境,可以在__init__ 方法中添加 self.dialogue 列表,用于存儲(chǔ)對(duì)話歷史。在 send_message 方法中,將用戶的消息和模型的回復(fù)都添加到對(duì)話歷史中,然后將整個(gè)對(duì)話歷史轉(zhuǎn)化為一個(gè)字符串,作為提示發(fā)送給模型。
(3)創(chuàng)建角色字典,實(shí)現(xiàn)多角色選擇
現(xiàn)在我們已經(jīng)成功實(shí)現(xiàn)了多輪對(duì)話,在與聊天機(jī)器人對(duì)話時(shí),它是以人工智能助手(assistant)的身份。怎么能實(shí)現(xiàn)角色扮演呢?為了實(shí)現(xiàn)這個(gè)功能,可以在 ChatGPT 類中添加一個(gè) self.role 屬性來存儲(chǔ)角色描述。然后,我們可以修改 send_message 方法,使其在將對(duì)話歷史轉(zhuǎn)化為字符串時(shí),首先添加角色描述。這樣,模型就會(huì)知道它應(yīng)該扮演的角色,從而生成符合角色的回復(fù)。
5、UI設(shè)計(jì)
按照同樣的邏輯在行空板上進(jìn)行UI設(shè)計(jì)。
6、實(shí)現(xiàn)語音交互功能
實(shí)現(xiàn)語音交互功能,在角色圖片的下方添加一個(gè)麥克風(fēng)圖片,當(dāng)點(diǎn)擊麥克風(fēng)圖片開始錄音,并使用百度語音識(shí)別API實(shí)現(xiàn)語音轉(zhuǎn)文字作為對(duì)話內(nèi)容傳給聊天機(jī)器人,再調(diào)用百度語音合成API將聊天機(jī)器人的回復(fù)播報(bào)出來。
借助ChatGLM語言生成模型和多種人工智能技術(shù),我們可以創(chuàng)建一個(gè)有趣而富有趣味性的聊天機(jī)器人應(yīng)用。只需準(zhǔn)備一塊行空板和一個(gè)UGB喇叭,就能得到一個(gè)可以扮演多個(gè)角色與你進(jìn)行對(duì)話的機(jī)器人助手。通過自定義角色描述,你可以打造一個(gè)完全符合個(gè)性化需求的聊天機(jī)器人!讓我們一起開始這個(gè)有趣的項(xiàng)目吧!
關(guān)于“行空板+大模型”——基于ChatGLM的多角色交互式聊天機(jī)器人?”詳細(xì)實(shí)現(xiàn)過程,關(guān)注“行空板”公眾號(hào)”,了解更多。
上海智位機(jī)器人
上海智位機(jī)器人成立于2010年,是全球領(lǐng)先的從事開源硬件、機(jī)器人產(chǎn)品和科創(chuàng)教育的高科技企業(yè),打造了DFRobot、蘑菇云科創(chuàng)教育等品牌,是國內(nèi)最早的創(chuàng)客理念引入者和倡導(dǎo)者,創(chuàng)客教育的開拓者和引領(lǐng)者。旗下?lián)碛兄袊畲蟮木€上DF創(chuàng)客社區(qū)和國家級(jí)創(chuàng)客空間——蘑菇云創(chuàng)客空間,提供豐富的線上和線下學(xué)習(xí)資源,構(gòu)建了一個(gè)自由、開放和富于創(chuàng)造力的交流空間。其Gravity產(chǎn)品已被全球超過100萬開發(fā)者選用。合作伙伴包括微軟、英特爾、Autodesk、霍尼韋爾、NASA、MIT等知名廠商和機(jī)構(gòu)。