Responses 流里出现不认识的事件类型,客户端怎样保留证据并继续读取
流式接口增加新事件类型时,客户端不应因为一个不认识的事件就把已读正文丢掉,也不能把未知载荷里的 text 字段直接展示出来。兼容的关键是明确已知处理器的权限:谁能写正文,谁能改变生命周期,谁只能留下证据。
三条通道独立处理
本文识别 response.output_text.delta 的正文增量与 response.completed 的完成信号;未知类型进入观察列表,记录顺序、类型和载荷摘要。真实应用还应按官方事件定义处理失败和未完成等状态。本例的最小分派器只在获得已知 completed 事件后标为完成,其余情况保持待完成。
演示未知事件统一以 demo. 开头,明确是人工注入的防御样本,不能称作 OpenAI 官方事件。载荷可能带一个 text 字段,也可能含嵌套对象;未知就只保留安全摘要,不递归搜寻“像正文”的字符串。这能防止结构变化时误把诊断信息当作模型回答。
重放三段事件序列
第一段为正文“甲”、未知事件、正文“乙”和完成,预期正文“甲乙”、未知一项、状态完成。第二段缺少完成事件,预期正文仍是“甲乙”,但保持未完成。第三段只让未知载荷带“不能进入正文”的文本,再接已知正文与完成,最终只能显示已知正文。
失败反例是事件类型包含 text 就进入正文处理器,或者任何载荷里有 status 就更新整体状态。这些宽松判断会把未来事件的不同语义误套到当前流程。类型应精确匹配,状态更新的字段也必须来自对应已知结构。
继续读取不等于批准使用结果
保存未知事件后继续消费,是为了尽量保留后续已知信息;它不保证整条流的业务合同仍然满足。若未知事件比例上升或恰好出现在关键生命周期附近,应由维护者复核官方协议与当前客户端。用户界面可以显示已有部分文本,最终入库仍需完成闸门与结果检查。
摘要策略也要避免泄漏。原始载荷可能含工具参数或私有内容,公开日志只记必要类型、位置和摘要;受控调试留样另按权限处理。本文全是合成数据,检查器不建立网络连接,也不测真实网络乱序或断流。
事件分派发生在完整事件已被解析之后,与 SSE 分帧和字节解码是不同层。不要为了处理未知类型去修改网络缓冲或网关配置。验收结果应写“未知事件隔离、已知正文保留、缺终态不完成”,而不是笼统宣称流式协议完全兼容未来版本。
配套文件与依据
本文的合成输入和参考结果可下载独立样本 a021.json,离线检查器 a021.py与样本放在同一目录后运行。检查器不调用模型接口。 使用 Python 3.12 或兼容版本,将上述文件下载到同一目录,执行 python a021.py。
一手资料1。资料核对日期:2026-10-24。
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。