流式响应
Streaming Response
HTTP SSE 和 WebSocket 双通道实时流式传输 LLM 生成内容
子问题
1.HTTP StreamingResponse 实现
2.WebSocket 连接管理
3.多 provider 流式适配
4.前端流式消费
5.token 超限时的渐进式降级策略
6.Next.js API Route 作为 HTTP 流代理的透传实现
各项目的解法1 solutions
Signals
横向对比
| 维度 | DeepWiki |
|---|---|
| 传输协议 | HTTP SSE + WebSocket 双通道,WebSocket 为主、HTTP 为 fallback |
| 流式接口 | 每个 Provider client 的 acall() 返回 async generator,上层 async for 统一消费 |
| Provider 适配 | 7 种 provider 逐一 if-elif 适配,chunk 格式各异需独立提取 |
| 容错降级 | token 超限自动去 RAG context 重试,WebSocket 不可用降级 HTTP SSE |
| 前端消费 | WebSocket onmessage 逐 chunk 累积到 React state,Next.js API Route 代理 HTTP 流 |
最佳实践
1.FastAPI StreamingResponse 用于 HTTP 流
2.WebSocket 用于双向实时通信
3.async generator 统一流式接口
4.每个 Provider client 的 acall() 统一返回 async generator 屏蔽差异
5.前端 useRef 管理 WebSocket 生命周期,useEffect cleanup 防止内存泄漏