---
title: "使用 One-API 和 NextChat 搭建私人的 AI 助理"
date: 2024-01-06T15:20:30.000Z
author: Z.SHINCHVEN
tags: [ChatGPT, One API, NextChat, ChatGPT Next Web, Lobe Chat, OpenAI]
canonical: https://atlassc.net/2024/01/07/deploy-one-api-with-chatgpt-next-using-docker
---
> 以下内容由AI生成

## 简介

ChatGPT，一种革命性的生成式 AI，在 2023 年风靡全球，改变了我们工作、学习和与技术交互的方式。它在生成类人文本、翻译语言和回答复杂问题方面的能力吸引了全球用户。虽然 ChatGPT 赢得了巨大的欢迎，但许多人不知道 OpenAI 提供 GPT 模型 API 服务，使开发人员能够创建自己的类似 ChatGPT 的 AI 助手。

为了充分利用这些不同的 LLM 模型，一个统一网关至关重要。此网关将充当一个中心枢纽，无缝管理和访问来自不同提供商的多个语言模型。此外，一个可定制的类似 ChatGPT 的 Web 客户端将提供一个直观的用户界面，允许用户以用户友好的方式与模型交互。幸运的是，开源社区已经迎难而上，提供了一个解决方案，使开发人员能够轻松构建自己的类似 ChatGPT 的 AI 助手。

在这篇博文中，我们将踏上使用 One-API 创建类似 ChatGPT 的 AI 助手的旅程。我们还将探索流行的类似 ChatGPT 的 Web 客户端，例如 NextChat 和 Lobe Chat，演示如何将它们与我们的自定义 AI 助手集成。在本文的最后，你将全面了解构建强大且通用的 AI 助手所涉及的过程，该助手利用了多个 LLM 模型的能力。

## One API：你通往领先 AI 语言模型的统一网关

[One API](https://github.com/songquanpeng/one-api) 是一款强大的 OpenAI API 管理和分发系统，以其多功能性和用户友好性而著称。借助 One API，你可以通过一个简化的界面访问大量语言模型 (LLM)。无论你使用 OpenAI 的 SDK 还是标准的 HTTP 请求协议，One API 都简化了这一过程，只需要一个 API 密钥。

### 主要特点：

- **多提供商支持**：使用一个统一系统连接到各种 AI 提供商。
- **流支持**：得益于流支持，你可以与大多数模型进行实时交互。
- **内置计费**：使用基于令牌和请求的计费系统控制你的成本，管理员可以为每个模型和提供商设置单独的价格。
- **即用即付**：用户可以从灵活且具有成本效益的解决方案中受益，该解决方案优于传统的订阅模式（如 ChatGPT Plus）。

## NextChat：一个可定制的类似 ChatGPT 的 Web 客户端

<div style="display: flex; justify-content: center; align-items:center; flex-direction: column;">
  <img src="https://raw.githubusercontent.com/ChatGPTNextWeb/ChatGPT-Next-Web/main/docs/images/cover.png" alt="NextChat">
</div>

[NextChat](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web)，以前称为 ChatGPT Next Web，是一款为 OpenAI 服务设计的前沿跨平台 Web 客户端。它超越了标准的聊天界面，为渴望更定制化 AI 交互的用户提供了增强功能。

### 主要特点：

- **自定义指令和提示**：使用自定义 GPT 指令和提示快捷方式定制你的 AI 体验。
- **内置代理**：享受各种带有不同指令和提示的内置代理。
- **可调整参数**：通过设置诸如 `temperature`、`max_tokens`、`top_p` 和 `attached message count` 等参数来微调你的对话。
- **更高级别的定制**：与标准 ChatGPT 相比，NextChat 提供了更个性化的触感，迎合了希望更多地控制其 AI 交互的用户。
- **PWA 支持**：该网络应用程序可以作为 PWA（渐进式网络应用程序）安装在你的设备上，从而获得更原生的体验。

## Lobe Chat：你的时尚 AI 交流平台

<div style="display: flex; justify-content: center; align-items:center; flex-direction: column;">
  <img src="https://camo.githubusercontent.com/67860e52a2e48ce7732cb3dd64e562fdf7af1d8cb2b9f646a05a037468809b89/68747470733a2f2f67772e616c697061796f626a656374732e636f6d2f7a6f732f6b69746368656e2f524b6e57727266754d6c2f77656c636f6d652e77656270" alt="Lobe Chat">
</div>

Lobe Chat 是一款开源聊天机器人框架，重新定义了 AI 交互。它是一个强大、用户友好的平台，提供：

- **现代 UI**：享受时尚、直观且赏心悦目的界面。
- **支持 GPT-4-Vision**：使用 GPT-4-Vision 进行基于图像的对话。
- **多模态功能**：使用文本、语音等进行交互，获得更丰富的体验。
- **代理商店**：你可以从代理商店安装共享代理，或创建和共享自己的代理。
- **自定义指令**：创建自己的自定义指令，获得更个性化的 AI 体验。
- **插件系统**：使用自定义插件轻松扩展功能，例如搜索、思维导图、网站抓取器等。
- **语音合成**：以自然、口语化的方式与 AI 互动。
- **PWA 支持**：该网络应用程序可以作为 PWA（渐进式网络应用程序）安装在你的设备上，从而获得更原生的体验。

## 将 One API 与类似 ChatGPT 的网络客户端相结合：一个个人 AI 引擎

通过将 One API 与 NextChat 或 Lobe Chat 集成，你可以使用你的 API 密钥和自定义 GPT 提示部署你自己的私有 ChatGPT 实例。这种组合提供了一个独特的机会：

- **一个密钥，多个提供商**：使用一个 API 密钥即可访问各种 LLM 提供商和模型。
- **私有且可共享**：为自己设置一个私有的 ChatGPT，或邀请朋友和家人享受你的自定义 AI 平台。
- **易于部署**：这两个项目都已容器化，感谢 Docker，使用 `docker-compose` 可以直接部署。

## 部署 One API 和 NextChat

要开始享受你个性化的 ChatGPT 体验，你需要：

1. 在你的系统上安装 Docker 和 Docker Compose。
2. 克隆 One API 和 NextChat 的仓库。
3. 根据你的喜好和提供的文档配置设置。
4. 使用 `docker-compose` 部署每个服务，瞧——你已准备好与你的定制 AI 互动！

```yml
version: "3.8"

services:
  # https://github.com/songquanpeng/one-api/blob/main/docker-compose.yml
  one-api:
    image: justsong/one-api:latest # Repalce it with `justsong/one-api-en:latest` to use English version
    container_name: one-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "3000:3000"
    volumes:
      - ./data/oneapi:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=oneapi:123456@tcp(db:3306)/one-api  # Modified this line, or comment out to use SQLite as database
      - REDIS_CONN_STRING=redis://redis
      - SESSION_SECRET=random_string  # Replace with a random string
      - TZ=Asia/Shanghai  # Use your own timezone
    depends_on:
      - redis
      - db
    healthcheck:
      test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:latest
    container_name: redis
    restart: always

  db:
    image: mysql:8.2.0
    restart: always
    container_name: mysql
    volumes:
      - ./data/mysql:/var/lib/mysql
    ports:
      - '3306:3306'
    environment: # Init the database with these environment variables
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 'OneAPI@justsong'
      MYSQL_USER: oneapi
      MYSQL_PASSWORD: '123456'
      MYSQL_DATABASE: one-api

  # https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/docker-compose.yml
  chatgpt-next-web:
    image: yidadaa/chatgpt-next-web
    container_name: chatgpt-next-web
    restart: always
    ports:
      - "3001:3000"

  # Alternatively, you can deploy Lobe Chat instead of NextChat, it's a ChatGPT-like web client with modern UI and it supports GPT-4-Vision model and it is under active development.
  lobe-chat:
    image: lobehub/lobe-chat  # The image you built
    container_name: lobe-chat  # Optional: Specify a custom container name
    environment:  # Define environment variables
      - CUSTOM_MODELS=gemini-pro
    #   - NODE_ENV=production
    #   - HOSTNAME=0.0.0.0
    #   - PORT=3210
    #   - ACCESS_CODE=lobe66
    #   - NEXT_PUBLIC_CUSTOM_MODELS=
    #   - OPENAI_API_KEY=
    #   - OPENAI_PROXY_URL=
    #   - USE_AZURE_OPENAI=
    #   - AZURE_API_KEY=
    #   - AZURE_API_VERSION=
    ports:
      - "3002:3210"  # Map the container's port to the host
    user: "1001"  # Run the container as the nextjs user
    # volumes:  # Define any volumes if needed
      # - ./local/path:/app/path  # Uncomment and modify if you need to bind mount local directories
    restart: unless-stopped  # Optional: Restart policy

```

如果你使用 nginx 为 lobechat 进行反向代码，你还需要增加以下配置来实现流失输出：

```nginx
server {

    location / {
        proxy_set_header Upgrade "";
        proxy_set_header Connection "upgrade";
        chunked_transfer_encoding off;
        proxy_cache off;
        proxy_buffering off;
        proxy_request_buffering off;
    }

}
```

现在这两个服务正在你的机器上运行，你可以分别通过 `http://localhost:3000` 和 `http://localhost:3001` 访问它们。

请遵循 [One API 的文档](https://github.com/songquanpeng/one-api/blob/main/README.en.md) 来配置设置并正确部署它们。

## 如何使用你的定制版 ChatGPT

在成功部署你的服务后，第一步涉及在 One API 中配置你首选的大语言模型 (LLM) 及其各自的提供商。随后，生成一个 `令牌`，它将作为你独一无二的 API 密钥。此密钥需要与 NextChat 设置中 One API 的入口点集成，从而建立这两个服务之间的链接。

一旦配置完成，你就可以与你个性化的 AI 交谈了。

为了增加便利性，你可以在 One API 的设置中将 NextChat 指定为默认聊天客户端。通过这样做，将在 One API 的 `令牌` 管理页面上提供一个自动配置 NextChat 的快捷方式，简化连接和使用你的 AI 平台的过程。

配置 Lobe Chat 是一个类似的过程，涉及在 Lobe Chat 设置中设置 API 密钥和入口点。配置完成后，你可以通过访问 Lobe Chat URL 来访问你的 AI 平台。目前，Lobe Chat 没有配置快捷方式。

## 结论

通过将 One API 与 NextChat 或 Lobe Chat 相结合，你可以创建私人、可定制且经济高效的 ChatGPT 体验，供个人或共享使用。这种强大的组合提供了一个独特的机会，可以利用多个 LLM 模型的能力，提供一个更全面、更多功能的 AI 助手。借助这些开源项目，你可以轻松构建自己的类似 ChatGPT 的 AI 助手。我希望这为你写博客文章提供了坚实的基础！请随意扩展任何特定部分、添加个人见解和示例，并将其据为己有。聊天愉快！
