找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3442

积分

0

好友

474

主题
发表于 11 小时前 | 查看: 2| 回复: 0

OpenAI近期发布了一项针对其Responses API的重要更新,正式引入了WebSocket通信模式。这项功能专门为那些需要长时间运行、频繁进行模型与工具交互的复杂工作流而设计,例如代码自动化执行、或者需要反复调用外部工具的智能体编排任务。

WebSocket与HTTP模式在复杂工具调用场景下的交互对比

核心改进:从请求-响应到持久对话

此次更新的核心在于连接方式的根本性转变。在传统的HTTP模式下,每一次与API的交互都是独立的,需要重新发送完整的对话上下文,这就像每次打电话都要从头自我介绍一遍,效率低下且产生大量冗余数据传输。

而新的WebSocket模式则建立了一个持久的双向连接。在这种连接下,你只需要发送新的输入内容,并引用上一次交互的previous_response_id,即可在服务器端维护的会话状态基础上继续对话。这极大地减少了每次请求需要传输的数据量,降低了延迟。

建立一个WebSocket连接非常简单,以下是一个Python示例:

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": [],
    })
)

性能提升数据

性能提升的数据非常直观。根据OpenAI提供的信息,对于那些涉及20次以上工具调用的复杂任务,采用WebSocket模式可以将端到端的执行速度提升20%到40%。

这种显著的性能提升主要得益于连接级别的内存缓存机制。服务器会在内存中保留最近一次响应的完整状态,当新的增量请求到来时,无需重新加载和构建整个对话历史与工具调用状态,从而避免了大量重复计算工作。

这种模式特别适合需要多轮、链式工具调用的场景。例如一个典型的代码重构流程:分析代码 → 发现问题 → 生成修复方案 → 应用修改 → 验证结果。在WebSocket模式下,每一步都只需要发送该步骤产生的增量数据(如工具调用结果和新的用户指令),极大地优化了交互效率。

技术细节与当前限制

在技术细节方面,WebSocket模式完全兼容零数据保留(ZDR)策略以及store=false参数设置,这对于构建注重用户隐私的敏感应用至关重要。

不过,当前实现也存在一些限制需要注意:

  • 连接超时:每个WebSocket连接默认有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连接不支持多路复用(即在一个连接上并行处理多个独立的会话)。这意味着如果你有多个独立的智能体任务需要同时运行,每个任务都需要建立自己独立的WebSocket连接,这对后端开发中的连接管理提出了要求。

行业影响与开发者反馈

另一个值得关注的细节是,此次更新明确提到了与 Open Responses 规范的关系。Open Responses 是一个旨在为不同大语言模型(LLM)提供商建立统一API标准的开源项目,已经获得了Vercel、Hugging Face、Databricks等公司的支持。OpenAI此举可能是在向更开放的行业标准靠拢。

从技术社区的初步反应来看,许多正在构建复杂智能体系统或自动化流程的开发者对此功能感到兴奋,认为它将显著改善涉及大量Socket通信的应用体验。例如,在构建复杂的RAG(检索增强生成)系统时,频繁的文档检索与模型交互就能从中受益。

当然,也有观点认为,引入这种依赖服务器端状态管理的功能,可能会在一定程度上增加用户对特定云服务商的依赖,因为迁移到另一个不具备相同状态保持能力的平台会变得更复杂。

总而言之,对于大多数简单的单次问答或短对话场景,这个WebSocket模式可能并非必需。但如果你正在构建或计划构建需要大量、多轮工具调用的智能应用,如代码审查助手、多步骤数据分析流水线、复杂的业务流程自动化智能体等,那么OpenAI Responses API的这项更新无疑是一个值得深入研究和尝试的重要特性。更多关于AI与云原生技术的深入讨论,欢迎访问云栈社区进行交流。

参考资料:




上一篇:实战挖掘:如何通过泄露AI过滤机制获取敏感数据(小程序场景)
下一篇:测试工程师实战:用AI做用例质检与接口参数生成的完整模板与流程
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-25 18:36 , Processed in 0.457117 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表