Skip to main content

Responses API 流式请求示例

以下示例展示如何使用Response API的 /v1/responses 接口进行流式响应,实现实时内容生成效果。

快速开始

只需要替换 <API-KEY> 为你的实际API密钥即可运行。
curl -X POST "https://model-api.skyengine.com.cn/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API-KEY>" \
  -d '{
    "model": "gpt-5-2025-08-07",
    "input": [
      {
        "role": "user",
        "content": [
          {
            "type": "input_text",
            "text": "请写一首关于春天的诗"
          }
        ]
      }
    ],
    "stream": true,
    "max_output_tokens": 1000
  }' \
  --no-buffer

流式响应格式

Response API的流式响应使用Server-Sent Events (SSE)格式,每个事件包含两行:event:data:

主要事件类型

1. 响应创建事件

event: response.created
data: {"type":"response.created","sequence_number":0,"response":{"id":"resp_04a2a34a8231e6130068fa23caaaa081939b2e2ce1e99a4492","object":"response","created_at":1761223626,"status":"in_progress"...}}

2. 输出项添加事件

event: response.output_item.added
data: {"type":"response.output_item.added","sequence_number":4,"output_index":1,"item":{"id":"msg_04a2a34a8231e6130068fa23eab57c8193ad2d031223a1220a","type":"message","status":"in_progress","content":[],"role":"assistant"}}

3. 文本增量事件(核心事件)

event: response.output_text.delta
data: {"content_index":0,"delta":"春","item_id":"msg_04a2a34a8231e6130068fa23eab57c8193ad2d031223a1220a","logprobs":[],"output_index":1,"sequence_number":6,"type":"response.output_text.delta"}

event: response.output_text.delta
data: {"content_index":0,"delta":"天","item_id":"msg_04a2a34a8231e6130068fa23eab57c8193ad2d031223a1220a","logprobs":[],"output_index":1,"sequence_number":7,"type":"response.output_text.delta"}

4. 文本输出完成事件

event: response.output_text.done
data: {"content_index":0,"item_id":"msg_04a2a34a8231e6130068fa23eab57c8193ad2d031223a1220a","logprobs":[],"output_index":1,"sequence_number":39,"text":"完整的生成文本","type":"response.output_text.done"}

5. 响应完成事件

event: response.completed
data: {"type":"response.completed","sequence_number":42,"response":{"id":"resp_04a2a34a8231e6130068fa23caaaa081939b2e2ce1e99a4492","object":"response","status":"completed","usage":{"input_tokens":67,"output_tokens":1767,"total_tokens":1834}...}}

重要参数说明

请求参数

  • model: 使用的模型名称,如 “gpt-5-2025-08-07”
  • input: 输入消息数组,每个消息包含角色和内容
  • stream: 设置为 true 启用流式输出
  • max_output_tokens: 限制输出的最大token数量

关键事件字段

  • sequence_number: 事件序列号,按时间顺序递增
  • delta: 文本增量内容(在response.output_text.delta事件中)
  • item_id: 输出项唯一标识符
  • output_index: 输出项在响应中的索引位置

SSE格式特点

  • 无[DONE]标记: Response API不使用[DONE]标记,而是通过response.completed事件表示结束
  • event + data格式: 每个事件都有明确的事件类型和对应的数据
  • sequence_number: 所有事件都有序列号,确保正确的处理顺序

流式输出的优势

  1. 实时反馈: 通过response.output_text.delta事件实时获取文本增量
  2. 更好的用户体验: 避免长时间等待,提供打字效果
  3. 详细状态: 可以跟踪响应的完整生命周期
  4. 结构化信息: 每个事件包含丰富的元数据信息

处理流式数据的注意事项

  1. 正确解析SSE格式: 需要同时处理event:data:
  2. 事件类型识别: 根据不同的事件类型执行相应的处理逻辑
  3. 序列号处理: 可以使用sequence_number确保事件顺序
  4. 文本累积: 通过response.output_text.delta事件的delta字段累积完整文本
  5. 完成检测: 通过response.completed事件确认响应结束

实际应用场景

  • 智能对话: 实现类似ChatGPT的实时对话效果
  • 内容创作: 实时显示文章、诗歌、代码生成过程
  • 思维过程展示: 如果启用reasoning模式,可以实时查看AI的思考过程
  • 多步骤任务: 跟踪复杂任务的执行状态和进度

最佳实践示例

def robust_stream_handler(response):
    """健壮的流式响应处理器"""
    full_response = ""
    current_event = None
    
    for line in response.iter_lines(decode_unicode=True):
        if not line.strip():
            continue
            
        if line.startswith('event: '):
            current_event = line[7:]
            
        elif line.startswith('data: ') and current_event:
            try:
                data = json.loads(line[6:])
                
                # 只处理文本增量事件
                if current_event == "response.output_text.delta":
                    if "delta" in data:
                        delta = data["delta"]
                        full_response += delta
                        print(delta, end='', flush=True)
                        
                # 检测完成
                elif current_event == "response.completed":
                    print("\n响应完成")
                    break
                    
            except json.JSONDecodeError:
                # 跳过无效JSON
                continue
                
    return full_response
通过Response API的流式功能,您可以构建更加交互性和实时性的AI应用,为用户提供卓越的体验。