当前位置: 首页 > news >正文

服务器一次性部署One API + ChatGPT-Next-Web

服务器一次性部署One API + ChatGPT-Next-Web

  • One API + ChatGPT-Next-Web 介绍
      • One API
      • ChatGPT-Next-Web
  • docker-compose 部署One API + ChatGPT-Next-Web
    • Open API docker-compose 配置
    • ChatGPT-Next-Web docker-compose 配置
    • docker-compose 启动容器
  • 后续配置

同步发布在个人笔记服务器一次性部署One API + ChatGPT-Next-Web

One API + ChatGPT-Next-Web 介绍

自从 OpenAI 公布旗下产品 ChatGPT 后,AIGC 的热潮已经到来很久了,我一直都只是及其轻度的翻墙使用 ChatGPT 或者使用手机品牌自带的产品。最近终于下定决心多了解一下,才发现类 ChatGPT 的产品已经多到一双手不够数了(实在太落伍了 〒▽〒 )。

为了更方便的体验多家的AI,遂决定在自己的服务器上使用 docker-compose 搭建一个可以集中多家 API 并方便切换的服务。One API + ChatGPT-Next-Web 的组合为我提供了这样可能。

One API

项目GitHub
One API 是一个多平台大模型 API 的接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元等绝大部分模型。

在开发中我们会遇到这样的问题:大量的开源或成熟的项目是基于 OpenAI 的 API 编写的,但是我们需要对接的资源是非 OpenAI 的;或者我们需要在多个不同 API 接口的模型间进行切换。这都要求我们学习或频繁切换多家的 API。
如果我们有一个系统,可以把多个产品集中起来,并以一种统一的 API 接口暴露出来,那我们就可以方便的部署所有基于 OpenAI API 的项目了;在多家 AI 之间切换时也不再需要修改 API 格式。

One API 就可以实现这样的功能:它作为一个 Agent ,把多家大模型 API 接口接收进来,用户通过 One API 分发的 key 访问,实现以标准的 OpenAI API 格式访问所有的大模型(也可以统一使用非 OpenAI格式)。

非 OpenAI 格式模型
标准 OpenAI 格式模型
One API 分发的 key
讯飞星火认知
其他大模型
OpenAI
Azure
其他大模型
用户
One API

ChatGPT-Next-Web

项目GitHub
一个很优秀的开源项目,可以方便的部署跨平台的私人 ChatGPT 应用, 原生支持大量模型。在我的项目中主要用看来以标准的 OpenAI API 和 One API 对接,作为一个聊天前端使用。

浏览器访问
标准 OpenAI API 格式
用户
One API
ChatGPT-Next-Web

docker-compose 部署One API + ChatGPT-Next-Web

docker-compose 一次性部署多个服务的方法可以参考我以前的笔记:
docker compose部署nginx+php+mysql+phpmyadmin环境
本次的项目只有两个,相比于 LNMP 环境更加简单,本笔记分别记录最终的 compose 文件中的两个部分,如果只想部署其中一个服务的话,只使用对应的部分就好了。

Open API docker-compose 配置

最推荐自己阅读 github 上官方的 docker-compose 文件。

推荐先把镜像 pull 下来:

docker pull justsong/one-api:v0.6.10	# 最好指定版本号,默认tag可能会获得测试版镜像导致不稳定。

这里我的配置文件如下:
docker-compose.yml

version: '3.4'services:one-api:image: justsong/one-api:v0.6.10container_name: one-apirestart: always
#    network: hostcommand: --log-dir /app/logsports:- "yourport:3000"			# 填写映射到服务器上的端口号volumes:- yourdatapath:/data		# 填写自己本地的数据保存路径- yourlogpath:/app/logs	# 填写自己本地的日志保存路径environment:- SQL_DSN=oneapi:123456@tcp(db:3306)/one-api  # 修改此行,或注释掉以使用 SQLite 作为数据库- REDIS_CONN_STRING=redis://redis- SESSION_SECRET=random_string  # 修改为随机字符串- TZ=Asia/Shanghai
#      - NODE_TYPE=slave  # 多机部署时从节点取消注释该行
#      - SYNC_FREQUENCY=60  # 需要定期从数据库加载数据时取消注释该行
#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # 多机部署时从节点取消注释该行depends_on:- redis- dbhealthcheck:test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]interval: 30stimeout: 10sretries: 3redis:image: "${REGISTRY:-docker.io}/redis:latest"container_name: redisrestart: alwaysdb:image: "${REGISTRY:-docker.io}/mysql:8.2.0"restart: alwayscontainer_name: mysqlvolumes:- ./data/mysql:/var/lib/mysql  # 挂载目录,持久化存储ports:- '3306:3306'environment:TZ: Asia/Shanghai   # 设置时区MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' # 设置 root 用户的密码MYSQL_USER: oneapi   # 创建专用用户MYSQL_PASSWORD: '123456'    # 设置专用用户密码MYSQL_DATABASE: one-api   # 自动创建数据库

注意:上述的文件会使用镜像内部的数据库,如果我们服务器上已经有了数据库,那可以在环境变量部分直接指定本机的数据库,redis 和 db 部分将不再需要。形如下面:

version: '3.4'services:one-api:image: justsong/one-api:v0.6.10container_name: one-apirestart: always
#    network: hostcommand: --log-dir /app/logsports:- "yourport:3000"			# 填写映射到服务器上的端口号volumes:- yourdatapath:/data		# 填写自己本地的数据保存路径- yourlogpath:/app/logs	# 填写自己本地的日志保存路径environment:- SQL_DSN=数据库专用用户:用户密码@tcp(数据库地址:数据库端口)/数据库名称  # 修改此行,或注释掉以使用 SQLite 作为数据库- SESSION_SECRET=random_string  # 修改为随机字符串- TZ=Asia/Shanghai
#      - NODE_TYPE=slave  # 多机部署时从节点取消注释该行
#      - SYNC_FREQUENCY=60  # 需要定期从数据库加载数据时取消注释该行
#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # 多机部署时从节点取消注释该行healthcheck:test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]interval: 30stimeout: 10sretries: 3

在使用本地服务器时,推荐先把数据库建好,使用类似 phpmyadmin 等工具会十分方便。

ChatGPT-Next-Web docker-compose 配置

最推荐自己阅读 github 上官方的 docker-compose 文件。

推荐先把镜像 pull 下来:

docker pull yidadaa/chatgpt-next-web:v2.15.8 

这里我的配置文件如下:
docker-compose.yml

version: '3.4'services:chatgpt-next-web:
#    profiles: [ "no-proxy" ]container_name: chatgpt-next-webimage: yidadaa/chatgpt-next-web:v2.15.8ports:- yourport:3000environment:- OPENAI_API_KEY=$OPENAI_API_KEY- GOOGLE_API_KEY=$GOOGLE_API_KEY- CODE=指定一个登录字段- BASE_URL=$BASE_URL- OPENAI_ORG_ID=$OPENAI_ORG_ID- HIDE_USER_API_KEY=$HIDE_USER_API_KEY- DISABLE_GPT4=$DISABLE_GPT4- ENABLE_BALANCE_QUERY=$ENABLE_BALANCE_QUERY- DISABLE_FAST_LINK=$DISABLE_FAST_LINK- OPENAI_SB=$OPENAI_SB

docker-compose 启动容器

如果只需要部署一个服务的话,直接使用上面某个服务的文件即可;如果要一次性部署两个服务,则需要将两个文件合并在一个文件内,注意删除重复的***version: ‘3.4’ services:***字段,最终形如下面的格式:

# Creat container for One API + ChatGPT-Next-Web
version: '3.4'services:one-api:#########chatgpt-next-web:#########

最后运行命令:

docker-compose up -d

使用命令 docker ps查看当前运行的容器里面是否有我们的 one-api 和 chatgpt-next-web,如果有的话,那就运行成功了。
此时我们通过浏览器分别访问地址:
One API
yourdomain:oneapi_port
首次访问需要登录,默认用户为 root ,默认密码是 12345。
在这里插入图片描述

ChatGPT-Next-Web:
yourdomain:chatgptnextweb_port
在这里插入图片描述

后续配置

笔记只记录了两个平台的搭建过程。后续会以讯飞的 SparkDesk 模型为例,介绍如何联通两个服务,实现个人服务器访问类 ChatGPT AI。
后续笔记已更新:
配置 One API + ChatGPT-Next-Web,以讯飞星火认知大模型为例

http://www.lryc.cn/news/520571.html

相关文章:

  • 51单片机 和 STM32 的烧录方式和通信协议的区别
  • (STM32笔记)十二、DMA的基础知识与用法 第二部分
  • 【优选算法篇】:模拟算法的力量--解决复杂问题的新视角
  • 探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码
  • 脚本化挂在物理盘、nfs、yum、pg数据库、nginx(已上传脚本)
  • ESP嵌入式开发环境安装
  • Elasticsearch入门学习
  • 黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ
  • 《软硬协同优化,解锁鸿蒙系统AI应用性能新高度》
  • 利用 Tree Shaking 提升 React.js 性能
  • RPC实现原理,怎么跟调用本地一样
  • Vue进阶之AI智能助手项目(二)——ChatGPT的调用和开发
  • python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像
  • 2025-微服务—SpringCloud-1~3
  • UnityXR Interaction Toolkit 如何检测HandGestures
  • 使用 Multer 上传图片到阿里云 OSS
  • 2008-2020年各省社会消费品零售总额数据
  • 【大模型入门指南 07】量化技术浅析
  • java 查询树结构数据,无限层级树结构通用方法
  • FreeCAD集成gmsh源码分析
  • K8s 集群 IP 地址管理指南(K8s Cluster IP Address Management Guide)
  • Debye-Einstein-模型拟合比热容Python脚本
  • OpenCV的图像分割
  • 【源码+文档+调试讲解】农产品研究报告管理系统
  • 【STM32-学习笔记-7-】USART串口通信
  • 高可用虚拟IP-keepalived
  • AI多模态技术介绍:视觉语言模型(VLMs)指南
  • 高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
  • uniApp通过xgplayer(西瓜播放器)接入视频实时监控
  • ws 配置 IngressRoute 和 http一样