Use Vuepress to generate a static site for docs.

This commit is contained in:
Rafi
2023-04-11 22:08:16 +08:00
parent e9f554dc4e
commit 1d7098a0cb
24 changed files with 1495 additions and 206 deletions

View File

@@ -1,207 +1,39 @@
<div align="center">
<h1>ChatGPT UI</h1>
</div>
# 介绍
[English](../../README.md) | [中文](./docs/zh/README.md)
ChatGPT UI 是一个非官方的 ChatGPT Web 客户端。它支持多用户多语言多种数据库连接进行数据持久化存储例如Mysql、PostgreSQL 和 Sqlite 等。
用户指南: [https://wongsaang.github.io/chatgpt-ui-docs/zh/](https://wongsaang.github.io/chatgpt-ui-docs/zh/)
本项目项目包括客户端和服务端两部分。
ChatGPT Web 客户端,支持多用户,支持 Mysql、PostgreSQL 等多种数据库连接进行数据持久化存储,支持多语言。提供 Docker 镜像和快速部署脚本。
本项目的服务端:[https://github.com/WongSaang/chatgpt-ui-server](https://github.com/WongSaang/chatgpt-ui-server)
https://user-images.githubusercontent.com/46235412/227156264-ca17ab17-999b-414f-ab06-3f75b5235bfe.mp4
- 客户端,基于 [Nuxt](https://nuxt.com/),项目地址:[https://github.com/WongSaang/chatgpt-ui](https://github.com/WongSaang/chatgpt-ui)
- 服务端,基于 [Django](https://djangoproject.com/),项目地址:[https://github.com/WongSaang/chatgpt-ui-server](https://github.com/WongSaang/chatgpt-ui-server)
## 📢 更新
## 功能与特性
<details open>
<summary><strong>2023-04-06</strong></summary>
客户端改成服务端渲染SSR的方式部署现在可以使用环境变量了可用环境变量请看下方 docker-compose 配置。提升了首屏加载速度,减少白屏时间
</details>
### 客户端
- 用户系统,支持用户注册、登录、修改密码等。
- 用户界面多语言,支持多种语言
- 数据持久化,支持 Mysql、PostgreSQL 和 Sqlite 等数据库。
- 异步对话,支持多个对话同时进行。
- 历史对话管理。
- 持续聊天,让 ChatGPT 客户历史聊天记录回答问题,得出更好的答案。
- 网页搜索能力,让 ChatGPT 获取最新信息。
- 便捷的工具,支持一键复制消息和代码块,以及重新编辑消息等。
- 常用指令管理,用户可存储和编辑自己的常用指令。
<details open>
<summary><strong>2023-03-27</strong></summary>
🚀 支持 gpt-4 模型。你可以在前端的“模型参数”中选择模型gpt-4 模型需要通过 openai 的白名单才能使用。
</details>
<details open>
<summary><strong>2023-03-23</strong></summary>
增加网页搜索能力,使得 ChatGPT 生成的回答更与时俱进!
该功能默认处于关闭状态,你可以在管理后台的 `Chat->Settings` 中开启它,在 Settings 中有一个 `open_web_search` 的记录,把它的值设置为 True。
</details>
<details open>
<summary><strong>2023-03-15</strong></summary>
在管理后台增加 `open_registration` 设置项,用于控制是否开放用户注册。你可以登录管理后台,在 `Chat->Setting` 中看到这个设置项,默认是 `True` (允许用户注册),如果不需要,请改成 `False`
</details>
<details>
<summary><strong>2023-03-04</strong></summary>
**使用最新的官方聊天模型** `gpt-3.5-turbo`
**🎉🎉🎉 提供一个 shell 脚本,用于快速部署到服务器** [使用方法](#one-click-depolyment)
</details>
<details>
<summary><strong>2023-02-24</strong></summary>
V2 是一个重要的更新,将后端功能分离为一个独立的项目,托管在 [chatgpt-ui-server](https://github.com/WongSaang/chatgpt-ui-server), 该项目使用基于 Python 的 Django 框架。
如果您仍然希望使用旧版本,请访问 [v1 branch](https://github.com/WongSaang/chatgpt-ui/tree/v1) (不推荐,不再更新).
</details>
## V2 的功能特性:
- 😉 前后端分离,后端使用基于 Python 的 Django 框架。
- 😘 用户身份验证,支持多个用户。
- 😀 能够将数据存储在外部数据库中,支持 Mysql、PostgreSQL 等数据库(默认为 Sqlite
- 😎 持续对话让AI根据上下文回答问题。
### 服务端
- 服务端拥有一个管理面板
- 用户管理
- 对话和消息管理
- 常用配置
## 🚀 一行命令部署到服务器 <a name="one-click-depolyment"></a>
## 初衷
注意:此脚本仅在 Ubuntu Server 22.04 LTS 上验证过
自从使用 ChatGPT ,它已经成为工作中的好帮手。可惜的是,就像大家知道的,它在有些地方无法访问。但好在 OpenAI 开放了 API于是我开始为自己写用户界面
```bash
bash <(curl -Ls https://raw.githubusercontent.com/WongSaang/chatgpt-ui/main/deployment.sh)
```
> 世上无难事,只怕有心人。
> 如果您拥有一个域名,可以使用 DNS 解析将其指向服务器的 IP 地址。当然,直接使用服务器的 IP 地址也是可以的
> 在脚本执行期间,会提示您输入域名。如果您没有域名,可以直接输入服务器的 IP 地址。
后来,有多位朋友询问我怎么样才能使用 ChatGPT因为他们没有技术能力。于是我又着手于多用户系统的开发这样除了自己用还能帮助到身边的亲朋好友
### 部署完成之后
访问 `http(s)://your.domain:9000/admin` / IP `http(s)://123.123.123.123:9000/admin` 登录管理面板。
默认超级用户: `admin`
默认密码: `password`
在可以开始聊天之前,您需要添加一个 OpenAI 的 API 密钥。在管理面板的设置模型中,添加一个名称为 openai_api_key 的记录,将值设置为您的 API 密钥。
现在可以访问客户端地址 `http(s)://your.domain` / `http://123.123.123.123` 开始聊天。
🎉🎉🎉 享受吧!
## 通过 Docker Compose 快速开始
以下是一个 docker-compose.yml 模板,您可以使用它来快速启动服务。
```yaml
version: '3'
services:
client:
image: wongsaang/chatgpt-ui-client:latest
environment:
- SERVER_DOMAIN=http://backend-web-server
# - NUXT_PUBLIC_APP_NAME='ChatGPT UI' # APP 名称
# - NUXT_PUBLIC_TYPEWRITER=true # 是否开启 打字机 效果
# - NUXT_PUBLIC_TYPEWRITER_DELAY=50 # 打字机效果的延迟时间单位毫秒默认50
depends_on:
- backend-web-server
ports:
- '80:80'
networks:
- chatgpt_ui_network
backend-wsgi-server:
image: wongsaang/chatgpt-ui-wsgi-server:latest
environment:
- APP_DOMAIN=${APP_DOMAIN:-localhost:9000} # CSRF 白名单,在这里设置为 chatgpt-ui-web-server 的地址+端口, 默认: localhost:9000
- SERVER_WORKERS=3 # gunicorn 的工作进程数,默认为 3
- WORKER_TIMEOUT=180 # 请求超时时间,默认为 180 秒
#- DB_URL=postgres://postgres:postgrespw@localhost:49153/chatgpt # 连接外部数据库,如果不设置这个参数,则默认使用内置的 Sqlite。需要注意的是如果不连接外部数据库数据将在容器销毁后丢失。链接格式请看下面的 DB_URL 格式对照表
#- OPENAI_API_PROXY=https://openai.proxy.com/v1 # https://api.openai.com/v1 的代理地址
- DJANGO_SUPERUSER_USERNAME=admin # 默认超级用户
- DJANGO_SUPERUSER_PASSWORD=password # 默认超级用户的密码
- DJANGO_SUPERUSER_EMAIL=admin@example.com # 默认超级用户邮箱
- ACCOUNT_EMAIL_VERIFICATION=none # 邮箱验证方式,可选值: none, optional, mandatory. 默认为 optional。如果你不需要验证用户的邮箱可以设置为 none。
# 如果您想使用电子邮件验证功能,需要配置以下参数:
# - EMAIL_HOST=SMTP server address
# - EMAIL_PORT=SMTP server port
# - EMAIL_HOST_USER=
# - EMAIL_HOST_PASSWORD=
# - EMAIL_USE_TLS=True
# - EMAIL_FROM=no-reply@example.com #默认发件邮箱地址
ports:
- '8000:8000'
networks:
- chatgpt_ui_network
backend-web-server:
image: wongsaang/chatgpt-ui-web-server:latest
environment:
- BACKEND_URL=http://backend-wsgi-server:8000
ports:
- '9000:80'
depends_on:
- backend-wsgi-server
networks:
- chatgpt_ui_network
networks:
chatgpt_ui_network:
driver: bridge
```
### DB_URL 格式对照表
| 数据库 | 链接 |
|----------------------|--------------------------------------------------|
| PostgreSQL | ``postgres://USER:PASSWORD@HOST:PORT/NAME`` |
| MySQL | ``mysql://USER:PASSWORD@HOST:PORT/NAME`` |
| SQLite | ``sqlite:///PATH`` |
### 设置 API 密钥
访问 `http(s)://your.domain:9000/admin` / IP `http(s)://123.123.123.123:9000/admin` 登录管理面板。
默认超级用户: `admin`
默认密码: `password`
在可以开始聊天之前,您需要添加一个 OpenAI 的 API 密钥。在管理面板的设置模型中,添加一个名称为 openai_api_key 的记录,将值设置为您的 API 密钥。
现在可以访问客户端地址 `http(s)://your.domain` / `http://123.123.123.123` 开始聊天。
## 续杯咖啡
> 如果对您有帮助,也是在帮助我自己.
如果你想支持我,给我续杯咖啡吧 ❤️ [https://www.buymeacoffee.com/WongSaang](https://www.buymeacoffee.com/WongSaang)
<p align="center">
<img height="150" src="https://github.com/WongSaang/chatgpt-ui/blob/main/demos/bmc_qr.png?raw=true"/>
</p>
## Development
### Setup
Make sure to install the dependencies:
```bash
# yarn
yarn install
```
### Development Server
Start the development server on http://localhost:3000
```bash
yarn dev
```
### Production
Build the application for production:
```bash
yarn build
```
项目开源后,有很多人提了 issue也有人提了 PR项目就发展到如今的样子。我在这个过程中也学到了很多正如我一直坚信的帮助他人也是帮助自己。

View File

@@ -0,0 +1,7 @@
# 续杯咖啡
> 如果这个项目对您有帮助,这也是在帮助我自己。
如果你想支持我,给我续杯咖啡吧 ❤️ [https://www.buymeacoffee.com/WongSaang](https://www.buymeacoffee.com/WongSaang)
![Buy Me A Coffee](/images/bmc_qr.png)

View File

@@ -0,0 +1,80 @@
# 配置参考
## 数据库
后端默认使用内置的 Sqlite 来存储数据,如果不连接外部数据库,数据将在容器销毁后丢失。
`chatgpt-ui-wsgi-server` 镜像提供环境变量 `DB_URL` 来配置与外部数据库的连接,以下是 `DB_URL` 的链接格式对照表。
| 数据库 | 链接 |
|----------------------|--------------------------------------------------|
| PostgreSQL | postgres://USER:PASSWORD@HOST:PORT/DATABASE_NAME |
| MySQL | mysql://USER:PASSWORD@HOST:PORT/DATABASE_NAME |
| SQLite | sqlite:///PATH |
例如我使用 PostgreSQL则配置如下
```
backend-wsgi-server:
image: wongsaang/chatgpt-ui-wsgi-server:latest
environment:
- DB_URL=postgres://postgres:postgrespw@localhost:49153/chatgpt
```
## 邮箱验证
如果你开放用户注册功能,并需要向用户发送邮箱激活链接,需要在 `wsgi-server` 服务中配置以下环境变量:
| 参数 | 说明 | 默认值 |
|----------------------|--------------------------------------------------|-----|
| ACCOUNT_EMAIL_VERIFICATION | 邮箱验证方式,可选值: none, optional, mandatory | optional |
| EMAIL_HOST | SMTP 服务器地址 | smtp.mailgun.org |
| EMAIL_PORT | SMTP 服务器端口号 | 587 |
| EMAIL_HOST_USER | 用户名 | - |
| EMAIL_HOST_PASSWORD | 密码 | - |
| EMAIL_USE_TLS | 是否加密 | True |
| EMAIL_FROM | 发件邮箱 | webmaster@localhost |
## API 代理
如果您的网络无法请求 OpenAI 的 API 地址,您可以在 `wsgi-server` 服务中配置代理,如何搭建代理服务,需要您自行搜索。
例如:
```
backend-wsgi-server:
image: wongsaang/chatgpt-ui-wsgi-server:latest
environment:
- OPENAI_API_PROXY=https://openai.proxy.com/v1 # 注意,域名后面需要带上 v1
```
## 后端 CSRF 白名单
如果你在访问管理后台的时候遇到 `CSRF verification failed`,可能你的 `APP_DOMAIN` 没有配置对。在 `wsgi-server` 服务下有个环境变量 `wsgi-server`。 它的值应该是 `backend-web-server` 的地址+端口, 默认: `localhost:9000`
假如我把 `chagpt.com` 这个域名解析到了服务器,并且我的 `backend-web-server` 服务绑定了 9000 这个端口。正确的配置如下:
```
backend-wsgi-server:
image: wongsaang/chatgpt-ui-wsgi-server:latest
environment:
- APP_DOMAIN=chagpt.com:9000
```
## 客户端配置
| 参数 | 说明 | 默认值 |
|----------------------|-------------------------------------------|---------------------------|
| SERVER_DOMAIN | 服务端地址 | http://backend-web-server |
| NUXT_PUBLIC_APP_NAME | 应用名称 | ChatGPT UI |
| NUXT_PUBLIC_TYPEWRITER | 是否开启 打字机 效果[true/false]| true |
| NUXT_PUBLIC_TYPEWRITER_DELAY | 打字机效果的延迟时间,单位:毫秒| 50 |
## 用户注册控制
部署完整后,在管理后台的 `Chat->Setting` 下面有 `open_registration` 设置项,用于控制是否开放用户注册。默认是 `True` (允许用户注册),如果不需要,请改成 `False`
## 网页搜索功能控制
该功能默认处于关闭状态,你可以在管理后台的 `Chat->Settings` 中开启它,在 Settings 中有一个 `open_web_search` 的设置项,把它的值设置为 `True`

View File

@@ -0,0 +1,62 @@
# 开发指南
## 前端
所需技能:[Vue](https://vuejs.org/)、[Nuxt](https://nuxt.com/)
项目地址:[https://github.com/WongSaang/chatgpt-ui](https://github.com/WongSaang/chatgpt-ui)
### 环境准备
安装最新稳定版 node.js如果需要打包成 docker 镜像,还需要安装 docker。
### 安装依赖
```
yarn install
```
### 启动开发服务
```
yarn dev
```
### 构建
```
yarn build
```
### 打包成 docker 镜像
```
docker build -t image-name:latest .
```
## 后端
所需技能:[Python](https://www.python.org/)、[Django](https://djangoproject.com/)
项目地址:[https://github.com/WongSaang/chatgpt-ui-server](https://github.com/WongSaang/chatgpt-ui-server)
### 环境准备
安装Python、pip/pipenv如果需要打包成 docker 镜像,还需要安装 docker。
### 安装依赖
```
pip install -r requirements.txt
```
### 启动开发服务
```
python manage.py runserver
```
### 打包成 docker 镜像
```
docker build -t image-name:latest .
```

13
docs/zh/guide/problems.md Normal file
View File

@@ -0,0 +1,13 @@
# 遇到问题
## 搜索问题
当你在使用项目时,如果遇到了问题,可以在项目的 [Issues](https://github.com/WongSaang/chatgpt-ui/issues) 页面搜索相关的关键词,看看其他人是否遇到过相同的问题以及解决方案。
## 提 issue
如果没有找到解决方案,可以通过提交 Issue 来与项目维护者交流。[提交Issue](https://github.com/WongSaang/chatgpt-ui/issues/new)
**注意**
标题应该简单明了,描述应该尽可能详细地描述问题或者建议。如果可能,最好提供复现步骤和截图。

View File

@@ -0,0 +1,112 @@
# 快速开始
本项目提供了相关的 docker 镜像,你需要一个 vps 来部署,当然你也可以在本地的电脑上部署。需要注意的是,如果你的网络无法请求 OpenAI 的 API 地址,您需要配置代理。如果你想开放给其他用户使用,最好还需要一个域名,并将域名解析到服务器。
您还需要一个 OpenAI 的API Key网上有获取多种方案请自行搜索。
## 通过脚本快速部署
*对于技术知识了解不多的选手,如果你看不懂下面的内容,可以看我之前写的博客文章[《一行命令部署自己的ChatGPT客户端》](https://wongsnotes.com/p/deploying-your-own-chatgpt-client-with-one-line-of-command/)*
**注意:此脚本目前仅在 Ubuntu Server 22.04 LTS 上验证过。**
```
bash <(curl -Ls https://raw.githubusercontent.com/WongSaang/chatgpt-ui/main/deployment.sh)
```
## 通过 Docker Compose 部署
### 准备 docker-compose.yml
项目中提供了一个 `docker-compose.yml` 示例,如果你想自定义配置,请看 [配置参考](/zh/guide/configuration) 部分。
你可以通过下方链接下载 `docker-compose.yml` 模板到本地或服务器:
[https://raw.githubusercontent.com/WongSaang/chatgpt-ui/main/docker-compose.yml](https://raw.githubusercontent.com/WongSaang/chatgpt-ui/main/docker-compose.yml)
也可以手动创建 `docker-compose.yml` 文件,然后复制下面的内容到文件中:
```
version: '3'
services:
client:
image: wongsaang/chatgpt-ui-client:latest
environment:
- SERVER_DOMAIN=http://backend-web-server
# - NUXT_PUBLIC_APP_NAME='ChatGPT UI' # APP 名称
# - NUXT_PUBLIC_TYPEWRITER=true # 是否开启 打字机 效果
# - NUXT_PUBLIC_TYPEWRITER_DELAY=50 # 打字机效果的延迟时间单位毫秒默认50
depends_on:
- backend-web-server
ports:
- '80:80'
networks:
- chatgpt_ui_network
backend-wsgi-server:
image: wongsaang/chatgpt-ui-wsgi-server:latest
environment:
- APP_DOMAIN=${APP_DOMAIN:-localhost:9000} # CSRF 白名单,在这里设置为 chatgpt-ui-web-server 的地址+端口, 默认: localhost:9000
- SERVER_WORKERS=3 # gunicorn 的工作进程数,默认为 3
#- DB_URL=postgres://postgres:postgrespw@localhost:49153/chatgpt # 连接外部数据库,如果不设置这个参数,则默认使用内置的 Sqlite。需要注意的是如果不连接外部数据库数据将在容器销毁后丢失。链接格式请看下面的 DB_URL 格式对照表
#- OPENAI_API_PROXY=https://openai.proxy.com/v1 # https://api.openai.com/v1 的代理地址
- DJANGO_SUPERUSER_USERNAME=admin # 默认超级用户
- DJANGO_SUPERUSER_PASSWORD=password # 默认超级用户的密码
- DJANGO_SUPERUSER_EMAIL=admin@example.com # 默认超级用户邮箱
- ACCOUNT_EMAIL_VERIFICATION=none # 邮箱验证方式,可选值: none, optional, mandatory. 默认为 optional。如果你不需要验证用户的邮箱可以设置为 none。
# 如果您想使用电子邮件验证功能,需要配置以下参数:
# - EMAIL_HOST=SMTP server address
# - EMAIL_PORT=SMTP server port
# - EMAIL_HOST_USER=
# - EMAIL_HOST_PASSWORD=
# - EMAIL_USE_TLS=True
# - EMAIL_FROM=no-reply@example.com #默认发件邮箱地址
ports:
- '8000:8000'
networks:
- chatgpt_ui_network
backend-web-server:
image: wongsaang/chatgpt-ui-web-server:latest
environment:
- BACKEND_URL=http://backend-wsgi-server:8000
ports:
- '9000:80'
depends_on:
- backend-wsgi-server
networks:
- chatgpt_ui_network
networks:
chatgpt_ui_network:
driver: bridge
```
### 启动服务
你可以自行修改配置后,运行下面的命令来启动服务。
```
docker-compose up --pull always -d
```
这个命令用于启动 Docker Compose 配置中的服务。具体的参数含义如下:
- `up`:启动 Docker Compose 配置中的服务。
- `--pull always`:每次启动服务前,都会从 Docker 镜像仓库中拉取最新版本的镜像。这样可以确保使用的镜像始终是最新的。
- `-d`:在后台运行服务。如果不加这个参数,服务会在当前终端窗口中运行,直到用户手动停止服务。
## 部署完成之后
访问 `http(s)://your.domain:9000/admin` 或 IP `http(s)://123.123.123.123:9000/admin` 登录管理面板。
默认超级用户: **admin**
默认密码: **password**
在可以开始聊天之前,您需要添加一个 OpenAI 的 API 密钥。在管理面板的设置模型中,有一个名称为 `openai_api_key` 的记录,将值设置为您的 API 密钥。
现在可以访问客户端地址 `http(s)://your.domain` 或 IP `http://123.123.123.123` 开始聊天。
🎉🎉🎉 祝开心!