Project Icon

coze-discord-proxy

基于Discord的Coze-Bot代理实现GPT4模型API服务

coze-discord-proxy项目提供了一种通过API访问GPT4模型的解决方案。该项目代理Discord对话Coze-Bot,实现对话、文生图、图生文和知识库检索等功能。它适配NextChat、one-api等对话面板,支持对话隔离和流式返回,并提供与OpenAI API对齐的接口。项目还支持多用户负载均衡和多机器人配置,为开发者提供灵活的AI对话服务集成选择。

中文 | English

coze-discord-proxy

代理Discord对话Coze-Bot,实现以API形式请求GPT4模型,提供对话、文生图、图生文、知识库检索等功能

如果觉得有意思,别忘了点个🌟

📄CDP项目文档站(必看教程)

🐞CDP项目-交流群(交流)

📢CDP项目-通知频道(通知)

功能

  • 完美适配NextChat、one-api、LobeChat等对话面板。
  • 完美支持对话隔离。
  • 对话接口支持流式返回。
  • 支持创建discord分类/频道/线程。
  • 支持和openai对齐的对话接口(v1/chat/completions)(也支持dall-e-3文生图)(支持指定discord-channel)。
  • 支持和openai对齐的图生文/图改图/文件生文接口(v1/chat/completions)(按照GPT4V接口的请求格式 [ 支持url或base64 ])(支持指定discord-channel)。
  • 支持和openai对齐的dall-e-3文生图接口(v1/images/generations)。
  • 支持每日9点定时任务自动活跃机器人。
  • 支持配置多discord用户Authorization(环境变量USER_AUTHORIZATION)作请求负载均衡(目前每个discord用户调用coze-bot在24h内有次数限制,可配置多用户来实现叠加请求次数及请求负载均衡)。
  • 支持配置多coze机器人作响应负载均衡(通过PROXY_SECRET/model指定)详细请看进阶配置

接口文档:

http://<ip>:<port>/swagger/index.html

示例:

如何使用

  1. 打开discord官网,登录后点击设置-高级设置-开发者模式-打开。
  2. 创建discord服务器,右键点击此服务器选择"复制服务器ID(GUILD_ID)"并记录,在此服务器中创建默认频道,右键点击此频道选择"复制频道ID(CHANNEL_ID)"并记录。
  3. 打开discord开发者平台登录。
  4. 创建新应用-Bot即COZE-BOT,并记录该bot专属的token和id(COZE_BOT_ID),此bot为即将被coze托管的bot。
  5. 创建新应用-Bot即CDP-BOT,并记录该bot专属的token(BOT_TOKEN),此bot为监听discord消息的bot。
  6. 两个bot开通对应权限(Administrator)并邀请进创建好的discord服务器(过程不在此赘述)。
  7. 打开discord官网进入服务器,按F12打开开发者工具,在任一频道内发送一次消息,在开发者工具-Network中找到请求 https://discord.com/api/v9/channels/1206*******703/messages 从该接口header中获取Authorization(USER_AUTHORIZATION)并记录。
  8. 打开coze官网创建bot并进行个性化配置(注意Auto-Suggestion为Default/on(默认不用改))。
  9. 配置好后选择发布到discord,填写COZE-BOT的token,发布完成后在discord服务器中可看到COZE-BOT在线并可以@使用。
  10. 使用上述记录的参数开始配置环境变量部署本项目。
  11. 访问接口文档地址,即可开始调试或集成其他项目。

如何集成NextChat

填写接口地址(ip:端口/域名)及API-Key(PROXY_SECRET),其它的随便填随便选。

如果自己没有搭建NextChat面板,这里有个已经搭建好的可以使用 NextChat

如何集成one-api

填写BaseURL(ip:端口/域名)及密钥(PROXY_SECRET),其它的随便填随便选。

部署

基于Docker-Compose(All In One)进行部署

docker-compose pull && docker-compose up -d

docker-compose.yml

version: '3.4'
服务:
  coze-discord-代理:
    镜像:deanxv/coze-discord-proxy:latest
    容器名称:coze-discord-proxy
    重启:始终
    端口:
      - "7077:7077"
    卷:
      - ./data:/app/coze-discord-proxy/data
    环境变量:
      - USER_AUTHORIZATION=MTA5OTg5N************aXUBHVI  # 必须修改为我们discord用户的授权密钥(多个请以逗号分隔)
      - BOT_TOKEN=MTE5OT************UrUWNbG63w  # 必须修改为监听消息的Bot-Token
      - GUILD_ID=11************96  # 必须修改为两个机器人所在的服务器ID
      - COZE_BOT_ID=11************97  # 必须修改为由coze托管的机器人ID
      - CHANNEL_ID=11************94  # [可选]默认频道-(目前版本下该参数仅用来活跃机器人)
      - PROXY_SECRET=123456  # [可选]接口密钥-修改此行为请求头校验的值(多个请以逗号分隔)
      - TZ=Asia/Shanghai

### 基于 Docker 进行部署

docker run --name coze-discord-proxy -d --restart always \
-p 7077:7077 \
-v $(pwd)/data:/app/coze-discord-proxy/data \
-e USER_AUTHORIZATION="MTA5OTg5N************uIfytxUgJfmaXUBHVI" \
-e BOT_TOKEN="MTE5OTk2************rUWNbG63w" \
-e GUILD_ID="11************96" \
-e COZE_BOT_ID="11************97" \
-e PROXY_SECRET="123456" \
-e CHANNEL_ID="11************24" \
-e TZ=Asia/Shanghai \
deanxv/coze-discord-proxy

其中USER_AUTHORIZATION、BOT_TOKEN、GUILD_ID、COZE_BOT_ID、PROXY_SECRET、CHANNEL_ID需修改为自己的。

如果上述镜像无法拉取,可尝试使用GitHub的Docker镜像,将上面的deanxv/coze-discord-proxy替换为ghcr.io/deanxv/coze-discord-proxy即可。

### 部署到第三方平台

部署到Zeabur

Zeabur的服务器在国外,自动解决了网络问题,同时免费额度也足够个人使用

点击一键部署:

一键部署后USER_AUTHORIZATION、BOT_TOKEN、GUILD_ID、COZE_BOT_ID、PROXY_SECRET、CHANNEL_ID变量也需要替换!

或手动部署:

1. 首先fork一份代码。
2. 进入Zeabur,使用github登录,进入控制台。
3. 在Service -> Add Service,选择Git(第一次使用需要先授权),选择你fork的仓库。
4. Deploy会自动开始,先取消。
5. 添加环境变量

   USER_AUTHORIZATION:MTA5OTg5N************uIfytxUgJfmaXUBHVI  主动发送消息的discord用户的授权密钥(多个请以逗号分隔)

   BOT_TOKEN:MTE5OTk************WNbG63w  监听消息的Bot-Token

   GUILD_ID:11************96  两个机器人所在的服务器ID

   COZE_BOT_ID:11************97 由coze托管的机器人ID

   CHANNEL_ID:11************24  # [可选]默认频道-(目前版本下该参数仅用来活跃机器人)

   PROXY_SECRET:123456 [可选]接口密钥-修改此行为请求头校验的值(多个请以逗号分隔)(与openai-API-KEY用法一致)

保存。

6. 选择Redeploy。

部署到Render

Render提供免费额度,绑卡后可以进一步提升额度

Render可以直接部署docker镜像,不需要fork仓库:Render

## 配置

### 环境变量
1. `USER_AUTHORIZATION=MTA5OTg5N************uIfytxUgJfmaXUBHVI`  主动发送消息的Discord用户的授权密钥(多个请用逗号分隔)
2. `BOT_TOKEN=MTE5OTk2************rUWNbG63w`  监听消息的Bot令牌
3. `GUILD_ID=11************96`  所有Bot所在的服务器ID
4. `COZE_BOT_ID=11************97`  由Coze托管的Bot ID
5. `PORT=7077`  [可选]端口,默认为7077
6. `SWAGGER_ENABLE=1`  [可选]是否启用Swagger接口文档[0:否;1:是](默认为1)
7. `ONLY_OPENAI_API=0`  [可选]是否只暴露与OpenAI对齐的接口[0:否;1:是](默认为0)
8. `CHANNEL_ID=11************24`  [可选]默认频道-(当前版本下该参数仅用于保持Bot活跃)
9. `PROXY_SECRET=123456`  [可选]接口密钥-修改此行为请求头校验的值(多个请用逗号分隔)(与OpenAI API密钥用法一致),**推荐使用此环境变量**
10. `DEFAULT_CHANNEL_ENABLE=0`  [可选]是否启用默认频道[0:否;1:是](默认为0)启用后每次对话都会在默认频道中,**会话隔离将失效**,**建议不使用此环境变量**
11. `ALL_DIALOG_RECORD_ENABLE=1`  [可选]是否启用全量上下文[0:否;1:是](默认为1)关闭后每次对话只会发送`messages`中最后一个`role`为`user`的`content`,**建议不使用此环境变量**
12. `CHANNEL_AUTO_DEL_TIME=5`  [可选]频道自动删除时间(秒)此参数为每次对话完成后自动删除频道的时间(默认为5秒),为0时则不删除,**建议不使用此环境变量**
13. `COZE_BOT_STAY_ACTIVE_ENABLE=1`  [可选]是否开启每日`9`点活跃Coze-bot的定时任务[0:否;1:是](默认为1),**建议不使用此环境变量**
14. `REQUEST_OUT_TIME=60`  [可选]对话接口非流响应下的请求超时时间,**建议不使用此环境变量**
15. `STREAM_REQUEST_OUT_TIME=60`  [可选]对话接口流响应下的每次流返回超时时间,**建议不使用此环境变量**
16. `REQUEST_RATE_LIMIT=60`  [可选]每分钟下的单IP请求速率限制,默认:60次/分钟
17. `USER_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,使用自己的可能有效防止被封禁,不设置时默认使用作者的 推荐使用此环境变量
18. `NOTIFY_TELEGRAM_BOT_TOKEN=6232***********Niz9c`  [可选]作为通知TelegramBot的Token(通知事件:1.无可用`user_authorization`;2.`BOT_TOKEN`关联的BOT触发风控)
19. `NOTIFY_TELEGRAM_USER_ID=10******35`  [可选]`NOTIFY_TELEGRAM_BOT_TOKEN`关联的`Telegram-Bot`推送至该变量关联的`Telegram-User`(**`NOTIFY_TELEGRAM_BOT_TOKEN`不为空时该变量也不可为空**)
20. `PROXY_URL=http://127.0.0.1:10801`  [可选]代理(仅支持http)

## 进阶配置

### 配置多机器人

1. 部署前在`docker`/`docker-compose`部署同级目录下创建`data/config/bot_config.json`文件
2. 编写该`json`文件,`bot_config.json`格式如下

```shell
[
  {
    "proxySecret": "123", // 接口请求密钥(PROXY_SECRET)(注意:此密钥在环境变量PROXY_SECRET中存在时该Bot才可以被匹配到!)
    "cozeBotId": "12***************31", // Coze托管的机器人ID
    "model": ["gpt-3.5","gpt-3.5-16k"], // 模型名称(数组格式)(与请求参数中的model对应,如请求中的model在该json中未匹配到则会抛出异常)
    "channelId": "12***************56"  // [可选]Discord频道ID(机器人必须在此频道所在的服务器)(当前版本下该参数仅用于保持机器人活跃)
  },
  {
    "proxySecret": "456",
    "cozeBotId": "12***************64",
    "model": ["gpt-4","gpt-4-16k"],
    "channelId": "12***************78"
  },
  {
    "proxySecret": "789",
    "cozeBotId": "12***************12",
    "model": ["dall-e-3"],
    "channelId": "12***************24"
  }
]
  1. 重启服务

当有此json配置时,会通过请求头携带的[请求密钥]和请求体中的[model]联合匹配此配置中的cozeBotId 若匹配到多个则随机选择一个。配置很灵活,可以根据自己的需求进行配置。

第三方平台(如:zeabur)部署的服务需要[配置多机器人]请参考issue#30

限制

目前Coze对每个Discord用户做了标识,在Discord中每个用户对不同模型的调用有次数限制,具体如下:

GPT-4 Turbo (128k) - 50次/天
GPT-4 (8k) - 100次/天
GPT-3.5 (16k) - 500次/天

可配置多个Discord用户Authorization(参考环境变量USER_AUTHORIZATION)实现叠加请求次数及请求负载均衡。

常见问题

问:并发量高时应如何配置? A: 首先为服务配置多个机器人,用于负载均衡bot的响应。其次,准备多个Discord账号用于请求负载,并将它们邀请到同一个服务器。获取每个账号的Authorization,用英文逗号分隔,并配置在环境变量USER_AUTHORIZATION中。这样,每次请求都会从多个Discord账号中选择一个发起对话,有效实现负载均衡。

⭐ 星标历史

星标历史图表

相关项目

GPT-Content-Audit:整合了Openai、阿里云、百度智能云、七牛云等开放平台,提供与openai请求格式一致的内容审核前置服务。

其他

开源不易,如果你参考了此项目或基于此项目进行二次开发,能否在你的项目文档中标注此项目?非常感谢!

Java版本: https://github.com/oddfar/coze-discord (目前不可用)

引用

Coze 官网:https://www.coze.com

Discord 开发者页面:https://discord.com/developers/applications

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号