Git Product home page Git Product logo

coze-discord-proxy's People

Contributors

deanxv avatar k8scat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coze-discord-proxy's Issues

问题咨询 环境变量BOT_TOKEN是?

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述
环境变量BOT_TOKEN是 https://discord.com 的发送消息的Authorization 请求头吗还是
image
https://discord.com/developers 里面Bot的token,两个都试了,运行ip+端口提示404,运行日志看了显示:环境变量 COZE_BOT_ID 不可为当前服务 BOT_TOKEN 关联的 BOT_ID。请问是改哪里配置呢
应用场景

文生图没有返回图片url

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
discord里coze机器人生成完图片后接口里返回url是空的。
复现步骤

预期结果

相关截图
image

请求问题

问题描述
指定了频道ID,并没有在指定频道提问,而是在默认频道提问,没有使用openai接口

相关截图
image

部署时出错

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述

在Render上进行部署时出错

复现步骤

预期结果

相关截图

image

请问一下是不是非得使用discord ,可不可以不配置,使用slack

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述
请问一下是不是非得使用discord ,可不可以不配置,使用slack
应用场景

处理长请求

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述

有时回复时间过长,会导致vercel无法处理

Your function was stopped as it did not return an initial response within 25s

应用场景
兼容vercel应用

期望支持图片识别

期望支持openai gpt-4v的图片识别功能,数据结构:{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这个pdf里写了什么,用中文回复"
},
{
"type": "image_url",
"image_url": {
"url": "https://bitcoin.org/bitcoin.pdf"
}
}
]
}
],
"stream": false,
"model": "gpt-4",
"temperature": 0.5,
"presence_penalty": 0,
"frequency_penalty": 0,
"top_p": 1
}

使用v1/chat/completion接口,不能正常停止

我在postman中测试的:

  1. 当stream为true时,不会收到[DONE]这条消息,Discord中coze机器人发送完消息后,postman的请求就会阻塞停在那,一直不会停止;
  2. 当stream为false时,Discord中coze机器人发送完消息后,postman也一直处于请求状态,不会终止。

不用discord直接逆coze可以吗,discord有单条长度限制

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述
不用discord直接逆coze可以吗,discord有单条长度限制
应用场景
discord有单条长度限制

本项目的Java版本

地址:https://github.com/oddfar/coze-discord
使用SpringBoot3,也集成了Docker,功能目前如下

  • 支持 api 方式调用
  • 对话支持流式返回
  • 支持对话指定 Discord 频道、子频道,实现对话隔离支
  • 支持创建 Discord 频道、子频道、线程

多机器人部署会出现 authorization(proxy-secret)校验失败

例行检查

  • [ √] 我已确认目前没有类似 issue
  • [ √] 我已确认我已升级到最新版本
  • [ √] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • [ √] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
进行多机器人部署时,在环境变量中写入的机器人一切正常,但是通过data/config/bot_config.json部署的多机器人会不断提示authorization(proxy-secret)校验失败
这个问题在pull到今天的新版本后出现,昨天使用一切正常

复现步骤
使用bot_config.json内配置的proxy-secret通过one-api请求api

预期结果
正常返回

安装求助

两个bot开通对应权限(Send Messages,Read Message History等)并邀请进服务器,记录服务器ID(GUILD_ID) (过程不在此赘述)。

请问如何开通权限进服务器?查了一圈还是不太清楚

使用模型名来指定bot

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述
请求密钥应该用来鉴权,而不是用于分配具体的bot,这个功能应该由模型名来实现
应用场景
coze可以为bot定义提示词,使用模型名来区分不同的bot更为合适

feat:add prxoy support for server

rt:
[SYS] 2024/01/31 - 12:40:37 | COZE-DISCORD-PROXY v1.0.3 started
[FATAL] 2024/01/31 - 12:40:57 | [error opening connection, Get "https://discord.com/api/v9/gateway": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]

Feat Request: Channel Pool and Create Channel in Chat API automatically.

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述

由后端维护一个 Discord Channel Pool, 主要特性如下

  • /v1/chat/completions 中某 payloadcreate_channel == True 时先创建 channel 再对话.
  • Channel Pool 数量达到上限后, 使用离最后一次调用时间最久的 channel 先执行 /clear 发起新对话.

Note

此特性较为复杂, 仅为推荐, 开发者酌情处理.

更多的link提取

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述

大佬 有些回复的超链接的url能不能也单独提取出来
例如capcut的链接 现在是在content中用文本显示,希望能将链接的url提取出来放到embedUrls:

/api/chat 无效 /api/chat/ 可以

例行检查

  • [x ] 我已确认目前没有类似 issue
  • [ x] 我已确认我已升级到最新版本
  • [ x] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • [ x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
/api/chat 无效
/api/chat/ 有效
复现步骤
http post http://127.0.0.1:7077/api/chat -j <data.json
http post http://127.0.0.1:7077/api/chat/ -j <data.json

预期结果
根据文档应该都行把,或者改改文档, 作为十分相信文档的人,怀疑了半天是那里错了
相关截图
image

如果没有的话,请删除此节。

请求失败

问题描述
proxy-secret是正确的,也一直显示失败

相关截图
1706839602040

关于/v1/chat/completions接口

最新的docker镜像是删除了之前的/api/chat接口?现在/v1/chat/completions的接口是请求哪里呢,发送请求没看见有在频道提问。

频道创建达到上限

[ERR] 2024/02/08 - 13:40:13 | unknown | 创建频道时异常 HTTP 400 Bad Request, {"message": "Maximum number of server channels reached (500)", "code": 30013}
[ERR] 2024/02/08 - 13:40:14 | 202402081340135422918704MMjHBYU | error sending message: HTTP 405 Method Not Allowed, {"message": "405: Method Not Allowed", "code": 0}

能否增加配置多个coze机器人的功能

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述

应用场景

v1/chat/completion 自动化对话隔离策略建议

不知道下面的策略是否可行:
1.创建频道
2.把所有messages打包作为一条消息
3.向discord发送消息并获取回复
4.删除频道
如果这样可行的话,v1/chat/completion可能更接近对齐一些

请问能否支持SillyTavern

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述
适配SillyTavern的openai反向代理,https://github.com/SillyTavern/SillyTavern
应用场景

提供一个Zeabur部署的多频道方案

机器人部署(实现会话隔离)

手动部署:

  1. 首先 fork 一份代码,修改Dockerfile文件(或者将原文件备份,再新增Dockerfile文件)
FROM deanxv/coze-discord-proxy:latest

RUN mkdir -p /app/coze-discord-proxy/data/config && chmod 777 /app/coze-discord-proxy/data/config
RUN printf '%s' "$BOT_CONFIG" | sed 's/\\/"/g' > /app/coze-discord-proxy/data/config/bot_config.json

WORKDIR /app/coze-discord-proxy/data
EXPOSE 7077

ENTRYPOINT ["/coze-discord-proxy"]
  1. 进入 Zeabur,使用github登录,进入控制台。

  2. 在 Service -> Add Service,选择 Git(第一次使用需要先授权),选择你 fork 的仓库。

  3. Deploy 会自动开始,先取消。

  4. 添加环境变量

    BOT_TOKEN:MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w 主动发送消息的Bot-Token

    GUILD_ID:119xxxxxxxx796 两个机器人所在的服务器ID

    COZE_BOT_ID:119xxxxxxxx7 由coze托管的机器人ID

    CHANNEL_ID:119xxxxxx24 # 默认频道-在使用与openai对齐的接口时(/v1/chat/completions) 消息会默认发送到此频道

    PROXY_SECRET:123456 [可选]接口密钥-修改此行为请求头校验的值(多个请以,分隔),配置此参数后,每次发起请求时请求头加上proxy-secret
    参数,即header中添加 proxy-secret:123,456,789

    BOT_CONFIG:

     [
        {
             "proxySecret": "123",
             "cozeBotId": "12***************31",
             "model": ["gpt-3.5","gpt-3.5-16k"], 
             "channelId": "12***************56"
        },
        {
             "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"
        }
     ]
    

image

  1. Redeploy。
  2. 在Networking中public生成一个域名,然后可以与漂亮国沟通了。

image

  1. 部署好,可以先自测,下面接口测试命令:

    curl -X 'POST' \
    'https://your.zeabur.app/api/chat' \
    -H 'accept: application/json' \
    -H 'proxy-secret: your key' \
    -H 'Content-Type: application/json' \
    -d '{
    "channelId": "your channelId",
    "model": "dall-e-3",
    "content": "画一只猪",
    "stream": true
    }'
    curl -X 'POST' \
     'https://your.zeabur.app/v1/chat/completions' \
     -H 'accept: application/json' \
     -H 'Authorization: your key' \
     -H 'Content-Type: application/json' \
     -d '{
     "channelId": "your channelId",
     "model": "gpt-4",
     "messages": [
       {
         "content": "鲁迅和周树人是两个人?",
         "role": "user"
       }
     ],
    "stream": true
    }'

image

关于并行对话的疑问

并非报告问题,想了解一个问题,可以的话希望能够帮忙解惑,感谢~

按我理解,这个项目是依赖 2 个 Bot 通过对话的形式进行交互,而这个交互是在 Discord 来中转的。这个过程中:

  1. 我通过 ChatGPT 客户端,发送请求。
  2. coze-discord-proxy 将数据,通过 Discord BotB,发送到 Discord Channel,并且,@了 Discord BotA 来发送消息。
  3. Discord BotA 对接了 Coze ,Coze 回复数据,最终,经有 Discord Channel,回复到 BotB,进而,数据通过 coze-discord-proxy 流转到 ChatGPT 客户端。

想了解的问题有 2 个:

1、关于对话轮数携带问题

ChatGPT 客户端如果我设置了对话数据为 5 轮,按我理解,客户端工具确实是会携带 5 轮会话的。然而我在 Discord Channel 中看到 Robot 在对话时,是没有携带多轮回话信息堆栈的。

并且,我如果将客户端的对话轮数设置为 2(也就是携带历史 2 条对话信息),我让它回答我们的对话第一个问题是什么,结果它可以回答到更早之前的第 11 条对话问题。这说明,ChatGPT 的客户端对话设置轮数,和实际的对话轮数,是不一样的。

想问的是:这个对话轮数,到底哪里会起到决定性作用?是 Coze 那边吗?如果是 Coze 那边,那 coze-discord-proxy 往 Coze 机器人发消息时,携带的数据轮数是多少呢?

2、关于对话并行发生时,是否可能会有干扰的问题

如果 ChatGPT 客户端是多人在使用,实际上,会在 DIscord Channel 中形成多人的对话,而且可能是并行回答的对话。

想问的是:这种多人对话是不是可能相互干扰上下文(比如有人在问编码,有人在问天气),最终形成相互干扰的多轮对话?甚至,并行对话发生时,有没有可能问题并行 @coze Bot,最终 coze-discord-proxy 再转发对话回复时,会串台(A 问的问题收到 B 的问题的回复,B 问的问题收到了 A 的问题的回复)?

对话隔离功能咨询

想问一下,现在如果使用v1接口请求,会话隔离需要手动指定频道id实现么?能否根据v1接口请求参数,自动实现会话隔离。

第二天运行还是出错

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
{'error': {'message': '配置异常', 'type': 'invalid_request_error', 'param': '', 'code': 'discord_request_err'}}
复现步骤

预期结果

相关截图
如果没有的话,请删除此节。

第二天无法正常使用

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
部署完可以正常使用,第二天使用回报错,查看日志说他找不到频道和机器人
重启docker容器恢复正常

复现步骤

预期结果

相关截图
20240204_121714_937_copy

[功能增强] 强化频道新增/讨论串可行性

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

功能描述

  • API中增加更详细的参数,可以让新增的频道在指定id的分类中
  • 考虑使用讨论串方案的可行性

应用场景
目前测试发现,在频道里使用讨论串功能,也是会话隔离的。
那么是否可以使用讨论串的方式来更好管理呢?

如果使用原有频道的方式,是否能指定分类id来创建呢,子频道继承分类的权限,避免直接暴露于大厅。

感谢!

代理不完全

可以请求,机器人也将我的消息发给coze机器人了,但是后续报错

2024/01/31 13:25:23 [DG0] wsapi.go:82:Open() error connecting to gateway wss://gateway.discord.gg/?v=9&encoding=json, dial tcp [2a03:2880:f11f:83:face:b00c:0:25de]:443: i/o timeout
[FATAL] 2024/01/31 - 13:25:23 | [error opening connection, dial tcp [2a03:2880:f11f:83:face:b00c:0:25de]:443: i/o timeout]

我怀疑是代理设置不完全,参考discordgo这个库的issue
bwmarrin/discordgo#852

部署了最新的 3.1.0 版本,文生图失败

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述

curl -X 'POST' \
  'https://xxx.com/v1/chat/completions' \
  -H 'accept: application/json' \
  -H 'Authorization: sk-xxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "messages": [
    {
      "content": "画一个发电机",
      "role": "user"
    }
  ],
  "stream": false
}'
{
  "id": "1204880081714159626",
  "object": "chat.completion",
  "created": 1707336214,
  "model": "gpt-4-turbo",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "好的,不过我没办法直接画图。不过我可以描述一个发电机的结构给你。发电机通常由以下几个部分组成:定子、转子、励磁系统、端盖和轴承等。定子是静止不动的部分,通常包括定子铁芯和绕组。转子则是可以旋转的部分,它在定子内旋转时会切割磁力线,产生电流。励磁系统用来提供磁场,端盖用来保护内部结构,轴承则支撑转子使其能够顺利旋转。希望这个描述对你有帮助!"
      },
      "logprobs": null,
      "finish_reason": "stop",
      "delta": {
        "content": ""
      }
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 199,
    "total_tokens": 224
  },
  "system_fingerprint": null
}
curl -X 'POST' \
  'https://xxx.com/v1/images/generations' \
  -H 'accept: application/json' \
  -H 'Authorization: sk-xxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "channelId": "1204870256825339937",
  "model": "dall-e-3",
  "prompt": "画一个发电机"
}'
{
  "error": {
    "message": "discord未返回URL,检查prompt中是否有敏感内容",
    "type": "invalid_request_error",
    "param": "",
    "code": "discord_request_err"
  }
}

复现步骤

预期结果

curl返回的 embedUrls 中的Unicode编码

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
大佬
curl 画图 返回的 embedUrls 中的 & 被显示为\u0026 导致图片打不开
手动换回去就好了

您好,请问这个无法加入绘图的功能吗

您好,我在bot中设置了DALLE 3 的插件 ,在discord可以出图,但是在使用api后就无法出图了,请问一下有没有什么解决办法
还有一个是STREAM_REQUEST_OUT_TIME 设置 ,太短无法完全生成,太长会出现{
"error": true,
"message": "network error"
}
请问有没有办法让输入完之后直接结束而不是持续出现正在输入,这是我在 Chat gpt next web 上测试的
感谢您在百忙之中抽出空来阅读该信息

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.