本帖最后由 hao2609451 于 2023-6-2 14:46 编辑
【ChatGPT】ChatGPT教程如何快速搭建ChatGPT网页开源版声明:基于 MIT 协议,免费且作为开源学习使用。并且不会有任何形式的卖号、付费服务、讨论群、讨论组等行为。谨防受骗。
源码在底部 Demo 界面不是最终效果,有美化
更换方式: - 进入 service/.env.example 文件,复制内容到 service/.env 文件
- 使用 OpenAI API Key 请填写 OPENAI_API_KEY 字段 (获取 apiKey)
- 使用 Web API 请填写 OPENAI_ACCESS_TOKEN 字段 (获取 accessToken)
- 同时存在时以 OpenAI API Key 优先
环境变量: 全部参数变量请查看或这里
/service/.env.example
待实现路线 [✓] 双模型 [✓] 多会话储存和上下文逻辑 [✓] 对代码等消息类型的格式化美化处理 [✓] 访问权限控制 [✓] 数据导入、导出 [✓] 保存消息到本地图片 [✓] 界面多语言 [✓] 界面主题 [✗] More... 前置要求
Node
node 需要 ^16 || ^18 || ^19 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本 node -v
PNPM 如果你没有安装过 pnpm
npm install pnpm -g
填写密钥 获取 Openai Api Key 或 accessToken 并填写本地环境变量 跳转
# service/.env 文件
# OpenAI API Key - https://platform.openai.com/overview
OPENAI_API_KEY=
# change this to an `accessToken` extracted from the ChatGPT site's `https://chat.openai.com/api/auth/session` response
OPENAI_ACCESS_TOKEN=
安装依赖 为了简便 后端开发人员 的了解负担,所以并没有采用前端 workspace 模式,而是分文件夹存放。如果只需要前端页面做二次开发,删除 service 文件夹即可。 后端 进入文件夹 /service 运行以下命令
pnpm install
前端 根目录下运行以下命令
pnpm bootstrap
测试环境运行 后端服务 进入文件夹 /service 运行以下命令
pnpm start
前端网页 根目录下运行以下命令
pnpm dev
环境变量 API 可用: - OPENAI_API_KEY 和 OPENAI_ACCESS_TOKEN 二选一 OPENAI_API_MODEL 设置模型,可选,默认:gpt-3.5-turbo OPENAI_API_BASE_URL 设置接口地址,可选,默认:https://api.openai.com ACCESS_TOKEN 可用:
- OPENAI_ACCESS_TOKEN 和 OPENAI_API_KEY 二选一,同时存在时,OPENAI_API_KEY 优先 API_REVERSE_PROXY 设置反向代理,可选
通用: - AUTH_SECRET_KEY 访问权限密钥,可选 TIMEOUT_MS 超时,单位毫秒,可选 SOCKS_PROXY_HOST 和 SOCKS_PROXY_PORT 一起时生效,可选 SOCKS_PROXY_PORT 和 SOCKS_PROXY_HOST 一起时生效,可选 HTTPS_PROXY 支持 http,https, socks5,可选 ALL_PROXY 支持 http,https, socks5,可选
打包 使用 Docker Docker 参数示例
Docker build & Run docker build -t chatgpt-web . 前台运行
docker run --name chatgpt-web --rm -it -p 3002:3002 --env OPENAI_API_KEY=your_api_key chatgpt-web
后台运行
docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEY=your_api_key chatgpt-web
运行地址
http://localhost:3002/
Docker compose
version: '3'
services:
app:
image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
ports:
- 3002:3002
environment:
# 二选一
OPENAI_API_KEY: xxxxxx
# 二选一
OPENAI_ACCESS_TOKEN: xxxxxx
# API接口地址,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_BASE_URL: xxxx
# API模型,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_MODEL: xxxx
# 反向代理,可选
API_REVERSE_PROXY: xxx
# 访问权限密钥,可选
AUTH_SECRET_KEY: xxx
# 超时,单位毫秒,可选
TIMEOUT_MS: 60000
# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_HOST: xxxx
# Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
SOCKS_PROXY_PORT: xxxx
# HTTPS 代理,可选,支持 http,https,socks5
HTTPS_PROXY: http://xxxx:7890
- OPENAI_API_BASE_URL 可选,设置 OPENAI_API_KEY 时可用
- OPENAI_API_MODEL 可选,设置 OPENAI_API_KEY 时可用
更新环境:
apt update -y && apt upgrade -y && apt install -y curl wget sudo socat
安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
创建GPT目录,创建配置文件
cd /home/ && mkdir gpt && cd gpt && nano docker-compose.yml
compose配置代码
services:
app:
image: chenzhaoyu94/chatgpt-web:main
ports:
- 3002:3002
environment:
OPENAI_API_KEY: AeiT5G6KTKpL # 用自己的API KEY
运行指令
cd /home/gpt && docker-compose up -d
创建nginx目录
mkdir -p /home/nginx
touch /home/nginx/nginx.conf
mkdir -p /home/nginx/certs
申请证书
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --register-account -m xxxx@gmail.com
~/.acme.sh/acme.sh --issue -d gpt.kjlion.ga --standalone
下载证书
~/.acme.sh/acme.sh --installcert -d gpt.kjlion.ga --key-file /home/nginx/certs/key.pem --fullchain-file /home/nginx/certs/cert.pem
编辑文件
cd /home/nginx/ && nano nginx.conf
反向代理配置,代理指定IP加端口
events {
worker_connections 1024;
}
http {
client_max_body_size 1000m;
#上传限制参数1G以内文件可上传
server {
listen 80;
server_name gpt.kjlion.ga;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name gpt.kjlion.ga;
ssl_certificate /etc/nginx/certs/cert.pem;
ssl_certificate_key /etc/nginx/certs/key.pem;
location / {
proxy_pass http://0.0.0.0:3002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
部署容器
docker run -d --name nginx -p 80:80 -p 443:443 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/certs:/etc/nginx/certs -v /home/nginx/html:/usr/share/nginx/html nginx:latest
查看运行状态
docker ps -a
开机自启动
docker update --restart=always nginx
docker update --restart=always gpt-app-1
|