跳到主要内容

服务提供方透传

当某个服务提供方原生端点没有被建模为一等网关路由时,服务提供方透传允许应用通过 AISIX 调用该端点。

AISIX 为这类请求暴露 ANY /passthrough/:provider/*rest。透传会保留网关认证和上游凭证注入,但相比模型化代理路由执行更少请求和响应处理。

本指南将发送一次服务提供方透传请求,并说明何时适合使用这条备用路径。

准备工作

请先准备以下内容:

  • 一个可以处理代理请求的 AISIX 网关。
  • 一个调用方 API Key,允许访问所请求服务提供方下至少一个模型。
  • 一个服务提供方密钥,其 api_base 可访问服务提供方原生端点;如果服务提供方有内置默认 base URL,则可省略。

发送透传请求

在路径中指定上游服务提供方即可发送透传流量。以下示例通过 AISIX 调用上游 OpenAI models 端点:

curl -sS -X GET "http://127.0.0.1:3000/passthrough/openai/v1/models" \
-H "Authorization: Bearer YOUR_CALLER_API_KEY" \
-o aisix-passthrough-models.json

AISIX 会认证调用方 API Key,为请求的服务提供方选择一个可访问模型,注入该模型的服务提供方密钥作为上游认证,剥离不安全请求头,保留查询字符串,并在不做端点专属标准化的情况下转发剩余路径和请求体。

响应是上游服务提供方响应,不是标准化后的 AISIX 模型列表:

{
"object": "list",
"data": [
{
"id": "gpt-4o-mini",
"object": "model"
}
]
}

检查响应是否作为上游列表返回:

jq -r '.object' aisix-passthrough-models.json

命令应输出:

list

仅在必要时选择透传

透传适合尚未暴露为一等网关路由的服务提供方专属 API、探索性集成工作,或在评估是否需要原生网关端点期间提供临时访问。

如果 AISIX 已经支持对应能力,应优先使用模型化代理路由。模型化路由会解析面向调用方的模型别名,并能应用路由专属行为,例如响应标准化、输出安全护栏、token 用量归因、缓存行为和端点专属服务提供方检查。

透传行为

透传会尽量保持服务提供方原生请求不变:

  • 接受任意 HTTP 方法,并保留查询字符串和请求体。
  • 转发安全请求头,并剥离 hop-by-hop 头以及服务提供方密钥中配置的 strip_headers
  • 从选中的服务提供方密钥中注入上游认证信息。
  • 透传上游状态码、响应体和安全响应头。

路径中的 provider 片段会用于查找服务提供方标签匹配、且当前调用方 API Key 有权访问的已配置模型。该路由以服务提供方为作用域,而不是以模型为作用域;它不会像 Chat Completions 请求那样选择某个具体模型别名。如果多个可访问模型共享同一个服务提供方但使用不同服务提供方密钥,生产流量不应依赖这种隐式选择。

上游认证会使用服务提供方期望的形式。Anthropic 透传使用 API Key 请求头和 Anthropic 版本请求头;大多数其它内置服务提供方默认使用 bearer 认证。

如果选中的服务提供方密钥没有设置 base URL,AISIX 只会对 OpenAI、Anthropic、Google、DeepSeek 等已知服务提供方使用内置默认值。对于其它服务提供方标签,请显式配置服务提供方密钥的 base URL。当 base URL 和透传路径都包含相同 API 版本片段时,AISIX 会在转发前移除重复片段。

透传检查

当透传请求没有到达预期上游时,请先检查路径中的 provider 片段,再检查 AISIX 可以为该服务提供方标签选择哪个已配置模型和服务提供方密钥。透传不会从请求体读取模型别名,因此选中的服务提供方密钥来自该服务提供方下某个可访问模型。

当调用方 API Key 有效但不能访问请求服务提供方下的任何模型时,AISIX 会返回 403。当没有已配置模型匹配该服务提供方标签时,AISIX 会返回 404。如果 AISIX 提示没有已知默认 base URL,请在选中的服务提供方密钥上设置 base URL。

下一步

你已经了解什么时候应使用服务提供方透传,而不是模型化端点。当客户端依赖受支持端点族之上的流式响应或工具调用行为时,请继续阅读流式响应工具调用