跳到主要内容

代理 API 参考

代理 API 是 AISIX 在代理监听端口上暴露给调用方的 API 面。应用可以继续使用已有请求格式,AISIX 负责执行认证、模型解析、流量控制和服务提供方调度。

开源 AISIX 网关和连接到 AISIX Cloud 的 AISIX 网关使用相同的代理 API 面。运维人员配置资源的方式不同,但调用方使用的网关路由相同。AISIX Cloud 还提供预算等控制面功能。

本参考说明 AISIX 的路由行为、认证、模型发现、路由选择和端点约束。代理请求和响应体遵循各路由对应的 API 族;需要完整 body 结构时,请参考对应上游 API 文档。

在 AISIX 中,面向客户端的路由路径由 AI API 形态决定,而不是为每个上游自定义路径。应用直接调用受支持的代理端点。请求中的 model 值会选择已配置的 AISIX 模型别名,进而决定请求背后的服务提供方密钥、上游模型、路由行为和流量控制。

代理路由

方法路由说明
GET/v1/models列出该调用方 API Key 可以请求的模型别名,包括虚拟别名。通配符别名不会展示。
POST/v1/chat/completionsOpenAI 兼容 Chat Completions,支持的服务提供方范围最广。
POST/v1/completionsOpenAI 兼容文本补全。
POST/v1/messagesAnthropic 风格 Messages。Anthropic 上游使用原生格式,非 Anthropic 上游通过转换支持。
POST/v1/messages/count_tokensAnthropic 风格 Token 计数,仅支持 Anthropic 上游目标。
POST/v1/embeddings向量嵌入,仅支持 OpenAI 协议族适配器。
POST/v1/responsesOpenAI Responses API。OpenAI 上游直接转发,非 OpenAI 上游通过服务提供方适配器桥接。
POST/v1/images/generations图像生成。解析出的模型必须配置为 provider: "openai"
POST/v1/videos提交异步视频生成任务。支持 alibabazhipuai(或 zhipu)、volcenginerunwayml(或 runway)和 openai 服务提供方标签。
GET/v1/videos/{video_id}轮询视频生成任务。
GET/v1/videos/{video_id}/content下载已完成的视频结果。
POST/v1/audio/transcriptions语音转文本。转发到上游 OpenAI 风格音频路由。
POST/v1/audio/translations语音翻译。转发到上游 OpenAI 风格音频路由。
POST/v1/audio/speech文本转语音。转发到上游 OpenAI 风格音频路由。
GET/v1/realtimeOpenAI Realtime WebSocket 中继。要求使用直接模型,并在升级连接前完成身份认证。
POST/v1/rerank重排序。仅支持 openaicoherejina 服务提供方标签。
POSTGET/v1/files上传文件或列出文件。
GETDELETE/v1/files/{id}获取或删除文件。
GET/v1/files/{id}/content下载文件内容。
POSTGET/v1/batches创建 Batch 或列出 Batch。
GET/v1/batches/{id}获取 Batch。
POST/v1/batches/{id}/cancel取消 Batch。
POSTGET/v1/fine_tuning/jobs创建 Fine-tuning Job 或列出 Job。
GET/v1/fine_tuning/jobs/{id}获取 Fine-tuning Job。
POST/v1/fine_tuning/jobs/{id}/cancel取消 Fine-tuning Job。
ANY/passthrough/:provider/*rest服务提供方原生转发,包含网关认证和有限的网关标准化处理。
ANY/mcp/mcp/MCP 网关端点。认证调用方,列出允许访问的工具,并将工具调用路由到已注册的上游 MCP 服务器。
ANY/mcp/{server}单服务器 MCP 端点。通常公开原始工具名称;需要避免命名冲突时保留当前服务器前缀。
POST/a2a/{agent}一个已注册 Agent 的 A2A JSON-RPC 端点。转发前会执行调用方 Key 的 Agent 访问控制。
GET/a2a/{agent}/.well-known/agent-card.json获取已注册 Agent 的 Agent Card,并把其服务 URL 重写为网关地址。要求调用方完成身份认证并具有 Agent 访问权限。
GET/livez无需认证的存活探针,用于确认代理监听端口已启动。优雅关闭期间返回 503。
GET/readyz无需认证的就绪探针。实例正在排空或首次配置尚未应用时返回 503。

认证

代理请求接受调用方 API Key,或由已配置的 OpenID Connect(OIDC)提供方签发的 JWT。两种方法都会将请求解析到调用方 API Key 资源。解析出的 Key 决定应用哪些模型和工具允许列表、限流,以及其他访问和流量控制;使用 AISIX Cloud 时,还会应用匹配的预算。

调用方 API Key

通过 AISIX Cloud 控制面创建调用方 API Key,或在开源 AISIX 网关的 resources.yaml 文件中声明调用方 API Key。

推荐格式:

Authorization: Bearer <plaintext-caller-key>

备用格式:

x-api-key: <plaintext-caller-key>

调用方 API Key 是 AISIX 网关凭证,不是上游服务提供方密钥。

OIDC 签发的 JWT

以 Bearer Token 形式发送 OIDC 签发的 JWT:

Authorization: Bearer <jwt>

当环境启用了 OIDC 提供方时,AISIX 会验证 JWT 签名和 Claim,再将外部身份映射到与该信任提供方和 Subject 绑定的调用方 API Key。AISIX 不会内省不透明的 OAuth Token。验证失败的 JWT 会被拒绝,不会被当作调用方 API Key。有关信任提供方配置、身份映射和支持的签名算法,请参阅 JWT 身份认证

模型发现

GET /v1/models 会返回该调用方 API Key 允许请求的模型别名。直接模型和虚拟模型(多目标、语义和合议)都会展示,因为每一个都是调用方可在 model 中发送的名称。通配符别名不会展示:provider/* 是匹配模式,而不是调用方可以请求的名称。

列出的虚拟别名可以在支持虚拟分发的路由上解析。/v1/realtime 以及 Files、Batches 和 Fine-tuning 路由要求使用直接模型,并会拒绝虚拟别名。

列表遵循调用方 API Key 的模型允许列表。只允许某个多目标别名的 Key 会返回该别名,而不会返回其目标。请将此别名作为调用方发现的入口点,并将其目标保持为内部实现细节。

路由行为

多目标别名会在请求时解析为一个或多个目标模型,适用于 /v1/chat/completions/v1/messages/v1/messages/count_tokens/v1/responses

流式请求会使用第一个被选中的可用目标,不会在流式传输过程中切换目标。非流式请求在遇到可重试的上游失败时,可以故障转移到下一个可用目标。

/v1/responses 可以解析多目标别名。OpenAI 上游目标会直接转发 Responses 请求,非 OpenAI 目标会使用 Responses 桥接。

/v1/messages/count_tokens 可以解析多目标别名,但只会使用 Anthropic 上游目标。如果没有可用的 Anthropic 目标,网关会拒绝该请求。

端点约束

有些路由除了适配器协议族兼容性外,还会施加服务提供方专属约束。

路由约束
/v1/responses对 OpenAI 上游目标使用直接转发,对其它服务提供方目标使用桥接转换。
/v1/images/generations解析出的模型必须设置 provider: "openai"
/v1/rerank模型的 provider 标签必须为 openaicoherejina
/v1/embeddings当解析出的适配器不支持 embeddings 时,返回 501 not_implemented
/v1/audio/*转发 OpenAI 风格音频请求,不跨服务提供方协议族做转换。
/v1/files/v1/batches/v1/fine_tuning/jobs支持 OpenAI 兼容服务提供方和 Azure OpenAI。Vertex AI、AWS Bedrock 和 Anthropic 原生 batch 流程使用不同的传输格式和存储模型,因此不由这些路由提供。

Files、Batches 和 Fine-Tuning

Files、batches 和 fine-tuning jobs 使用 OpenAI 兼容路由形态。由于部分后续调用只引用 file 或 job ID,AISIX 会在它创建的 ID 中编码路由信息。网关创建的 ID 以 aisix- 开头,后续 file、batch 和 fine-tuning 调用无需再次提供模型提示即可完成路由。

上传文件时,请通过 model multipart 字段、model 查询参数或 x-aisix-model 请求头提供一次路由模型。仍可使用原始服务提供方 ID,但为了确定性路由,请显式传入 model 查询参数或请求头。

文件和 job 管理调用会记录零 Token 用量事件。当 batch retrieve 第一次观察到 batch 完成时,AISIX 会下载 batch 输出文件,按行聚合 Token 用量,并发出带 Token 计数的用量事件。完整工作流请参见 Batch、Files 和 Fine-Tuning

透传

ANY /passthrough/:provider/*rest 会在完成网关认证和服务提供方解析后,转发服务提供方原生请求。上游服务提供方的状态码和响应体会原样返回。与一等模型化路由相比,该路由有意减少网关标准化处理。

MCP 网关

ANY /mcp 会让 AISIX 作为 MCP 服务器暴露给下游 Agent。网关会聚合已注册上游 MCP 服务器的工具,并以带服务器前缀的名称暴露每个工具。

MCP 请求使用与其它代理请求相同的调用方身份认证。只有当解析出的调用方 API Key 的工具访问权限允许请求的工具名称时,工具调用才会被允许。工具调用请求也可以受调用方 API Key 限流、预算和安全护栏治理。

握手和发现方法可以连接并列出调用方可用的工具。工具调用会产生包含 MCP 服务器和工具归因的用量事件,但不会携带 Token 用量。

ANY /mcp/{server} 将网关限定到一台已注册服务器。它的工具列表通常保留上游服务器的原始名称,而不添加聚合端点使用的 <server>__ 前缀。如果原始名称与已注册服务器前缀存在歧义,AISIX 会保留当前服务器前缀,确保公布的名称仍可调用。访问控制仍会评估规范的带前缀工具标识,因此在聚合端点和按服务器划分的端点之间切换客户端不会绕过授权。

A2A 网关

POST /a2a/{agent} 会把 A2A JSON-RPC 请求转发到一台已注册的上游 Agent。AISIX 会验证调用方身份,确认调用方 API Key 允许访问该 Agent,应用请求限流和并发限制,然后转发请求体,不会在不同 A2A 协议版本之间进行转换。网关连接到 AISIX Cloud 时还会应用预算。

GET /a2a/{agent}/.well-known/agent-card.json 会获取上游 Agent Card,并把其中公布的每一个服务 URL——顶层 url 以及 supportedInterfacesadditionalInterfaces 中的每一项——重写为网关上的 /a2a/{agent}。Agent Card 路由要求相同的调用方身份认证和 Agent 授权,但不受限流影响。

A2A 调用不会解析模型。其用量事件中的 Token 数由网关统计消息文本得出,并标记为 usage_estimated,成本为零。它们会发出带 A2A 归因的用量指标和请求指标。有关注册、协议版本行为和完整请求示例,请参阅 Agent 网关

请求头与错误

代理响应可能包含 AISIX 专属响应头,用于请求关联、路由、缓存状态、限流状态和重试时机。

错误信封取决于请求格式:OpenAI 兼容路由使用 OpenAI 风格错误信封,Anthropic 风格路由使用 Anthropic 风格信封。

MCP 路由使用 JSON-RPC 信封。A2A 调用会原样返回上游 JSON-RPC 响应,并在上游分发失败时使用 JSON-RPC 错误。身份认证、访问控制和流量控制失败可能会在 A2A 请求转发前返回普通网关 HTTP 错误。透传路由返回上游服务提供方响应。

完整响应头列表、错误信封和状态码说明请参见响应头与错误码。按端点查看服务提供方支持情况,请参见服务提供方兼容性