使用 One API 接入 Azure、ChatGLM 和本地模型

部署和使用 One API,实现 Azure、ChatGLM 和本地模型的接入。

  • 默认情况下,FastGPT 只配置了 GPT 的模型,如果你需要接入其他模型,需要进行一些额外配置。
  • One API使用 One API 接入 Azure、ChatGLM 和本地模型 - 图1 是一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。
  • FastGPT 可以通过接入 One API 来实现对不同大模型的支持。One API 的部署方法也很简单。

FastGPT 与 One API 关系

可以把 One API 当做一个网关。

使用 One API 接入 Azure、ChatGLM 和本地模型 - 图2

部署

Docker 版本

已加入最新的 docker-compose.yml 文件中。

Sealos - MySQL 版本

MySQL 版本支持多实例,高并发。

直接点击以下按钮即可一键部署 👇

Deploy on Sealos

部署完后会跳转「应用管理」,数据库在另一个应用「数据库」中。需要等待 1~3 分钟数据库运行后才能访问成功。

Sealos - SqlLite 版本

SqlLite 版本不支持多实例,适合个人小流量使用,但是价格非常便宜。

1. 点击打开 Sealos 公有云使用 One API 接入 Azure、ChatGLM 和本地模型 - 图4

2. 打开 AppLaunchpad(应用管理) 工具

step1

3. 点击创建新应用

4. 填写对应参数

镜像:ghcr.io/songquanpeng/one-api:latest

step2 打开外网访问开关后,Sealos 会自动分配一个可访问的地址,不需要自己配置。

step3 填写完参数后,点击右上角部署即可。环境变量:

  1. SESSION_SECRET=SESSION_SECRET
  2. POLLING_INTERVAL=60
  3. BATCH_UPDATE_ENABLED=true
  4. BATCH_UPDATE_INTERVAL=60

One API 使用教程

概念

  1. 渠道:
    1. OneApi 中一个渠道对应一个 Api Key,这个 Api Key 可以是GPT、微软、ChatGLM、文心一言的。一个Api Key通常可以调用同一个厂商的多个模型。
    2. One API 会根据请求传入的模型来决定使用哪一个Key,如果一个模型对应了多个Key,则会随机调用。
  2. 令牌:访问 One API 所需的凭证,只需要这1个凭证即可访问One API上配置的模型。因此FastGPT中,只需要配置One APIbaseurl令牌即可。

大致工作流程

  1. 客户端请求 One API
  2. 根据请求中的 model 参数,匹配对应的渠道(根据渠道里的模型进行匹配,必须完全一致)。如果匹配到多个渠道,则随机选择一个(同优先级)。
  3. One API 向真正的地址发出请求。
  4. One API 将结果返回给客户端。

1. 登录 One API

打开 【One API 应用详情】,找到访问地址: step4

登录 One API step5

2. 创建渠道和令牌

在 One API 中添加对应渠道,直接点击 【添加基础模型】,不要遗漏了向量模型(Embedding) step6

创建一个令牌 step7

3. 修改账号余额

One API 默认 root 用户只有 200刀,可以自行修改编辑。

4. 修改 FastGPT 的环境变量

有了 One API 令牌后,FastGPT 可以通过修改 baseurlkey 去请求到 One API,再由 One API 去请求不同的模型。修改下面两个环境变量:

  1. # 下面的地址是 Sealos 提供的,务必写上 v1, 两个项目都在 sealos 部署时候,https://xxxx.cloud.sealos.io 可以改用内网地址
  2. OPENAI_BASE_URL=https://xxxx.cloud.sealos.io/v1
  3. # 下面的 key 是由 One API 提供的令牌
  4. CHAT_API_KEY=sk-xxxxxx

接入其他模型

以添加文心一言为例:

1. One API 添加对应模型渠道

使用 One API 接入 Azure、ChatGLM 和本地模型 - 图12

2. 修改 FastGPT 配置文件

可以在 /projects/app/src/data/config.json 里找到配置文件(本地开发需要复制成 config.local.json),配置文件中有一项是对话模型配置

  1. "llmModels": [
  2. ...
  3. {
  4. "model": "ERNIE-Bot", // 这里的模型需要对应 One API 的模型
  5. "name": "文心一言", // 对外展示的名称
  6. "avatar": "/imgs/model/openai.svg", // 模型的logo
  7. "maxContext": 16000, // 最大上下文
  8. "maxResponse": 4000, // 最大回复
  9. "quoteMaxToken": 13000, // 最大引用内容
  10. "maxTemperature": 1.2, // 最大温度
  11. "charsPointsPrice": 0,
  12. "censor": false,
  13. "vision": false, // 是否支持图片输入
  14. "datasetProcess": false, // 是否设置为知识库处理模型
  15. "usedInClassify": true, // 是否用于问题分类
  16. "usedInExtractFields": true, // 是否用于字段提取
  17. "usedInToolCall": true, // 是否用于工具调用
  18. "usedInQueryExtension": true, // 是否用于问题优化
  19. "toolChoice": true, // 是否支持工具选择
  20. "functionCall": false, // 是否支持函数调用
  21. "customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型
  22. "customExtractPrompt": "", // 自定义内容提取提示词
  23. "defaultSystemChatPrompt": "", // 对话默认携带的系统提示词
  24. "defaultConfig":{} // 请求API时,挟带一些默认配置(比如 GLM4 的 top_p)
  25. }
  26. ...
  27. ],

添加向量模型:

  1. "vectorModels": [
  2. ......
  3. {
  4. "model": "text-embedding-ada-002",
  5. "name": "Embedding-2",
  6. "avatar": "/imgs/model/openai.svg",
  7. "charsPointsPrice": 0,
  8. "defaultToken": 700,
  9. "maxToken": 3000,
  10. "weight": 100
  11. },
  12. ......
  13. ]

3. 重启 FastGPT

  1. docker-compose down
  2. docker-compose up -d

重启 FastGPT 即可在选择文心一言模型进行对话。添加向量模型也是类似操作,增加到 vectorModels里。