Responses 格式

POST /v1/responses

OpenAI Responses API,用于创建模型响应。支持多轮对话、工具调用和推理等功能。

请求参数

请求头

Authorization

使用 Bearer Token 认证。

格式: Authorization: Bearer sk-xxxxxx

请求体字段(12 个)
参数类型默认值说明是否必填
modelstring—模型 ID。是
inputstring / array—输入内容,可以是字符串或消息数组。未提供时由上游返回参数错误。否
instructionsstring—应用于本次请求的系统级指令。否
max_output_tokensinteger—限制最大输出 token 数。否
temperaturenumber—采样温度;是否支持取决于模型。否
top_pnumber—核采样参数;通常与 temperature 二选一。否
streamboolean—是否以 SSE 事件流返回结果,默认 false。否
toolsarray—模型可以调用的工具。否
tool_choicestring / object—工具选择策略。否
reasoningobject—推理配置,例如 { "effort": "low" };仅适用于支持推理的模型。否
previous_response_idstring—关联上一轮响应 ID,用于多轮对话。否
truncationstring—上下文超限时的处理方式:auto 或 disabled。否

input 在 OpenAPI 文档中标记为可选,但创建响应时通常仍应提供输入内容;model 是唯一标记为必填的字段。

字段边界

  • 调用必需字段:model 必须填写;虽然 input 在 schema 中标记为可选,但实际创建响应时应提供 input。
  • Responses 专属字段:instructions、max_output_tokens、reasoning、previous_response_id 和 truncation 用于 Responses 的系统指令、输出限制、推理、多轮关联和上下文截断控制。
  • 通用或模型相关字段:temperature、top_p、stream、tools 和 tool_choice 是否可用取决于目标模型。max_output_tokens 是 Responses 字段,不等同于 Chat Completions 的 max_completion_tokens。

文档中的字段表示网关请求格式支持的入口;上游模型不支持的字段仍可能返回 400,请以目标模型能力为准。

请求示例

JSON 请求体

{
  "model": "gpt-5.6-sol",
  "instructions": "你是一个简洁的助手。",
  "input": "用一句话介绍 Responses API。",
  "max_output_tokens": 256,
  "stream": false
}

请求示例代码

curl -X POST "https://10000router.com/v1/responses" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "model": "gpt-5.6-sol",
    "input": "用一句话介绍 Responses API。",
    "max_output_tokens": 256
  }'
const payload = {
  model: "gpt-5.6-sol",
  input: "用一句话介绍 Responses API。",
  max_output_tokens: 256
};

const response = await fetch("https://10000router.com/v1/responses", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.API_KEY,
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
console.log(data.output_text ?? data.output);
payload := strings.NewReader(`{
  "model": "gpt-5.6-sol",
  "input": "用一句话介绍 Responses API。",
  "max_output_tokens": 256
}`)
req, err := http.NewRequest("POST", "https://10000router.com/v1/responses", payload)
if err != nil {
  log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
  log.Fatal(err)
}
defer res.Body.Close()
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")

payload = {
    "model": "gpt-5.6-sol",
    "input": "用一句话介绍 Responses API。",
    "max_output_tokens": 256,
}

response = client.post(
    "https://10000router.com/v1/responses",
    headers={
        "Authorization": "Bearer " + os.environ["API_KEY"],
    },
    json=payload,
)
response.raise_for_status()
print(response)
var client = java.net.http.HttpClient.newHttpClient();
var payload = "{"
    + "\"model\":\"gpt-5.6-sol\","
    + "\"input\":\"用一句话介绍 Responses API。\","
    + "\"max_output_tokens\":256}";
var request = java.net.http.HttpRequest.newBuilder()
    .uri(java.net.URI.create("https://10000router.com/v1/responses"))
    .header("Authorization", "Bearer " + System.getenv("API_KEY"))
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString(payload))
    .build();
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
using System.Net.Http.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new(
    "Bearer",
    Environment.GetEnvironmentVariable("API_KEY")
);
var payload = new
{
    model = "gpt-5.6-sol",
    input = "用一句话介绍 Responses API。",
    max_output_tokens = 256
};
var response = await client.PostAsJsonAsync(
    "https://10000router.com/v1/responses",
    payload
);
Console.WriteLine(await response.Content.ReadAsStringAsync());

图像输入

Responses 请求可以在 input 消息的 content 数组中同时传入 input_text 和 input_image 内容块。所选上游模型必须支持视觉输入;image_url 可以是公开 URL 或 data URL,具体可用性取决于模型和渠道。

图像请求体字段

图像输入字段
字段类型必填说明
modelstring是支持视觉输入的模型 ID。
inputarray是包含 role 和 content 的消息数组。
input[].content[].typestring是input_text 或 input_image。
input[].content[].image_urlstring / object图像块必填公开图像 URL、data URL,或渠道要求的对象格式。

图像 JSON 请求体

查看图像输入 JSON 示例
{
  "model": "gpt-5.6-sol",
  "input": [
    {
      "role": "user",
      "content": [
        { "type": "input_text", "text": "描述这张图片" },
        { "type": "input_image", "image_url": "https://example.com/image.png" }
      ]
    }
  ]
}

图像输入请求示例

curl -X POST "https://10000router.com/v1/responses" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{"model":"gpt-5.6-sol","input":[{"role":"user","content":[{"type":"input_text","text":"描述这张图片"},{"type":"input_image","image_url":"https://example.com/image.png"}]}]}'
const payload = {
  model: "gpt-5.6-sol",
  input: [{ role: "user", content: [
    { type: "input_text", text: "描述这张图片" },
    { type: "input_image", image_url: "https://example.com/image.png" }
  ] }]
};
const response = await fetch("https://10000router.com/v1/responses", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.API_KEY },
  body: JSON.stringify(payload)
});
console.log(await response.json());
payload := `{"model":"gpt-5.6-sol","input":[{"role":"user","content":[{"type":"input_text","text":"描述这张图片"},{"type":"input_image","image_url":"https://example.com/image.png"}]}]}`
req, _ := http.NewRequest("POST", "https://10000router.com/v1/responses", strings.NewReader(payload))
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")

payload = {
    "model": "gpt-5.6-sol",
    "input": [{"role": "user", "content": [
        {"type": "input_text", "text": "描述这张图片"},
        {"type": "input_image", "image_url": "https://example.com/image.png"},
    ]}],
}
response = client.post("https://10000router.com/v1/responses", headers={"Authorization": "Bearer " + os.environ["API_KEY"]}, json=payload)
print(response)
var payload = "{\"model\":\"gpt-5.6-sol\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"描述这张图片\"},{\"type\":\"input_image\",\"image_url\":\"https://example.com/image.png\"}]}]}";
var request = java.net.http.HttpRequest.newBuilder(java.net.URI.create("https://10000router.com/v1/responses"))
    .header("Authorization", "Bearer " + System.getenv("API_KEY"))
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString(payload)).build();
var response = java.net.http.HttpClient.newHttpClient().send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
using System.Net.Http.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("API_KEY"));
var payload = new {
    model = "gpt-5.6-sol",
    input = new[] { new { role = "user", content = new object[] {
        new { type = "input_text", text = "描述这张图片" },
        new { type = "input_image", image_url = "https://example.com/image.png" }
    } } }
};
var response = await client.PostAsJsonAsync("https://10000router.com/v1/responses", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());

图像输入响应

图像输入请求返回的响应结构与普通 Responses 请求一致。文本结果位于 output[].content[] 的 output_text 内容块中;输入图像不会原样回显。

图像响应字段
字段类型说明
outputarray模型输出项数组。
output[].content[].textstring模型对输入图像的文本描述或回答。
usageobject输入、输出和总 token 用量。

返回响应

非流式响应(200)

NewAPI 透传上游的 response 对象。不同模型的 output 项类型可能不同,读取文本时优先使用 SDK 提供的 output_text,或遍历 output 中的文本内容块。

{
  "id": "resp_abc123",
  "object": "response",
  "created_at": 1710000000,
  "status": "completed",
  "model": "gpt-5.6-sol",
  "output": [
    {
      "id": "msg_abc123",
      "type": "message",
      "status": "completed",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "Responses API 使用统一的输入和输出项。",
          "annotations": []
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 18,
    "output_tokens": 12,
    "total_tokens": 30
  }
}
响应对象字段
字段类型说明
idstring响应 ID。
objectstring固定为 response。
statusstring响应状态,例如 completed 或 in_progress。
outputarray模型输出项数组,内容块位于 output[].content[]。
output[].content[].textstring输出文本内容。
usageobject输入、输出和总 token 用量。
output[]
字段类型说明
idstring输出项 ID。
typestring输出项类型,例如 message。
rolestring消息角色,通常为 assistant。
contentarray输出内容块数组。
usage
字段类型说明
input_tokensinteger输入 token 数。
output_tokensinteger输出 token 数。
total_tokensinteger总 token 数。

流式响应

将 stream 设为 true 后,响应类型为 text/event-stream。客户端应按事件类型处理 data,并按顺序拼接文本增量:

event: response.created
data: {"type":"response.created","response":{"id":"resp_abc123","status":"in_progress"}}

event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"Responses API"}

event: response.completed
data: {"type":"response.completed","response":{"id":"resp_abc123","status":"completed"}}

工具调用或推理模型可能发送其他 response.* 事件;未知事件应安全忽略。若网关发送 data: [DONE],表示事件流结束。

错误响应

成功响应请参阅上方的非流式响应示例。

{
  "error": {
    "message": "Missing required parameter: model",
    "type": "invalid_request_error",
    "param": "model",
    "code": null
  }
}
{
  "error": {
    "message": "Rate limit reached",
    "type": "rate_limit_exceeded",
    "param": null,
    "code": null
  }
}
{
  "error": {
    "message": "Invalid authentication credentials",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}

常见状态码包括 400(请求参数错误)、401(认证失败)、429(请求频率限制)和 5xx(上游服务错误)。

results matching ""

    No results matching ""