聆思大模型AI开发套件集成Coze调用GPT-4

胡琦

共 5471字,需浏览 11分钟

 ·

2024-04-11 01:38

上一篇《大模型赋能开发板被这家公司玩明白了》 我们已经详细介绍了聆思大模型 AI 开发套件以及聆思大模型平台,并实操了基于LLM_control二次开发拓展了天气查询、中英互译的能力。今天我们再来看看聆思大模型 AI 开发套件如何通过Coze Bot 使用 GPT-4 。

整体思路

3c773fcf92f52374efb3cfbba6a88d29.webp聆思大模型AI开发套件集成Coze整体思路

首先,介绍几个关键点:

  1. Coze 国际版支持 GPT-4 能力,可以将 Bot 部署到 Discord;
  2. 借助 coze-discord-proxy 代理 Discord 对话Coze-Bot,实现API形式请求GPT4对话模型/微调模型;
  3. 利用 LSPlatform 应用编排中的 http-request 去调用 API 以及联接开发板。

以此整体思路如上图,开发板和聆思大模型平台通过 SDK 拉通;聆听大模型平台应用编排网络节点调用 API;API 由部署在 Zeabur 上的 coze-discord-proxy 服务提供;coze-discord-proxy 服务实现了代理用户在Discord频道中发送信息,并调度两个Discord Bot(一个关联 Coze Bot,一个用来监听Discord消息)。按照交互梳理的流程如下:

  • ① “小聆小聆”唤醒,语音交互
  • ② 聆思大模型平台 http-request 节点调用 coze-discord-proxy服务
  • ③ coze-discord-proxy 内部调用 discord  (user)
  • ④ discord  调用 coze  (coze bot)
  • ⑤ coze bot 返回对话
  • ⑥ discord 返回对话 (watch bot)
  • ⑦ coze-discord-proxy 返回对话
  • ⑧ 聆思大模型平台返回对话到开发板

环境变量(coze-discord-proxy相关)

本文默认您已经拥有聆思大模型平台相关账号及权限,如没有请访问 platform.listenai.com。

本文默认您能正常访问 Discord、Coze国际版、Zeabur, 我们尝试了 coze.com 需要全局代理才能正常访问。

部署 coze-discord-proxy 的方式有很多种,本文以部署到 Zeabur 为例,我们需要的环境变量如下:

      
      BOT_TOKEN=[用来监听Discord消息的bot(watch bot)的token]
GUILD_ID=[Discord 两个bot所在的服务器ID]
COZE_BOT_ID=[Discord被coze托管bot的ID]
CHANNEL_ID=[默认频道-在使用与openai对齐的接口时(/v1/chat/completions) 消息会默认发送到此频道]
USER_AUTHORIZATION=[Discord 当前用户的 token]
PROXY_SECRET=[请求头校验的值(前后端统一),后续接口调用需要的Authorization]
TZ=Asia/Shanghai

保姆级部署 coze-discord-proxy 的教程并非我们编写此文的目的,因此我们会更聚集于部署过程中的重点以及如何在开发板上调用。

详细教程请参考:通过接口调用Coze托管的discord-bot,实现免费使用GPT4和绘画

我们需要在 Discord 平台创建两个 Bot,并获取它们的token,为了方便区分我们姑且称为watch bot 和 coze bot,watch bot 用于监听消息后续需要将它的token配置到环境变量中,coze bot 用于cozen.com 平台发布bot到discord。这两个bot都需要添加到Discord同一个服务器(可新创建)中,并且都要赋予Administrator(管理员)权限。**记录 watch bot 的token,即为 BOT_TOKEN **

10a16dbf5eb7bec15c10fa1f624eb06c.webpcoze bot和watch bot

权限配置如下图:

e8907d14942de5fe2b72c80825386e4e.webp权限配置

添加到同一服务器中,需要复制服务器ID之类的信息时记得先开启Discord开发者模式,具体操作路径(以网页版为例):点击左下角用户设置图标--新页面点击高级设置--打开开发者模式开关。之后

eb9c6961c3c54b3440b0801e87db33e6.webp开发者模式

右键服务器即可显示复制服务器ID,点击即可复制,这就是GUILD_ID

8053429004e63c8d48aa6aeeaaffe697.webp这就是GUILD_ID

同理右键频道即可显示复制频道ID,点击即可复制,这就是CHANNEL_ID

580ce7cc59d3b1465d35127d6e2fc1d6.webp这就是CHANNEL_ID

接着我们在coze.com平台开发bot,并发布到discord,这里需要把 discord 中 coze bot 的token填写到coze平台。

acaa82c3b31e4eeca69e3020365b21b6.webpdiscord coze bo

我们这里使用的是 GPT-4 (抱歉盗用了ListenAI,就当推广吧,哈哈,见谅!):

60de884e982c5978f2d383de819acf18.webpcoze GPT-4

Tips: 如需更高级的自定义Coze Bot,请查看 Coze 文档:

接下来我们测试一下coze bot 有么有发布成功,如有回复那就是正常,并复制coze bot 的id,这就是COZE_BOT_ID

bcb6af6ef31baa8501258a1751832706.webp这就是COZE_BOT_ID

当然,如果此刻您打开了浏览器的调试界面(F12),在 devtool network 还能看到 message 请求,请求头中包含 Authorization ,这就是USER_AUTHORIZATION。之后在 coze-discord-proxy 服务就会代理这个用户来发送消息:

532b5f45e2c1fbee91a4d4cc5b5545af.webp这就是USER_AUTHORIZATION

至此,我们需要的环境变量都准备好了,接下去 zeabur.com 发布 coze-discord-proxy 服务吧。

发布 coze-discord-proxy 服务

这步因为我们使用的是zeabur.com的免费资源,因此部署过程中可能会提示升级套餐之后才给部署。我们的操作是删除再重新创建。

cdedc4cfff9789cedc5f6ad4933d649f.webpzeabur suspended

部署的前提是需要将 coze-discord-proxy fork 到自己的账号下,方面 zeabur 上使用 git 的方式部署。

d18f7c98f77f67df3f236326dfaa91fe.webpzeabur git

基本上都是比较简单的操作,需要注意的是要配置环境变量:

8ad216551bc6b39e8b6ce22930b5e94a.webpzeabur variable

发布成功之后我们还可自定义访问域名。也能访问到 coze-discord-proxy 服务 swagger 文档:

994723d70b5dc3553d7d7c13c2481978.webpswagger

至此,我们以及部署了拥有 GPT-4 能力的 API 服务。接下来我们将在聆思大模型平台接入这 API 服务。

聆思大模型平台接入 Coze API

上一篇文章中我们了解到ListenAI大模型平台应用编辑基于Node-RED,有基本的网络相关节点,今天的主角就是http-request节点。话不多说,我们看看文档:

98881d934531de722f25a3a47ff150a1.webphttp-request

其实和代码中使用 http 类似,参数也是 url、method、headers 之类的,如果是前端工程师的话,肯定很熟悉这一套操作了。

2f1420e3e2c2e6b0990e111ea12b7269.webphttp-request
      
      请求方式选择POST

URL:填写您的Coze API 接口地址,如https://coze.zeabur.app/v1/chat/completions

添加头
Authorization值是前文您环境变量中的 PROXY_SECRET,用于简单鉴权
Accept:application/json
Content-Type:application/json

细心的小伙伴可能会发现, http-request前面加了一个前处理的节点,这是因为我们要组装发给Coze API的数据格式,可简单定义为:

      
      const content = msg?._input?.content || '';

msg._input.content = {
    "channelId""1210469212355829770",
    "messages": [
        {
            "content": content,
            "role""user"
        }
    ],
    "model""",
};

return msg;
374bccab70fcae851515b31f23d22fff.webphttp-request前置处理

Tips: 此处仅作简单演示,您可自行实现创意节点。

为了确保调用没问题,我们还可以简单的调试一下,确定是使用的 Coze API。(我们暂时没能编排实现接入coze-discord-proxy的流式返回adb2f96bf487c72db823e8e952896396.webp

聆思大模型AI开发套件接入 Coze API

如同上一篇文章中的拓展开发,我们只需要将闲聊逻辑从调用内置星火认知大模型改为调用 Coze API 即可,开发板端代码无需修改。需要注意的是,处理网页版对话和硬件语音对话略有不同,还需要将返回内容转成语音下发。

  • 前处理:
      
      /**
 *  闲聊前置处理节点
 */
const asrResult = msg._input.optAsrResult || msg._input.origin_content;
// 格式化传给API接口的数据
const reqData = {
    "channelId""",
    "messages": [
        {
            "content": asrResult,
            "role""user"
        }
    ],
    "model""",
};
// msg._input.content = reqData
msg._input.content = asrResult;
msg.payload = reqData
return msg;

  • 后处理
      
      //大模型回复内容
let content = msg.payload.choices[0]?.message?.content || '';

msg._output = {
    stream: true
}

msg.payload = {
    "text": content
}

return msg

最后记得重新部署,在端侧就能体验到 GPT-4 了。

Tips:流式输出的接口是有的,但对接出了的问题,http-request 有一定的局限性,后续可以尝试使用 axios 等模块实现。



浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报