Docs

创建响应

POST/v1/responses

使用 OpenAI Responses API 格式创建响应

本页目录
  1. 请求体
  2. 响应
  3. 请求示例
  4. 视觉输入示例
  5. 响应示例
  6. 错误响应示例

Responses API 适合需要 OpenAI Responses 行为的应用。多数 OpenAI 兼容场景建议优先使用 POST /v1/chat/completions。

请求体

参数 model

类型:string

位置:body

必填:是

要使用的模型 ID。可用模型请在控制台或 GET /v1/models 中查看。

参数 input

类型:array

位置:body

必填:是

由对话组成的输入项列表。

每个项可以是:

  • message: 带有角色和内容的对话消息
  • function_call: 一个函数调用请求
  • function_call_output: 来自函数调用的输出

对于多模态输入,message.content 可以是普通字符串,也可以是内容块数组。对于支持图像的模型(例如 GPT-5.4 变体),请将图像作为 input_image 块传递,而不是将 URL 或 Base64 字符串直接嵌入普通文本中。

示例内容块:

  • { "type": "input_text", "text": "Describe this image" }
  • { "type": "input_image", "image_url": "https://example.com/image.jpg" }
  • { "type": "input_image", "image_url": "data:image/png;base64,..." }

参数 instructions

类型:string

位置:body

提供给模型的系统指令(等同于 system 消息)。

参数 max_output_tokens

类型:integer

位置:body

生成的最大 token 数量。

参数 temperature

类型:number

位置:body

采样温度,范围在 0 到 2 之间。

参数 tools

类型:array

位置:body

模型可能调用的工具列表。

参数 stream

类型:boolean

位置:body

为 true 时返回事件流。

参数 previous_response_id

类型:string

位置:body

用于从某个先前响应继续对话的响应 ID。

参数 store

类型:boolean

位置:body

是否存储响应以便后续检索。

参数 metadata

类型:object

位置:body

附加到响应以用于跟踪的元数据。

参数 text

类型:object

位置:body

文本生成的配置选项。text.format 的行为取决于所选模型和路由路径,不保证在每个模型上都一致。

参数 parallel_tool_calls

类型:boolean

位置:body

是否允许并行进行多个工具调用。

参数 top_p

类型:number

位置:body

Nucleus 采样参数(0-1)。

参数 reasoning

类型:object

位置:body

针对具备推理能力的模型(例如 GPT-5 系列变体)的推理配置。

  • effort (string): 推理努力级别(low, medium, high)

响应

响应字段 id

类型:string

响应的唯一标识符。

响应字段 object

类型:string

始终为 response。

响应字段 created

类型:integer

响应创建时的 Unix 时间戳。

响应字段 output

类型:array

模型生成的输出项列表。

响应字段 usage

类型:object

token 使用统计。

请求示例

curl -X POST "https://api.anypath.dev/v1/responses" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "input": [
      {"type": "message", "role": "user", "content": "Hello!"}
    ],
    "max_output_tokens": 1000
  }'
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.anypath.dev/v1"
)

response = client.responses.create(
    model="gpt-4o-mini",
    input=[
        {"type": "message", "role": "user", "content": "Hello!"}
    ],
    max_output_tokens=1000
)

print(response.output)
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.anypath.dev/v1'
});

const response = await client.responses.create({
  model: 'gpt-4o-mini',
  input: [
    { type: 'message', role: 'user', content: 'Hello!' }
  ],
  max_output_tokens: 1000
});

console.log(response.output);
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    payload := map[string]interface{}{
        "model": "gpt-4o-mini",
        "input": []map[string]interface{}{
            {"type": "message", "role": "user", "content": "Hello!"},
        },
        "max_output_tokens": 1000,
    }
    body, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", "https://api.anypath.dev/v1/responses", bytes.NewBuffer(body))
    req.Header.Set("Authorization", "Bearer sk-your-api-key")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result["output"])
}
<?php
$ch = curl_init('https://api.anypath.dev/v1/responses');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer sk-your-api-key'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'model' => 'gpt-4o-mini',
        'input' => [
            ['type' => 'message', 'role' => 'user', 'content' => 'Hello!']
        ],
        'max_output_tokens' => 1000
    ])
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data['output']);

视觉输入示例

使用支持图像的模型时,请把图片放在 message.content 的 input_image 内容块中。image_url 可以是公开 URL,也可以是 Base64 data URL。

{
  "model": "gpt-4o-mini",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Please describe this image."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/demo.jpg"
        }
      ]
    }
  ]
}
{
  "model": "gpt-4o-mini",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Please describe this image."
        },
        {
          "type": "input_image",
          "image_url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
        }
      ]
    }
  ]
}

响应示例

{
  "id": "resp_abc123",
  "object": "response",
  "created": 1706000000,
  "model": "gpt-4o-mini",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {"type": "text", "text": "Hello! How can I help you today?"}
      ]
    }
  ],
  "usage": {
    "input_tokens": 10,
    "output_tokens": 12,
    "total_tokens": 22
  }
}

错误响应示例

{
  "error": {
    "message": "API key spending limit exceeded.",
    "type": "spending_limit_exceeded",
    "code": "spending_limit_exceeded"
  }
}