/chatgpt-for-chatbot-feishu

快速将 ChatGPT 接入飞书,基于 OpenAI 官方接口,作为私人工作助理或者企业员工助理

Primary LanguageGoMIT LicenseMIT

ChatGPT For ChatBot Feishu

快速将 ChatGPT 接入飞书,基于 OpenAI 官方接口,作为私人工作助理或者企业员工助理

预览

功能支持

  • 支持长对话,自动联系上下文
  • 支持私人对话
  • 支持群聊
    • 支持 @ 机器人回复
    • 也支持命令(/chatgpt)触发,格式:/chatgpt 你的问题
  • 支持自定义 OpenAI 模型
  • 支持自定义语言(请查看高级配置)
  • 支持自定义上下文(请查看高级配置)
  • 支持 Docker
  • 支持配置启动反向代理
  • 支持二次开发,快速接入企业现有应用
    • Go 开发框架

高级指令

  • 模型
    • 获取当前会话模型:/model
    • 设置当前会话模型【需管理员】:/model <model>,例如设置 GPT-4 /model gpt-4

项目特点

部署方案

一键部署(推荐)

# 基于服务端管理框架 Zmicro,自动安装缺失依赖,使用 Zmicro Service,底层容器使用 Docker
# 执行下面脚本,并按提示操作,填写飞书 APP ID/Secret 和 OpenAI API Key
# 更多用法,注意看提示
$ curl -fsSL https://raw.githubusercontent.com/zmicro-design/service-chatgpt-for-chatbot-feishu/master/install -o /tmp/install.sh && bash /tmp/install
.sh

二进制

# 安装服务器管理框架 Zmicro
$ curl -o- https://raw.githubusercontent.com/zcorky/zmicro/master/install | bash

# 安装 chatgpt-for-chatbot-feishu
$ zmicro package install chatgpt-for-chatbot-feishu

# 准备环境飞书 APP ID/Secret 和 OpenAI API Key
$ export APP_ID=<YOUR_FEISHU_APP_ID>
$ export APP_SECRET=<YOUR_FEISHU_APP_SECRET>
$ export OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>

# 运行
$ zmicro chatgpt-for-chatbot-feishu

Docker Compose

# docker-compose.yaml
services:
  chatgpt-for-chatbot-feishu:
    image: whatwewant/chatgpt-for-chatbot-feishu:latest
    platform: linux/amd64
    ports:
      - 8080:8080
    environment:
      APP_ID: "<YOUR_FEISHU_APP_ID>"
      APP_SECRET: "<YOUR_FEISHU_APP_SECRET>"
      OPENAI_API_KEY: "<YOUR_OPENAI_API_KEY>"
# 启动
$ docker-compose up -d

高级环境配置(可选)

  • API_PATH: 自定义 WebHook 路径
  • ENCRYPT_KEY: 飞书事件密钥
  • VERIFICATION_TOKEN: 飞书 Challenge 校验 Token
  • SITE_URL: 自定义域名地址
  • OPENAI_MODEL: 自定义 OpenAI 模型
  • FEISHU_BASE_URI: 私有部署飞书地址
  • CHATGPT_CONTEXT_MESSAGE: 自定义上下文消息
  • CHATGPT_LANGUAGE: 自定义机器人初始语言,默认是英文,如需中文(ZH_CN)
  • TUNNEL_ENABLE: 启用 Ngrok
  • TUNNEL_TYPE: 指定隧道类型,可选项:ngrok | cpolar
  • AUTH_TOKEN: 付费用户 Auth Token
  • SUBDOMAIN: 指定固定子域名
  • LOGS_DIR: 自定义日志目录
  • ADMIN_EMAIL: 管理员企业邮箱
  • OFFLINE_MESSAGE:离线自动回复内容

飞书应用配置和 OpenAI 相关步骤

新人推荐先看飞书开放平台文档: 飞书如何开发企业自建应用

  • S1. 获取 OpenAI 的 API Key

  • S2. 创建 飞书 机器人

    1. 前往开发者平台创建应用,并获取到 AppID 和 AppSecret
    2. 前往添加应用能力 => 机器人, 创建机器人
    3. 从cpolar或者serverless获得公网地址,在飞书机器人后台的 事件订阅 板块填写。例如,
      • http://xxxx.r6.cpolar.top为cpolar暴露的公网地址
      • 事件默认 API 路径是:/, 支持自定义路径,例如设置环境变量 API_PATH/webhook/event
      • 最终的回调地址为 http://xxxx.r6.cpolar.top/
    4. 前往 事件订阅 添加下列回调事件
      • 接收群消息:im.message.receive_v1
      • 消息撤回:im.message.recalled_v1
      • 机器人进群:im.chat.member.bot.added_v1
      • 机器人被移出群:im.chat.member.bot.deleted_v1
    5. 前往 权限管理 添加以下权限
      • 获取与发送单聊、群组消息:im:message
      • 以应用的身份发消息: im:message:send_as_bot
      • 获取用户发给机器人的单聊消息: im:message.p2p_msg
      • 读取用户发给机器人的单聊消息: im:message.p2p_msg:readonly
      • 获取群组中所有消息: im:message.group_msg
      • 获取用户在群组中@机器人的消息: im:message.group_at_msg
      • 接收群聊中@机器人消息事件: im:message.group_at_msg:readonly
      • 获取与更新群组信息: im:chat
      • 获取群组信息: im:chat:readonly
      • [可选] 获取用户信息(如果设置管理员 ADMIN_EMAIL 则必须): contact:contact:readonly_as_app
  • S3. 发布版本,等待企业管理员审核通过

更多飞书配置可参考 Leizhenpeng/feishu-chatGptbestony/ChatGPT-Feishu 文档

更多交流

可以创建 Issue 或者加微信,备注来自:ChatGPT-For-ChatBot-Feishu,加入微信群沟通

相关资源

更新日志

  • 2023.02.25 支持设置管理员,用于执行命令,环境变量:ADMIN_ENV

  • 2023.02.25 支持自定义离线自动回复内容,环境变量:OFFLINE_MESSAGE

  • 2023.02.25 内置上线(/online)、下线(/offline)命令

  • 2023.02.23 修复 CI Docker Image Tag latest

  • 2023.02.23 事件支持 encrypt key (#31)

  • 2023.02.23 Challenge 支持 verification token (#31)

  • 2023.02.24 支持命令模式,为角色扮演命令做好准备 (#29)

  • 2023.02.23 修复飞书由于网络原因会重发消息,应该可以从 chatbot 端忽略已经重复的消息 (#28)

  • 2023.02.23 支持自定义上下文,使用 env CHATGPT_CONTEXT_MESSAGE (#22)

  • 2023.02.23 支持自定义初始语言,如果不指定,默认是英文,使用 env CHATGPT_LANGUAGE (#22)

  • 2023.02.22 修复从零开始创建机器人的时候需要飞书 Challenge 但是启动服务需要开通机器人,从而造成死循环,无法启动服务

  • 2023.02.22 支持私有部署的飞书 (#17)

  • 2023.02.22 支持自定义 OpenAI 模型 (#16)

  • 2023.02.20 内置支持 tunnel,目前支持 cpolar,ngrok,一键部署版本支持通过 zmicro service upgrade chatgpt-for-chatbot-feishu 快速升级,按提示操作即可,使用更加简单

LICENSE

MIT © whatwewant