OpenAI 刚发布了一个针对长时间运行、大量工具调用场景的重要更新:Responses API 现在支持 WebSocket 模式。

这个功能专门为需要频繁模型-工具交互的工作流设计,比如代码自动化或需要反复调用工具的智能体编排任务。
核心改进在于连接方式的转变。传统的 HTTP 模式下,每次交互都需要重新发送完整的上下文,就像每次打电话都要重新自我介绍一样。WebSocket 模式则保持持久连接,只需要发送新的输入内容和 previous_response_id,大幅减少了重复传输的开销。
建立连接很简单:
from websocket import create_connection
import json
import os
ws = create_connection(
"wss://api.openai.com/v1/responses",
header=[
f"Authorization: Bearer {os.environ['OPENAI_API_KEY']}",
],
)
# 发送初始请求
ws.send(
json.dumps({
"type": "response.create",
"model": "gpt-5.2",
"store": False,
"input": [{
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": "分析这个代码文件"}],
}],
"tools": [{"type": "code_interpreter"}],
})
)后续交互只需要发送增量数据:
# 继续对话,只发送新内容
ws.send(
json.dumps({
"type": "response.create",
"model": "gpt-5.2",
"store": False,
"previous_response_id": "resp_123",
"input": [
{
"type": "function_call_output",
"call_id": "call_456",
"output": "发现3个性能瓶颈",
},
{
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": "给出优化方案"}],
},
],
"tools": [],
})
)数据很直观:对于涉及 20 次以上工具调用的复杂任务,端到端执行速度可以提升 20%-40%。这种提升来自于连接级的内存缓存机制,服务器会在内存中保留最近一次响应的状态,避免了重复的状态重建工作。
这种方式特别适合需要多轮工具调用的场景,比如代码重构流程:分析代码 → 发现问题 → 生成修复方案 → 应用修改 → 验证结果。每一步都只需要发送增量数据。
技术细节上,WebSocket 模式兼容零数据保留(ZDR)和 store=false 设置,这对隐私敏感的应用很重要。连接限制是 60 分钟,超时后需要重新建立连接:
# 处理连接超时
try:
response = ws.recv()
except Exception as e:
if "connection_limit_reached" in str(e):
# 重新建立连接
ws = create_connection(
"wss://api.openai.com/v1/responses",
header=[f"Authorization: Bearer {os.environ['OPENAI_API_KEY']}"]
)如果需要并行处理,目前还不支持多路复用,需要建立多个连接。这意味着如果你有多个独立的智能体任务,每个都需要单独的 WebSocket 连接。
值得注意的是,这个更新还提到了与 Open Responses 规范的关系。Open Responses 是一个开源项目,试图为不同 LLM 提供商建立统一的 API 标准,已经获得了 Vercel、Hugging Face、Databricks 等公司的支持。
从社区反应来看,开发者对这个功能比较兴奋,特别是那些在构建复杂智能体系统的人。不过也有人指出这可能是增加供应商锁定的策略,因为状态管理增加了迁移成本。
对于大多数简单的对话场景,这个功能可能用不上。但如果你在构建需要大量工具调用的智能体,比如代码审查助手、数据分析流水线,或者复杂的业务流程自动化,这个更新值得关注。
参考资料: