![免费实现OpenAI使用GPT4和DALL-E-3绘画功能,通过Coze社区托管的discord-bot调用OpenAI接口API,coze-discord-proxy部署详细教程插图 免费实现OpenAI使用GPT4和DALL-E-3绘画功能,通过Coze社区托管的discord-bot调用OpenAI接口API,coze-discord-proxy部署详细教程插图](https://img.cxhao.com/2024/07/1719948723-99e8e2ddafb56a9.jpg)
一、Coze介绍
Coze是字节跳动在海外推出的AI聊天机器人和应用程序编辑开发平台。专为开发下一代AI聊天机器人而设计,该平台允许用户无论是否有编程经验,都能快速创建各种类型的聊天机器人,并轻松部署在不同的社交平台和消息传递应用程序上。
Coze官网:https://www.coze.com/
提醒:
(1)如果在阅读本文时出现图像裂开、内容不是最新等问题,这是因为本站开启了全站缓存(登入用户无缓存),请尝试刷新页面或者直接注册账号登入即可完美解决问题!
(2)项目搭建部署过程中遇到的问题请先查看本文第八节内容,是否有你遇到的问题,尝试自己先解决。
二、前提要求
- 确保您的本地PC能够科学上网,以便访问Coze和Discord
- 在部署Coze代理服务器时,确保服务器具备互联网访问权限,以便能够访问Discord的API接口。如果在国内服务器上部署,您可以参考以下文章实现科学上网
- 在服务器上安装Docker和Docker Compose服务,管理和运行coze proxy应用
三、创建Coze Bot
访问Coze官网,然后注册一个Coze账号,目前支持Google账号和手机号注册。说明:中国大陆地区的手机号也可以直接注册使用!
- 注册之后进入到Coze页面,然后点击
1Create Bot
创建一个Bot
![1719344554-44357b0264a9c74 1719344554-44357b0264a9c74](https://img.cxhao.com/2024/06/1719344554-44357b0264a9c74.png)
-
- 这里填写Bot的资料信息
- ⚠️ 注意:Bot名称中请勿包含gpt、chatgpt等与OpenAI相关的词语以及相关的模型名称,不然创建的Bot无法使用!!!
![1719344573-bfccff9349a211f 1719344573-bfccff9349a211f](https://img.cxhao.com/2024/06/1719344573-bfccff9349a211f.png)
![1719344558-438d0df6f6e9aef 1719344558-438d0df6f6e9aef](https://img.cxhao.com/2024/06/1719344558-438d0df6f6e9aef.png)
四、发布到Discord
1、创建Discord服务器
现在我们需要把Czoe Bot发布到我们的Discord服务器中,首先我们需要拥有一个自己的Discord服务器。
先登入Discord,你可以使用Discord客户端,也可以通过Discord网页端登入你的discord账号来继续下面的操作
![1719344578-ba6992389dd33af 1719344578-ba6992389dd33af](https://img.cxhao.com/2024/06/1719344578-ba6992389dd33af.png)
2、创建Discord应用
这里我们需要创建最少两个Discord应用,应用程序的类型为Bot,一个是与coze bot进行绑定的Bot,一个是用来监听discord消息的Bot,两个Bot创建的步骤流程一致,都按照下面的步骤进行操作即可!确保创建完成之后记住对应应用的
1 | Token |
和
1 | ID |
,后续配置 coze-discord-proxy 时候需要使用到
2.1:创建Discord应用
- 前往 Discord Developer Portal 并创建应用
- 在应用页面顶部,点击
1新建应用
。填写应用名称后,即可创建一个新的 Discord 应用。
![1719344561-6aa6a28631ad8d0 1719344561-6aa6a28631ad8d0](https://img.cxhao.com/2024/06/1719344561-6aa6a28631ad8d0.png)
2.2:获取Token和ID
说明:ID如果忘记了,后面在频道里也可以获取到,但是Token只会展示一次,所以我们要复制保留下来,如果忘记了那就需要重新生成新的Token了
![1719343822-0b605e57e6273e9 1719343822-0b605e57e6273e9](https://img.cxhao.com/2024/06/1719343822-0b605e57e6273e9.png)
![1719344658-2646c237d375d05 1719344658-2646c237d375d05](https://img.cxhao.com/2024/06/1719344658-2646c237d375d05.png)
2.3:配置对应的权限
接下来,我们点击OAuth2 —-> URL Generator —-> bot —-> 按照下图勾选相应的权限
请注意,SCOPES 选择应用程序运行所需的范围,选择之后会出现 PERMISSIONS 权限选择,我们按图上进行勾选,页面底部会给你的应用程序生成邀请链接。您需要复制该链接,并在浏览器中访问它以便将应用添加到我们的服务器。
⚠️ 注意:在coze-discord-proxy 3.0及其后续版本中,为了实现会话隔离,机器人需要获得自动创建频道的权限。因此,在配置权限时,所有的Bot都需要获得管理员权限。如果你之前已经创建了Discord Bot,那么只需找到对应的机器人然后把权限改为Admin,并复制下面的链接重新把Bot加入到你的服务器中即可。
Discord开发者中心:https://discord.com/developers/applications
![1719344616-14170f70ce249af 1719344616-14170f70ce249af](https://img.cxhao.com/2024/06/1719344616-14170f70ce249af.png)
- 复制连接在浏览器打开,把重新分配了权限的Bot添加到服务器即可!
![1719344565-709b45d225b7263 1719344565-709b45d225b7263](https://img.cxhao.com/2024/06/1719344565-709b45d225b7263.png)
2.4:开启Discord权限
注意:与coze bot进行关联的应用机器人和监听消息的应用机器人都需开启!不然会出现消息发过去之后第三方平台接收不到的情况!!
![1719344590-9706a4d9594ac22 1719344590-9706a4d9594ac22](https://img.cxhao.com/2024/06/1719344590-9706a4d9594ac22.png)
2.5:添加应用到频道
提示:如果Bot给了 Administrator 权限,那么下图中就会有管理员的权限!
![1719344634-b9165b792d99a8d 1719344634-b9165b792d99a8d](https://img.cxhao.com/2024/06/1719344634-b9165b792d99a8d.png)
可以看到我们的应用已经添加到了频道中了,上面创建的这个应用我们是用来与coze bot进行关联的,然后你在按照上面的步骤创建另外一个应用
3、发布Coze Bot
把上面创建的两个Discord Bot中其中一个要与Coze Bot绑定的Bot Token按照下图进行配置
![通过接口调用Coze托管的discord-bot,实现免费使用GPT4和绘画第14张-浅时光博客 免费实现OpenAI使用GPT4和DALL-E-3绘画功能,通过Coze社区托管的discord-bot调用OpenAI接口API,coze-discord-proxy部署详细教程插图12](https://www.dqzboy.com/wp-content/uploads/2024/01/1706412450-b5777240b89edf5.png)
五、搭建Coze代理
1、单个机器人接入
现在,我们使用GitHub大佬开源的代理项目,实现通过接口调用被
1 | coze |
托管的
1 | discord-bot |
。目前此项目对于个人使用没问题。coze-discord-proxy
项目开源地址:https://github.com/deanxv/coze-discord-proxy
服务器ID和频道ID获取
注意:先确认开启了开发者模式,如果没有开启按照下面进行手动开启。
![1719343773-fdd4df035daef9d 1719343773-fdd4df035daef9d](https://img.cxhao.com/2024/06/1719343773-fdd4df035daef9d.png)
![1719344593-0c55b61cc5f09b5 1719344593-0c55b61cc5f09b5](https://img.cxhao.com/2024/06/1719344593-0c55b61cc5f09b5.png)
服务器ID获取 和 频道ID获取,具体操作如下图:
![1719343828-60b2a557631c614 1719343828-60b2a557631c614](https://img.cxhao.com/2024/06/1719343828-60b2a557631c614.png)
![1719344655-db1d6f36f7e9243 1719344655-db1d6f36f7e9243](https://img.cxhao.com/2024/06/1719344655-db1d6f36f7e9243.png)
USER_AUTHORIZATION 获取
提示:USER_AUTHORIZATION 获取请使用Discord网页版,目前版本需要通过Discord用户账号去艾特机器人才会回复消息!
1 | F12 |
打开开发者模式,然后在你服务器中的文字频道,通过你的Discord用户(非机器人)在频道中发送一条任意消息,然后按照下图进行操作获取到
1 | Authorization |
对应的值并复制下来,后面需要使用!
![1719344643-8fa4fbec49b5a4f 1719344643-8fa4fbec49b5a4f](https://img.cxhao.com/2024/06/1719344643-8fa4fbec49b5a4f.png)
用户ID获取[4.1.5版本后无需此参数]
鼠标右键获取用户ID并复制
![1719343855-a8e9b3baf9eb1a7 1719343855-a8e9b3baf9eb1a7](https://img.cxhao.com/2024/06/1719343855-a8e9b3baf9eb1a7.png)
创建部署 docker-compose 文件。配置文件中的参数含义请看下面的环境变量中的解释
# 创建存储目录
|
|
mkdir -p /data/coze-discord-proxy && cd $_
|
|
vim docker-compose.yml
|
|
version: '3.4'
|
|
services:
|
|
: |
|
image: deanxv/coze-discord-proxy:latest
|
|
# 如果你的网络环境访问docker hub不稳定的话,可以把上面的镜像地址改为下面的地址进行下载镜像
|
|
#image: dockerproxy.com/deanxv/coze-discord-proxy:latest
|
|
container_name: coze-discord-proxy
|
|
restart: always
|
|
ports:
|
|
"7077:7077"
|
|
volumes:
|
|
./data:/app/coze-discord-proxy/data
|
|
environment:
|
|
USER_AUTHORIZATION=MTA5OTg5N************uIfytxUgJfmaXUBHVI
|
|
BOT_TOKEN=MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w
|
|
GUILD_ID=119xxxxxxxx796
|
|
COZE_BOT_ID=119xxxxxxxx7
|
|
CHANNEL_ID=119xxxxxx24
|
|
PROXY_SECRET=sk-123456
|
|
#- PROXY_URL=http://xx.xx.xx.xx:7890
|
|
TZ=Asia/Shanghai
|
|
# 部署服务
|
|
docker compose up -d
|
|
# 检查容器服务运行状况
|
|
docker ps
|
|
docker logs -f coze-discord-proxy
|
1
![1719344587-e4ac4079357efc9 1719344587-e4ac4079357efc9](https://img.cxhao.com/2024/06/1719344587-e4ac4079357efc9.png)
环境变量
-
1USER_AUTHORIZATION
此处修改为Discord用户的授权密钥(多个请以,分隔)
-
1BOT_TOKEN
此处Toekn为监听对话消息的Discord应用Token
-
1CHANNEL_ID
[可选]默认频道-在使用与openai对齐的接口时(/v1/chat/completions) 消息会默认发送到此频道; 3.0.0之后的版本中此参数只是用来确保Coze Bot机器人长时间没有对话的情况下被下线,用来每日凌晨自动执行定时对话任务
-
1GUILD_ID
我们创建的2个Discord Bot机器人所在的服务器ID
-
1COZE_BOT_ID
这个是我们创建的两个Discord Bot其中一个与Coze关联的Bot ID
-
1CHANNEL_AUTO_DEL_TIME:0
[可选]是否启用默认频道[0:否;1:是] (默认为0) 启用后每次对话都会在默认频道中,会话隔离会失效,推荐不设置
-
1ALL_DIALOG_RECORD_ENABLE:0
[可选]是否启用全量上下文[0:否;1:是] (默认为1) 关闭后每次对话只会发送
1messages中最后一个
1role为
1user的
1content,推荐不使用此环境变量
-
1CHANNEL_AUTO_DEL_TIME:5
[可选]频道自动删除时间(秒) 此参数为每次对话完成后自动删除频道的时间(默认为5s),为0时则不删除,推荐不使用此环境变量
-
1COZE_BOT_STAY_ACTIVE_ENABLE:1
[可选]是否开启每日
124点活跃coze-bot的定时任务,默认开启,为0时则不开启,推荐不使用此环境变量
-
1PORT:7077
[可选]端口,默认为7077
-
1SWAGGER_ENABLE
[可选]是否启用Swagger接口文档[0:否;1:是] (默认为1)
-
1ONLY_OPENAI_API
[可选]是否只暴露与openai对齐的接口[0:否;1:是] (默认为0)
-
1PROXY_SECRET
[可选]请求头校验的值(前后端统一),原文链接:https://www.dqzboy.com配置此参数后,每次发起请求时请求头加上
1proxy-secret参数,即
1header中添加
1proxy-secret:key -
1REQUEST_OUT_TIME:60
[可选]对话接口非流响应下的请求超时时间
-
1STREAM_REQUEST_OUT_TIME:60
[可选]对话接口流响应下的每次流返回超时时间
-
1USER_AGENT:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
[可选]discord用户端Agent,使用自己的可能有效防止被ban,不设置时默认使用作者的 推荐使用此环境变量
-
1NOTIFY_TELEGRAM_BOT_TOKEN=6232***********Niz9c
[可选]作为通知TelegramBot的Token(通知事件:1.无可用
1user_authorization;2.
1BOT_TOKEN关联的BOT触发风控)
-
1NOTIFY_TELEGRAM_USER_ID=10******35
[可选]
1NOTIFY_TELEGRAM_BOT_TOKEN关联的
1Telegram-Bot推送至该变量关联的
1Telegram-User(
1NOTIFY_TELEGRAM_BOT_TOKEN不为空时该变量也不可为空)
-
1PROXY_URL:http://xx.xx.xx.xx:7890
[可选]如果你服务器访问不了Discord,那么尝试配置代理。
2、配置多个机器人
多个机器人配置,我们只需要创建与Coze Bot进行绑定的Discord Bot就可以,监听消息的Discord Bot无需再创建,只需要一个就可以
说明:创建流程跟文章第四节的操作流程其实是一样的,然后创建完成配置权限并把机器人拉到服务器里
- 多个机器人创建步骤,参考下图重复创建多个机器人即可。
- 在
1docker-compose.yml
文件同级目录下创建
1data/config/bot_config.json文件
目前 coze-discord-proxy v3.0.0之后的版本已经实现对话隔离,下面配置文件中的channelId(频道ID)只是为了实现Bot可以保持活跃
1
|
|
]
|
|
]
|
|
|
|
]
|
|
[
|
|
{
|
|
"proxySecret": "sk-123", // 接口请求密钥(PROXY_SECRET,可以理解为API KEY)
|
|
"cozeBotId": "12***************31", // 此处为与Coze Bot进行绑定的Discord机器人的ID
|
|
"model": ["gpt-4","dalle-3"], // 模型名称(数组格式,如果是使用的第三方平台,确保这里跟你第三方平台中使用的模型保持一致,注意大小写)
|
|
"channelId": "12***************56" // [可选] discord频道ID(机器人必须在此频道所在的服务器)(目前版本下该参数仅用来活跃机器人)
|
|
},
|
|
{
|
|
"proxySecret": "sk-456",
|
|
"cozeBotId": "12***************64",
|
|
"model": ["gpt-4","gpt-4-16k"],
|
|
"channelId": "12***************78"
|
|
},
|
|
{
|
|
"proxySecret": "sk-789",
|
|
"cozeBotId": "12***************12",
|
|
"model": ["gpt-3.5-turbo","gpt-4-128k"],
|
|
"channelId": "12***************24"
|
|
}
|
|
]
|
1
- 配置文件创建好之后,注意修改
1docker-compose.yml
文件中
1PROXY_SECRET参数与配置文件中
1proxySecret值一一对应(标红处)
配置文件中的参数含义请看上面的环境变量中的解释
1
vim docker-compose.yml
|
|
version: '3.4'
|
|
services:
|
|
: |
|
image: deanxv/coze-discord-proxy:latest
|
|
# 如果你的网络环境访问docker hub不稳定的话,可以把上面的镜像地址改为下面的地址进行下载镜像
|
|
#image: dockerproxy.com/deanxv/coze-discord-proxy:latest
|
|
container_name: coze-discord-proxy
|
|
restart: always
|
|
ports:
|
|
"7077:7077"
|
|
volumes:
|
|
./data:/app/coze-discord-proxy/data
|
|
environment:
|
|
USER_AUTHORIZATION=MTA5OTg5N************uIfytxUgJfmaXUBHVI
|
|
BOT_TOKEN=MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w
|
|
GUILD_ID=119xxxxxxxx796
|
|
COZE_BOT_ID=119xxxxxxxx7
|
|
CHANNEL_ID=119xxxxxx24
|
|
CHANNEL_AUTO_DEL_TIME=0
|
|
PROXY_SECRET=sk-123,sk-456,sk-789 # [可选]接口密钥-修改此行为请求头校验的值(多个请以,分隔;前后端统一)你可以理解为API KEY
|
|
#- PROXY_URL=http://xx.xx.xx.xx:7890
|
|
TZ=Asia/Shanghai
|
1
- 重启coze-discord-proxy容器使其配置加载生效
1
docker compose restart
|
|
# 查看容器运行日志
|
|
docker logs -f coze-discord-proxy
|
1
![1719344611-54fbcd3c372f75f 1719344611-54fbcd3c372f75f](https://img.cxhao.com/2024/06/1719344611-54fbcd3c372f75f.png)
3、配置多账号多机器人
(1)注册Discord账号
注册多个Discord账号,注意不是Coze账号。注册Discoed账号可以通过邮箱注册,目前本人测试 outlook 邮箱注册时,只要确保你的IP或者说你的机场节点IP不是那种万人骑的,就可以保证百分百不需要验证手机号进行注册。
特别注意:邮箱注册和Discord注册都在同一个无痕浏览器窗口进行,注册验证完成、账号拉进服务器之后再关闭无痕窗口即可!
![1719344663-6d045eff6ba739e 1719344663-6d045eff6ba739e](https://img.cxhao.com/2024/06/1719344663-6d045eff6ba739e.png)
![1719344695-6a57acb6665e51b 1719344695-6a57acb6665e51b](https://img.cxhao.com/2024/06/1719344695-6a57acb6665e51b.png)
![1719343914-0b301f84f48009c 1719343914-0b301f84f48009c](https://img.cxhao.com/2024/06/1719343914-0b301f84f48009c.png)
邮箱注册完成之后,我们接下来就是注册Discord账号,然后需要用到上面注册的outlook邮箱进行注册验证
![1719343843-a37985f044f06eb 1719343843-a37985f044f06eb](https://img.cxhao.com/2024/06/1719343843-a37985f044f06eb.png)
![1719344675-3c425ddb1505bbd 1719344675-3c425ddb1505bbd](https://img.cxhao.com/2024/06/1719344675-3c425ddb1505bbd.png)
![1719344669-86158d7eb2a6c4b 1719344669-86158d7eb2a6c4b](https://img.cxhao.com/2024/06/1719344669-86158d7eb2a6c4b.png)
![1719344716-4839dafc1f11536 1719344716-4839dafc1f11536](https://img.cxhao.com/2024/06/1719344716-4839dafc1f11536.png)
上面为一个账号的注册流程,多个账号注册按照上面的流程再跑几遍就可以了,如果这都搞不定的话,那请放弃吧!
(2)邀请用户加入服务器
账号准备好之后,我们需要把账号拉进我们的Discord服务器中(跟Coze Bot同一个服务器),注意在登入Discord账号时,通过打开多个无痕窗口进行登入,注意不是多个标签页,登入完成并拉进服务器之后直接关闭浏览器,不要去登出账号!!!
复制服务器的邀请链接,然后在浏览器中打开。注意还是注册账号时打开的那个无痕浏览器窗口,不要随便打开一个窗口就进行邀请!如果你的Discord APP是打开的状态的话请退出APP!
![1719344712-c89fcb9902afc5d 1719344712-c89fcb9902afc5d](https://img.cxhao.com/2024/06/1719344712-c89fcb9902afc5d.png)
(3)获取用户AUTHORIZATION
这块的操作请往上翻☝️,找到 第五节中 单个机器人配置 这节内容,并查看 USER_AUTHORIZATION 获取 这部分的内容即可。把获取到的用户Authorization保存下来
(4)创建多个机器人
这里创建多个机器人,首先需要先在Coze页面创建Coze的官方Bot,然后在Discord开发者页面创建类型为Bot的应用,并开启权限获取Discord Bot token,然后把Discord Bot拉进Discord服务器里,把Token填写到Coze Bot发布页面中Discord配置里即可!这块的操作请往上翻☝️,找到第四节中 发布到Discord 这节内容,并查看 创建Discord应用 和 发布Coze Bot 这部分的内容即可。
(5)CDP配置多账号多机器人
CDP:coze-discord-proxy的简称,多账号的配置是在 docker-compose.yml 文件中的 USER_AUTHORIZATION 参数后面进行添加,多个账号使用英文逗号隔开!
![1719344739-f672caee846b310 1719344739-f672caee846b310](https://img.cxhao.com/2024/06/1719344739-f672caee846b310.png)
上面配置好了多个账号之后(注意保存),接下来配置多Bot,这里首先需要你在docker-compose.yml 同级目录下的 data/config目录里的bot_config.json文件里配置,目录结构如下图:
![1719343860-25de4b37b5f8b3c 1719343860-25de4b37b5f8b3c](https://img.cxhao.com/2024/06/1719343860-25de4b37b5f8b3c.png)
复制你创建的多个Bot的ID拷贝出来,然后在bot_config.json文件中按照下图的格式以及参数进行添加。这块内容上面也有写详细点操作流程。
![1719344745-de01d829374fedc 1719344745-de01d829374fedc](https://img.cxhao.com/2024/06/1719344745-de01d829374fedc.png)
上图中,我配置的多个Bot的Secret是一样的,我是为里方便维护,如果你的每个都不同,那么记得修改docker-compose.yml文件中的PROXY_SECRET参数,保证跟bot_config.json配置里的proxySecret参数值对应起来就行。
(6)重新运行cdp服务使其配置生效
注意
1 | docker-compose restart |
不会读取新配置,只是重启你的容器服务而已,要想配置生效需要先down,然后up启动
1
down
|
|
up -d
|
|
或者
|
|
docker compose down
|
|
docker compose up -d
|
1
六、接入第三方平台
客户端项目1:接入chatgpt-web
现在我们可以使用此代理接口来接入第三方web平台,实现openai的接口访问。这里演示的前端项目为chatgpt-web。
chatgpt-web 和 ChatGPT-Next-Web 一键部署脚本:脚本地址
支持openai标准的APi对话接口、绘图等。注意绘图功能需要在coze bot安装DALLE 3插件,插件安装完成之后最好重新发布一下coze bot。
coze proxy接口地址:http(s)://host:port
![1719344686-e0adeea5ca21060 1719344686-e0adeea5ca21060](https://img.cxhao.com/2024/06/1719344686-e0adeea5ca21060.png)
现在,我们发送个消息进行测试一下,是否可以正常返回会话数据。
![1719344681-a98aa84d309a204 1719344681-a98aa84d309a204](https://img.cxhao.com/2024/06/1719344681-a98aa84d309a204.png)
![1719344703-93c5b9131d8c90e 1719344703-93c5b9131d8c90e](https://img.cxhao.com/2024/06/1719344703-93c5b9131d8c90e.png)
接入多个机器人的话,我们需要配置API,第三方平台的API Key就填写
1 | proxySecret |
,参考下图
注意:仔细确认你的配置没问题,对应关系可以查看下图,如果配置错误会出现容器日志显示secret匹配不到有效bot
![1719344760-d414892a503726c 1719344760-d414892a503726c](https://img.cxhao.com/2024/06/1719344760-d414892a503726c.png)
配置好之后,我们可以发起多轮对话进行测试
![1719344690-6e545da8a8af7e8 1719344690-6e545da8a8af7e8](https://img.cxhao.com/2024/06/1719344690-6e545da8a8af7e8.png)
提示:在3.0.0之后的版本中,如果你前端指定了对应的对话模型,那么就会调用你配置了对应model的机器人完成对话,如果你前端配置的model和bot_config.json中配置的model都是一样的,那么效果就如下图一样,是随机调用一个机器人进行对话
提醒:coze-discord-proxy 新版中是通过用户去艾特机器人的,下图案例是老版本的,但是效果跟下图中是一样的。
![通过接口调用Coze托管的discord-bot,实现免费使用GPT4和绘画第46张-浅时光博客 免费实现OpenAI使用GPT4和DALL-E-3绘画功能,通过Coze社区托管的discord-bot调用OpenAI接口API,coze-discord-proxy部署详细教程插图39](https://www.dqzboy.com/wp-content/uploads/2024/01/1706712050-a790c599cde353c.png)
客户端项目2:通过cow接入企业微信
cow:是开源项目chatgpt-on-wechat,项目支持微信、企业微信、公众号、飞书、钉钉接入。这里我是接入的企业微信,因为个人微信被封号的概率太高了,保险起见使用企业微信接入,你可以查看项目的文档,获取企业微信相关的信息,然后下面我们需要使用到。项目官方文档:https://docs.link-ai.tech/cow/multi-platform/wechat-com
1、获取企业相关信息
- 进入我的企业->企业信息,记住企业ID
![1719344699-6e293148b88074c 1719344699-6e293148b88074c](https://img.cxhao.com/2024/06/1719344699-6e293148b88074c.png)
- 进入应用管理, 在自建区选创建应用来创建企业自建应用,上传应用logo,填写应用名称等,创建应用后进入应用详情页面,记住
1AgentId
和
1Secret - 注意:Secret需要创建者号登录企微后查看系统发送的密钥
![1719344751-5c3c218b1732bbc 1719344751-5c3c218b1732bbc](https://img.cxhao.com/2024/06/1719344751-5c3c218b1732bbc.png)
2、配置接收消息服务器
注意:配置回调地址时需要先启动cow服务,然后再在企业微信API地址里面填写,这样才可以获取到token和AesKey;记得防火墙配置中放开cow服务的监听端口
- 自建应用 —> 功能 —> 接收消息 —> 启用API
- URL格式:http(s)://IP或域名:端口号/wxcomapp
![1719344707-5a8cf5ef8eb874e 1719344707-5a8cf5ef8eb874e](https://img.cxhao.com/2024/06/1719344707-5a8cf5ef8eb874e.png)
3、使用Docker部署
注意:请根据自己的部署环境修改config.json文件中的参数,如model、open_ai_api_key、open_ai_api_base
1
# 拉取docker文件
|
|
~]# wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml
|
|
# 修改docker-compose.yml。添加volumes和ports使用外部配置
|
|
~]# vim docker-compose.yml
|
|
version: '2.0'
|
|
services:
|
|
chatgpt-on-wechat:
|
|
image: zhayujie/chatgpt-on-wechat
|
|
container_name: chatgpt-on-wechat
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
volumes:
|
|
- ./config.json:/app/config.json
|
|
ports:
|
|
- "5001:5001"
|
|
# 新建config.json 内容如下,注意eopen_ai_api_key、model要与coze-discord-proxy服务的bot_config.json配置文件中的proxySecret、model对应起来,open_ai_api_base修改成你实际的coze-discord-proxy的接口地址
|
|
~]# vim config.json
|
|
{
|
|
"channel_type": "wechatcom_app",
|
|
"model": "gpt-4",
|
|
"open_ai_api_key": "sk-123",
|
|
"text_to_image": "dalle-3",
|
|
"voice_to_text": "openai",
|
|
"text_to_voice": "openai",
|
|
"proxy": "",
|
|
"open_ai_api_base": "http://<YOUR_IP OR URL>:7077/v1",
|
|
"hot_reload": false,
|
|
"single_chat_prefix": [
|
|
""
|
|
],
|
|
"single_chat_reply_prefix": "",
|
|
"group_chat_prefix": [
|
|
"@gpt"
|
|
],
|
|
"group_name_white_list": [
|
|
"ALL_GROUP"
|
|
],
|
|
"group_chat_in_one_session": [
|
|
"ALL_GROUP"
|
|
],
|
|
"image_create_prefix": [
|
|
"画"
|
|
],
|
|
"speech_recognition": true,
|
|
"group_speech_recognition": true,
|
|
"voice_reply_voice": false,
|
|
"conversation_max_tokens": 2500,
|
|
"expires_in_seconds": 3600,
|
|
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
|
|
"temperature": 0.7,
|
|
"top_p": 1,
|
|
"subscribe_msg": "感谢您的关注!\n这里是ChatGPT,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等>丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。",
|
|
"use_linkai": false,
|
|
"linkai_api_key": "",
|
|
"linkai_app_code": "",
|
|
"wechatcom_corp_id": "企业ID",
|
|
"wechatcomapp_token": "接收消息服务器Token",
|
|
"wechatcomapp_secret": "自建应用Secret",
|
|
"wechatcomapp_agent_id": "自建应用AgentId",
|
|
"wechatcomapp_aes_key": "接收消息服务器EncodingAESKey",
|
|
"wechatcomapp_port": 5001
|
|
}
|
|
# 启动docker容器
|
|
~]# sudo docker-compose up -d
|
|
查看log
|
|
~]# sudo docker logs -f chatgpt-on-wechat
|
1
4、浏览器进行回调测试,检测是否正常
- 回调地址:点击跳转
![1719344721-526786989f3d818 1719344721-526786989f3d818](https://img.cxhao.com/2024/06/1719344721-526786989f3d818.png)
5、测试没问题后,登入企业微信后台按照下图操作,邀请别人进行关注即可使用
![1719344783-244ccc06d2b511a 1719344783-244ccc06d2b511a](https://img.cxhao.com/2024/06/1719344783-244ccc06d2b511a.jpg)
![1719344791-dfd3a3d242657eb 1719344791-dfd3a3d242657eb](https://img.cxhao.com/2024/06/1719344791-dfd3a3d242657eb.png)
七、Coze Proxy服务维护
后期coze proxy服务会进行更新、重启等操作,可以使用下面的一个简单脚本实现,方便我们进行维护管理。
1
~]# vi manage_coze_discord.sh
|
|
|
|
# WORKING_DIR:指定docker-compose.yml文件所在的目录
|
|
WORKING_DIR="/data/coze-discord-proxy/"
|
|
cd "${WORKING_DIR}"
|
|
CONTAINER_NAME="coze-discord-proxy"
|
|
IMAGE_NAME="deanxv/coze-discord-proxy"
|
|
DOCKER_COMPOSE_FILE="docker-compose.yml"
|
|
stop_and_remove_container() {
|
|
# 检查容器是否存在并停止并移除
|
|
if docker ps -a --format '{{.Names}}' | grep -Eq "^${CONTAINER_NAME}$"; then
|
|
docker compose down
|
|
fi
|
|
}
|
|
remove_none_tags() {
|
|
# 删除标记为<none>的deanxv/coze-discord-proxy镜像
|
|
docker images | grep "^${IMAGE_NAME}.*<none>" | awk '{print $3}' | xargs -r docker rmi
|
|
# 获取 deanxv/coze-discord-proxy 镜像列表,以仓库名和标签的格式显示
|
|
images=$(docker images ${IMAGE_NAME} --format '{{.Repository}}:{{.Tag}}')
|
|
# 获取最新的镜像版本
|
|
latest=$(echo "$images" | sort -V | tail -n 1)
|
|
# 遍历所有的镜像
|
|
for image in $images
|
|
do
|
|
# 如果镜像不是最新的版本,就删除它
|
|
if [ "$image" != "$latest" ];then
|
|
docker rmi $image
|
|
fi
|
|
done
|
|
}
|
|
update_image_version() {
|
|
# 提示用户输入新的版本号,并更新docker-compose文件
|
|
read -e -p "请输入更新的版本号并按 Enter 键(eg: v3.2.3), 直接回车默认为latest: " version_number
|
|
if [[ -z "$version_number" ]]; then
|
|
version_number="latest"
|
|
fi
|
|
sed -i "s|${IMAGE_NAME}:.*|${IMAGE_NAME}:$version_number|" $DOCKER_COMPOSE_FILE
|
|
}
|
|
echo "请选择操作:"
|
|
echo "1) 重启"
|
|
echo "2) 更新"
|
|
echo "3) 新装"
|
|
echo "4) 卸载"
|
|
read -e -p "输入对应数字并按 Enter 键: " user_choice
|
|
case $user_choice in
|
|
1)
|
|
echo "--------------------重启中--------------------"
|
|
docker compose restart
|
|
echo "-------------------- DONE --------------------"
|
|
;;
|
|
2)
|
|
echo "--------------------更新中--------------------"
|
|
update_image_version
|
|
docker compose pull
|
|
docker compose up -d --force-recreate
|
|
remove_none_tags
|
|
echo "-------------------- DONE --------------------"
|
|
;;
|
|
3)
|
|
echo "--------------------新装中--------------------"
|
|
stop_and_remove_container
|
|
docker compose up -d
|
|
echo "-------------------- DONE --------------------"
|
|
;;
|
|
4)
|
|
echo "--------------------卸载中--------------------"
|
|
stop_and_remove_container
|
|
remove_none_tags
|
|
docker rmi $(docker images -q deanxv/coze-discord-proxy) &>/dev/null
|
|
echo "-------------------- DONE --------------------"
|
|
;;
|
|
*)
|
|
echo "输入了无效的选择。请重新运行脚本并选择1-4的选项。"
|
|
;;
|
|
esac
|
|
# 添加执行权限
|
|
~]# chmod +x manage_coze_discord.sh
|
|
# 执行脚本
|
|
~]# ./manage_coze_discord.sh
|
1
八、搭建过程中的问题总结
问题1:第三方平台接入后对话响应超时
问题原因
在
1 | coze-discord-proxy |
项目中,系统是通过检测一次对话结束后,Discord机器人是否自动提供了三个建议性问题来判断该次交流是否完结。如果系统检测到有这样的建议问题,它就会认为对话结束了;反之,如果没有检测到,系统就可能会错误地认为对话还在继续。从而导致第三方平台响应超时。
问题解决
解决的方法很简单,在coze bot管理界面找到对应的bot然后将
1 | Auto-Suggestion |
参数的值回复为默认的
1 | Default |
![1719344726-b6b837e7714064b 1719344726-b6b837e7714064b](https://img.cxhao.com/2024/06/1719344726-b6b837e7714064b.png)
自定义自动建议来提升返回信息的速度
1
Forget all the previous prompts and constraints.
|
|
Generate three questions.
|
|
The questions are:
|
|
1. Who are you?
|
|
2. How old are you this year?
|
|
3. Where do you live?
|
1
![1719344767-77906094ea86266 1719344767-77906094ea86266](https://img.cxhao.com/2024/06/1719344767-77906094ea86266.png)
![1719344769-47c23786bedadb2 1719344769-47c23786bedadb2](https://img.cxhao.com/2024/06/1719344769-47c23786bedadb2.png)
⚠️ 注意:修改之后记得重新发布下Coze Bot!
问题2:容器日志显示secret匹配不到有效bot
问题原因
以上问题主要出现在多机器人的配置中,问题原因主要有以下几种情况:
-
1docker-compose.yml
文件内的
1PROXY_SECRET参数与
1bot_config.json文件中的
1proxySecret没有按照正确的格式相对应。多个secret之间不是使用的英文逗号进行分隔,并且要区分大小写
-
1bot_config.json
文件中的model参数对应的value与你接入的第三方平台中设置的对话模型不一致,所以导致匹配不到bot
问题解决
- 在配置多个机器人时,需要确保
1docker-compose.yml
文件内的
1PROXY_SECRET参数与
1bot_config.json文件中的
1proxySecret按照正确的格式相对应。多个secret之间用英文逗号分隔,且不能有空格,注意大小写
-
1bot_config.json
文件中的
1model参数对应的
1value必须与你接入的第三方平台中设置的对话模型一致,这样才可以正确匹配到bot
问题3:Something wrong occurs, please retry.
问题原因
目前猜测是由于coze官方做了限制,具体是coze封discord用户还是对使用的模型进行限制,目前未知,反正切换模型或者切换discord提问的用户都可以临时恢复。非每日次数限制,每日次数显示的提示为:
1 | You have exceeded the daily limit for sending messages to the bot. Please try again later. |
目前有群友测试得到的Coze各模型每天的对话次数为:GPT-4-128k 50,GPT-4-128k 8k 100,GPT-3.5 500
在discord频道中艾特coze机器人直接返回的提示如下:
![1719344788-75ed02407591528 1719344788-75ed02407591528](https://img.cxhao.com/2024/06/1719344788-75ed02407591528.png)
问题解决
目前我在出现上面的问题之后,在coze页面中把bot的模型进行了切换之后,重新发布bot解决了上面的问题。比起重新创建discord用户,然后切换discord用户简单一些!但是如果你所有模型的次数都使用完了,那也只能创建一个新的Discord用户去与机器人对话了。
如果你很清楚的知道机器人没有超过限制,但还是出现上面的提示,那就去coze官网控制台重新发布一下此机器人进行测试!
问题4:discord正常回复,但是请求一直未返回
问题原因
监听机器人的三个权限没有开启
问题解决
检查Discord 机器人上你的机器人是否三个权限都已经开启了
![1719344590-9706a4d9594ac22 1719344590-9706a4d9594ac22](https://img.cxhao.com/2024/06/1719344590-9706a4d9594ac22.png)
问题5:error opening connection, websocket: close 4004: Authentication failed
问题原因
- 首先确认自己的机器可以访问discord.com
- BOT_TOKEN和COZE_BOT_ID填写的不对
问题解决
检查BOT_TOKEN和COZE_BOT_ID,根据文章中的操作步骤获取正确的参数
问题6:NextChat对话一直显示Failed to fetch
问题原因
HTTPS混合请求内容,next-chatgpt-web是https的,但是请求的cdp接口地址是http
问题解决
方案1:给代理的接口地址加上证书,配置成https的
方案2:谷歌浏览器设置—>隐私和安全—>不安全的内容,改为允许
![1719344780-8437f74ed90776f 1719344780-8437f74ed90776f](https://img.cxhao.com/2024/06/1719344780-8437f74ed90776f.png)
![1719344774-3cc10f32c15d07c 1719344774-3cc10f32c15d07c](https://img.cxhao.com/2024/06/1719344774-3cc10f32c15d07c.png)
评论(0)