开篇:为什么我们需要一个“大模型统一网关”?

相信大家在使用AI模型时,如果这个模型不符合咱们的使用场景,就需要更新其他厂商的模型来使用,届时就会发现,更改模型不只是要更改模型名称,还需要更改对应的厂商 URL 以及 APIKEY,如果产品还不支持同时拥有多个厂商的URL,那我们使用起来那是相当麻烦(手动为每个应用适配?维护几十份配置文件?每次新模型出来就要改代码?企业内部多用户、多部门、多预算怎么管控?怎么实现充值、配额、计费管理?),那么今天我将教大家 从0搭建一个大模型统一网关程序,用来聚合我们的大模型,实现一个KEY一个URL即可随意切换使用大模型。


第一步:购买服务器(中等配置即可)

  • 购买完成之后获取咱们的公网和密码即可


第二步:登录服务器(windows/mac)

1774697077551.png
1774697170102.png

终端输入命令:

ssh -p 22 root@公网IP地址

# 22 是登录端口,默认的值

第三步:安装服务器控制面板1Panel(小白推荐)

终端输入安装命令:

bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"

# 可以先不装docker

# 注意 设置好 1Panel 端口后需要去厂商开放对应的端口,比如我的设置的是12345厂商是腾讯,那我就得去腾讯开放一下 12345 端口

打开 1Panel 管理页面

安装Docker服务

  • 选好镜像源直接一路回车即可

安装OpenResty组件

安装Mysql组件

  • 推荐使用 8.0.42 版本,一定要勾选上 端口外部访问

  • 创建数据库用户 newapi

安装Redis服务

  • 推荐使用 最新 版本,一定要勾选上 端口外部访问

第四步:安装中转站New-API (https://blog.hallucodex.com/archives/Ngjb8Jzk)

  • 创建一个new-api文件夹

    • mkdir /data/new-api -p && cd /data/new-api

  • 编写docker-compose.yaml文件

    • SQL_DSN=newapi:xiaopaluapi@tcp(10.2.0.7:3306)/newapi

      • newapi 是数据库名称

      • xiaopaluapi 是数据库密码

      • 10.2.0.7 是内网的IP地址

      • 3306 是数据库端口

    • REDIS_CONN_STRING=redis://:xiaopaluapi@10.2.0.7:6379/0

      • xiaopaluapi 是redis密码

      • 10.2.0.7 是内网的IP地址

      • 6379 是redis端口

    • - "3000:3000"

      • 前面的 3000 是对外映射的端口,后面的是内部启动端口,后面的不需要动,如果端口被占用只改前面的就行

version: '3.4' # For compatibility with older Docker versions

services:
  new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "3000:3000"
    volumes:
      - ./data:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=newapi:xiaopaluapi@tcp(10.2.0.7:3306)/newapi  # Point to the mysql service, uncomment if using MySQL
      - REDIS_CONN_STRING=redis://:xiaopaluapi@10.2.0.7:6379/0
      - TZ=Asia/Shanghai
      - ERROR_LOG_ENABLED=true # 是否启用错误日志记录 (Whether to enable error log recording)
      - BATCH_UPDATE_ENABLED=true  # 是否启用批量更新 (Whether to enable batch update)
      - STREAMING_TIMEOUT=300  # 流模式无响应超时时间,单位秒,默认120秒,如果出现空补全可以尝试改为更大值

    healthcheck:
      test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
  • 启动服务

    • docker compose up -d

    • 在腾讯厂商中开放 3000 端口,如果你改了端口则开放你修改过的端口

第五步:打开NewAPI中转页面

  • 浏览器打开:http://公网IP:3000

  • 设置好管理员账号即可

第六步:设置我们的第一个渠道(硅基流动)

  • 新建 API 渠道

  • 设置好之后可以一键获取到模型

    • 我们就搞一个 Pro/MiniMaxAI/MiniMax-M2.5 模型为例

  • 设置好模型之后点击测试

    • 报错了不要慌,提示让我们设置价格,那我们就设置一下

  • 如何设置模型价格

    • 模型倍率:百万输入 / 2

    • 模型补全倍率:百万输出 / 百万输入

    • 提示缓存倍率:百万命中缓存 / 百万输入 (如果模型没有可以不写)

    • 例如:Pro/MiniMaxAI/MiniMax-M2.5

      • 百万输入:2.10

      • 百万输出:8.40

      • 命中缓存:0.21

      • 那么这个模型的倍率就是:

        • 模型倍率:2.10 / 2 = 1.05

        • 模型补全倍率:8.4 / 2.1 = 4

        • 提示缓存倍率:0.21 / 2.1 = 0.1

  • 设置完成后再次点击设置

  • 我们去操练场对话一下试试

第七步:设置我们的APIKEY应用到我们的程序

  • 设置 令牌

  • 接入我们的程序,

    • 我提供给大家使用的程序 https://lobe.cli.hallucodex.com

    • 直接放入我们的URL和KEY

      • 注意:有的程序需要在后面加 /v1 有的程序不需要。

  • 对话完成后,我们可以返回NewAPI中查看调用记录

  • 完整流程测试完成

    • 国内模型大多数兼容OpenAI格式,可以使用OpenAI的格式直接调用。

第八步:购买域名并设置域名

  • 添加一条A记录,然后IP选择我们服务器的公网IP地址

  • 在 1Panel 中设置DNS账户

  • 创建 Acme 账户,填入邮箱就好

  • 创建网站

    • 域名:填写与你A记录一致的前缀

    • 代理地址:127.0.0.1:3000

      • 3000 是NewAPI端口,如果你改了,就换成你改过的。

  • 申请证书

  • 网站套用证书开启HTTPS

  • 使用域名调用API

第九步:优化NewAPI充值以及分组使用体验(自用可以不用往下看了)

  • 设置域名与充值比率

    • 充值建议 1:1,最后以分组倍率成算结算,已是迄今为止最为方便管理的方法

  • 设置分组倍率

    • 如果你购买的API是 7¥ = 1$ 那么你的渠道就可以设置 "渠道名称": 7 ,然后将你的渠道设置为此分组,如需使用这个价格的渠道, 你的令牌就必须选择此分组才可使用。

    • 如果你购买的API是 3¥ = 1$ 那么你的渠道 就可以设置 "渠道名称": 3 ,然后将你的渠道设置为此分组,如需使用这个价格的渠道, 你的令牌就必须选择此分组才可使用。

  • 剩余的功能可以自行摸索,都比较简单,大家多摸索就好了。

注:仅限于测试和体验目的,请自觉遵守您当地法律法规,切勿用于非法用途