服务提供方透传
当某个服务提供方原生端点没有被建模为一等网关路由时,服务提供方透传允许应用通过 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。 - 从选中的服务提供方密钥中注入上游认证信息。
- 使用所选模型附加的安全护栏扫描完整请求体和响应体文本。如果请求体命中安全护栏,AISIX 会在请求到达服务提供方前返回
422;如果响应体命中安全护栏,AISIX 会在转发上游响应体前返回422。