这篇教程假设你已经完成第一个模型供应商,并能让至少一个工具通过 OcHub 发出请求。下面每个场景只增加一层规则,便于在请求日志中判断是哪一步改变了结果。
先理解请求顺序
一次转发请求会经过以下决策:
- 识别客户端使用的接口:Anthropic Messages、OpenAI Chat 或 OpenAI Responses。
- 查找当前应用所连接的模型供应商。
- 用客户端模型名匹配第一条模型例外。
- 决定发送给上游的模型名。
- 在该模型供应商已启用的接口中选择候选。
- 优先使用客户端原生接口;不可用时尝试可转换的其他接口。
- 映射或移除思考参数。
- 记录请求模型、上游模型、计价模型、Token、状态和延迟。
模型供应商 API 地址应填写上游 origin 或自定义前缀,不要包含标准推理终点。例如上游最终接口是
https://api.example.com/v1/messages,通常填写 https://api.example.com。OcHub 会根据
已选择接口拼接 /v1/messages、/v1/chat/completions 或 /v1/responses。
模型名的优先级
默认模型和模型例外同时存在时,使用以下规则:
| 命中情况 | 发给上游的模型 |
|---|---|
| 命中例外,且填写“上游模型名” | 例外中的上游模型 |
| 命中例外,但上游模型留空 | 客户端原始模型 |
| 未命中例外,且填写默认模型 | 默认模型 |
| 未命中例外,也没有默认模型 | 客户端原始模型 |
这意味着一条“只指定接口、模型名留空”的例外会保留客户端模型,而不会继续套用默认模型。 它适合限制协议,但也可能让原本想统一到默认模型的请求绕过覆盖。
模型模式支持 * 通配符,例如 claude-*、*-reasoning 或 gpt-*-mini。多条规则可能命中
时,先匹配列表中靠前的规则,因此把精确模型放在通配规则之前。
场景一:把客户端别名改成上游模型
目标:客户端继续请求熟悉的 claude-sonnet-current,上游实际使用
anthropic/claude-sonnet-4-6。
-
编辑目标模型供应商。
-
展开“模型例外”。
-
点击“添加例外”。
-
“模型或模式”填写
claude-sonnet-current。 -
“上游模型名”填写
anthropic/claude-sonnet-4-6。 -
“指定接口”先保持“自动选择”。
-
保存后发起一条使用别名的请求。
-
在请求详情中确认:
- 请求模型是
claude-sonnet-current。 - 实际模型或响应模型是上游 ID。
- 计价模型符合你的定价来源设置。
- 请求模型是
如果上游返回的模型名仍是别名,不一定代表改写失败;部分上游会回显客户端名称。最终以 供应商后台日志和 OcHub 的请求详情共同判断。
场景二:让 Codex 使用 Chat-only 上游
目标:Codex 发出 OpenAI Responses 请求,但商业模型供应商只提供 Chat Completions。
- 新增或编辑模型供应商。
- API 地址填写 Chat 上游的基础地址,不包含
/v1/chat/completions。 - 在“可用接口”中只启用 OpenAI Chat。
- 保存模型供应商,并在 Codex 页面切换到它。
- 不添加模型例外,先让自动路由完成 Responses → Chat 转换。
- 重开 Codex,发起不依赖特殊 Responses 能力的短请求。
- 在请求日志中核对状态、模型与输出。
普通模型请求可以转换,但以下能力不能假定可用:
- Codex 远程压缩要求 OpenAI Responses 上游。
- 上游不认识的 Responses 专属字段可能被移除或无法等价转换。
- 工具调用、结构化输出和推理参数是否等价取决于上游实现。
如果上游后来提供 Responses,重新检测并同时启用 OpenAI Responses。自动路由会优先选择 Codex 原生的 Responses 接口。
场景三:按模型族固定接口
目标:同一个上游同时开放多个协议,Claude 模型走 Messages,GPT 模型走 Responses。
先在模型供应商里检测并启用两个真实可用接口,然后添加:
| 模型或模式 | 上游模型名 | 指定接口 |
|---|---|---|
claude-* |
留空 | Anthropic Messages |
gpt-* |
留空 | OpenAI Responses |
保存后分别发起两个请求。因为上游模型名留空,OcHub 只固定接口,不改写模型。
适合固定接口的情况:
- 上游同一模型只在某个终点开放。
- 自动检测认为多个接口可用,但供应商文档明确推荐其中一个。
- 某个接口能回复普通文本,却无法正确处理工具调用。
指定接口后,如果该接口被停用,规则会变成无效配置。编辑模型供应商时 OcHub 会要求规则引用的 接口保持启用。
场景四:上游只允许一个模型
目标:无论客户端请求什么模型,都统一发送到 company-model-v2。
最简单的方法是在“高级设置”填写:
默认模型:company-model-v2不要同时创建宽泛的 * 例外。默认模型只在没有命中例外时生效,已经足够覆盖普通请求。
适合默认模型的情况:
- 内部网关只暴露一个模型。
- 客户端默认模型名称无法修改。
- 临时把多种客户端配置汇总到一个测试模型。
不适合的情况:
- 需要按任务选择不同模型。
- 想发现客户端传错模型名。
- 供应商按模型价格差异很大,却没有同步调整计价模型。
验证时同时检查请求模型与实际模型,避免用量页面看起来全部是客户端别名。
场景五:同时改模型和接口
目标:所有 claude-* 别名都发送到一个 OpenAI Chat 兼容模型 company-reasoner。
添加一条例外:
| 字段 | 值 |
|---|---|
| 模型或模式 | claude-* |
| 上游模型名 | company-reasoner |
| 指定接口 | OpenAI Chat |
这条规则同时完成模型改写和 Messages → Chat 转换。保存后用最简单的文本请求验证,再测试 工具调用。出现问题时分两步定位:
- 暂时把指定接口改为“自动选择”,判断模型名是否可用。
- 模型可用后再固定 OpenAI Chat,判断协议转换是否有问题。
场景六:统一思考强度
不同 CLI 可能用强度枚举,也可能直接发送 Token 预算。模型供应商提供三种处理方式:
| 模式 | 行为 | 建议 |
|---|---|---|
| 自动映射 | 在低、中、高、最大档位与 Token 预算间转换 | 多 CLI 共用上游时优先 |
| 原样传递 | 不改客户端思考参数 | 客户端与上游协议完全一致时 |
| 关闭思考 | 移除或关闭相关参数 | 上游拒绝思考字段时 |
自动映射的四档必须是从低到高递增的正整数。配置方法:
- 查上游允许的最小、常用和最大预算。
- 给“低”分配能产生有效结果的最小值。
- “中”“高”“最大”逐级增加,且不要超过上游限制。
- 先用中档完成一次请求。
- 在请求延迟、输出质量和 Token 之间比较,再调整其他档位。
不要只为了获得更长回答而持续提高思考预算。上游可能将推理 Token 计入输出成本,且过高 预算会增加首 Token 等待。
场景七:准备备用模型供应商
OcHub 会在同一个模型供应商的已启用接口之间自动选择和重试,但不会把一个模型供应商的故障 自动切换到另一张模型供应商卡片。
为上游故障准备备用方案:
- 分别建立“主用”和“备用”两个模型供应商。
- 两者都完成接口检测和真实请求。
- 给相同客户端别名配置等价模型映射。
- 平时把应用连接到主用供应商。
- 主用供应商异常时,在应用页手动切换到备用供应商。
- 发起一条短请求并查看日志。
- 主用供应商恢复后再切回。
故障期间不要同时修改接口、模型例外、思考预算和定价。先恢复可用路径,再逐项修正根因。
用请求日志验收
每次新增规则后,打开用量 → 请求日志,选择刚才的请求:
| 字段 | 用来确认 |
|---|---|
| 应用 | 请求是否归到正确客户端 |
| Provider | 是否经过预期模型供应商 |
| 请求模型 | 客户端原始模型或别名 |
| 模型 | 上游返回或实际处理模型 |
| 计价模型 | 当前价格表套用的模型 |
| 状态 | HTTP 请求是否成功 |
| 首 Token | 开始产生内容前的等待 |
| 持续时间 | 完整请求耗时 |
| 错误信息 | 鉴权、路由、模型或上游错误 |
一次测试只改一个变量,并给请求使用容易识别的短提示。这样日志中即使有多条相近记录,也能 快速定位刚才的验证请求。
故障定位表
| 现象 | 可能原因 | 下一步 |
|---|---|---|
| 404 且所有接口检测失败 | Base URL 包含了完整终点或多余 /v1 |
改为上游 origin / 前缀后重测 |
no gateway channel serves model |
模型例外、接口或模型匹配后无候选 | 检查规则模式和启用接口 |
| 模型未改写 | 没命中规则或规则顺序不对 | 用精确模型测试,并把精确项放前面 |
| 默认模型未生效 | 请求命中了另一条例外 | 检查该例外是否应删除或填写上游模型 |
| 普通文本成功、工具调用失败 | 协议转换或上游能力不完整 | 优先启用客户端原生接口 |
| Codex 压缩失败 | 没有 Responses 上游 | 启用 Responses 或关闭相关能力 |
| 延迟突然升高 | 接口转换、思考预算或上游状态 | 对比请求详情与备用模型供应商 |
| 成本为 0 | 计价模型没有价格 | 按计费配置补齐 |
规则稳定后,再把同一模型供应商应用到其他工具。每个新客户端都应重新做真实请求,因为“上游 可用”不代表所有客户端协议都能无损转换。

