GPT 5.4

OpenAI GPT 5.4 多模态推理模型,通过 OpenAI Responses API /v1/responses 提供。支持结构化输入数组、可调推理强度(minimal → xhigh)、网络搜索和函数调用。

模型

模型名称上下文窗口推理
gpt-5-4256K tokens是(reasoning.effort 控制)

定价

按 token 计费:

类型积分 / 百万 tokens价格 / 百万 tokens
输入 (Input)300 credits$1.50
输出 (Output)1800 credits$9.00

接口地址

POST https://api.aivideoapi.ai/v1/responses

兼容 OpenAI Responses API。可直接使用 openai SDK 的 responses.create,将 baseURL 指向 https://api.aivideoapi.ai/v1

创建响应

curl -X POST https://api.aivideoapi.ai/v1/responses \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-4",
    "input": [
      {
        "role": "user",
        "content": [
          { "type": "input_text", "text": "用一句话总结量子纠缠" }
        ]
      }
    ],
    "reasoning": { "effort": "low" }
  }'

请求体

字段类型必填说明
modelstring必须为 gpt-5-4
inputstring | array文本字符串或消息数组
streamboolean是否流式输出(默认 false
reasoning.effortstringminimal/low/medium/high/xhigh(默认 low
toolsarrayweb_searchfunction(互斥)
tool_choicestring配合 function 使用,建议 auto

输入消息

input 可以是一个简单字符串,或一个消息数组。

字符串形式(最简)

{ "model": "gpt-5-4", "input": "用一句话总结量子纠缠" }

消息数组形式(推荐)

{
  "model": "gpt-5-4",
  "input": [
    {
      "role": "user",
      "content": [
        { "type": "input_text", "text": "用一句话总结量子纠缠" }
      ]
    }
  ],
  "reasoning": { "effort": "low" }
}

消息字段

字段类型必填说明
rolestringuser / assistant / system / developer / tool
contentarray内容块数组

内容块类型

type字段说明
input_texttext: string纯文本
input_imageimage_url: string公开可访问的图片 URL
input_filefile_url: string公开可访问的文件 URL(PDF、文档等)

多模态混合示例

{
  "role": "user",
  "content": [
    { "type": "input_text", "text": "这张图里是什么?" },
    { "type": "input_image", "image_url": "https://example.com/photo.jpg" },
    { "type": "input_file", "file_url": "https://example.com/doc.pdf" }
  ]
}

注意:跟 OpenAI Chat Completions 不同,Responses 协议用 input_text / input_image / input_file 这套显式类型,不复用 Chat 的 image_url 包装结构。

响应(非流式)

{
  "id": "resp_0e90a829f82901960169e10f8f12d081999a38d26a2d3f2f8e",
  "object": "response",
  "model": "gpt-5.4",
  "status": "completed",
  "created_at": 1776357263,
  "completed_at": 1776357264,
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "id": "msg_0e90a829f82901960169e10f8fab94819994201d9d5f8b201c",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "量子纠缠是指两个或多个粒子的状态彼此强相关,即使相隔很远,测量其中一个也会立刻关联到另一个的测量结果。",
          "annotations": []
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 0,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 45,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 45
  },
  "reasoning": { "effort": "low" },
  "text": { "format": { "type": "text" }, "verbosity": "medium" },
  "tool_choice": "auto",
  "tools": [],
  "parallel_tool_calls": true,
  "temperature": 1,
  "top_p": 0.98,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "service_tier": "default",
  "truncation": "disabled",
  "store": false,
  "background": false,
  "prompt_cache_key": "3e936979-eeac-46b9-b8de-1023adf31fb1",
  "prompt_cache_retention": "24h",
  "credits_consumed": 0.08
}
字段类型说明
idstring响应唯一 ID(resp_ 前缀)
objectstring固定为 response
modelstring上游实际响应模型版本
statusstringcompleted / incomplete / failed
created_at / completed_atint创建/完成 Unix 时间戳
output[].typestring输出块类型:message 是文本回复;如启用思考可能含 reasoning
output[].content[].typestringoutput_text(文本)/ output_image
output[].content[].textstring文本内容
usage.input_tokensint输入 token 数
usage.input_tokens_details.cached_tokensint命中提示缓存的 token 数(缓存命中按上游折扣)
usage.output_tokensint输出 token 数(已包含 reasoning
usage.output_tokens_details.reasoning_tokensint其中思考占的部分
usage.total_tokensint总 token 数 = input + output
reasoning.effortstring当前请求使用的思考强度(回显)
text.format.type / text.verbositystring输出文本格式与详略度
prompt_cache_key / prompt_cache_retentionstring提示缓存 key 与保留时长
service_tierstring服务层级(default / flex 等)
credits_consumednumber本次实际扣费积分(按本平台单价计算,与上游内部值无关)

计费说明credits_consumed = input_tokens × 300/1M + output_tokens × 1800/1M。 注意 output_tokens 在 OpenAI Responses 协议里已经包含 reasoning_tokens(这是 OpenAI 的官方计费方式),所以思考会被一起收费——如不希望产生大量思考费用,请显式设置 reasoning.effort: "minimal""low"。 上面这条示例 input=0、output=45,按公式得 0 + 45 × 1800 / 1_000_000 = 0.081,四舍五入后 credits_consumed = 0.08

响应(流式)

stream: true 时返回 SSE。事件按顺序分为:生命周期事件(response/output_item/content_part 的 added/done) + 增量事件(output_text.delta) + 终止事件(completed)。

完整事件序列示例

event: response.created
data: {"type":"response.created","sequence_number":0,"response":{"id":"resp_xxx","object":"response","status":"in_progress","created_at":1776357621,"model":"gpt-5.4","output":[],"usage":null,...}}

event: response.in_progress
data: {"type":"response.in_progress","sequence_number":1,"response":{...}}

event: response.output_item.added
data: {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"msg_xxx","type":"message","status":"in_progress","content":[],"phase":"final_answer","role":"assistant"}}

event: response.content_part.added
data: {"type":"response.content_part.added","sequence_number":3,"content_index":0,"item_id":"msg_xxx","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}}

event: response.output_text.delta
data: {"type":"response.output_text.delta","sequence_number":4,"content_index":0,"delta":"量","item_id":"msg_xxx","output_index":0,"obfuscation":"Lh5gIRXJduvt83D","logprobs":[]}

event: response.output_text.delta
data: {"type":"response.output_text.delta","sequence_number":5,"content_index":0,"delta":"子","item_id":"msg_xxx","output_index":0,"obfuscation":"6aRgLGNpXdPvddV","logprobs":[]}

... (more delta events) ...

event: response.output_text.done
data: {"type":"response.output_text.done","sequence_number":56,"content_index":0,"item_id":"msg_xxx","output_index":0,"text":"量子纠缠是指两个或多个量子系统形成一个不可分割的整体..."}

event: response.content_part.done
data: {"type":"response.content_part.done","sequence_number":57,"content_index":0,"item_id":"msg_xxx","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"量子纠缠是指..."}}

event: response.output_item.done
data: {"type":"response.output_item.done","sequence_number":58,"output_index":0,"item":{"id":"msg_xxx","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"量子纠缠是指..."}],"phase":"final_answer","role":"assistant"}}

event: response.completed
data: {"type":"response.completed","sequence_number":59,"response":{"id":"resp_xxx","object":"response","status":"completed","created_at":1776357621,"completed_at":1776357625,"model":"gpt-5.4","output":[{"role":"assistant","id":"msg_xxx","type":"message","status":"completed","content":[{"annotations":[],"text":"量子纠缠是指...","type":"output_text"}]}],"usage":{"input_tokens":0,"input_tokens_details":{"cached_tokens":0},"output_tokens":57,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":57},...},"credits_consumed":0.10}

⚠️ 注意:本上游不返回 data: [DONE] 终止行,以 response.completed 事件作为流结束标志。

事件类型说明

事件名说明
response.created响应对象已创建,status: "in_progress"
response.in_progress处理中(与 created 同一对象)
response.output_item.added新增输出项(如 message 块)
response.content_part.added输出项内新增内容部分(如 output_text
response.output_text.delta文本增量——delta 字段是要拼接的片段
response.output_text.done文本输出完成,text 是完整内容
response.content_part.done内容部分定稿
response.output_item.done输出项定稿
response.completed流结束——response.usage 含最终 token 数,顶层 credits_consumed 是本次实际扣费

客户端拼接

只关心文本结果时,订阅 response.output_text.delta 累加 delta 即可;要拿最终全文,可在 response.output_text.done 直接取 text;要取扣费/计 token,看 response.completedresponse.usagecredits_consumed

字段补充

字段说明
sequence_number单调递增序号,可用于排序与去重
obfuscation上游为防重放注入的随机串,可忽略
output_index / content_index多输出项 / 多内容块场景下的索引
item_id关联到具体的输出项 ID(msg_xxx

示例

网络搜索

curl -X POST https://api.aivideoapi.ai/v1/responses \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-4",
    "input": [
      { "role": "user", "content": [
        { "type": "input_text", "text": "本周热门 AI 新闻" }
      ]}
    ],
    "tools": [{ "type": "web_search" }],
    "reasoning": { "effort": "high" }
  }'

函数调用

curl -X POST https://api.aivideoapi.ai/v1/responses \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-4",
    "input": [
      { "role": "user", "content": [
        { "type": "input_text", "text": "旧金山现在多热?" }
      ]}
    ],
    "tools": [
      {
        "type": "function",
        "name": "get_current_weather",
        "description": "查询城市当前天气",
        "parameters": {
          "type": "object",
          "properties": {
            "location": { "type": "string" },
            "unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }
          },
          "required": ["location", "unit"]
        }
      }
    ],
    "tool_choice": "auto"
  }'

限制web_searchfunction 不能同时使用。


常见错误码

请求失败时,API 返回 JSON 格式的错误响应:

{
  "error": {
    "code": "insufficient_credits",
    "message": "Your credit balance is too low. Please top up.",
    "type": "billing_error"
  }
}

错误码一览

HTTP 状态码错误码类型说明
400invalid_requestinvalid_request_error缺少必填参数或参数无效
401invalid_api_keyauthentication_errorAPI Key 无效、已禁用或已删除
402insufficient_creditsbilling_error积分余额不足,请充值
403ip_not_allowedpermission_error请求 IP 不在 Key 的白名单中
404model_not_foundinvalid_request_error模型不存在或已停用
404task_not_foundinvalid_request_error任务 ID 不存在
429rate_limit_exceededrate_limit_error请求过于频繁,请降低频率
429spend_limit_exceededbilling_error达到 Key 的消费限额(每小时/每天/总量)
500internal_errorapi_error服务器内部错误
503upstream_errorupstream_error上游 AI 服务返回错误

常见场景

invalid_request (400)

缺少必填字段或参数格式错误时返回。

{
  "error": {
    "code": "invalid_request",
    "message": "'model' is required.",
    "type": "invalid_request_error"
  }
}

insufficient_credits (402)

积分不足。可通过 GET /v1/credits 查询余额,前往 Dashboard > Billing 充值。

invalid_api_key (401)

可能原因:

  • Key 不以 sk- 开头
  • Key 已被禁用或删除
  • 用户账户已被封禁

upstream_error (503)

上游 AI 服务返回错误,可能原因:

  • 输入内容包含敏感或违规信息
  • 上游服务暂时不可用
  • 请求参数不被上游支持

因上游错误导致任务失败时,预扣积分会自动退还。