使用 One-API 和 NextChat 搭建私人的 AI 助理
以下内容由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 是一款强大的 OpenAI API 管理和分发系统,以其多功能性和用户友好性而著称。借助 One API,你可以通过一个简化的界面访问大量语言模型 (LLM)。无论你使用 OpenAI 的 SDK 还是标准的 HTTP 请求协议,One API 都简化了这一过程,只需要一个 API 密钥。
主要特点:
- 多提供商支持:使用一个统一系统连接到各种 AI 提供商。
- 流支持:得益于流支持,你可以与大多数模型进行实时交互。
- 内置计费:使用基于令牌和请求的计费系统控制你的成本,管理员可以为每个模型和提供商设置单独的价格。
- 即用即付:用户可以从灵活且具有成本效益的解决方案中受益,该解决方案优于传统的订阅模式(如 ChatGPT Plus)。
NextChat:一个可定制的类似 ChatGPT 的 Web 客户端
NextChat,以前称为 ChatGPT Next Web,是一款为 OpenAI 服务设计的前沿跨平台 Web 客户端。它超越了标准的聊天界面,为渴望更定制化 AI 交互的用户提供了增强功能。
主要特点:
- 自定义指令和提示:使用自定义 GPT 指令和提示快捷方式定制你的 AI 体验。
- 内置代理:享受各种带有不同指令和提示的内置代理。
- 可调整参数:通过设置诸如
temperature
、max_tokens
、top_p
和attached message count
等参数来微调你的对话。 - 更高级别的定制:与标准 ChatGPT 相比,NextChat 提供了更个性化的触感,迎合了希望更多地控制其 AI 交互的用户。
- PWA 支持:该网络应用程序可以作为 PWA(渐进式网络应用程序)安装在你的设备上,从而获得更原生的体验。
Lobe Chat:你的时尚 AI 交流平台
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 体验,你需要:
- 在你的系统上安装 Docker 和 Docker Compose。
- 克隆 One API 和 NextChat 的仓库。
- 根据你的喜好和提供的文档配置设置。
- 使用
docker-compose
部署每个服务,瞧——你已准备好与你的定制 AI 互动!
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 进行反向代码,你还需要增加以下配置来实现流失输出:
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 的文档 来配置设置并正确部署它们。
如何使用你的定制版 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 助手。我希望这为你写博客文章提供了坚实的基础!请随意扩展任何特定部分、添加个人见解和示例,并将其据为己有。聊天愉快!