这个博客主要介绍如何基于
GPT - Plus
用户的账号来部署API
。
整个项目是对linkedlist771/infiniteGPT4: 基于revChatGPT和IOS新推出的无限次GPT4使用实现GPT4无限次数使用的API (github.com) 的一个延伸, 在之前的项目中没有解决很重要的问题, 就是反代服务器利用的是作者部署的公网服务器。如果要自己使用的话,最好能够基于自己的服务器实现一个。所以第一步我们需要构建一个反代服务。
ChatGPT反代服务构建
反代服务器的搭建,可以参考:acheong08/ChatGPT-Proxy-V4: Simple Cloudflare bypass for ChatGPT (github.com)。
首先需要下载这个项目:
git clone git@github.com:acheong08/ChatGPT-Proxy-V4.git
笔者使用的服务器为centos
, 基于你使用的服务器的类型,不同的命令可能稍有不同,稍作调整即可。主要分为以下几步:
- 安装Go环境:
Go的安装包可以从Go官网上找到,选择一个合适的版本下载到你的CentOS服务器。例如,如果我们要下载Go 1.16.4版本,可以使用下面的命令:
wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz
然后,解压这个文件到/usr/local
:
tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz
将Go的二进制文件添加到PATH
中:
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bash_profile
source ~/.bash_profile
你可以使用go version
命令来验证Go是否安装成功。
我这里测试是成功的。
- 设置环境变量:
你需要一个ChatGPT Plus账号的PUID来设置环境变量。你可以使用下面的命令将PUID添加到环境变量中:
bashCopy codeecho "export PUID=\"user-...\"" >> ~/.bash_profile
source ~/.bash_profile
记得将”user-…”替换为你的实际PUID。
其中PUID
意思为Plus UID
也就是你的账户的ID, 可以在这里找到:chat.openai.com/api/auth/session,
- 构建和运行项目:
首先,你需要把项目代码复制到你的服务器上。你可以使用git clone
命令来完成这个步骤,如果项目代码托管在一个git仓库上的话。
在项目的根目录下,使用go build
命令构建项目:
go build
将会输出一下内容:
go build
go: downloading github.com/acheong08/endless v0.0.0-20230522010333-1359fd84c836
go: downloading github.com/bogdanfinn/fhttp v0.5.22
go: downloading github.com/bogdanfinn/tls-client v1.3.12
go: downloading github.com/gin-gonic/gin v1.9.0
go: downloading github.com/andybalholm/brotli v1.0.5
go: downloading github.com/bogdanfinn/utls v1.5.16
go: downloading golang.org/x/net v0.10.0
go: downloading github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5
go: downloading github.com/gin-contrib/sse v0.1.0
go: downloading github.com/mattn/go-isatty v0.0.19
go: downloading github.com/klauspost/compress v1.16.5
go: downloading golang.org/x/crypto v0.9.0
go: downloading golang.org/x/text v0.9.0
go: downloading github.com/go-playground/validator/v10 v10.14.0
go: downloading github.com/pelletier/go-toml/v2 v2.0.8
go: downloading github.com/ugorji/go/codec v1.2.11
go: downloading google.golang.org/protobuf v1.30.0
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading golang.org/x/sys v0.8.0
go: downloading github.com/gabriel-vasile/mimetype v1.4.2
go: downloading github.com/go-playground/universal-translator v0.18.1
go: downloading github.com/leodido/go-urn v1.2.4
...
现在,你应该可以在项目的根目录下看到一个叫做ChatGPT-Proxy-V4
的可执行文件。你可以直接运行这个文件来启动项目:
这是我的目录:
ChatGPT-Proxy-V4 docker-compose.yml Dockerfile go1.20.5.linux-amd64.tar.gz go.mod go.sum LICENSE main.go README.md
运行后, 你讲看到以下输出:
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /ping --> main.main.func1 (3 handlers)
[GIN-debug] PATCH /admin/puid --> main.main.func2 (4 handlers)
[GIN-debug] PATCH /admin/password --> main.main.func3 (4 handlers)
[GIN-debug] GET /api/*path --> main.proxy (3 handlers)
[GIN-debug] POST /api/*path --> main.proxy (3 handlers)
[GIN-debug] PUT /api/*path --> main.proxy (3 handlers)
[GIN-debug] PATCH /api/*path --> main.proxy (3 handlers)
[GIN-debug] HEAD /api/*path --> main.proxy (3 handlers)
[GIN-debug] OPTIONS /api/*path --> main.proxy (3 handlers)
[GIN-debug] DELETE /api/*path --> main.proxy (3 handlers)
[GIN-debug] CONNECT /api/*path --> main.proxy (3 handlers)
[GIN-debug] TRACE /api/*path --> main.proxy (3 handlers)
2023/06/10 05:54:46 1878014 :9090
目前,我们就部署完毕了。 注意,这里你需要打开9090
端口的防火墙,不然的话反代无法发挥作用。
sudo firewall-cmd --permanent --add-port=9090/tcp
sudo firewall-cmd --reload