> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/mckaywrigley/chatbot-ui) · [上游 README](https://github.com/mckaywrigley/chatbot-ui/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
# Chatbot UI
面向所有人的开源 AI 聊天应用。
## Demo
在此查看最新演示 [here](https://x.com/mckaywrigley/status/1738273242283151777?s=20).
## Updates
大家好!我已收到大家的反馈,正在努力推进一次重大更新。
更简单的部署方式、更好的后端兼容性,以及改进的移动端布局等功能即将推出。
很快回来。
-- Mckay
## Official Hosted Version
无需自行托管即可使用 Chatbot UI!
在此查找 Chatbot UI 的官方托管版本 [here](https://chatbotui.com).
## Sponsor
如果你觉得 Chatbot UI 有用,请考虑 [sponsoring](https://github.com/sponsors/mckaywrigley) 我以支持我的开源工作 :)
## Issues
我们将 "Issues" 限制为与代码库相关的实际问题。
我们收到了过多与功能请求、云服务商问题等类似的问题。
如果你在设置等方面遇到问题,请参阅上方 "Discussions" 标签页中的 "Help" 部分。
与代码库无关的 Issue 可能会被立即关闭。
## Discussions
我们强烈鼓励你参与上方的 "Discussions" 标签页!
Discussions 是提问、分享想法和获取帮助的好地方。
很可能如果你有某个问题,其他人也有同样的问题。
## Legacy Code
Chatbot UI 最近已更新至 2.0 版本。
1.0 版本的代码可在 `legacy` 分支上找到。
## Updating
在你本地 Chatbot UI 仓库根目录的终端中,运行:
```bash
npm run update
```
如果你运行的是托管实例,还需要运行:
```bash
npm run db-push
```
以将最新迁移应用到你的线上数据库。
## Local Quickstart
按照以下步骤在本地运行你自己的 Chatbot UI 实例。
你可以在此观看完整视频教程 [here](https://www.youtube.com/watch?v=9Qq3-7-HNgw).
### 1. Clone the Repo
```bash
git clone https://github.com/mckaywrigley/chatbot-ui.git
```
### 2. Install Dependencies
在你本地 Chatbot UI 仓库根目录打开终端并运行:
```bash
npm install
```
### 3. Install Supabase & Run Locally
#### Why Supabase?
此前,我们使用本地浏览器存储来保存数据。然而,出于以下几个原因,这并不是一个好的解决方案:
- 安全问题
- 存储空间有限
- 限制多模态(multi-modal)使用场景
我们现在使用 Supabase,因为它易于使用、开源、基于 Postgres,并且为托管实例提供免费套餐。
未来我们将支持其他服务商,为你提供更多选择。
#### 1. Install Docker
你需要安装 Docker 才能在本地运行 Supabase。你可以在此 [here](https://docs.docker.com/get-docker) 免费下载。
#### 2. Install Supabase CLI
**MacOS/Linux**
```bash
brew install supabase/tap/supabase
```
**Windows**
```bash
scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabase
```
#### 3. Start Supabase
在你本地 Chatbot UI 仓库根目录的终端中,运行:
```bash
supabase start
```
### 4. Fill in Secrets
#### 1. Environment Variables
在你本地 Chatbot UI 仓库根目录的终端中,运行:
```bash
cp .env.local.example .env.local
```
通过运行以下命令获取所需值:
```bash
supabase status
```
Note: 对 `NEXT_PUBLIC_SUPABASE_URL` 使用来自 `supabase status` 的 `API URL`
现在前往你的 `.env.local` 文件并填写这些值。
如果设置了该环境变量,用户设置中的对应输入框将被禁用。
#### 2. SQL Setup
在第 1 个迁移文件 `supabase/migrations/20240108234540_setup.sql` 中,你需要将 2 个值替换为上面获取的值:
- `project_url`(第 53 行):如果你不更改 `config.toml` 文件中的 `project_id`,则 `http://supabase_kong_chatbotui:8000`(默认值)可以保持不变
- `service_role_key`(第 54 行):该值来自运行 `supabase status`
这可以防止存储文件无法被正确删除的问题。
### 5. Install Ollama (optional for local models)
按照此处的说明操作 [here](https://github.com/jmorganca/ollama#macos).
### 6. Run app locally
在你本地 Chatbot UI 仓库根目录的终端中,运行:
```bash
npm run chat
```
你的本地 Chatbot UI 实例现在应已在 [http://localhost:3000](http://localhost:3000). 运行。请务必使用兼容的 Node 版本(即 v18)。
你可以在 [http://localhost:54323/project/default/editor](http://localhost:54323/project/default/editor). 查看后端 GUI。
## Hosted Quickstart
按照以下步骤在云端运行你自己的 Chatbot UI 实例。
视频教程即将推出。
### 1. Follow Local Quickstart
重复上文 "Local Quickstart" 中的步骤 1-4。
你的本地实例和托管实例应使用不同的仓库。
在 GitHub 上为你的 Chatbot UI 托管实例创建一个新仓库,并将代码推送到该仓库。
### 2. Setup Backend with Supabase
#### 1. Create a new project
前往 [Supabase](https://supabase.com/) 并创建一个新项目。
#### 2. Get Project Values
进入项目仪表板后,点击左下角最下方的 "Project Settings" 图标标签页。
在此你可以获取以下环境变量的值:
- `Project Ref`:在 "General settings" 中以 "Reference ID" 显示
- `Project ID`:在你的项目仪表板 URL 中(例如:https://supabase.com/dashboard/project//settings/general)
仍在 "Settings" 中时,点击左侧的 "API" 文本标签页。
在此你可以获取以下环境变量的值:
- `Project URL`:在 "API Settings" 中以 "Project URL" 显示
- `Anon key`:在 "Project API keys" 中以 "anon public" 显示
- `Service role key`:在 "Project API keys" 中以 "service_role" 显示(提醒:请像对待密码一样保管!)
#### 3. Configure Auth
接下来,点击最左侧的 "Authentication" 图标标签页。
在文本标签页中,点击 "Providers",并确保 "Email" 已启用。
我们建议为你自己的个人实例关闭 "Confirm email"。
#### 4. Connect to Hosted DB
打开你的 Chatbot UI 托管实例仓库。
在第 1 个迁移文件 `supabase/migrations/20240108234540_setup.sql` 中,你需要将 2 个值替换为上面获取的值:
- `project_url`(第 53 行):使用上面的 `Project URL` 值
- `service_role_key`(第 54 行):使用上面的 `Service role key` 值
现在,在你本地 Chatbot UI 仓库根目录打开终端。我们将在此执行几条命令。
通过运行以下命令登录 Supabase:
```bash
supabase login
```
接下来,使用上面获取的 "Project ID" 运行以下命令以关联你的项目:
```bash
supabase link --project-ref
```
你的项目现在应已关联。
最后,通过运行以下命令将数据库推送到 Supabase:
```bash
supabase db push
```
你的托管数据库现在应已设置完成!
### 3. Setup Frontend with Vercel
前往 [Vercel](https://vercel.com/) 并创建一个新项目。
在设置页面中,导入你 Chatbot UI 托管实例的 GitHub 仓库。在项目 Settings 的 "Build & Development Settings" 部分,将 Framework Preset 切换为 "Next.js"。
在环境变量中,添加上面获取的以下值:
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- `SUPABASE_SERVICE_ROLE_KEY`
- `NEXT_PUBLIC_OLLAMA_URL`(仅在使用本地 Ollama 模型时需要;默认值:`http://localhost:11434`)
你也可以将 API 密钥添加为环境变量。
- `OPENAI_API_KEY`
- `AZURE_OPENAI_API_KEY`
- `AZURE_OPENAI_ENDPOINT`
- `AZURE_GPT_45_VISION_NAME`
有关环境变量的完整列表,请参阅 '.env.local.example' 文件。如果为 API 密钥设置了环境变量,用户设置中的对应输入框将被禁用。
点击 "Deploy" 并等待前端部署完成。
部署完成后,你应该可以通过 Vercel 提供的 URL 使用你的 Chatbot UI 托管实例。
## 贡献
我们正在编写贡献指南。
## 联系方式
请在 [Twitter/X](https://twitter.com/mckaywrigley) 联系 Mckay