一个支持将微信订阅号接入AI的后台管理系统,已支持接入阿里AI,moonshot, 腾讯混元。
可以通过配置接入阿里多个不同模型模来模拟和AI多模态交流:文生文知识问答、文生图绘画、图生文描述图片内容、文字语音互转,实现在微信中人与AI交流对话。
这3方面的基础配置,已经在安装脚本中附有(./tools/DB_DYH-ai-base-cfg.SQL
)。
分配模型及相应KEY, 可在三个层次配置:
对于同时配置多种, 系统使用KEY的顺序是3、2、1,可根据此控制KEY的资源消耗。 目前系统未对使用token量进行记录, 仅对调用AI接口次数计数。
在微信用户和AI交流,支持文本的cmd - 部分命令支持语音(启用语言问答时有效,可配置扩展语音命令词)。
例如在微信中给公众号发送?
来查询有哪些cmd可用;发送?m
查看当前微信号使用的模型列表,
通过发送#
查看管理员专帮助信息。
等...
熟悉Django的,可以自行替换成其它类型DB, 此处示例创建系统使用的MySQL账号、库(表在下一节使用django命令创建)。
# 修改此处该默认的账号密码这一同样修改 settings.py或deployment.py中相应的账号密码
CREATE USER 'weixinmgr'@'localhost' IDENTIFIED BY 'W31x1n@PWD'
CREATE DATABASE IF NOT EXISTS DB_DYH CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT create, INSERT, select, update, delete, index, drop, ALTER, REFERENCES ON DB_DYH.* TO 'weixinmgr'@'localhost'
CREATE USER 'querymgr'@'localhost' IDENTIFIED BY 'Query@123PWD';
GRANT select ON *.* TO 'querymgr'@'localhost';
初次运行前,安装相关模块:
pip install -r ./requirements.txt # 安装 python依赖
./manager.py migrate --run-syncdb # 创建数据库表
./manager.py createsuperuser # 根据执行后的提示创建你自己的管理员账号
mysql -u weixinmgr -p DB_DYH < ./tools/DB_DYH-ai-base-cfg.SQL
本示例通过nginx做WEB代理, 将微信的消息转到django的http server端口。 也可以使用apache等做web代理,下面仅示例nginx使用场景下的配置:
server {
listen 80;
listen [::]:80;
server_name devai.h53d.xyz;
return 301 https://$host$request_uri;
# 不部署SSL证书,仅用http协议时, 注释掉上一句配置,然后打开本块下面行的所有注释
# server_tokens off;
# keepalive_timeout 15;
# root /home/your/workspace/weixin-dyh/templates/; # 根据自己部署环境修改路径名
# index 404.html;
# access_log /var/log/nginx/dev-wx-dyh-access.log; # 根据自己部署环境修改路径名
# error_log /var/log/nginx/dev-wx-dyh-error.log; # 根据自己部署环境修改路径名
# location / {
# proxy_pass http://127.0.0.1:8080/;
# }
}
# 不部署SSL证书,仅用http协议时, 注释掉下面的配置
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name devai.h53d.xyz;
server_tokens off;
#填写证书文件的相对路径或绝对路径
#ssl_certificate cloud.tencent.com_bundle.crt;
ssl_certificate /etc/nginx/include/devai.h53d.xyz_nginx/devai.h53d.xyz_bundle.crt;
#填写私钥文件的相对路径或绝对路径
ssl_certificate_key /etc/nginx/include/devai.h53d.xyz_nginx/devai.h53d.xyz.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
keepalive_timeout 15;
root /home/aceway/workspace/weixin-dyh/templates/;
index 404.html;
access_log /var/log/nginx/dev-wx-dyh-access.log;
error_log /var/log/nginx/dev-wx-dyh-error.log;
location / {
proxy_pass http://127.0.0.1:8080/;
}
}
将上面配置代码保存到一个文件(参考./tools/nginx_ai.conf
), 放在ngingx配置目录下(如/etc/nginx/include/
), 然后让nginx服务程序重新加载配置:
sudo service nginx reload
# 或重启nginx
sudo service nginx restart
启动AI后台服务:
./start.sh # 在本文件同级目录下执行, 注意start.sh中选用的端口(8080或8888端口)要和上面WEB代理conf配置中的保持一致。
设置与开发
-> 基本配置
页面中将 服务器配置
启用;
服务器地址(URL)和上一步启动服务的域名对应,注意尾部的路径名和下一步配置中URL因子一致;
记录相其它关信息值(AppID, AppSecret, Token, EncodingAESKey),下一步中使用;
登录本服务管理员后台 http://your-server-host/admin/ 进行配置
微信公号后台, 将上一步中的信息填入相应位置 DYHM_MGR
-> 订阅号
-> 增加订阅号
:
在admin中 AI
模块下配置专用AI KEY
或者 订阅号AI KEY
def chatWithAI(prompt, from_uid, model, key, config_json=None)
""""
该函数返回数据格式 {'ok': True, 'answer': "AI response data", 'desc': "descriptino"}
""""
result = {'ok': False, 'answer': "", 'desc': "descriptino"}
#
# 新增实现接入AI代码
#
return result
如 txt2video
, img2video
参考上面 2
, 3
, 在实现中增加新模型的处理逻辑, 具体可见已有的 ali, kimi, tencent 模块的实现;
欢迎关注