飞书部署ChatGPT机器人

飞书部署 ChatGPT 机器人

date: April 7, 2023
slug: 21
status: Published
tags: 技术
type: Post

项目开源地址：开源链接

机器人介绍及功能

飞书 X（GPT-3.5+DALL・E+Whisper），实现办公智能助手。

功能：

🗣 语音交流：私人直接与机器人畅所欲言

💬 多话题对话：支持私人和群聊多话题讨论，高效连贯

🖼 文本成图：支持文本成图和以图搜图

🛖 场景预设：内置丰富场景列表，一键切换 AI 角色

🎭 角色扮演：支持场景模式，增添讨论乐趣和创意

🔄 上下文保留：回复对话框即可继续同一话题讨论

⏰ 自动结束：超时自动结束对话，支持清除讨论历史

📝 富文本卡片：支持富文本卡片回复，信息更丰富多彩

👍 交互式反馈：即时获取机器人处理结果

🎰 余额查询：即时获取 token 消耗情况

🔙 历史回档：轻松回档历史对话，继续话题讨论 🚧

🔒 管理员模式：内置管理员模式，使用更安全可靠 🚧

🌐 多 token 负载均衡：优化生产级别的高频调用场景

↩️ ️支持反向代理：为不同地区的用户提供更快、更稳定的访问体验

📚 与飞书文档互动：成为企业员工的超级助手 🚧

🎥 话题内容秒转 PPT：让你的汇报从此变得更加简单 🚧

📊 表格分析：轻松导入飞书表格，提升数据分析效率 🚧

🍊 私有数据训练：利用公司产品信息对 GPT 二次训练，更好地满足客户个性化需求 🚧

项目特点

🍏 对话基于 OpenAI-gpt-3.5-turbo 接口

🍎 通过 lark，将 ChatGPT 接入飞书和飞书国际版

🥒 支持 Serverless 云函数、本地环境、Docker、二进制安装包 等多种渠道部署

🍋 基于 goCache 内存键值对缓存

部署教程

Open Ai

这一步需要获取 Open Ai 的 api，之前讲过，不再赘述。

部署项目

1.docker 部署

Copy
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-xxx1,sk-xxx2,sk-xxx3" \
--env API_URL=https://api.openai.com \
--env HTTP_PROXY="" \
dockerproxy.com/leizhenpeng/feishu-chatgpt:latest

注意

BOT_NAME 为飞书机器人名称，例如 韵酱的猫娘P60 E 青春探索版

OPENAI_KEY 为 openai key，多个 key 用逗号分隔，例如 sk-xxx1,sk-xxx2,sk-xxx3

HTTP_PROXY为宿主机的 proxy 地址，例如 http://host.docker.internal:7890, 没有代理的话，可以不用设置

API_URL 为 openai api 接口地址，例如 https://api.openai.com, 没有反向代理的话，可以不用设置

事件回调地址: http://IP:9000/webhook/event 卡片回调地址: http://IP:9000/webhook/card 二者稍后填入飞书后台即可

2.docker-compose 部署

编辑 docker-compose.yaml，通过 environment 配置相应环境变量（或者通过 volumes 挂载相应配置文件），然后运行下面的命令即可

Copy
# 构建镜像
docker compose build

# 启动服务
docker compose up -d

# 停止服务
docker compose down

事件回调地址: http://IP:9000/webhook/event 卡片回调地址: http://IP:9000/webhook/card

3. 使用 Railway 部署

直接去开源项目地址那里配置好环境变量部署就行了，我懒得写

Railway 是一家国外的 Serverless 平台，支持多种语言，可以一键将 Github 上的代码仓库部署到 Railway 平台，然后在 Railway 平台上配置环境变量即可。

该项目还支持本地部署，serverless 云函数部署和二进制安装包部署，但是我觉得有方便快捷的 docker 就够了。

飞书机器人配置

总结：在飞书机器人后台的事件订阅板块填写回调地址，在机器人板块填写消息卡片的请求网址，最后设置机器人的权限即可。

1. 前往开发者平台创建应用，并获取到 APPID 和 Secret

2. 前往应用功能 - 机器人，创建机器人

3. 具体配置

事件订阅从 cpolar、serverless 或 Railway 获得公网地址，在飞书机器人后台的事件订阅板块填写。例如，http://xxxx.r6.cpolar.top 为 cpolar 暴露的公网地址，/webhook/event 为统一的应用路由，最终的回调地址为 http://xxxx.r6.cpolar.top/webhook/event** 卡片消息 ** 在飞书机器人后台的 `机器人` 板块，填写消息卡片请求网址。例如，http://xxxx.r6.cpolar.top 为 cpolar 暴露的公网地址，/webhook/card 为统一的应用路由，最终的消息卡片请求网址为 http://xxxx.r6.cpolar.top/webhook/card** 机器人权限 ** 在事件订阅板块，搜索三个词 `机器人进群`、 接收消息、 消息已读, 把他们后面所有的权限全部勾选。 进入权限管理界面，搜索图片，勾选获取与上传图片或文件资源， 最终会添加下列回调事件

im(获取与上传图片或文件资源)

im

im.group_at_msg (获取群组中所有消息)

im.group_at_msg(接收群聊中 @机器人消息事件)

im.p2p_msg (获取用户发给机器人的单聊消息)

im.p2p_msg(读取用户发给机器人的单聊消息)

im:message(获取用户在群组中 @机器人的消息)

im:chat(获取群组信息)

im(获取与更新群组信息)

发布

机器人配置好之后发布机器人，等待管理员审批即可