跳到主要内容
注册

一条连接,把你选定的 Router One 模型接入 Open WebUI

Open WebUI 是开源的自托管聊天界面,任何 OpenAI 兼容端点都能作为它的后端。管理员把 Router One 添加为一条连接,你从目录里挑选的对话模型(包括 GPT、Claude、Gemini、Grok 和 DeepSeek)就会出现在实例所有用户的模型选择器里。每一条回复,以及 Open WebUI 围绕它发出的每个后台小请求,都会成为控制台 → 日志里的一条请求,带模型、tokens、费用和状态。有几项 Open WebUI 默认设置决定了请求有多少、用户能看到哪些模型:模型自动发现会列出目录里的全部 ID,连图像生成模型也在内;标题、标签和追问建议默认用当前对话的模型生成;Docker 环境变量只在首次启动时生效。本指南逐项讲连接表单、模型 ID 白名单、任务模型设置、工具调用与用量上报、Responses 选项,以及重建容器后仍然有效的 Docker 设置。网关在中国大陆可直连,实例部署在国内服务器上也无需代理。按 Open WebUI v0.11.4 核对(2026-09-27)。

把 Open WebUI 配置到 Router One base URL

在已运行的实例里打开 管理员面板 → 设置 → 外部连接,在「管理 OpenAI 接口连接」处点 + 号添加连接。URL 填 base URL,恰好一个 /v1。Key 填你的 Router One Key,会以 Bearer token 发送。「连接类型」保持「外部」,「提供商」保持「默认」。「接口类型」保持 Chat Completions,每次对话都是发往 /v1/chat/completions 的 POST,这个端点服务目录里的全部对话模型。在「模型 ID」里用 + 号逐个添加希望用户看到的目录精确 ID(见下一节)。「模型 ID 前缀」可选。「验证连接」会带着 Key 请求 GET /v1/models,成功时提示「已验证服务器连接」;保存本身不做任何测试,所以先验证、再保存。全新的 Docker 部署也可以在首次启动时用环境变量写入同一条连接:

URL
https://api.router.one/v1
open-webui-connection
# Open WebUI → Admin Panel → Settings → Connections → Manage OpenAI API Connections → +
URL:              https://api.router.one/v1
Key:              sk-your-router-one-key
Connection Type:  External        API Type: Chat Completions
Model IDs:        anthropic/claude-sonnet-5, openai/gpt-5.6-sol, google/gemini-3.7-flash, deepseek-v4.1-flash

# Or seed the connection on the first launch (ConfigVar: later env changes are ignored):
docker run -d -p 3000:8080 -v open-webui:/app/backend/data \
  -e OPENAI_API_BASE_URL=https://api.router.one/v1 \
  -e OPENAI_API_KEY=sk-your-router-one-key \
  -e WEBUI_SECRET_KEY=<output of: openssl rand -hex 32> \
  --name open-webui --restart always ghcr.io/open-webui/open-webui:main

用「模型 ID」白名单决定用户能看到哪些模型

「模型 ID」留空时,Open WebUI 会列出 GET /v1/models 返回的全部内容,而 Router One 返回的是整个目录:包括 azure/、aws/、vertex/ 这类渠道 ID,也包括没法回答聊天消息的图像生成模型(gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst、gemini-3-pro-image-preview、gemini-3.1-flash-image-preview、grok-imagine-image、grok-imagine-image-quality)。往白名单里添加 ID 会替换自动获取的列表:Open WebUI 不再为这条连接请求 /models,只显示你填写的 ID。实用的做法是列几个对话模型,例如 anthropic/claude-sonnet-5、anthropic/claude-haiku-4.5、openai/gpt-5.6-sol、openai/gpt-6-sol、google/gemini-3.7-flash、deepseek-v4.1-flash 和 grok-4.7。用目录里的精确 ID 还能避开 Open WebUI v0.11.4 的一处改写:对以 o 加数字开头、或以 gpt- 加 5 及以上版本号开头的裸名称,它会把 max_tokens 改名为 max_completion_tokens,并用 developer 角色发送系统提示词;openai/gpt-5.6-sol 这类带厂商前缀的 ID 则原样发送。「模型 ID 前缀」只改变选择器里的显示:Open WebUI 用一个点把它和每个 ID 连起来(前缀填 ro 会显示成 ro.anthropic/claude-sonnet-5),发请求前再去掉,所以除非两条连接列出了相同的 ID,否则留空即可。

任务模型:每条消息背后的请求

Open WebUI 会在每次对话周围发一些后台小请求:给新对话起标题、打标签、生成追问建议,用到知识库检索和联网搜索时还会改写检索词。默认情况下它们都用用户当前对话的模型,所以在旗舰模型上,一条消息可能在控制台 → 日志里对应三四条记录,每条都按该模型的单价计费。在 管理员面板 → 设置 → 界面 的「任务」部分,把「外部任务模型」设为速度快、不带推理、单价低的 ID,例如 anthropic/claude-haiku-4.5;除本地连接之外的所有模型都用「外部任务模型」,Router One 也在其中。标题生成自带 1,000 个输出 token 的上限,而标签、追问和检索词请求本身没有输出上限。「任务模型参数」会给所有后台请求统一设置参数,而且只要设置了任何一项,标题的内置上限就不再生效,所以记得带上 max_tokens,例如 {"max_tokens": 1000}。用不到的任务可以在「生成」下面关掉:标题生成、标签生成、追问生成默认开启,输入框内容自动补全默认关闭。对应的环境变量是 TASK_MODEL_EXTERNAL、TASK_MODEL_PARAMS、ENABLE_TITLE_GENERATION、ENABLE_TAGS_GENERATION、ENABLE_FOLLOW_UP_GENERATION 和 ENABLE_AUTOCOMPLETE_GENERATION。

工具调用、用量、Responses 与 embeddings

从 v0.10.0 起,没有单独选择模式的对话都使用原生(Native)工具调用,依赖模型自身的函数调用能力;在原生模式下,Open WebUI 还会把联网搜索、记忆和知识库检索作为工具交给模型调用。优先选模型详情页列出了工具调用的 ID;其他 ID 在挂载工具之前先测试一轮工具调用。接下来是 token 计数:Open WebUI 只有主动请求时才会显示用量,而默认关闭的「用量」能力正是让它发送 stream_options.include_usage 的开关。在 管理员面板 → 设置 → 模型 → 能力 里按模型开启,聊天界面和 Open WebUI 的统计里才会有 token 数;控制台 → 日志无论如何都会记录 tokens 和费用。「接口类型」里的 Responses 在 Open WebUI 中属于实验性功能;如果要用,就另加一条接口类型为 Responses 的连接,白名单只放 GPT 系列、DeepSeek 与 Grok 对话模型的 ID,因为 Claude 和 Gemini 的 ID 不在 /v1/responses 上提供。最后,文档和知识库需要 embeddings 引擎。Router One 没有 /v1/embeddings,所以 Open WebUI 的文档向量化请保持默认的本地模型,或交给其他供应商。

Docker:只生效一次的设置,以及固定的密钥

OPENAI_API_BASE_URL、OPENAI_API_KEY 以及大多数连接和任务设置都属于 ConfigVar:Open WebUI 在首次启动时读取它们、存进数据库,之后一直使用存下来的值。之后再改环境变量不会生效,请到管理员面板里直接改连接。ENABLE_PERSISTENT_CONFIG=False 会把优先级反过来,每次重启都以环境变量为准,但在管理员面板里做的修改到下次重启就会丢失。docker run 命令里还应该有两项。-v open-webui:/app/backend/data 把对话、用户和设置保存在命名卷里,不挂卷的话,删除容器时数据一起丢失。WEBUI_SECRET_KEY 用于签发登录令牌、加密存储的密钥;不设置时,镜像会在容器内部自动生成一个,于是重建容器(不只是重启)会让所有用户都被登出。用 openssl rand -hex 32 生成一次,之后每次运行都传同一个值。

Open WebUI 该填哪个模型 ID?

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

Open WebUI 用的是哪种 API 协议?

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

在请求日志里核对 Open WebUI 的调用

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

常见问题

改了 OPENAI_API_BASE_URL 环境变量,Open WebUI 为什么没反应?

OPENAI_API_BASE_URL 是 ConfigVar:Open WebUI 在首次启动时应用它、存进数据库,之后启动时会忽略这个环境变量。请到 管理员面板 → 设置 → 外部连接 里直接改这条连接,或者换一个全新的数据卷重新部署。如果你只想通过环境变量管理配置,就设置 ENABLE_PERSISTENT_CONFIG=False,每次重启都以环境变量为准;不过在管理员面板里做的修改到下次重启就会丢失。

「验证连接」失败或报 401,怎么办?

「验证连接」会带着你填的 Key 请求 GET /v1/models。401 说明 Key 没被接受:检查是否完整粘贴、首尾有没有空格、是不是以 sk- 开头。404 通常是地址不对:URL 要正好是 https://api.router.one/v1,少了 /v1 或写成 /v1/v1 都会失败;写成 /v1/v1 时,Router One 返回的错误消息会提示去掉多余的 /v1。验证通过后别忘了点保存;只保存不验证,错误要到第一次对话时才会暴露。

为什么模型选择器里出现了图像模型?

因为 Open WebUI 会列出 GET /v1/models 返回的全部模型,而 Router One 返回的是整个目录,其中包括 gpt-image-2、grok-imagine-image 这类不能回答聊天的图像生成 ID。把需要的对话模型 ID 加进连接的「模型 ID」白名单:白名单会替换自动获取的列表,只显示这些 ID。Open WebUI 的图像生成另外在 管理员面板 → 设置 → 图像 里配置。

发一条消息,控制台 → 日志里出现三四条记录,正常吗?

默认设置下是正常的。除了回复本身,Open WebUI 还会给新对话生成标题、标签和追问建议,用到知识库或联网搜索时还会改写检索词;没有设置外部任务模型时,这些都用当前对话的模型。把后台任务指向 anthropic/claude-haiku-4.5 这类低单价 ID,并在「任务模型参数」里设置 max_tokens,或者关掉用不到的生成任务。

连接的「接口类型」要不要选 Responses?

只在单独的一条连接上、而且只列 GPT 系列、DeepSeek 或 Grok 对话模型的 ID 时才考虑,并且确实需要时再用:Open WebUI 把 Responses 支持标为实验性功能,Router One 的 /v1/responses 也只服务这几个系列。Claude 系列 ID 放在 Responses 连接上,会在任何模型运行前收到 HTTP 400 must be called via …;Gemini 的 ID 在这里同样不提供。主连接保持 Chat Completions,它服务全部对话模型。

每个用户能用自己的 Router One Key 吗?

可以,通过「直接连接」,这是实验性功能,默认关闭(ENABLE_DIRECT_CONNECTIONS,或 管理员面板 → 设置 → 外部连接 里的开关)。开启后,每个用户在自己的设置里添加连接,浏览器直接请求 Router One,Key 存在该浏览器的本地存储里,而不是服务器上。Router One 允许来自浏览器的跨域请求,所以这条路走得通,但由管理员统一管理连接仍是更简单的默认做法。用个人 Key 时,每个请求都记在发起人自己的那把 Key 上。

Open WebUI 里看不到 Router One 模型的 token 数?

在 管理员面板 → 设置 → 模型 里给该模型开启「用量」能力。它默认关闭,只有开启后 Open WebUI 才会发送 stream_options.include_usage,拿到流式回复的 token 数。无论 Open WebUI 是否显示,Router One 都会在控制台 → 日志里记录每个请求的 tokens 和费用。

Router One 能为 Open WebUI 的文档和知识库提供 embeddings 吗?

不能。Router One 没有 /v1/embeddings 端点,把 Open WebUI 的 embedding 引擎指向 Router One 的地址会失败。文档向量化请保持 Open WebUI 默认的本地模型,或交给其他供应商,Router One 负责对话。检索到的段落仍会作为普通输入 tokens 交给对话模型,控制台 → 日志会把它们算进去。

Open WebUI 能通过网关用哪些模型?

选用当前目录中同时支持 Open WebUI 所用端点和所需功能的模型。精确 ID、当前单价与能力以 /models 及模型详情为准;不要仅按 GPT、Claude 等系列名判断兼容性。客户端能列出模型,只说明它从自身配置或 GET /v1/models 读到了这个 ID,仍需验证实际调用。

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

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

中国大陆能直连吗?

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

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

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