响应头与错误码
AISIX 会通过多种面向调用方的 API 格式返回响应。失败的 Chat Completions 请求、Anthropic 风格 Messages 请求和透传路由请求使用的错误信封并不完全相同。
本参考帮助你理解响应头、重试提示、状态码和错误字段。排查时应先确认请求的 URL 路径,再查看对应错误格式,然后判断失败来自调用方、网关侧还是上游服务提供方。
错误响应格式
请根据请求的 URL 路径识别适用的错误信封。
| 响应来源 | 错误信封 | 阅读 |
|---|---|---|
OpenAI 兼容代理路由,例如 /v1/chat/completions、/v1/completions、/v1/embeddings、/v1/responses、音频、图像和 rerank | {"error": {...}} | OpenAI 风格代理错误 |
Anthropic 风格代理路由,例如 /v1/messages 和 /v1/messages/count_tokens | {"type":"error","error": {...}} | Anthropic 风格代理错误 |
/mcp 和 /mcp/{server} 下的 MCP 路由 | JSON-RPC 错误信封 | MCP 错误 |
/a2a/{agent} 下的 A2A 调用 | 上游 JSON-RPC 响应;转发前失败使用 HTTP 错误;上游分发失败使用 JSON-RPC 错误 | A2A 错误 |
/a2a/{agent}/.well-known/agent-card.json 下的 A2A Agent Card | 成功时使用 Agent Card JSON;网关或上游失败时使用 HTTP 错误响应 | A2A 错误 |
| 已配置的透传路由 | 转发上游状态码和响应体;AISIX 生成的失败使用 {"error": {...}} | 透传错误 |
代理响应头
运行时响应头会因端点而异,不应假设每个响应头都适用于所有 /v1/* 路由。
| 响应头 | 使用场景 |
|---|---|
x-aisix-call-id | 出现在 Chat Completions 响应中,用于关联一次网关调用。 |
x-aisix-request-id | 出现在每个代理响应中,用于将响应与对应的访问日 志和用量事件关联起来。该请求头默认在请求上同样被接受:发送你自己的 ID,AISIX 会全程使用该值而不再自行生成。从哪些请求头读取 ID 可配置,因此具体部署可以扩展或关闭该行为。参见复用自己的请求 ID。 |
x-aisix-served-by | 出现在成功的 Chat Completions 路由响应中,用于识别实际处理请求的目标模型。 |
x-aisix-cache | 出现在缓存策略覆盖的聊天请求上:hit、miss 或 bypass(调用方发送了 Cache-Control: no-cache 或 no-store)。用于确认响应是否由网关缓存返回。 |
x-aisix-cache-layer | 出现在缓存命中时:完全相同请求的匹配为 exact,向量相似度匹配为 semantic。用于区分命中来自哪个匹配层。 |
x-aisix-cache-similarity | 出现在语义缓存命中时。匹配条目的余弦相似度,取值 0–1。用于校准策略的相似度阈值。 |
x-ratelimit-* | 当调用方 API Key 配置了限流时,会出现在成功的 Chat Completions 响应中,用于查看请求、Token 和并发限制状态。 |
Retry-After | 当网关能够给出重试提示时,会出现在限流、预算和所有候选不可用的拒绝响应中;当 AISIX 能解析上游 429 的重试提示时,也会透出该响应头。调用方可据此判断重试时间。 |