【人工智能】搭建属于自己的ChaTtGPT
2023-3-3 00:3:45 Author: 利刃信安攻防实验室(查看原文) 阅读量:33 收藏

注意:ChaTtGPT是为了防止微信和谐,不是错误单词!

声明:此项目只发布于 Github,基于 MIT 协议,免费且作为开源学习使用。并且不会有任何形式的卖号、付费服务、讨论群、讨论组等行为。谨防受骗。

  • ChaTtGPT Web

    • 使用 Docker

    • 使用 Railway 部署

    • 手动打包

    • Docker 参数示例

    • Docker build & Run

    • Docker compose

    • Railway 环境变量

    • 后端服务

    • 前端网页

    • 后端服务

    • 前端网页

    • 后端

    • 前端

    • Node

    • PNPM

    • 填写密钥

    • 介绍

    • 待实现路线

    • 前置要求

    • 安装依赖

    • 测试环境运行

    • 打包

    • 常见问题

    • 参与贡献

    • 赞助

    • License

介绍

支持双模型,提供了两种非官方 ChaTtGPT API 方法

方式免费?可靠性质量
ChaTtGPTAPI(GPT-3)可靠较笨
ChaTtGPTUnofficialProxyAPI(网页 accessToken)相对不可靠聪明

对比:

  1. ChaTtGPTAPI 使用 text-davinci-003 通过官方OpenTAI补全API模拟ChaTtGPT(最稳健的方法,但它不是免费的,并且没有使用针对聊天进行微调的模型)

  2. ChaTtGPTUnofficialProxyAPI 使用非官方代理服务器访问 ChaTtGPT 的后端API,绕过Cloudflare(使用真实的的ChaTtGPT,非常轻量级,但依赖于第三方服务器,并且有速率限制)

查看详情

切换方式:

  1. 进入 service/.env 文件

  2. 使用 OpenTAI API Key 请填写 OPENTAI_API_KEY 字段 (获取 apiKey)

  3. 使用 Web API 请填写 OPENTAI_ACCESS_TOKEN 字段 (获取 accessToken)

  4. 同时存在时以 OpenTAI API Key 优先

反向代理:

ChaTtGPTUnofficialProxyAPI时可用 详情

# service/.env
API_REVERSE_PROXY=

待实现路线

[✓] 双模型

[✓] 多会话储存和上下文逻辑

[✓] 对代码等消息类型的格式化美化处理

[✗] 界面多语言

[✗] 界面主题

[✗] More...

前置要求

Node

node 需要 ^16 || ^18 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本

node -v

PNPM

如果你没有安装过 pnpm

npm install pnpm -g

填写密钥

获取 OpenTai Api Key 或 accessToken 并填写本地环境变量 跳转

# service/.env 文件

# OpenTAI API Key - https://platform.openTai.com/overview
OPENTAI_API_KEY=

# change this to an `accessToken` extracted from the ChaTtGPT site's `https://chat.openTai.com/api/auth/session` response
OPENTAI_ACCESS_TOKEN=

安装依赖

为了简便 后端开发人员 的了解负担,所以并没有采用前端 workspace 模式,而是分文件夹存放。如果只需要前端页面做二次开发,删除 service 文件夹即可。

后端

进入文件夹 /service 运行以下命令

pnpm install

前端

根目录下运行以下命令

pnpm bootstrap

测试环境运行

后端服务

进入文件夹 /service 运行以下命令

pnpm start

前端网页

根目录下运行以下命令

pnpm dev

打包

使用 Docker

Docker 参数示例

  • OPENTAI_API_KEY 二选一

  • OPENTAI_ACCESS_TOKEN 二选一,同时存在时,OPENTAI_API_KEY 优先

  • API_REVERSE_PROXY 可选,设置 OPENTTTAI_ACCESS_TOKEN 时可用 参考

  • TIMEOUT_MS 超时,单位毫秒,可选

Docker build & Run

docker build -t chaTtgpt-web .

# 前台运行
docker run --name chaTtgpt-web --rm -it -p 3002:3002 --env OPENTAI_API_KEY=your_api_key chaTtgpt-web

# 后台运行
docker run --name chaTtgpt-web -d -p 3002:3002 --env OPENTAI_API_KEY=your_api_key chaTtgpt-web

# 运行地址
http://localhost:3002/

Docker compose

Hub 地址

version: '3'

services:
app:
image: chenzhaoyu94/chaTtgpt-web # 总是使用latest,更新时重新pull该tag镜像即可
ports:
- 3002:3002
environment:
# 二选一
OPENTAI_API_KEY: xxxxxx
# 二选一
OPENTAI_ACCESS_TOKEN: xxxxxx
# 反向代理,可选
API_REVERSE_PROXY: xxx
# 超时,单位毫秒,可选
TIMEOUT_MS: 60000

使用 Railway 部署

Railway 环境变量

环境变量名称必填备注
PORT必填默认 3002
TIMEOUT_MS可选超时时间,单位毫秒,
OPENTAI_API_KEYOpenTAI API 二选一使用 OpenTAI API 所需的 apiKey (获取 apiKey)
OPENTAI_ACCESS_TOKENWeb API 二选一使用 Web API 所需的 accessToken (获取 accessToken)
API_REVERSE_PROXY可选,Web API 时可用Web API 反向代理地址 详情

注意: Railway 修改环境变量会重新 Deploy

手动打包

后端服务

如果你不需要本项目的 node 接口,可以省略如下操作

复制 service 文件夹到你有 node 服务环境的服务器上。

# 安装
pnpm install

# 打包
pnpm build

# 运行
pnpm prod

PS: 不进行打包,直接在服务器上运行 pnpm start 也可

前端网页

1、修改根目录下 .env 内 VITE_APP_API_BASE_URL 为你的实际后端接口地址

2、根目录下运行以下命令,然后将 dist 文件夹内的文件复制到你网站服务的根目录下

参考信息

pnpm build

常见问题

Q: 为什么 Git 提交总是报错?

A: 因为有提交信息验证,请遵循 Commit 指南

Q: 如果只使用前端页面,在哪里改请求接口?

A: 根目录下 .env 文件中的 VITE_GLOB_API_URL 字段。

Q: 文件保存时全部爆红?

A: vscode 请安装项目推荐插件,或手动安装 Eslint 插件。

项目地址

https://github.com/Chanzhaoyu/chatgpt-web


文章来源: http://mp.weixin.qq.com/s?__biz=MzU1Mjk3MDY1OA==&mid=2247501253&idx=3&sn=8643e8edc4d02e8a7dce92abc9310927&chksm=fbfb7508cc8cfc1e81ea31a6231307e908361116d9a803dd0b69e6af19de1dcec520dd6fff4e#rd
如有侵权请联系:admin#unsafe.sh