GithubHelp home page GithubHelp logo

connectai-e / feishu-openai Goto Github PK

View Code? Open in Web Editor NEW
5.4K 55.0 951.0 15.66 MB

🎒 飞书 ×(GPT-4 + GPT-4V + DALL·E-3 + Whisper)= 飞一般的工作体验 🚀 语音对话、角色扮演、多话题讨论、图片创作、表格分析、文档导出 🚀

Home Page: https://www.connectai-e.com

License: GNU General Public License v3.0

Go 99.66% Dockerfile 0.34%
chatgpt feishu-bot golang openai chatgpt-api chatgpt-bot go connect-ai

feishu-openai's People

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  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

feishu-openai's Issues

要火

要火 插眼支持一下

🐞 错误报告

错误报告 🐞

如果您在使用此项目时遇到了错误,请在此报告,我们会尽快解决此问题。

错误描述 🤔

docker 部署,日志方面有一些可以看到问答记录,有一些又没有

附加信息 📝

image

感谢您的反馈!🙏

🚀 功能改善 - 允许代理访问openai

功能改善建议 🚀

国内服务器无法访问OpenAI的接口,需要配置代理才能继续提供服务。

您的建议是什么? 🤔

  1. 建议在OpenAI接口调用逻辑中加入代理配置选项,以便国内用户能够顺利使用OpenAI的服务。
  2. 在文档中提供更详细的代理配置说明,以便开发者更好地理解和应用代理配置。

具体来说,可以提供如下内容:

  • 代理的配置方法和相关参数
  • 如何验证代理配置是否生效
  • 常见代理配置问题和解决方案
  • 通过提供详细的代理配置说明

感谢您的分享和支持!🙏

🐞 错误报告 handlers common.go中的ASCII码 转换有错误

handlers common.go中的ASCII码 转换有错误会导致大于号小于号打印成数字
func processUnicode(msg string) string { regex := regexp.MustCompile(\u[0-9a-fA-F]{4}) return regex.ReplaceAllStringFunc(msg, func(s string) string { r, _ := regexp.Compile(\u) s = r.ReplaceAllString(s, "") i, _ := strconv.ParseInt(s, 16, 32) //return strconv.Itoa(int(i)) //应该改成这个吧 return string(rune(i)) }) }

🚀 功能改善 - 优化 图片创作 模式

功能改善建议 🚀

可以根据用户文本描述,生成新的图片

您的建议是什么? 🤔

  1. 设立使用DALL·E接口的图片生成模式
  2. 文字回复 图片创作或者/picture进入该模式。
  3. 在该模式下
  • 用户发送文字,AI将创建新的图片,
  • 用户发送图片,则可以让AI寻找此图片的变体 🚧
  • 结合消息卡片的交互能力,允许AI多次返回图片
  • 用户框选图像的特定部分,AI将自动微调该区域以生成更准确的图像 🚧
  1. 如需关闭该模式,用户可发送清除/clear命令。

🚀 功能改善 - 语音支持

功能改善建议 🚀

单聊模式下增加语音支持

Screenshot 2023-03-06 at 16 33 18

您的建议是什么? 🤔

服务端获取语音后通过 Wisper API 转换成文本处理

飞书目前语音消息是 ogg格式,目前尝试方案是ffmpeg-go,但是不是很适合servless 模式,期待有更好的方案出现

🚀 功能改善- 允许接口出错重试

功能改善建议 🚀

token归类为无效的方式过于绝对,仅仅因为出现了一次报错,可能有些过于武断。

您的建议是什么? 🤔

结合Resty框架的特性,我们允许API在出现错误时进行重试。
只有当重试多次后仍然出现错误,我们才会将该API归类为无效的token。

了解更多关于Resty框架的信息,请参考GitHub链接:https://github.com/go-resty/resty。

🐞 错误报告

错误报告 🐞

We assess our suggested
ame using the extensively employed PCQM4MV2 benchmark dataset \citep{DBLP:conf/nips/HuFRNDL21}, which involves predicting the HOMO-LUMO gap using molecular SMILES.

错误描述 🤔

转义符有点问题,这个 \name 变成 “换行” ame, 然后 citep 那边多了斜杠,大佬有空帮忙改下

附加信息 📝

请提供以下信息以帮助我们更快地解决问题:

  • 输出日志,包括错误信息和堆栈跟踪
  • 相关的代码片段或文件
  • 您的操作系统、软件版本等环境信息

感谢您的反馈!🙏

💊 FAQ Summary 常见问题汇总

我们已经通过大家的反馈和使用经验积累了许多常见问题,并将它们整理在一起,以帮助你更快地了解ChatGPT以及这个项目。

常见问题

1️⃣ 如何进行版本升级

如果你使用的是docker部署,只需要停掉服务,删除本地镜像,然后重新拉取最新的镜像进行部署即可!
如果你使用的是二进制运行,也不用担心,只需要下载最新的release二进制文件,替换原来的文件,然后启动服务就好啦!
如果你想体验最新的功能,也可以update主分支代码自己手动编译即可。
小提示,升级前记得备份哦!

2️⃣ 如何自定义机器人名称

如果你需要使用群聊@机器人功能,需要在服务端设置你自己的机器人名称。这个名称可以通过环境变量BOT_NAME来设置。下面以docker部署用户为例,介绍具体的操作步骤:

使用以下命令启动容器:

docker run -d --restart=always --name feishu-chatgpt2 -p 9000:9000 -v /etc/localtime:/etc/localtim:ro  \
--env APP_ID=xxx \
--env APP_SECRET=xxx \
--env APP_ENCRYPT_KEY=xxx \
--env APP_VERIFICATION_TOKEN=xxx \
--env BOT_NAME=<自定义机器人名称> \
--env OPENAI_KEY=sk-xxx \
dockerproxy.com/leizhenpeng/feishu-chatgpt:latest

请注意:自定义机器人名称必须为英文或拼音。

在上述命令中,将"<自定义机器人名称>"替换为你想要设置的机器人名称。
完成上述步骤后,服务端就能够使用你指定的机器人名称来响应群聊@机器人功能。

3⃣ 私聊机器人回复正常,但是群聊@没有反应

参考问题2

4⃣ 私聊时不想点击回复,操作比较繁琐

用户非常重视多话题对话的需求。因此,我们为您带来了全新的多话题对话功能。
现在您可以将每个话题视为chatGpt左侧的一个tab栏,无论是私聊还是群聊,每个话题都可以独立对话。

如果您想保持对话连续,而不必在私聊中单独点击回复,请点击“x 条回复”按钮,进入回复栏中参与问答即可。

5️⃣ 已经第四天了,还在飞书应用审核还没通过,正常吗?

这并不正常。
请尽快联系您所在企业的管理员,因为审核是由企业自行负责的。
请注意,此问题与飞书官方无关。

6️⃣ 请求地址报错"Challenge code没有返回"

如果 /ping 路由没有问题,那很可能是飞书的配置没有被正确填写。

7️⃣ 每次版本更新都要求企业管理员审核吗?

并不需要。
通常来说,只有在更新中添加了新的权限要求时,才需要进行审核。

8️⃣ 我是飞书的个人版,可以使用此机器人吗?

很抱歉,这个飞书机器人只适用于企业自建应用,因此无法为个人提供服务。
如果您想使用该机器人的功能,请新建或加入一个飞书企业。
提醒,个人同样也可以快速新建企业。

9️⃣ 所有的卡片按钮点击都会报错

没有填写卡片交互请求的回调
在飞书机器人后台的机器人板块,填写消息卡片请求网址。
可以参考下面docker常见问题的第二个QA

🚀 功能改善-添加机器人到外部群

功能改善建议 🚀

支持webhook机器人进行信息转发,方便添加机器人到外部群

您的建议是什么? 🤔

需求背景:
飞书外部群无法添加组织内机器人(机器人无法跨组织添加群)但可以添加自定义webhook机器人,为了外部群也可以使用chatgpt机器人,希望可以支持webhook消息的输入与转发。

需求内容:
再飞书外部群中添加webhook机器人,将webhook地址通过指令的形式添加至组织内的CHATGPT机器人后,组织内的CHATGPT机器人即可处理webhook机器人发送的问题并提交到GPT api,同时也可将通过webhook提问的问题返回至对应的webhook地址中。实现外部群的webhook机器人转发组织内机器人的目的

🚀 功能改善 - 对接api2d, 优化国内用户体验

功能改善建议 🚀

由于OpenAI的限制,目前国内企业用户无法注册使用其组织服务。

您的建议是什么? 🤔

我们建议对接api2d接口,并反向代理OpenAI,同时改善文档说明,以优化国内用户的体验。

感谢您的分享和支持!🙏

🚀 功能改善 添加派生bot的功能

功能改善建议 🚀

这两天使用发现群聊内容较多时, 很难找到对应的session进行回复.

当开始角色扮演时, 可以在当前群自动创建一个新的bot, 用来扮演这个角色。

Challenge code没有返回

Docker部署,ping 显示成功,返回
{
"message": "pong"
},但是配置webhook/event 时候显示:Challenge code没有返回
查看容器日志
image

求助???

🔧 项目维护 - 重构 openai 接口调用层

项目维护问题和建议 🔧

欢迎在此分享您对项目维护的问题和建议,我们期待听到您的想法和建议。

您的问题或建议是什么? 🤔

原生调用官方接口显得代码十分冗余,最好基于稳定的第三方库调用,避免重复维护

参考

官方接口 : https://platform.openai.com/docs/api-reference/audio/create
go-openai : https://github.com/sashabaranov/go-openai
openai-go : https://github.com/thompsonja/openai-go/

🐞 错误报告 - MD代码块中转义符解析存在问题

错误报告 🐞

MD代码块中转义符解析存在问题

错误描述 🤔

例如

help me to rewrite this sentence. "Our proposed \name is evaluated on the widely-used PCQM4MV2 benchmark dataset \citep{DBLP:conf/nips/HuFRNDL21}, whose task is predicting the HOMO-LUMO gap based on molecular SMILES."

转义符有点问题,这个 \name 变成 “换行” ame, 然后 citep 那边多了斜杠

附加信息 📝

ea36738a-a960-4594-a087-ae794ecadb0a

custom app tenantAccessToken cache

image

2023/03/02 17:20:08 [Warn] [custom app tenantAccessToken cache, err:{
  CodeError: {
    Code: 2200,
    Msg: "Internal Error",
    Err: {

    }
  },
  Expire: 0,
  TenantAccessToken: ""
}]

🔧 项目维护 - 优化openai接口调用

您的问题或建议是什么? 🤔

OpenAI接口调用的HTTP请求写法比较冗余,完全依赖第三方包的话又缺乏灵活性。建议抽离公共逻辑,优化代码。

具体来说,建议对OpenAI接口的HTTP请求代码进行封装,以抽离公共逻辑。同时,对于不同的接口,可以根据需要进行灵活配置,以提高代码的可读性和可维护性。

您期望的解决方案是什么? 💡

期望看到一套完整的OpenAI接口HTTP请求代码封装方案,该方案提供灵活的配置选项,适应不同接口的调用需求。通过封装公共逻辑和提供配置选项,优化代码结构,提高代码可读性和可维护性。

建议在文档中详细说明接口的使用方法,以帮助开发者了解接口调用流程和相关配置项的作用。

感谢您的分享和支持!🙏

🔧 项目维护 - 重构飞书卡片发送接口层

项目维护问题和建议 🔧

欢迎在此分享您对项目维护的问题和建议,我们期待听到您的想法和建议。

您的问题或建议是什么? 🤔

为了更好管理项目卡片的交互复杂度,需要对下面两个地方进行重构。

  • 卡片回调从if分支迁移至责任链。这意味着我们将使用责任链模式来处理卡片回调。 责任链模式是一种行为设计模式,它允许我们将请求沿着一条链传递,直到有一个对象能够处理该请求为止。这样做可以减少代码中的if/else嵌套,并使代码更加灵活和可扩展。
  • 我们需要剥离卡片发送实体,根据md、文本和btn分类。这意味着我们需要将卡片发送分为不同的类别,并根据这些分类将它们分别处理。这样做可以使代码更加模块化,并且使每个类只负责自己特定的功能,从而使代码更加清晰和易于理解。

这样做可以更好地维护代码,并且使代码更加可读和易于理解

🔧 项目维护

项目维护问题和建议 🔧

希望发布新版本时,同时发布升级指南,比如这次从beta版升级上来,应该是需要给机器人多申请一些权限

您的问题或建议是什么? 🤔

在release中添加升级指南

您期望的解决方案是什么? 💡

在release中添加升级指南

群聊

发送群聊消息还是不会相应

🚀 功能改善-添加机器人与飞书文档互动相关功能

功能改善建议 🚀

添加机器人与飞书文档互动相关功能

您的建议是什么? 🤔

需求内容:
希望可以打通机器人与飞书文档,实现机器人读取/编辑文档
使用场景如:
1.保存聊天记录(上下文记录) 至指定文档(或新建文档),同时也可以导入上下文记录至机器人(可通过行数范围选择聊天记录范围)
2.通过飞书文档的数据回答某些问题,或执行某些操作,如建立企业wiki、日报转周报等

x509: certificate has expired or is not yet valid

大佬们:都走到这一步了,换了好几个 openAI 的 Key 都不行。我能确定这些 key 都没过期

image

{
"error": {
"message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.",
"type": "invalid_request_error",
"param": null,
"code": null
}
}

补充下部署的背景:

  1. 在 Bandwagon 的 VPS 上,本地部署了本项目
  2. 这台 VPS 可以打开 chat.openai.com 进行会话
  3. Encrypt Key/Verfication Token: 打开或关闭,都试过
  4. 2 个 openAI Key 都还有余额可用
  5. 直接运行 go run main.go 执行

谢谢

🐞 错误报告

错误报告 🐞

错误描述 🤔

在与机器人对话过程中,使用如下格式:
image
在日志中会报如下错误:
image

附加信息 📝

请提供以下信息以帮助我们更快地解决问题:

  • 输出日志,包括错误信息和堆栈跟踪
    [GIN] 2023/03/14 - 09:35:04 | 200 | 119.952358ms | 123.58.10.238 | POST "/webhook/event"
    error getting message type: unknown message type: post
    [GIN] 2023/03/14 - 09:42:14 | 200 | 87.221519ms | 123.58.10.238 | POST "/webhook/event"

  • 您的操作系统、软件版本等环境信息
    使用默认Dockerfile build 的镜像,没有使用代理,使用http与飞书继续通信

阿里云-serverless云函数-部署问题反馈

问题描述 🤔

阿里云-serverless云函数部署,部署成功后,发送消息时,serverless 相应报错。

主要报错为:
Error: Invocation canceled by client (duration: 3565ms, maxMemoryUsage: 10.28MB)

报错详情为:
`FC Invoke Start RequestId: 1-640989e8-936acbdf3b8483e00bdfced1
c-640989d0-383d2d6655aa4c7f80d12023-03-09 15:25:29chatType: p2p2023/03/09 07:25:28 request gtp json string : {"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"什么是分离关注点"}],"max_tokens":2000,"temperature":0.7,"top_p":1,"frequency_penalty":0,"presence_penalty":0}
c-640989d0-383d2d6655aa4c7f80d12023-03-09 15:25:32FC Invoke End RequestId: 1-640989e8-936acbdf3b8483e00bdfced1, Error: Invocation canceled by client (duration: 3565ms, maxMemoryUsage: 10.28MB)
c-640989ed-2b0982ca9cf3446a8ccd2023-03-09 15:25:34[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.

  • using env: export GIN_MODE=release
  • using code: gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET /ping --> main.main.func2 (3 handlers)
[GIN-debug] POST /webhook/event --> github.com/larksuite/oapi-sdk-gin.NewEventHandlerFunc.func1 (3 handlers)
[GIN-debug] POST /webhook/card --> github.com/larksuite/oapi-sdk-gin.NewCardActionHandlerFunc.func1 (3 handlers)
http server started http://localhost:9000/webhook/event
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :9000`

🐞 通过本地docker方式部署 配置完了之后 发现和机器人对话无相应

这个是docker启动之后,启动的命令是这样的
docker run -d --name feishu-chatgpt -p 9000:9000
--env APP_ID=xxx
--env APP_SECRET=xx
--env APP_ENCRYPT_KEY=xx
--env APP_VERIFICATION_TOKEN=xx
--env BOT_NAME=chatGpt
--env OPENAI_KEY="sk-xx,sk-xxx"
--env API_URL="https://api.openai.com"
feishu-chatgpt:latest
没有带http_proxy ,因为我本地能访问的通我的VPS机器
image

image

事件订阅
image

机器人配置
image

🚀功能改善-自定义 API 请求 URL

您的建议是什么?
增加一个 OpenAI API 的自定义入口,例如:Docker 部署中增加一个参数 OPENAI_URL

例如:
docker run -d --restart=always --name feishu-chatgpt2 -p 9000:9000 -v /etc/localtime:/etc/localtim:ro
--env APP_ID=xxx
--env APP_SECRET=xxx
--env APP_ENCRYPT_KEY=xxx
--env APP_VERIFICATION_TOKEN=xxx
--env BOT_NAME=chatGpt
--env OPENAI_KEY=sk-xxx
*--env OPENAI_URL=https://api.openai.com *
dockerproxy.com/leizhenpeng/feishu-chatgpt:latest

📝 文档改善 - 提供分步骤截图形式的飞书后台配置引导

文档改善建议 📝

对于初次接触飞书机器人的小白用户,可以在文档中提供配置截图指导,以便更好地了解和配置机器人。

您的建议的优势 🌟

可以根据小白用户常用的 Docker 和 Serverless 两种部署方式,分别提供相应的配置截图指导。

这样,小白用户可以更快地了解机器人的配置流程,降低配置门槛,从而更好地使用该机器人。

🚀 功能改善 - 将话题内容转化为PPT演示文稿

功能改善建议 🚀

欢迎在此分享您对功能的改善建议,我们期待听到您的想法和建议。

您的建议是什么? 🤔

希望能直接将话题内容转化为PPT演示文稿,以便于快速制作和展示。
同时,需要进行修改和润色文字内容,确保文稿没有错别字和不合适的表述。

参考

https://github.com/williamfzc/chat-gpt-ppt

https://remarkjs.com/#14

感谢您的分享和支持!🙏

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.