跳到主要内容
Router One

通过一个 AI Proxy 模型渠道把 FastGPT 接到 Router One

FastGPT 是开源的知识库与 Agent 应用平台:应用以工作流搭建,AI 对话、工具调用、问题分类、内容提取等节点都要挂一个语言模型。FastGPT 通过内置的 AI Proxy 连接模型服务商——从 V4.17.0 起它是必需依赖——所以 Router One 是在那里加成一个 OpenAI 协议渠道:一把 Key 覆盖 GPT、Claude、Gemini、Grok 和 DeepSeek 系列,每次请求在 Dashboard → Logs 都有成本 Trace。本指南讲清渠道表单该填什么、如何在模型配置里登记精确模型 ID 并做渠道测试,以及索引、重排和语音模型为什么要另找供应商。

确认部署走的是 AI Proxy,并为这套部署单独建 Key

本指南以官方 Docker Compose 模板自部署的 FastGPT 为前提,模板里 AI Proxy 是必需服务。FastGPT 容器带两个变量:AIPROXY_API_ENDPOINT 是 AI Proxy 服务根地址,不要附加 /v1,FastGPT 会按接口补充路径;AIPROXY_API_TOKEN 必须与 AI Proxy 服务端的 ADMIN_KEY 一致。V4.17.0 升级说明把两者列为必填,并写明旧的 OPENAI_BASE_URL 和 CHAT_API_KEY 已弃用并移除,配置后不再生效。下面的片段就是官方模板里的这几行——token 是模板生成的 YAML 引用别名,不是 Router One 的值。然后为这套部署单独创建一把设了 maxSpend 的 Router One Key:它只填进渠道表单,不进这些环境变量。

docker-compose.yml (excerpt)
# 节选自 FastGPT 官方 docker-compose 模板
x-aiproxy-token: &x-aiproxy-token 'token'
services:
  fastgpt-app:
    environment:
      # AI Proxy 的地址,如果配了该地址,优先使用
      AIPROXY_API_ENDPOINT: http://fastgpt-aiproxy:3000
      # AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
      AIPROXY_API_TOKEN: *x-aiproxy-token
  fastgpt-aiproxy:
    environment:
      ADMIN_KEY: *x-aiproxy-token
      # 最大重试次数
      RETRY_TIMES: 3

把 FastGPT 配置到 Router One base URL

打开 管理员 → 模型提供商,切到「模型渠道」标签页,点右上角「新增渠道」,表单与下方代码块一一对应。协议类型选 OpenAI:AI Proxy 会把这个渠道的每次请求发到「代理地址 + /chat/completions」,所以代理地址要填带 /v1 的 https://api.router.one/v1——表单占位符给出的 OpenAI 默认地址本身也以 /v1 结尾。API 密钥填 Router One Key。「模型」是这个渠道要分发的目录 ID;下拉框只列「模型配置」里已有的模型,目录 ID 没有内置时,点「新增模型」(或到「模型配置」标签页)把精确的目录 ID 填进「模型ID」——它就是 FastGPT 请求体里 model 字段的值,渠道转发时也用同一个值。两边 ID 完全一致时「模型映射」留空,只有想用本地别名时才把它映射到精确目录 ID。保存后点「模型测试」→「开始测试」:它会对每个模型真实发一次请求并显示结果与耗时,这些测试请求同样会出现在 Dashboard → Logs。最后启用模型,在应用的 AI 配置或工作流的「AI 对话」节点里选它:

fastgpt-model-channel
# FastGPT → 管理员 → 模型提供商 → 模型渠道 → 新增渠道
# FastGPT → Admin → Model provider → Model Channels → Add Channel
渠道名(Channel):          Router One
协议类型(Protocol Type):   OpenAI
代理地址(Base url):        https://api.router.one/v1
API 密钥(API key):         sk-your-router-one-key
模型(Models):              <exact-model-id-from-/models>
模型映射(Model Mapping):   留空 / leave empty(模型 ID 与目录 ID 完全一致时)

# 模型配置 → 新增模型(Model Configuration → Add Model)
模型ID(Model ID):          <exact-model-id-from-/models>
别名(Alias):               任意展示名 / any display name
最大上下文 / 支持工具调用 / 支持图片识别:  按 /models 模型详情页填写

# 保存后:模型测试 → 开始测试(Model Test → Start Test)

每个值填在哪里,怎么验证

Router One 需要的东西都在一个渠道加一条对应的模型配置里。首次登录时系统要求的其他模型类型在同一个管理页配置,但必须指向别的供应商:

FastGPT 字段填什么怎么验证
模型渠道 → 协议类型OpenAIAI Proxy 在代理地址后拼 /chat/completions,目录里所有聊天模型都在这个端点上提供服务
模型渠道 → 代理地址https://api.router.one/v1模型测试通过;测试报 404 not_found 说明少了 /v1
模型渠道 → API 密钥为这套部署单独创建、设了 maxSpend 的 Router One Key测试请求出现在 Dashboard → Logs 里这把 Key 名下
模型渠道 → 模型 / 模型映射精确目录 ID;映射只用于把本地别名指向精确 IDLogs 里每条 Trace 的模型与 /models 逐字一致
模型配置 → 模型ID同一个精确 ID;上下文、工具调用、图片输入按模型详情页填工具调用、问题分类、内容提取节点要求打开「支持工具调用」,且模型详情页列出工具调用
模型配置 → 自定义请求地址 / Key已标记即将弃用;若使用,填完整路径 https://api.router.one/v1/chat/completions绕过渠道和它的调用日志;官方文档要求改成渠道管理
索引、重排、语音合成、语音识别模型另一家供应商的渠道Router One 没有 embeddings 和 rerank 端点;FastGPT 至少要有一个索引模型才能建知识库

给一套部署定预算,并逐次核对模型调用

一次工作流运行会散成多次模型请求:AI 对话节点、回到模型的工具调用、问题分类、内容提取各算一次,AI Proxy 还会自行重试失败的请求(官方 Compose 模板把 RETRY_TIMES 设为 3),每一次真正到达网关的尝试都是独立请求,有各自的 Trace 和费用。给每套 FastGPT 部署单独一把设了 maxSpend 的 Router One Key,失控的工作流会停在你设的上限。这里有三本账,只有一本是你要付的钱:Dashboard → Logs 是逐请求的费用,带模型、tokens、成本、延迟、状态和 request_id;AI Proxy 的「调用日志」页按次显示输入输出 tokens、耗时和请求地址——看实际打到哪个路径最快——错误详情默认只保留 1 小时(LOG_DETAIL_STORAGE_HOURS);FastGPT 自己的积分(模型表单里的价格字段)用来给你的用户计量,与网关费率无关。按时间、模型和 token 数对账,报障时保留网关的 request_id。如果同一个模型 ID 还配在别的渠道里,AI Proxy 会按优先级在渠道间负载均衡,Router One Logs 里少的那一条可能只是被别的渠道接走了。

FastGPT 该填哪个模型 ID?

从 /models 页复制精确的模型 ID,保留大小写、连字符和版本后缀,不要用展示名称代替。打开该模型的详情页,核对支持的 API 端点、上下文窗口和工具调用等能力,再与 FastGPT 当前选择的 provider 和功能对应。模型出现在目录里,不等于当前客户端能调用它的所有功能。建议为每个工具单独建 API Key,并设置 maxSpend 消费上限。

FastGPT 用的是哪种 API 协议?

OpenAI 兼容描述的是接口格式,不能据此推断 Chat Completions(/v1/chat/completions)、Responses(/v1/responses)和 Anthropic Messages(/v1/messages)可以互换。先核对工具当前版本、provider 配置和实际请求路径,再查模型详情与 API 兼容性事实页。一次普通对话成功,也不能证明服务端工具、历史状态或文件编辑功能都受支持。

在 trace 里验证 FastGPT 的调用

先在 FastGPT 发出一次简单文本请求,再到 Dashboard → Logs 按时间、模型和 request_id 核对 trace:tokens、花费、延迟和状态码。成功后再分别验证流式输出、工具调用和多轮历史。失败时保留实际请求路径、完整错误消息及 request_id;没有对应日志时,先查客户端配置和网络,不能仅凭客户端报错认定是网关或上游故障。

常见问题

渠道测试成功,但应用里调用报 400 或 404,差在哪里?

两个 ID 必须一致:「模型配置」里的模型ID 就是 FastGPT 请求体里 model 字段的值,渠道原样转发,除非「模型映射」改写了它——所以模型启用时的拼写和目录 ID 不同,或映射指向了已下架的 ID,只会在真实调用时才报错。先看 AI Proxy「调用日志」里的请求地址,再到 Dashboard → Logs 看错误消息和 request_id。协议类型为 OpenAI 时路径是 /v1/chat/completions,目录里所有聊天模型都在这个端点上;400 且消息含 must be called via,说明请求走到了别的端点——比如用 Anthropic 协议类型建的渠道会往代理地址下的 /messages 发请求,而网关只为它列出的 Claude 系列和 DeepSeek ID 提供该端点——所以即使是 Claude 系列 ID,Router One 渠道也保持 OpenAI 协议类型。400 里点名某个参数,则是模型拒绝了它:FastGPT 模型表单注明最大温度留空表示模型不支持 temperature,Body 额外字段会合并进每次请求。

代理地址到底带不带 /v1?one-api 的教程说不要带。

在 FastGPT 里要带。渠道存在 AI Proxy 里,它的 OpenAI 协议类型会在你填的地址后面拼 /chat/completions;表单占位符是以 /v1 结尾的 OpenAI 默认地址,FastGPT 文档也提醒「注意是否需要增加 /v1」。不带的话请求会发到 https://api.router.one/chat/completions,网关返回 404 not_found,消息里直接说明 OpenAI 兼容客户端需要以 /v1 结尾的 base URL。中转站页面上相反的口径没有错,但那是 one-api 和 new-api 的「OpenAI」渠道类型,它们自己拼完整的 /v1/chat/completions。测试失败时,先到 AI Proxy「调用日志」看请求地址,再决定增删 /v1;连接排查页有这一步的完整走法。

知识库的索引模型、重排模型、语音模型能不能也用 Router One?

不能。FastGPT 把五类模型分开配置——语言、索引、重排、语音合成、语音识别——系统至少要有一个语言模型和一个索引模型才能正常使用。Router One 在 /v1/chat/completions 上提供聊天模型,没有 embeddings、rerank 和音频端点,所以这三类模型要从另一家供应商的渠道来,Router One 渠道里只放语言模型。一把 Router One Key 仍然覆盖所有对话和 Agent 节点——GPT、Claude、Gemini、Grok 和 DeepSeek 系列——知识库索引的费用则留在另一家的账单上。

FastGPT 能通过网关用哪些模型?

选用当前目录中同时支持 FastGPT 所用端点和所需功能的模型。精确 ID、当前单价与能力以 /models 及模型详情为准;不要仅按 GPT、Claude 等系列名判断兼容性。客户端能列出模型,只证明模型发现成功,仍需验证实际调用。

能列出模型,但调用报 400 或 404,怎么办?

先记录实际请求路径和错误消息,再核对精确模型 ID。400 可能是参数、工具类型或模型与端点不匹配;404 可能是请求路径或资源不存在,不能直接判定模型下线。若错误提示 must be called via,按它指明的端点调整客户端 provider,或换用支持当前端点的模型。不要在所有工具里统一增删 /v1 或 /chat/completions。

中国大陆能直连吗?

能。网关在大陆可直连、无需 VPN,配置与全球环境完全一致。

报 401/402/403/429 怎么排查?

先到 Dashboard → Logs 核对请求及错误消息。401 查 Key 是否传入和有效;402 查钱包余额与 maxSpend;403 查 Key 权限和访问限制;429 查请求频率、token 限额及上游限流,按错误来源处理。保留 request_id,再按错误码速查页逐项排查。