模型接口返回 HTTP 200,页面也开始逐字输出,很多监控就把请求记为成功。用户最后却只得到半句话,或工具参数少了一个括号。对流式链路来说,200 证明的只是响应头成功返回,不证明业务事件完整,更不证明最终结果已经保存。
我更倾向用事件不变量验收 SSE:对任意一次 Run,无论供应商协议、网关转换、代理缓冲和客户端重连怎样变化,都有一组顺序、唯一性、组装与终态条件必须成立。违反条件就明确标失败或未知,不能靠 EOF 猜成功。
邓明瑞 / 纯粹
模型接口返回 HTTP 200,页面也开始逐字输出,很多监控就把请求记为成功。用户最后却只得到半句话,或工具参数少了一个括号。对流式链路来说,200 证明的只是响应头成功返回,不证明业务事件完整,更不证明最终结果已经保存。
我更倾向用事件不变量验收 SSE:对任意一次 Run,无论供应商协议、网关转换、代理缓冲和客户端重连怎样变化,都有一组顺序、唯一性、组装与终态条件必须成立。违反条件就明确标失败或未知,不能靠 EOF 猜成功。
模型开启 stream=true 后,客户端能更早看到文字,接口看起来只是从一次 JSON 响应变成多次回调。实现里最常见的 bug,是每收到一个网络 chunk 就 JSON.parse,或者把每个 data: 行当成完整业务消息。
TCP/HTTP 传输分片、SSE 事件和模型增量是三层边界。它们恰好可能对齐,但协议从未保证对齐。我会先把字节流解析成完整 SSE event,再把供应商 event 归一化,最后由状态归并器构造答案。