最近刚换工作,这段时间一直在学习融入新工作。这篇文章是写给大家也是写给自己安装的一个复盘、学习,共勉!
Tips:本篇文章基于GitHub上已开源项目Chatgpt-on-wechat,项目地址:https://github.com/zhayujie/chatgot-on-wechat.
1、安装虚拟机(推荐安装centos7系列)
安装虚拟机这一部分就不过多赘述了,CSDN上很多详细教程,这里我安装的是Centos7.9
[haohao@node1 /]$ hostnamectl
Static hostname: node1
Icon name: computer-vm
Chassis: vm
Machine ID: 0f46be15981941ae908be2af10b3128b
Boot ID: b7f3585155ae40a4851ac176db6c439b
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
在这里有一点要跟大家说明一下,因为centos7.9自带的openssl版本是1.0.2,但是现在python3.8.5的urllib3库要求的openssl版本最低也要1.1.1。这边建议大家安装完虚拟机之后,先升级一下openssl的版本,这边推荐1.1.1即可,不然到最后运行程序的时候会提示,我最开始走到这一步的时候被这个报错卡了很久,升级了openssl3.0.1,重新编译安装python等等搞了很久,后面使用1.1.1版本的就好了,也算是给大家避一个坑吧
ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017'.
tips:升级openssl可以参考这篇文章 OpenSSL升级版本到最新(1.1.1) - 知乎 (zhihu.com)
2、安装python环境(推荐python版本在3.7-3.9)
这里推荐安装python3.8版本的,经过本人实践几乎没有问题出现。
1、首先查看centos自带的python版本,可以看到centos自带的python版本并不符合我们的要求。
[haohao@node1 /]$ python
Python 2.7.5 (default, Oct 14 2020, 14:45:30)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
2、安装python前必要的一些依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
3、安装Wget
sudo yum install wget
4、下载python安装包 我这里安装的3.8.5版本,你们可以在官网自行选择
sudo wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
5、解压下载的安装包
sudo tar xzf Python-3.8.5.tgz
6、编译和安装python(进入解压后的目录,你在哪个目录执行的解压命令就被解压在哪个目录)
进入解压目录,配置安装选项
cd Python-3.8.2
./configure --enable-optimizations --prefix=/usr/local
编译源码
sudo make
安装编译好的python tips:使用 make altinstall
而不是 make install
可以避免覆盖系统默认的 Python 版本
sudo make altinstall
创建软链接方便管理和访问不同版本的python
###############创建python软链接
sudo ln -s /usr/local/bin/python3.8 /usr/bin/python3
###############创建pip软链接
sudo ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
验证python3.8.5版本是否安装、
[root@node1 /]# python3 --version
Python 3.8.5
更新环境变量(不是必选项,但是建议这一步不要忽略,环境变量的作用是可以让你在任何目录都能执行你安装的程序)
sudo vim /etc/profile
############在末尾添加这一行,然后保存退出
export PATH="/usr/local/bin:$PATH"
############退出后执行下面的命令使更改生效
source ~/.bashrc
3、克隆项目到本地
项目作者有推荐四种部署方式,为了长时间运行,我们这里使用的是服务器部署,当然,你如果是自己测试、个人学习我也推荐你使用这个部署方式。
前面已经完成了虚拟机的安装以及python环境的部署,现在可以从GitHub克隆项目
########################克隆项目
git clone https://github.com/zhayujie/chatgpt-on-wechat
########################如果因为网络问题无法下载可以使用下面的国内镜像网站
git clone https://gitee.com/zhayujie/chatgpt-on-wechat
########################进入目录
cd chatgpt-on-wechat
复制一份当前目录下的config-templete.json文件重命名为config.json
cp config-template.json config,json
使用vim编辑config.json文件
{
"channel_type": "wx",
"model": "",
"open_ai_api_key": "YOUR API KEY", #如需使用原生的open-ai的接口或者国内中转的接口,api key填在这一栏
"text_to_image": "dall-e-2",
"voice_to_text": "openai",
"text_to_voice": "openai",
"proxy": "", #代理地址及端口,如不需要代理不填
"hot_reload": false,
"single_chat_prefix": [ #私聊触发的前置条件
"bot",
"@bot"
],
"single_chat_reply_prefix": "[bot] ", #回复触发的条件,用于区分真人
"group_chat_prefix": [
"@bot"
],
"group_name_white_list": [ #开启自动回复的群名称列表
"ChatGPT测试群",
"ChatGPT测试群2"
],
"image_create_prefix": [ #开启图片回复的前缀
"画"
],
"speech_recognition": true,
"group_speech_recognition": false,
"voice_reply_voice": false,
"conversation_max_tokens": 2500,
"expires_in_seconds": 3600,
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
"temperature": 0.7,
"subscribe_msg": "感谢您的关注!\n这里是AI智能助手,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。",
"use_linkai": false, #如需使用link ai的接口,将值改为true
"linkai_api_key": "", #使用link ai的接口时,api key填入这一栏
"linkai_app_code": "" #如果使用link ai平台应用市场的应用,将应用码填入这一栏
}
编辑好之后保存退出,然后在当前目录下执行app.py的文件。当然了,真正运行文件的时候总会提示各种错误,这种情况一般是缺少其他python文件中所需的模块,直接pip install 对应模块就行。
#因为系统有两个版本的python 我们这里需要指定运行python文件的python解释器版本
python3.8 app.py
#运行之后屏幕会输出一个二维码,使用微信扫码登录即可
当然了,你想要实现机器人自动回复肯定需要准备一个微信号,而且需要api接口。国外的openai注册就有五美元免费额度,国内的那就太多了数不过来,也可以用项目作者的link ai平台的api接口,丰俭由君哈哈。可能这篇文章有一些细节没有说到位的或者你们自己动手实践的时候有一些问题的都可以发在评论区,我们一起探讨、学习、成长。