中文 | English
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
点定时任务自动活跃机器人。Authorization
(环境变量USER_AUTHORIZATION
)作请求负载均衡(目前每个discord用户调用coze-bot在24h内有次数限制,可配置多用户来实现叠加请求次数及请求负载均衡)。PROXY_SECRET
/model
指定) 详细请看进阶配置。http://<ip>:<port>/swagger/index.html
复制服务器ID(GUILD_ID)
并记录,在此服务器中创建默认频道,右键点击此频道选择复制频道ID(CHANNEL_ID)
并记录。COZE-BOT
,并记录该bot专属的token
和id(COZE_BOT_ID)
,此bot为即将被coze托管的bot。CDP-BOT
,并记录该bot专属的token(BOT_TOKEN)
,此bot为监听discord消息的bot。Administrator
)并邀请进创建好的discord服务器 (过程不在此赘述)。Network
中找到请求 https://discord.com/api/v9/channels/1206*******703/messages
从该接口header中获取Authorization(USER_AUTHORIZATION)
并记录。Auto-Suggestion
为Default/on
(默认不用改))。COZE-BOT
的token
,发布完成后在discord服务器中可看到COZE-BOT
在线并可以@使用。填 接口地址(ip:端口/域名) 及 API-Key(PROXY_SECRET
),其它的随便填随便选。
如果自己没有搭建NextChat面板,这里有个已经搭建好的可以使用 NextChat
填 BaseURL
(ip:端口/域名) 及 密钥(PROXY_SECRET
),其它的随便填随便选。
docker-compose pull && docker-compose up -d
version: '3.4'
services:
coze-discord-proxy:
image: 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************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 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
即可。
USER_AUTHORIZATION=MTA5OTg5N************uIfytxUgJfmaXUBHVI
主动发送消息的discord用户的授权密钥(多个请以,分隔)BOT_TOKEN=MTE5OTk2************rUWNbG63w
监听消息的Bot-TokenGUILD_ID=11************96
所有Bot所在的服务器IDCOZE_BOT_ID=11************97
由coze托管的Bot-IDPORT=7077
[可选]端口,默认为7077SWAGGER_ENABLE=1
[可选]是否启用Swagger接口文档[0:否;1:是] (默认为1)ONLY_OPENAI_API=0
[可选]是否只暴露与openai对齐的接口[0:否;1:是] (默认为0)CHANNEL_ID=11************24
[可选]默认频道-(目前版本下该参数仅用来活跃Bot)PROXY_SECRET=123456
[可选]接口密钥-修改此行为请求头校验的值(多个请以,分隔)(与openai-API-KEY用法一致),推荐使用此环境变量DEFAULT_CHANNEL_ENABLE=0
[可选]是否启用默认频道[0:否;1:是] (默认为0) 启用后每次对话都会在默认频道中,会话隔离会失效,推荐不使用此环境变量ALL_DIALOG_RECORD_ENABLE=1
[可选]是否启用全量上下文[0:否;1:是] (默认为1) 关闭后每次对话只会发送messages
中最后一个role
为user
的content
,推荐不使用此环境变量CHANNEL_AUTO_DEL_TIME=5
[可选]频道自动删除时间(秒) 此参数为每次对话完成后自动删除频道的时间(默认为5s),为0时则不删除,推荐不使用此环境变量COZE_BOT_STAY_ACTIVE_ENABLE=1
[可选]是否开启每日9
点活跃coze-bot的定时任务[0:否;1:是] (默认为1),推荐不使用此环境变量REQUEST_OUT_TIME=60
[可选]对话接口非流响应下的请求超时时间,推荐不使用此环境变量STREAM_REQUEST_OUT_TIME=60
[可选]对话接口流响应下的每次流返回超时时间,推荐不使用此环境变量REQUEST_RATE_LIMIT=60
[可选]每分钟下的单ip请求速率限制,默认:60次/minUSER_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,不设置时默认使用作者的 推荐使用此环境变量NOTIFY_TELEGRAM_BOT_TOKEN=6232***********Niz9c
[可选]作为通知TelegramBot的Token(通知事件:1.无可用user_authorization
;2.BOT_TOKEN
关联的BOT触发风控)NOTIFY_TELEGRAM_USER_ID=10******35
[可选]NOTIFY_TELEGRAM_BOT_TOKEN
关联的Telegram-Bot
推送至该变量关联的Telegram-User
(NOTIFY_TELEGRAM_BOT_TOKEN
不为空时该变量也不可为空)PROXY_URL=http://127.0.0.1:10801
[可选]代理(仅支持http)docker
/docker-compose
部署同级目录下创建data/config/bot_config.json
文件json
文件,bot_config.json
格式如下[
{
"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"
}
]
当有此json配置时,会通过请求头携带的[请求密钥]+请求体中的[
model
]联合匹配此配置中的cozeBotId
若匹配到多个则随机选择一个。配置很灵活,可以根据自己的需求进行配置。
第三方平台(如: zeabur
)部署的服务需要[配置多机器人]请参考issue#30
目前的coze的免费及收费订阅详情:https://www.coze.com/docs/guides/subscription?_lang=zh
可配置多discord用户Authorization
(参考环境变量USER_AUTHORIZATION
)或配置多机器人实现叠加请求次数及请求负载均衡。
Q: 并发量高时应如何配置?
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