跳到主要内容

Responses API 代理

Responses API 是 OpenAI 面向使用 input/output item 格式而不是 chat completions message 格式的应用提供的响应生成端点。AISIX AI 网关为 Responses API 客户端暴露该路由,同时将调用方认证、模型别名、上游凭证和网关策略保留在网关中。

当应用或工具已经使用 Responses API 时,请使用该路由。对于 OpenAI 上游模型,AISIX 会将请求转发到上游 Responses API。对于其它服务提供方,AISIX 会通过服务提供方适配器转换请求,并向调用方返回 Responses API 结果。

准备工作

请先准备以下内容:

  • 一个可以处理代理请求的 AISIX 网关。
  • 一个可以访问该模型别名的调用方 API Key。
  • 一个由可处理转换后请求形态的服务提供方支撑的模型别名。

发送 Responses 请求

通过网关代理发送请求,并在请求体中使用 AISIX 模型别名:

curl -sS -X POST "http://127.0.0.1:3000/v1/responses" \
-H "Authorization: Bearer YOUR_CALLER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-prod",
"input": "Say hello from AISIX."
}'

AISIX 会解析模型别名,并为选中模型选择服务提供方适配器和上游目标。OpenAI 上游模型不会转换 body,而是直接转发到上游 Responses API。其它服务提供方会使用跨服务提供方桥接。

响应体会以 Responses API 格式返回:

{
"id": "resp_***",
"object": "response",
"model": "gpt-4o-mini-2024-07-18",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Hello from AISIX."
}
]
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 5,
"total_tokens": 17
}
}

服务提供方行为

AISIX 通过两种方式处理 Responses 请求:

模型服务提供方行为
OpenAIAISIX 将请求 model 改写为上游模型 ID,并将请求转发到上游 Responses API。当上游支持时,上游专属 Responses 能力会透传。
其它服务提供方AISIX 将受支持 Responses 字段转换为网关聊天格式,通过服务提供方适配器调度,并返回 Responses API 结果。

桥接路径支持常见的文本、工具调用、工具结果、采样和流式字段。只属于 OpenAI Responses、且没有服务提供方中立聊天等价语义的能力,不会在桥接路径中转发。

桥接到非 OpenAI 服务提供方的请求会忽略以下字段:

  • reasoning
  • store
  • previous_response_id
  • web_searchfile_searchcode_interpreter 等托管工具
  • textmetadataservice_tier 以及其它 OpenAI 专属控制项

策略与用量行为

输入安全护栏可以在 AISIX 调用服务提供方之前检查请求文本。输出安全护栏可以在非流式响应到达调用方之前检查响应内容。

如果输出安全护栏阻断响应,AISIX 会向调用方返回内容策略错误,并记录该阻断请求以便观测。

对于流式请求,AISIX 会保持 Responses SSE 形态。OpenAI 上游模型可以直接透传上游 SSE;桥接服务提供方时,AISIX 会把服务提供方流式分片编码为 Responses 事件。如果启用了输出安全护栏,AISIX 会先缓冲流内容进行策略检查,再决定返回或阻断。

对于成功响应,当上游响应包含 token 用量时,网关会记录用量。流式用量会在 AISIX 从流中收到终止用量信息后发出。

下一步

你已经了解何时通过 AISIX 使用 Responses API,以及直接转发和桥接时的服务提供方处理差异。旧版 completions 路由请继续阅读文本补全;如果 Responses API 客户端依赖 SSE 行为,请继续阅读流式响应