讲一下微信机器人的Docker部署方式。
Docker是什么
Docker是一个用于创建和运行应用程序的平台。它使用称为容器的技术,可以将软件及其所有依赖项打包在一起,使其可以在任何系统上一致地运行。这就像是一个虚拟的盒子,你可以在里面放入你需要的所有东西,无论你在哪里打开这个盒子,里面的东西都会以同样的方式运行。
如果你了解虚拟机的话,那可以简单的将Docker理解为更轻量的虚拟机。 其中, Docker是容器引擎, 而通过Docker镜像跑起来的一个实例,叫容器(Container)。一个容器可实现一个或多个服务(进程)。
Docker部署有什么优势?
无环境依赖。 使用docker部署无需下载源码和安装依赖,只需要获取 docker-compose.yml 配置文件并启动容器即可。
Docker 部署微信机器人
机器上安装Docker引擎
从Docker官网 (https://docs.docker.com/engine/install/) 下载对应平台(Linux, Windows, Mac) 安装包。微信截图_20231130212832.png
不同平台上多种不同安装方式,可参考官方文档。这里以Windows上为例讲解, 主要有以下几步:
1. 双击 Docker Desktop Installer.exe 运行安装程序。
2. 当出现提示时,确保在 Configuration 页面上选择 Use WSL 2而不是 Hyper-V 选项,这取决于您对后端的选择。
3. 如果您的系统只支持这两个选项中的一个,您将无法选择使用哪个后端。
4. 按照安装向导上的说明授权安装程序并继续安装。
5. 安装成功后,选择 Close 以完成安装过程。
6. 如果管理员帐户与用户帐户不同,则必须将该用户添加到 docker-users 组。以管理员身份运行计算机管理,并导航到本地用户和组 > 组 > docker-Users。右击可将用户添加到组中。签出并重新签入以使更改生效。
安装完成后,你需要启动 “Docker Desktop” 应用程序(Docker Engine)。它可能会提示你登陆,我们只需要跑Container, 可以不登陆。运行docker -v
和 docker-compose version
有正常输出就算是Ready了。
PS C:UsersYaha> docker -v
Docker version 23.0.5, build bc4487a
PS C:UsersYaha> docker-compose version
Docker Compose version v2.17.3
准备Config文件
一个示例的Config文件(docker-compose.yml) 从这里下载 https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml, 里面的配置与config.json
类似。
OPEN_AI_API_KEY
: 替换成你的OpenAI API Key;OPEN_AI_API_BASE
: 如果网络有问题,可指定一个可连的OpenAI API反向代理地址,可自建,也可看下面示例;SINGLE_CHAT_PREFIX
: 设置触发机器人回复的聊天前缀。如果像下面代码中设置为空的话,则每条对话都会回复;GROUP_CHAT_PREFIX
: 设置群聊中触发机器人回复的聊天前缀。一般是登陆微信的昵称,这样的效果是群聊中只有@你的消息机器人才会回复。GROUP_NAME_WHITE_LIST
: 设置机器人在哪些群聊中会回复。如果是ALL_GROUP,则是所有群聊中都要回复。SPEECH_RECOGNITION
: 设置为true的话,则会识别语音消息,并回复。如不必要,建议关闭。
version: '2.0'
services:
chatgpt-on-wechat:
image: zhayujie/chatgpt-on-wechat
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
environment:
OPEN_AI_API_KEY: 'YOUR API KEY'
MODEL: 'gpt-3.5-turbo'
OPEN_AI_API_BASE: 'https://openai-forward.metadl.com/v1'
PROXY: ''
SINGLE_CHAT_PREFIX: '["bot", "@bot"]'
SINGLE_CHAT_REPLY_PREFIX: '"[bot] "'
GROUP_CHAT_PREFIX: '["@bot"]'
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
CONVERSATION_MAX_TOKENS: 1000
SPEECH_RECOGNITION: 'False'
CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
EXPIRES_IN_SECONDS: 3600
USE_GLOBAL_PLUGIN_CONFIG: 'True'
USE_LINKAI: 'False'
LINKAI_API_KEY: ''
LINKAI_APP_CODE: ''
启动Container
进入 docker-compose.yml
同级目录,用以下命令,可以启动container。 如果是首次启动,会自动下载Docker Image,存在本地,稍等一会。 如果本地有Docker Image了,5秒种启动完成。
cd chatgpt-on-wechatdocker
docker-compose up -d
docker-compose up -d 是一个 Docker 命令,用于在后台(detached mode)启动并运行定义在 docker-compose.yml 文件中的多个容器。这个命令会自动处理容器间的依赖关系。如果要停掉正在运行的容器,可以用命令: docker-compose down
扫码登陆
登陆二维码在日志里,通过以下命令持续查看日志。日志中看到"Start auto replying"表示登录成功。退出查看日志按 Ctrl+C, Container进程会持续在后台运行。
docker logs -f chatgpt-on-wechat
0613546a308adb3b20451c1e322f5378.png
使用知识库
上面的操作只是让微信机器人接入了ChatGPT,可以回答通识问题,但它不能联网,不能回答特定问题。如果我问它 “越山兄最喜欢吃什么?”, 它回答不上来的。给它一个外挂的知识库,则可以解决回答特定领域问题。
最简单的连接知识库的方式是使用Link-AI.tech
docker-compose.yml
中改以下几行, 就接入了LinkAI,会优先查询知识库进行回答 USE_LINKAI: 'True'
LINKAI_API_KEY: 'Link_LiQttLoJ37fUEIR7NM02L63sxx'
LINKAI_APP_CODE: 'giV3EnYq'
8 Docker方式重启应用
docker-compose down
docker-compose up -d
docker logs -f chatgpt-on-wechat
#扫码重新登陆
注意事项
使用此项目微信机器人
此项目(https://github.com/zhayujie/chatgpt-on-wechat)还可接入企业微信,公众号,飞书;支持各种插件实现特定功能;
来源:越山集