如何搭建并部署ChatGPT接口服务

最近有不少朋友在问用于微信的ChatGPT接口以及怎么搭建ChatGPT接口服务,本文将以一个github开源项目为例,演示在Linux下搭建ChatGPT接口服务的流程。

一、准备工作

1、一台国外服务器(Linux环境) 国内的服务器目前无法访问ChatGPT的服务。

2、开源项目:bot-on-anything(https://github.com/zhayujie/bot-on-anything)

3、ChatGPT的token,以“sk-”开头。

二、搭建环境

1、准备python3环境

由于bot-on-anything项目是基于python实现且openai对于python的版本有要求,需要版本在3.7~3.10之间,所以我们需要先准备对应的python环境,安装命令如下:

apt-get upgrade
apt-get install python3.7
ln -f -s /usr/bin/python3 /usr/bin/python3.7

首先我们更新软件源,然后安装python3.7,注意这里不能直接使用apt-get install python3来安装,该命令默认安装的是3.6版本的python,后续会出现依赖报错,在python3.7安装完成之后,通过ln命令将其链接到python3,我们在使用ln做命令链接的时候加了-f参数,是为了保证即使该系统以前存在python3的情况下依然能链接成功。

在python3.7环境安装完成后我们需要安装pip3命令,命令如下:

apt-get install python3-pip

2、克隆项目

我们可以通过命令git clone https://github.com/zhayujie/bot-on-anything将项目克隆到服务器,如果无法访问github,尝试在hosts文件中加:140.82.121.3 www.github.com,在项目克隆完毕后进入项目目录并复制配置文件:

cd bot-on-anything/
cp config-template.json config.json

通过vim config.json修改配置文件,每一个配置项的描述项目的github上都有描述,我们先修改和openai相关的:

这里将其更改为我们自己的token,需要注意的是默认的config.json文件有点问题:

bing这个配置项下面少了一个“}”,所以在更改的时候我们要么直接删除该配置项,要么添加“}”。

然后根据自己要对接的端类型,更改channel配置,默认的是terminal,比如我要对接微信公众号个人订阅号,需要更改成:

其中的token在公众号后台基本配置处设置:

3、安装依赖

我们先通过下面的命令安装依赖的openai:

pip3 install --upgrade openai

然后根据自己的需求及配置,安装其他依赖,比如我要对接微信公众号,则需要额外安装werobot

pip3 install werobot

4、测试运行

这里我们我们以默认的terminal来测试我们安装的环境是否有问题:

python3 app.py

运行效果:

不仅要在运行python3 app.py程序不报错,而且要在提问后不报程序错误才算环境没问题,上面截图中回复报错是因为我没有国外服务器,用的国内服务器做的测试,但是整个环境搭建是没有问题的。

三、后台运行接口服务

前面我们使用了python3 app.py命令来测试环境是否正常,在我们部署供外部调用的接口服务时就不能这么做,因为上面的命令运行在前台,当命令行窗口退出,则我们刚启动的接口服务也就退出了,我们需要在后台运行服务,通过hohup命令我们可以实现在后台运行命令:

nohup python3 app.py &

然后当我们再次关闭命令行窗口,重新请求接口服务,会发现接口服务依然在正常运行。

四、为接口服务设置对外域名

不出意外的话,通过上面的步骤我们的服务肯定是已经能跑起来了,但是它现在运行在一个特定的端口上,我们需要通过http://主域名:端口/http://服务器IP:端口/的方式才能访问到接口服务,这种访问方式稍微有一些不雅,而且我们需要在服务端开放这个端口外部才能正常访问,而通过反向代理的方式我们通过域名更优雅的访问接口服务,以linux为例,在域名www.example.com的配置文件中加上:

location ^~ /gpt/ {
    proxy_pass  http://127.0.0.1:8080/;
    proxy_set_header Host $proxy_host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
}

当我们访问http://www.example.com/gpt/的时候相当于访问了8080端口上的服务,而且我们还不需要对外暴露8080端口。当然我们也可以根据自己的需要将www.example.com全部请求转发到8080端口上,后续https证书的配置这里就不讲了,阿里云,腾讯云等等平台都有免费的https证书,个人用足够了。

五、问题记录

1、报错:no matching distribution found for pandas =1.2.3 (from openai)

pip的版本有问题,通过命令python3 -m pip install --upgrade pip更新即可。

2、报错:module 'openai.error' has no attribute 'Timeout'

python的版本不正确,按照上面的步骤重新安装python3

3、报错:AttributeError: module 'openai' has no attribute 'ChatCompletion'

python的版本不正确,按照上面的步骤重新安装python3

4、对接微信公众号收不到服务的响应

①、检查微信公众号服务器地址是否设置正确,服务器代码中的令牌是否和公众号后台设置的一致。

②、如果使用端口访问的检查端口是否开放了

③、检查是否将服务器的IP在微信公众号后台配置了白名单,IP白名单在公众号后台安全中心处设置:

5、个人订阅号和企业服务号的差别

个人订阅号无法突破5s回复限制,而调用ChatGPT接口普遍比较慢,所以服务端需要缓存结果做二次回复。企业服务号可以借助客服接口主动向用户推送消息,可以规避回复限制问题。

  • 支付宝二维码 支付宝
  • 微信二维码 微信

本文地址: /create-chatgpt-api-for-wechat.html

版权声明: 本文为原创文章,版权归 逐梦个人博客 所有,欢迎分享本文,转载请保留出处!

相关文章