概述
本示例演示了流式响应(Streaming Responses)和 token 限制(Token Limits),这是构建具有受控输出的响应式 AI 智能体的两项核心技术。
流式传输问题
传统(非流式)方式
问题:用户体验差(长时间等待)、无进度指示、无法中断错误响应。
流式方式(本示例)
优势:即时反馈、进度可见、可提前中断、感觉互动性强。
流式工作原理
逐 Token 生成
onTextChunk 回调
Token 限制:maxTokens
Token 预算
成本与质量
| Token 限制 | 输出质量 | 使用场景 |
|---|---|---|
| 100 | 简短,可能被截断 | 快速回答 |
| 500 | 简洁但完整 | 简短解释 |
| 2000(示例) | 详细 | 完整解释 |
| 无限制 | 有冗长风险 | 长度未知时 |
实时应用场景
模式 1:交互式 CLI
模式 2:Web 应用
模式 3:多消费者
性能特征
延迟与吞吐量
高级概念
缓冲策略
- 无缓冲(即时):每个 token 立即回调,最流畅但开销更大
- 行缓冲:累积到换行符后刷新,更适合段落输出
- 时间缓冲:累积 50ms 后批量刷新,降低回调频率
上下文大小感知
智能体架构中的流式传输
最佳实践
- 始终设置 maxTokens — 防止无限制生成
- 处理部分更新 — 立即显示但等待完成后保存
- 提供反馈 — 在首个 token 到达时隐藏加载指示器
- 监控性能 — 跟踪 tokens/second 指标
对比
| 功能 | intro.js | coding.js(本示例) |
|---|---|---|
| 流式传输 | ✗ | ✓ |
| Token 限制 | ✗ | ✓ (2000) |
| 实时输出 | ✗ | ✓ |
| 进度可见 | ✗ | ✓ |
| 用户控制 | ✗ | ✓ |