![]()
ChatGPT每秒蹦出20个字的背后,藏着一套被90%开发者忽略的传输协议。2024年大模型API调用量突破47亿次/天,但仍有62%的AI应用让用户干等完整响应——这相当于让现代人回到拨号上网时代。
问题不在模型算力,而在传输方式。
当你向GPT-4o发送一段长文本,模型实际在2秒内就开始生成第一个token,但传统HTTP请求却要等全部内容生成完毕才一次性返回。这段等待时间可能从3秒拖到30秒,用户看到的只有转圈动画。流媒体传输(streaming)做的就是把"整包发货"改成"逐字快递",让第一个字符在生成瞬间就能出现在屏幕上。
这套机制的技术实现比想象中朴素。HTTP流基于SSE(Server-Sent Events,服务器推送事件),本质是在单次HTTP连接上开启一条单向数据管道。服务器按生成节奏推送数据块,前端像读打字机纸带一样逐段渲染。OpenAI API的stream参数设为true即可开启,响应头里多了Content-Type: text/event-stream,数据以data: {...}的格式分行传输。
为什么SSE成了AI应用的默认选择
WebSockets支持双向实时通信,延迟理论上更低。但Anthropic的工程师在2024年技术博客中算过一笔账:纯问答场景下,WebSockets需要维护长连接池,服务器内存占用是SSE的3-7倍。对于只是"用户提问-模型回答"的单向流程,这就像用对讲机打电话——功能过剩,成本陡增。
Perplexity的公开数据显示,切到SSE后,其首字节到达时间(TTFB)从800ms降至120ms,服务器成本下降34%。更隐蔽的收益是错误处理:SSE在传输中断时保留已接收内容,用户不会面对空白页面;WebSockets断连则需要整套重连逻辑。
![]()
但SSE有硬性边界。当场景需要"边生成边交互"——比如代码助手里用户中途修改需求、多智能体系统需要人工确认工具调用——WebSockets的双向通道才显价值。Cursor的composer模式就是典型案例:模型生成代码时,用户可以点击"停止"或插入新指令,这些信号需要实时反向传输。
实现层面的三个隐蔽陷阱
第一个坑是缓冲区设计。前端若等积累一定字符再渲染,流畅感会断崖下跌。Vercel的AI SDK默认每5ms检查一次新数据,这个阈值来自对人类阅读速度的测算:人眼舒适追踪的打字速度约每分钟300字,折合50ms/字,前端渲染频率需高于此10倍才能显得"实时"。
第二个坑在token计数。流式响应的usage字段通常在最后一条消息才完整返回,中间过程无法准确预估成本。某头部AI写作工具曾因未处理这个细节,导致用户看到"已消耗$0.00"的幻觉,实际账单却在结尾突然跳变。
第三个坑最反直觉:流式传输可能增加总延迟。网络包头部开销让流式响应的数据量比非流式大15-20%,在弱网环境下,这个膨胀会抵消体验收益。Cloudflare的测试表明,当丢包率超过5%时,非流式反而更快完成内容交付。
从协议选择到产品决策
2024年Q2,LangChain的调研显示开发者最头痛的问题从"模型选型"变成了"响应延迟感知"。这背后是大模型速度提升带来的预期管理困境——GPT-4 Turbo比GPT-4快2倍,但用户耐心只提升了30%。
![]()
产品层面的解法比技术更微妙。Claude的Artifacts功能在流式输出代码时,会预渲染一个灰色占位框,让用户感知到"内容正在生长";Perplexity则在引用链接生成阶段插入"正在检索来源..."的进度叙事。这些设计把技术延迟转化为可控的预期节奏。
更激进的尝试来自语音交互领域。GPT-4o的实时语音模式把延迟压到232毫秒,接近人类对话反应时间。这背后不是SSE或WebSockets,而是WebRTC——一套为音视频设计的传输协议。OpenAI的工程师透露,他们曾在SSE和WebRTC之间摇摆三个月,最终选择后者是因为语音场景对丢包容忍度极低,需要UDP层面的定制优化。
回到文本场景,判断协议选择的简单法则:如果用户只需要"看答案",SSE足够;如果需要"边答边改",上WebSockets;如果延迟敏感且可容忍偶发丢字,QUIC-based的方案正在涌现。Cloudflare Workers最近实验的AI Gateway就支持自动降级:网络良好时用流式,检测到高丢包率时切回整包响应。
一个未被充分讨论的细节是错误信息的流式处理。当模型生成到一半触发安全拦截,非流式响应直接返回HTTP 400;流式场景下,服务器可能已发送部分有效内容,此时需要设计专门的终止信号。OpenAI的API在stream_options中提供include_usage字段,但多数开发者直到第一次遇到"半句话突然中断"才意识到需要处理这种边界情况。
2024年9月,Anthropic更新了Claude 3.5 Sonnet的流式实现,把thinking模式的推理过程也纳入流式输出——用户能看到模型"自言自语"的草稿。这个改动让平均会话时长增加了40%,但用户满意度评分反而上升。产品团队后来复盘:可见的推理过程降低了"黑箱焦虑",即使总等待时间没变。
这引出一个悖论性的产品洞察。流式传输的初衷是掩盖延迟,但当延迟本身被设计为可感知、可理解的过程,用户的耐心阈值反而被重置。就像外卖App把"骑手距你1.2公里"变成地图上的移动图标,不确定性的消除比绝对速度更重要。
你的AI应用现在用的是整包响应还是流式?如果切到流式,你测过弱网环境下的实际体验吗?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.