通过 WebSockets 流式传输响应
在生成响应时显示它们,以获得快速、实时的体验。无需等待完整响应。.
可视化
流式传输旅程
WebSocket 会话发出部分内容、工具调用和最终消息。.
客户端连接
WebSocket 通道已建立
ModelRiver 流式传输
背压感知交付
Token 已流出
生成时部分响应
Tool calls (optional)
Function names + arguments
Final message
完成 + metrics
Logs + channel close
Request log captured, connection ends
channel_id: "ws_9f2b..." websocket_url: "wss://api.modelriver.com/ws" status: "pending" stream: true events: - type: "tokens" data: "Once upon..." - type: "final" latency_ms: 1240
即时用户体验
在模型运行时渲染部分文本,让用户立即感受到进度。.
唯一事实来源
流式传输和最终结果都会在请求日志中进行跟踪,并带有 Token 和计时。.
感知重试
如果供应商在中途失败,故障转移将在健康的模型上继续响应。.
用户体验速度
<200ms
连接后第一个 Token 的典型时间。.
事件类型
Token · 状态
您可以直接传输到 UI 的进度。.
可观测性
完成后记录日志
捕获最终响应和指标。.
01 · 连接
使用 channel_id 和身份验证打开 WebSocket。.
02 · 接收
在 Token 和状态事件到达时进行渲染。.
03 · 完成
在日志中捕获最终有效负载和指标。.
04 · 恢复
如果供应商失败,故障转移将继续流式传输。.
带有实时更新的事件驱动工作流
When using 事件驱动工作流, the WebSocket channel provides intermediate status updates. Your frontend receives status: "ai_generated" when the AI completes, then status: "completed" after 您的后端 processes and calls back. This keeps users informed throughout the entire workflow.
使用场景
- ● 需要逐个 Token 更新的聊天 UI。.
- ● Dashboards that monitor long-running tasks.
- ● Any flow where perceived 延迟 matters.
独特之处
- ● 相同的 channel_id 也会出现在请求日志中。.
- ● 与结构化输出和 Webhook 完美协同。.
- ● 如果在流式传输过程中出错,内置故障转移。.
程序化访问
Use the 异步 API + WebSocket for 实时流式传输
// 1. Backend: Start async request POST https://api.modelriver.com/v1/ai/async { "workflow": "chat-assistant", "messages": [...] } // Returns: { channel_id, ws_token, websocket_url } // 2. Frontend: Connect via SDK import { ModelRiverClient } from '@modelriver/client'; const client = new ModelRiverClient({ baseUrl: 'wss://api.modelriver.com/socket' }); client.on('response', (data) => { console.log('AI Response:', data.data); }); client.connect({ wsToken: ws_token });
后端调用异步 API,前端通过 SDK 连接 WebSocket。内置自动重连和故障转移。.
实时取悦用户
将流式传输与结构化输出和 Webhook 相结合,实现可靠、可验证的完成。.