聆思大模型AI開發(fā)套件集成Coze調(diào)用GPT-4
?上一篇《大模型賦能開發(fā)板被這家公司玩明白了》 我們已經(jīng)詳細(xì)介紹了聆思大模型 AI 開發(fā)套件以及聆思大模型平臺,并實操了基于LLM_control二次開發(fā)拓展了天氣查詢、中英互譯的能力。今天我們再來看看聆思大模型 AI 開發(fā)套件如何通過Coze Bot 使用 GPT-4 。
整體思路
聆思大模型AI開發(fā)套件集成Coze整體思路
首先,介紹幾個關(guān)鍵點:
- Coze 國際版支持 GPT-4 能力,可以將 Bot 部署到 Discord;
- 借助 coze-discord-proxy 代理 Discord 對話Coze-Bot,實現(xiàn)API形式請求GPT4對話模型/微調(diào)模型;
- 利用 LSPlatform 應(yīng)用編排中的 http-request 去調(diào)用 API 以及聯(lián)接開發(fā)板。
以此整體思路如上圖,開發(fā)板和聆思大模型平臺通過 SDK 拉通;聆聽大模型平臺應(yīng)用編排網(wǎng)絡(luò)節(jié)點調(diào)用 API;API 由部署在 Zeabur 上的 coze-discord-proxy 服務(wù)提供;coze-discord-proxy 服務(wù)實現(xiàn)了代理用戶在Discord頻道中發(fā)送信息,并調(diào)度兩個Discord Bot(一個關(guān)聯(lián) Coze Bot,一個用來監(jiān)聽Discord消息)。按照交互梳理的流程如下:
- ① “小聆小聆”喚醒,語音交互
- ② 聆思大模型平臺 http-request 節(jié)點調(diào)用 coze-discord-proxy服務(wù)
- ③ coze-discord-proxy 內(nèi)部調(diào)用 discord (user)
- ④ discord 調(diào)用 coze (coze bot)
- ⑤ coze bot 返回對話
- ⑥ discord 返回對話 (watch bot)
- ⑦ coze-discord-proxy 返回對話
- ⑧ 聆思大模型平臺返回對話到開發(fā)板
環(huán)境變量(coze-discord-proxy相關(guān))
?本文默認(rèn)您已經(jīng)擁有聆思大模型平臺相關(guān)賬號及權(quán)限,如沒有請訪問 platform.listenai.com。
?本文默認(rèn)您能正常訪問 Discord、Coze國際版、Zeabur, 我們嘗試了 coze.com 需要全局代理才能正常訪問。
部署 coze-discord-proxy 的方式有很多種,本文以部署到 Zeabur 為例,我們需要的環(huán)境變量如下:
BOT_TOKEN=[用來監(jiān)聽Discord消息的bot(watch bot)的token]
GUILD_ID=[Discord 兩個bot所在的服務(wù)器ID]
COZE_BOT_ID=[Discord被coze托管bot的ID]
CHANNEL_ID=[默認(rèn)頻道-在使用與openai對齊的接口時(/v1/chat/completions) 消息會默認(rèn)發(fā)送到此頻道]
USER_AUTHORIZATION=[Discord 當(dāng)前用戶的 token]
PROXY_SECRET=[請求頭校驗的值(前后端統(tǒng)一),后續(xù)接口調(diào)用需要的Authorization]
TZ=Asia/Shanghai
保姆級部署 coze-discord-proxy 的教程并非我們編寫此文的目的,因此我們會更聚集于部署過程中的重點以及如何在開發(fā)板上調(diào)用。
詳細(xì)教程請參考:通過接口調(diào)用Coze托管的discord-bot,實現(xiàn)免費使用GPT4和繪畫
我們需要在 Discord 平臺創(chuàng)建兩個 Bot,并獲取它們的token,為了方便區(qū)分我們姑且稱為watch bot 和 coze bot,watch bot 用于監(jiān)聽消息后續(xù)需要將它的token配置到環(huán)境變量中,coze bot 用于cozen.com 平臺發(fā)布bot到discord。這兩個bot都需要添加到Discord同一個服務(wù)器(可新創(chuàng)建)中,并且都要賦予Administrator(管理員)權(quán)限。**記錄 watch bot 的token,即為 BOT_TOKEN **
coze bot和watch bot
權(quán)限配置如下圖:
權(quán)限配置
添加到同一服務(wù)器中,需要復(fù)制服務(wù)器ID之類的信息時記得先開啟Discord開發(fā)者模式,具體操作路徑(以網(wǎng)頁版為例):點擊左下角用戶設(shè)置圖標(biāo)--新頁面點擊高級設(shè)置--打開開發(fā)者模式開關(guān)。之后
開發(fā)者模式
右鍵服務(wù)器即可顯示復(fù)制服務(wù)器ID,點擊即可復(fù)制,這就是GUILD_ID:
這就是GUILD_ID
同理右鍵頻道即可顯示復(fù)制頻道ID,點擊即可復(fù)制,這就是CHANNEL_ID:
這就是CHANNEL_ID
接著我們在coze.com平臺開發(fā)bot,并發(fā)布到discord,這里需要把 discord 中 coze bot 的token填寫到coze平臺。
discord coze bo
我們這里使用的是 GPT-4 (抱歉盜用了ListenAI,就當(dāng)推廣吧,哈哈,見諒!):
coze GPT-4
?Tips: 如需更高級的自定義Coze Bot,請查看 Coze 文檔:
接下來我們測試一下coze bot 有么有發(fā)布成功,如有回復(fù)那就是正常,并復(fù)制coze bot 的id,這就是COZE_BOT_ID:
這就是COZE_BOT_ID
當(dāng)然,如果此刻您打開了瀏覽器的調(diào)試界面(F12),在 devtool network 還能看到 message 請求,請求頭中包含 Authorization ,這就是USER_AUTHORIZATION。之后在 coze-discord-proxy 服務(wù)就會代理這個用戶來發(fā)送消息:
這就是USER_AUTHORIZATION
至此,我們需要的環(huán)境變量都準(zhǔn)備好了,接下去 zeabur.com 發(fā)布 coze-discord-proxy 服務(wù)吧。
發(fā)布 coze-discord-proxy 服務(wù)
這步因為我們使用的是zeabur.com的免費資源,因此部署過程中可能會提示升級套餐之后才給部署。我們的操作是刪除再重新創(chuàng)建。
zeabur suspended
部署的前提是需要將 coze-discord-proxy fork 到自己的賬號下,方面 zeabur 上使用 git 的方式部署。
zeabur git
基本上都是比較簡單的操作,需要注意的是要配置環(huán)境變量:
zeabur variable
發(fā)布成功之后我們還可自定義訪問域名。也能訪問到 coze-discord-proxy 服務(wù) swagger 文檔:
swagger
至此,我們以及部署了擁有 GPT-4 能力的 API 服務(wù)。接下來我們將在聆思大模型平臺接入這 API 服務(wù)。
聆思大模型平臺接入 Coze API
上一篇文章中我們了解到ListenAI大模型平臺應(yīng)用編輯基于Node-RED,有基本的網(wǎng)絡(luò)相關(guān)節(jié)點,今天的主角就是http-request節(jié)點。話不多說,我們看看文檔:
http-request
其實和代碼中使用 http 類似,參數(shù)也是 url、method、headers 之類的,如果是前端工程師的話,肯定很熟悉這一套操作了。
http-request
請求方式選擇POST
URL:填寫您的Coze API 接口地址,如https://coze.zeabur.app/v1/chat/completions
添加頭
Authorization值是前文您環(huán)境變量中的 PROXY_SECRET,用于簡單鑒權(quán)
Accept:application/json
Content-Type:application/json
細(xì)心的小伙伴可能會發(fā)現(xiàn), http-request前面加了一個前處理的節(jié)點,這是因為我們要組裝發(fā)給Coze API的數(shù)據(jù)格式,可簡單定義為:
const content = msg?._input?.content || '';
msg._input.content = {
"channelId": "1210469212355829770",
"messages": [
{
"content": content,
"role": "user"
}
],
"model": "",
};
return msg;
http-request前置處理
?Tips: 此處僅作簡單演示,您可自行實現(xiàn)創(chuàng)意節(jié)點。
為了確保調(diào)用沒問題,我們還可以簡單的調(diào)試一下,確定是使用的 Coze API。(我們暫時沒能編排實現(xiàn)接入coze-discord-proxy的流式返回)
聆思大模型AI開發(fā)套件接入 Coze API
如同上一篇文章中的拓展開發(fā),我們只需要將閑聊邏輯從調(diào)用內(nèi)置星火認(rèn)知大模型改為調(diào)用 Coze API 即可,開發(fā)板端代碼無需修改。需要注意的是,處理網(wǎng)頁版對話和硬件語音對話略有不同,還需要將返回內(nèi)容轉(zhuǎn)成語音下發(fā)。
- 前處理:
/**
* 閑聊前置處理節(jié)點
*/
const asrResult = msg._input.optAsrResult || msg._input.origin_content;
// 格式化傳給API接口的數(shù)據(jù)
const reqData = {
"channelId": "",
"messages": [
{
"content": asrResult,
"role": "user"
}
],
"model": "",
};
// msg._input.content = reqData
msg._input.content = asrResult;
msg.payload = reqData
return msg;
- 后處理
//大模型回復(fù)內(nèi)容
let content = msg.payload.choices[0]?.message?.content || '';
msg._output = {
stream: true
}
msg.payload = {
"text": content
}
return msg
最后記得重新部署,在端側(cè)就能體驗到 GPT-4 了。
?Tips:流式輸出的接口是有的,但對接出了的問題,http-request 有一定的局限性,后續(xù)可以嘗試使用 axios 等模塊實現(xiàn)。
