跳转到内容

路由与 Provider

路由回答的是:这个入站请求应该交给哪个已配置 provider? Provider 配置回答的是:这个 provider 使用什么 wire protocol 和哪个上游 endpoint?

  • request_protocol 是可选 route 过滤条件,基于 ProxAI 从入站 endpoint 检测出的协议。
  • Provider protocol 控制发给上游时使用的 wire format。
  • 如果 route 省略 request_protocol,它可以匹配从请求 path 检测出的任意入站协议。
  • 如果 route 设置了 request_protocol,并且模型命中但入站协议不同,ProxAI 会返回配置错误,而不是静默落到默认 provider。
协议值使用位置含义
openai_responses请求与 providerOpenAI Responses API
openai_chat_completions请求与 providerOpenAI Chat Completions API
anthropic_messages请求与 providerAnthropic Messages API

一条 route 通常类似:

[[routing.routes]]
name = "minimax_m3_chat"
request_protocol = "openai_chat_completions"
match_kind = "exact"
model_pattern = "MiniMax-M3-preview"
provider = "minimax"
upstream_model = "MiniMax-M3"

关键字段:

字段作用
nameCLI override 使用的稳定标识
request_protocol可选 endpoint/protocol 保护条件
match_kindexactglobregexauto
model_pattern逻辑模型选择器
providerroute 命中时选择的 provider 名称
upstream_model发往上游前可选模型改写

Provider 描述一个具体上游:

[providers.minimax]
protocol = "anthropic_messages"
base_url = "https://example.invalid"
api_key = "..."
compatibility = "anthropic_compatible"
read_idle_timeout_secs = 60

Provider protocol 决定是否需要请求转换。例如,一个入站 openai_chat_completions 请求如果被路由到 anthropic_messages provider,就需要 openai_chat_completions -> anthropic_messages 转换路径。Provider api_key 一定会发给上游(OpenAI provider 用 Authorization: Bearer,Anthropic provider 用 x-api-key),并覆盖客户端传入的认证 header,见 行为契约 C11 和 C12