网站服务器使用宝塔系统:Chatgpt-on-wechat 对接微信订阅号

一、Python环境

1. 查看当前python版本

[root@iZwz99sau950q2nhb3pn0aZ ~]# python
Python 2.7.5 (default, Aug  7 2019, 00:51:29) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

2. 安装依赖包

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel

3.安装wget

yum install wget

4. 下载源码包

wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgzke

可手动下载,拖拽上传到 /root/

5.解压安装

# 解压压缩包
tar -zxvf Python-3.9.18.tgz  

# 进入文件夹
cd Python-3.9.18

# 配置安装位置
./configure prefix=/usr/local/python3

# 安装
make && make install

如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录

[root@iZwz99sau950q2nhb3pn0aZ local]# cd /usr/local/
[root@iZwz99sau950q2nhb3pn0aZ local]# ls
aegis  bin  etc  games  include  lib  lib64  libexec  python3  sbin  share  src

6.添加软链接

#添加python3的软链接 
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3 

#添加 pip3 的软链接 
ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3

测试一下:

[root@iZwz99sau950q2nhb3pn0aZ local]# python3
Python 3.9.18 

二、源码安装

(1) 下载源码

git clone https://github.com/zhayujie/chatgpt-on-wechat  #可先本地下载后上传
cd chatgpt-on-wechat/

(2) 安装依赖

pip3 install -r requirements.txt                # 必选依赖
pip3 install -r requirements-optional.txt       # 可选依赖,语音、tool插件等功能需要

(3) 配置

复制项目中的模板文件 config-template.json,来生成最终起效果的配置文件config.json,可以通过执行以下命令完成:

cp config-template.json config.json

配置参考:

{
"channel_type": "wechatmp",
"model": "",
"open_ai_api_key": "YOUR API KEY",
"text_to_image": "dall-e-2",
"voice_to_text": "openai",
"text_to_voice": "openai",
"proxy": "",
"hot_reload": false,
"single_chat_prefix": [
""
],
"wechatmp_app_id": "wxXXXXXXXXXXXXXXX8",
"wechatmp_app_secret": "6XXXXXXXXXXXXXXXXXXXXc",
"wechatmp_aes_key": "OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXM",
"wechatmp_token": "jXXXXXXXXXXXXXXXXXXXXXXX2",
"wechatmp_port": 8080,
"single_chat_reply_prefix": "",
"group_chat_prefix": [
"@bot"
],
"group_name_white_list": [
"ChatGPT测试群",
"ChatGPT测试群2"
],
"group_chat_in_one_session": [
"ChatGPT测试群"
],
"image_create_prefix": [
"画"
],
"speech_recognition": true,
"group_speech_recognition": false,
"voice_reply_voice": false,
"conversation_max_tokens": 2500,
"expires_in_seconds": 3600,
"character_desc": "你是一个关于各类院校的选校专家, 旨在回答并解决人们关于各个大学院校的问题,并且可以使用多种语言与人交流。",
"temperature": 0.7,
"top_p": 1,
"subscribe_msg": "感谢您的关注!\n很高兴为您解答院校问题,有什么可以帮你?\n(给您提供的信息来自网络,如有出入,以学校官方解答为准)",
"use_linkai": true,
"linkai_api_key": "Link_XXXXXXXXXXXXXX"
"linkai_app_code": "eXXXXXXX",
"linkai_api_base": "https://api.link-ai.tech"
}

"wechatmp_port": 8080,由于和网站服务器80、443端口冲突,修改端口为8080,后再

(4) 运行程序

touch nohup.out                                   # 首次运行需要新建日志文件  
nohup python3 app.py & tail -f nohup.out          # 在后台运行程序并通过日志输出二维码

(5) 停止程序

netstat -anp | grep 8080                             #查看端口情况
kill -9 <pid>                                                  #根据查询端口,对应应用
ps -ef | grep app.py | grep -v grep             #查看进程的pid

三、服务器设置

1、进入宝塔系统,选择“网站”-》添加站点,填入域名,无需设置数据库、无需添加php;

2、点击站点对应的“设置”,选择“反向代理”,点击“编辑”,选择“高级功能”,代理目录:/wx  目标URL:http://127.0.0.1:8080

参考设置:


#PROXY-START/

location ^~ /wx
{
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    proxy_ssl_server_name on;
    proxy_ssl_verify off;
    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # proxy_hide_header Upgrade;

    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache

    set $static_fileB4pwmCCJ 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_fileB4pwmCCJ 1;
        expires 1m;
    }
    if ( $static_fileB4pwmCCJ = 0 )
    {
        add_header Cache-Control no-cache;
    }
}
#PROXY-END/

 

完成;

 

配置参考:


    # openai api配置
    "open_ai_api_key": "",  # openai api key
    # openai apibase,当use_azure_chatgpt为true时,需要设置对应的api base
    "open_ai_api_base": "https://api.openai.com/v1",
    "proxy": "",  # openai使用的代理
    # chatgpt模型, 当use_azure_chatgpt为true时,其名称为Azure上model deployment名称
    "model": "gpt-3.5-turbo",  # 还支持 gpt-3.5-turbo-16k, gpt-4, wenxin, xunfei
    "use_azure_chatgpt": False,  # 是否使用azure的chatgpt
    "azure_deployment_id": "",  # azure 模型部署名称
    "azure_api_version": "",  # azure api版本
    # Bot触发配置
    "single_chat_prefix": ["bot", "@bot"],  # 私聊时文本需要包含该前缀才能触发机器人回复
    "single_chat_reply_prefix": "[bot] ",  # 私聊时自动回复的前缀,用于区分真人
    "single_chat_reply_suffix": "",  # 私聊时自动回复的后缀,\n 可以换行
    "group_chat_prefix": ["@bot"],  # 群聊时包含该前缀则会触发机器人回复
    "group_chat_reply_prefix": "",  # 群聊时自动回复的前缀
    "group_chat_reply_suffix": "",  # 群聊时自动回复的后缀,\n 可以换行
    "group_chat_keyword": [],  # 群聊时包含该关键词则会触发机器人回复
    "group_at_off": False,  # 是否关闭群聊时@bot的触发
    "group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"],  # 开启自动回复的群名称列表
    "group_name_keyword_white_list": [],  # 开启自动回复的群名称关键词列表
    "group_chat_in_one_session": ["ChatGPT测试群"],  # 支持会话上下文共享的群名称
    "group_welcome_msg": "",  # 配置新人进群固定欢迎语,不配置则使用随机风格欢迎 
    "trigger_by_self": False,  # 是否允许机器人触发
    "image_create_prefix": ["画", "看", "找"],  # 开启图片回复的前缀
    "concurrency_in_session": 1,  # 同一会话最多有多少条消息在处理中,大于1可能乱序
    "image_create_size": "256x256",  # 图片大小,可选有 256x256, 512x512, 1024x1024
    # chatgpt会话参数
    "expires_in_seconds": 3600,  # 无操作会话的过期时间
    # 人格描述
    "character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
    "conversation_max_tokens": 1000,  # 支持上下文记忆的最多字符数
    # chatgpt限流配置
    "rate_limit_chatgpt": 20,  # chatgpt的调用频率限制
    "rate_limit_dalle": 50,  # openai dalle的调用频率限制
    # chatgpt api参数 参考https://platform.openai.com/docs/api-reference/chat/create
    "temperature": 0.9,
    "top_p": 1,
    "frequency_penalty": 0,
    "presence_penalty": 0,
    "request_timeout": 60,  # chatgpt请求超时时间,openai接口默认设置为600,对于难问题一般需要较长时间
    "timeout": 120,  # chatgpt重试超时时间,在这个时间内,将会自动重试
    # Baidu 文心一言参数
    "baidu_wenxin_model": "eb-instant",  # 默认使用ERNIE-Bot-turbo模型
    "baidu_wenxin_api_key": "",  # Baidu api key
    "baidu_wenxin_secret_key": "",  # Baidu secret key
    # 讯飞星火API
    "xunfei_app_id": "",  # 讯飞应用ID
    "xunfei_api_key": "",  # 讯飞 API key
    "xunfei_api_secret": "",  # 讯飞 API secret
    # claude 配置
    "claude_api_cookie": "",
    "claude_uuid": "",
    # wework的通用配置
    "wework_smart": True,  # 配置wework是否使用已登录的企业微信,False为多开
    # 语音设置
    "speech_recognition": False,  # 是否开启语音识别
    "group_speech_recognition": False,  # 是否开启群组语音识别
    "voice_reply_voice": False,  # 是否使用语音回复语音,需要设置对应语音合成引擎的api key
    "always_reply_voice": False,  # 是否一直使用语音回复
    "voice_to_text": "openai",  # 语音识别引擎,支持openai,baidu,google,azure
    "text_to_voice": "baidu",  # 语音合成引擎,支持baidu,google,pytts(offline),azure,elevenlabs
    # baidu 语音api配置, 使用百度语音识别和语音合成时需要
    "baidu_app_id": "",
    "baidu_api_key": "",
    "baidu_secret_key": "",
    # 1536普通话(支持简单的英文识别) 1737英语 1637粤语 1837四川话 1936普通话远场
    "baidu_dev_pid": "1536",
    # azure 语音api配置, 使用azure语音识别和语音合成时需要
    "azure_voice_api_key": "",
    "azure_voice_region": "japaneast",
    # elevenlabs 语音api配置
    "xi_api_key": "",    #获取ap的方法可以参考https://docs.elevenlabs.io/api-reference/quick-start/authentication
    "xi_voice_id": "",   #ElevenLabs提供了9种英式、美式等英语发音id,分别是“Adam/Antoni/Arnold/Bella/Domi/Elli/Josh/Rachel/Sam”
    # 服务时间限制,目前支持itchat
    "chat_time_module": False,  # 是否开启服务时间限制
    "chat_start_time": "00:00",  # 服务开始时间
    "chat_stop_time": "24:00",  # 服务结束时间
    # 翻译api
    "translate": "baidu",  # 翻译api,支持baidu
    # baidu翻译api的配置
    "baidu_translate_app_id": "",  # 百度翻译api的appid
    "baidu_translate_app_key": "",  # 百度翻译api的秘钥
    # itchat的配置
    "hot_reload": False,  # 是否开启热重载
    # wechaty的配置
    "wechaty_puppet_service_token": "",  # wechaty的token
    # wechatmp的配置
    "wechatmp_token": "",  # 微信公众平台的Token
    "wechatmp_port": 8080,  # 微信公众平台的端口,需要端口转发到80或443
    "wechatmp_app_id": "",  # 微信公众平台的appID
    "wechatmp_app_secret": "",  # 微信公众平台的appsecret
    "wechatmp_aes_key": "",  # 微信公众平台的EncodingAESKey,加密模式需要
    # wechatcom的通用配置
    "wechatcom_corp_id": "",  # 企业微信公司的corpID
    # wechatcomapp的配置
    "wechatcomapp_token": "",  # 企业微信app的token
    "wechatcomapp_port": 9898,  # 企业微信app的服务端口,不需要端口转发
    "wechatcomapp_secret": "",  # 企业微信app的secret
    "wechatcomapp_agent_id": "",  # 企业微信app的agent_id
    "wechatcomapp_aes_key": "",  # 企业微信app的aes_key
    # chatgpt指令自定义触发词
    "clear_memory_commands": ["#清除记忆"],  # 重置会话指令,必须以#开头
    # channel配置
    "channel_type": "wx",  # 通道类型,支持:{wx,wxy,terminal,wechatmp,wechatmp_service,wechatcom_app}
    "subscribe_msg": "",  # 订阅消息, 支持: wechatmp, wechatmp_service, wechatcom_app
    "debug": False,  # 是否开启debug模式,开启后会打印更多日志
    "appdata_dir": "",  # 数据目录
    # 插件配置
    "plugin_trigger_prefix": "$",  # 规范插件提供聊天相关指令的前缀,建议不要和管理员指令前缀"#"冲突
    # 是否使用全局插件配置
    "use_global_plugin_config": False,
    # 知识库平台配置
    "use_linkai": true,
    "linkai_api_key": "输入你记得key",
    "linkai_app_code": "输入你记得code",
    "linkai_api_base": "https://api.link-ai.chat",  # linkAI服务地址,若国内无法访问或延迟较高可改为 https://api.link-ai.tech