当前位置:   article > 正文

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

coze api对接

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

整体思路

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

聆思大模型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 为例,我们需要的环境变量如下:

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

coze bot和watch bot

coze bot和watch bot

权限配置如下图:

权限配置

权限配置

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

开发者模式

开发者模式

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

这就是GUILD_ID

这就是GUILD_ID

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

这就是CHANNEL_ID

这就是CHANNEL_ID

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

discord coze bo

discord coze bo

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

coze GPT-4

coze GPT-4

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

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

这就是COZE_BOT_ID

这就是COZE_BOT_ID

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

这就是USER_AUTHORIZATION

这就是USER_AUTHORIZATION

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

发布 coze-discord-proxy 服务

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

zeabur suspended

zeabur suspended

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

zeabur git

zeabur git

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

zeabur variable

zeabur variable

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

swagger

swagger

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

聆思大模型平台接入 Coze API

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

http-request

http-request

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

http-request

http-request

  1. 请求方式选择POST
  2. URL:填写您的Coze API 接口地址,如https://coze.zeabur.app/v1/chat/completions
  3. 添加头
  4. Authorization值是前文您环境变量中的 PROXY_SECRET,用于简单鉴权
  5. Accept:application/json
  6. Content-Type:application/json

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

  1. const content = msg?._input?.content || '';
  2. msg._input.content = {
  3.     "channelId""1210469212355829770",
  4.     "messages": [
  5.         {
  6.             "content"content,
  7.             "role""user"
  8.         }
  9.     ],
  10.     "model""",
  11. };
  12. return msg;

http-request前置处理

http-request前置处理

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

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

http-request debug

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

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

  • 前处理:

  1. /**
  2.  *  闲聊前置处理节点
  3.  */
  4. const asrResult = msg._input.optAsrResult || msg._input.origin_content;
  5. // 格式化传给API接口的数据
  6. const reqData = {
  7.     "channelId""",
  8.     "messages": [
  9.         {
  10.             "content": asrResult,
  11.             "role""user"
  12.         }
  13.     ],
  14.     "model""",
  15. };
  16. // msg._input.content = reqData
  17. msg._input.content = asrResult;
  18. msg.payload = reqData
  19. return msg;
  • 后处理

  1. //大模型回复内容
  2. let content = msg.payload.choices[0]?.message?.content || '';
  3. msg._output = {
  4.     stream: true
  5. }
  6. msg.payload = {
  7.     "text"content
  8. }
  9. return msg

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/601743
推荐阅读
相关标签
  

闽ICP备14008679号