介绍:
基于chatgpt-on-wechat项目,实现AI机器人自动回复微信。
支持微信公众号、企业微信应用、飞书、钉钉接入,可选择GPT3.5/GPT4.0/GPT4o/Claude/Gemini/ChatGLM/kimi/文心一言/讯飞星火/通义千问/LinkAI
DEMO视频:https://cdn.link-ai.tech/doc/cow_demo.mp4
环境:EOS服务器Linux centos7,通过docker部署
1.登录阿里云官网,获取免费服务器试用。我选择了Linux centos7境内服务器。按量计费,可以免费试用三个月。
Docker 部署无需安装python环境和下载源码,也不用考虑依赖
安装docker
查看是否已经安装了docker
yum list installed | grep docker
以下显示已安装,如果没有安装则没有条目
卸载已有docker(按需卸载)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
更新系统包
sudo yum update -y
安装devicemapper驱动依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
安装wget(后面需用到)
yum install -y wget
下载Docker包(需在cd /etc/yum.repos.d/目录下执行该命令)
wget http://mirrors.163.com/docker-ce/linux/centos/docker-ce.repo
注意:安装之前先关闭防火墙
查看防火墙状态
systemctl status firewalld
临时关闭防火墙
systemctl stop firewalld
安装Docker
yum install -y docker-ce.x86_64
查看Docker是否安装成功
yum list installed | grep docker
启动Docker
systemctl start docker
查看Docker状态
systemctl status docker
设置开机启动Docker
systemctl enable docker
查看Docker进程
ps -ef | grep docker
查看docker系统信息
docker info
镜像源更新方法:
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"]
}
查看镜像是否安装成功
docker info
然后重启docker服务
service docker restart
Docker开启远程访问(docker-compose需用)
编辑docker.service
vim /lib/systemd/system/docker.service
注释与新增
按i进入编辑模式
注释
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
新增
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
按Esc,按Shift+;右下角弹出:输入wq 写入并退出
更新配置与重新启动
systemctl daemon-reload
systemctl restart docker
添加开放2375端口
firewall-cmd --add-port=2375/tcp --permanent
重载入添加的端口
firewall-cmd --reload
查询2375端口是否开启成功
firewall-cmd --query-port=2375/tcp
安装docker-compose
下载Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
请注意,1.29.1是版本号,可以根据需要替换为最新版本
为Docker Compose二进制文件添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
验证Docker Compose安装是否成功
docker-compose --version
获取AI模型API及配置信息
完成AI模型的官网注册和API获取。无需代理,可使用 Kimi、文心、讯飞、GPT-3.5、GPT-4o 等模型
以KIMI为例:
注册并登录账号后,到API管理申请API
查看使用手册地址:https://platform.moonshot.cn/docs/intro#%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90%E6%A8%A1%E5%9E%8B
找到请求地址:
新账号有15元赠送金额
目前的收费方式如下:
模型配置信息
1. model
: 模型名称 https://github.com/zhayujie/chatgpt-on-wechat/blob/master/common/const.py
2.按照模型的不同。参数相应变化:
以kimi为例:
model: 'moonshot-v1-8k'或 'moonshot-v1-32k'或'moonshot-v1-128k'
moonshot_api_key: 'xxxxxx' # 填入上面创建的kimi API KEY
moonshot_base_url: 'https://api.moonshot.cn/v1/chat/completions' # 填入官网的base url
以gemini为例(需要代理或境外服务器):
GEMINI_API_KEY:'AIxxxxxxxxxx'
MODEL: 'gemini' #其他可选模型GEMINI_PRO, GEMINI_15_flash, GEMINI_15_PRO
微信公众号部署AI机器人
先需要前往 微信公众平台 注册一个公众号,项目支持的公众号类型有两种,可根据你的需求进行选择:
类型 | 要求 | 特点 |
---|---|---|
个人号 | 个人可申请 | 在收到消息时会回复用户一条消息,回复生成后需要用户主动发消息获取 |
企业号 | 企业可申请,同时需要通过微信认证开通客服接口 | 回复生成后可主动推送给用户 |
公众号目前只支持 服务器 和 docker 环境部署
登陆微信公众号平台
登陆微信公众平台微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。https://mp.weixin.qq.com/
获取基本配置信息
主要获取以下公众号信息,用于填写配置信息。
wechatmp_app_id: "wxxxxxx" #微信公众号的app id信息
wechatmp_app_secret: "xxxxxxx" #微信公众号的app_secret
wechatmp_aes_key: "xxxxxxxxxx"#微信公众号的aes_key
wechatmp_token: "xxxxxxxxx"#微信公众号的token
wechatmp_port: 80 #微信公众号 http必须为80端口,https必须为443端口
左侧 “设置与开发”中选择 “基本配置” ,获取公众号开发信息
1.记录开发者ID(APP ID)填写到wechatmp_app_id
2.记录开发者密码(APP Secret)填写到wechatmp_app_secret
3.IP白名单 点击“查看” ,将服务器公网IP填入IP白名单
填写服务器配置
1. 填写http://{HOST}/wx
{HOST} 可以是服务器的公网ip或域名。此处填写后暂时不能保存,等完成服务器部署后再保存
2. 设置Token 填写到wechatmp_token
3. 设置EncodingAESKey 填写到wechatmp_aes_key
配置 docker-compose.yml
vim docker-compose.yml
打开后按i 填写和修改配置信息
version: '2.0'
services:
chatgpt-on-wechat:
image: zhayujie/chatgpt-on-wechat
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
environment:
moonshot_api_key: 'xxxxxx' # 填入上面创建的kimi API KEY
moonshot_base_url: 'https://api.moonshot.cn/v1/chat/completions' # 填入base url
MODEL: 'moonshot-v1-8k' # 模型名称。当use_azure_chatgpt为true时,其名称为Azure上model deployment名称
PROXY: '' # 代理客户端的ip和端口,国内环境开启代理的需要填写该项,如 "127.0.0.1:7890"
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: '你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'# 人格描述
EXPIRES_IN_SECONDS: 3600
USE_GLOBAL_PLUGIN_CONFIG: 'True'
USE_LINKAI: 'False' # 是否使用LinkAI接口,默认关闭,开启后可国内访问,使用知识库和MJ
LINKAI_API_KEY: '' # LinkAI Api Key
LINKAI_APP_CODE: ''# LinkAI 应用或工作流code
channel_type: "wechatmp" #微信公众号模式
wechatmp_app_id: "wxxxxxx" #微信公众号的app id信息
wechatmp_app_secret: "xxxxxxx" #微信公众号的app_secret
wechatmp_aes_key: "xxxxxxxxxx"#微信公众号的aes_key
wechatmp_token: "xxxxxxxxx"#微信公众号的token
wechatmp_port: 80 #微信公众号 http必须为80端口,https必须为443端口
ports:
- "80:80"#设置微信公众号的80端口转移
user: root #80端口需要root权限
修改后键入:wq 保存并退回
先确保80端口(http)或433端口(https)没有被占用。
检查端口上的服务
sudo netstat -tuln | grep :80
没有则表示没有被占用,如有占用,先清除
如果你不确定哪个容器占用了端口,可以使用以下命令列出所有正在运行的容器及其端口映射:
sudo docker ps -a
停止容器:
sudo docker stop <容器ID>
删除容器:
sudo docker rm -f <容器ID>
确保要使用的端口加入云服务器的如安全组
找到实例=>查看安全组=>入方向安全组
启动容器
在 docker-compose.yml 所在目录下执行以下命令启动容器:
sudo docker compose up -d
运行 sudo docker ps 能查看到 NAMES 为 chatgpt-on-wechat
的容器即表示运行成功。
如果出现拉取失败,修改镜像源,参考docker安装中的镜像源更新方法:
查看容器
docker ps
查看容器是否启动成功
检查是否可以ping通端口
crul {host}/wx
成功后回到微信服务器配置界面,点击保存服务器配置
修改配置 需重启容器
如果修改了 docker-compose.yml
中的配置
执行以下命令可以关闭服务:
sudo docker compose down
再执行以下代码重启容器
sudo docker compose up -d
企业微信部署AI机器人
创建企业微信应用
登录企业微信,点击 "我的企业" 菜单,在最下方可以看到 "企业ID",保存这个id,后续需要填写在配置的 wechatcom_corp_id
字段中
切换到 "应用管理" 菜单,点击创建应用:
记录下页面上显示的AgentId和 Secret信息:
Secret 填入: wechatcomapp_secret: "xxxxxxxxxxxxxxx"
AgentId填入: wechatcomapp_agent_id:"1000002"
在功能模块中=> 接受消息,点击 "设置API接收" 配置应用接口:
url 的格式为 http://ip:9898/wxcomapp
,如果是认证企业则需要填写备案域名
随机获取 Token
和 EncodingAESKey
并保存下来,
Token
填入: wechatcomapp_token
EncodingAESKey
填入: wechatcomapp_aes_key
此时无法保存 API接收配置 ,等服务器容器启动后,再回来保存。
配置 docker-compose.yml
配置文件样本如下:
version: '2.0'
services:
chatgpt-on-wechat:
image: zhayujie/chatgpt-on-wechat
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
environment:
GEMINI_API_KEY:'AIxxxxxxxxx8'
MODEL: 'gemini'
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: '你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
EXPIRES_IN_SECONDS: 3600
USE_GLOBAL_PLUGIN_CONFIG: 'True'
USE_LINKAI: 'False'
LINKAI_API_KEY: ''
LINKAI_APP_CODE: ''
channel_type: "wechatcom_app"
wechatcom_corp_id:"wwxxxxxxxxxx"
wechatcomapp_secret: "xxxxxxxxxxxxxxx"
wechatcomapp_agent_id:"1000002"
wechatcomapp_aes_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wechatcomapp_token: "xxxxxxxxxxxx"
wechatmp_port: 9898
ports:
-9898:9898
启动容器
sudo docker compose up -d
查看容器
docker ps
检查 URL是否可以ping通
ping http://ip:9898/wxcomapp