云服务器上部署chatGPT

  ChatGPT是一种人工智能聊天机器人,它可以进行基于文本的对话,通过机器学习和自然语言处理技术,理解用户提出的问题、意图和情感,并产生相应的文本回复。ChatGPT使用了GPT模型,即Generative Pre-trained Transformer模型,这是一种预训练的神经语言生成模型,利用大规模的语料库进行学习,可以生成高质量、连贯、富有逻辑的语句。ChatGPT可以应用在多个领域,例如客户服务、教育、医疗等,为用户提供定制化的解决方案和回答,同时也可以作为自然语言处理、语言生成技术的研究工具。
  OpenAI为ChatGPT提供了API调用服务,使得用户可以通过HTTP请求与ChatGPT进行对话。基于此,众多开发者纷纷施展拳脚开发出很多可以部署的Web应用或小程序。这里推荐两个比较方便部署的项目:
  川虎ChatGPT界面简洁、使用方便、支持多用户登录和历史记录加载、功能丰富且能够非常方便的在本地和服务器部署。下图展示了川虎ChatGPT的界面:

  ChatGPT Next Web界面美观,支持多个对话窗口、支持多平台部署,使用体验甚至优于chatGPT官方网站。下图展示了ChatGPT Next Web项目精心设计的UI界面:

  本文将介绍如何快速在云服务器上部署川虎ChatGPT服务和ChatGPT Next Web,该教程仅供个人学习使用,并不适合商用或生产环境下部署。

川虎ChatGPT

环境准备

连接服务器

  根据自己的习惯使用Xshell或者VS Code连接到远程服务器进行部署。VS Code连接远程服务器的方法戳这里

科学上网

  调用ChatGPT的API服务需要科学上网,因此,需要准备对应的科学上网工具。这里推荐一下GLaDOS,认证教育邮箱可以领取一年的免费额度。最主要的原因是,这个工具支持多种操作系统的安装和应用。
  注册安装后,可以在官方的教程中找到在终端中配置和启动的方法说明。
  注册时,填写邀请码可以兑换天数:VKUQC-C22XW-BKF1Y-WSLX9

Python环境

  上述项目是使用Python实现的,需要Python的相关环境,推荐使用Miniconda创建Python的虚拟环境。Miniconda的安装和使用方法戳这里

Tmux终端复用

  部署该项目需要使用科学上网工具,还需要使用Python环境执行Python程序。推荐使用Tmux终端复用工具创建一个会话,执行上述两个任务。Tmux的安装和使用方法戳这里

项目部署

克隆仓库

  克隆仓库到服务器上,可以通过两种方式完成仓库的克隆:
  方法一
  在GitHub中下载代码的压缩包后使用ftp工具上传到服务器。如果使用VS Code远程连接服务器,其Remote-ssh插件支持拖拽上传(上传的文件需要用VS Code打开其所在的目录)。
  方法二
  根据科学上网工具的使用方法,在终端中直接使用git命令克隆仓库到本地(视个人部署环境决定是否要使用代理),命令如下:

git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git --config "http.proxy=127.0.0.1:7890"

  本文假设仓库下载后存放的文件目录为ChuanhuChatGPT

安装依赖

  首先,使用Miniconda创建一个虚拟环境,将其命名为chatGPT并指定Python版本为3.10,命令如下:

conda create -n chatGPT python=3.10

  然后,激活虚拟环境并安装依赖,命令如下:

# 激活虚拟环境
conda activate chatGPT
# 在ChuanhuChatGPT目录下执行
pip install -r requirements.txt 

配置参数

  创建config.json配置文件,并填写相关参数(见仓库中的config_example.json)。主要的配置项有openai_api_keyhttps_proxyserver_nameusers

  • 如果使用了glados作为科学上网工具,那么https_proxy = http://127.0.0.1:7890
  • 配置server_name"0.0.0.0"

运行服务

  使用Tmux创建一个新的会话,用于运行科学上网工具和ChuanhuChatbot.py程序。首先,使用tmux命令创建一个名字为chatGPT的新会话:

tmux new -s chatGPT

  启动科学上网工具(在clash对应的目录下):

./clash-linux-amd64-v1.10.0 -f glados.yaml -d .

  使用Ctrl+b c快捷键新建一个窗口用于运行Python程序,执行方式为:

# 激活虚拟环境
conda activate chatGPT
# 运行可执行程序
python ChuanhuChatbot.py

  最后,运行成功后可以使用Ctrl+b d快捷键将tmux的会话挂在后台执行。

访问服务

  可以通过IP:端口的方式访问搭建好的web服务;也可以将域名解析到服务器的IP地址后使用域名:端口的方式进行访问。其中,默认端口为7860。另外,因为本人不熟悉ngix,所以没有使用反向代理。

常见问题

  推荐将glados配置文件中访问openai的规则修改为使用美国节点以保证稳定性,如下所示:

- DOMAIN-SUFFIX,openai.com,GLaDOS-US-01
- DOMAIN,openaiapi-site.azureedge.net,GLaDOS-US-01

  如果出现其他问题,建议查看ChuanhuChatGPT的官方issues

ChatGPT Next Web

  ChatGPT Next Web项目拥有多种语言的部署文档说明,超级推荐使用Docker在个人服务器上进行部署。

安装Docker

  Docker的安装和使用方法戳这里

拉取镜像并运行

  我们可以使用docker pull命令拉取镜像,如下所示:

docker pull yidadaa/chatgpt-next-web

  紧接着,我们使用以下命令运行容器:

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e CODE="页面访问密码" \
   yidadaa/chatgpt-next-web

  容器启动后,服务自动在后台运行。上述命令中,可以通过-p指定主机端口到容器端口的映射,可以根据服务器的使用情况自定义端口。另外,该项目也支持使用-e进行环境变量的配置,项目中的环境变量如下表所示:

环境变量 选项 变量值 说明
OPENAI_API_KEY 必填 sk-xxxxxxxx openai的api key
CODE 可选 访问密码 可以使用逗号隔开多个密码
BASE_URL 可选 https://api.openai.com 默认openAI的URL,可以配置自己的代理地址
OPENAI_ORG_ID 可选 openAI中的组织ID
HIDE_USER_API_KEY 可选 1 如何不想让用户自行填入api key,设置值为1
DISABLE_GPT4 可选 1 如果不想让用户使用GPT-4模型,设置值为1
HIDE_BALANCE_QUERY 可选 1 如果不想让用户查询余额,设置值为1

  正常启动容器后,我们就可以使用IP:端口访问该服务。
  PS:记得在服务器上放行相应的端口

关于API_Key

    如果不方便购买openai的账号或者PLUS会员,可以尝试使用转发的API——佩奇GPT商店,使用方法参见连接的详情介绍。
  将佩奇GPT商店的用量查询地址挂在这里——https://api.chatanywhere.org/,川虎的项目中也能够显示API用量,与查询结果基本一致。


当珍惜每一片时光~