Vercel AI SDK 的 generateText 和 streamText 有什么区别?
1. 返回值类型不同
- generateText 返回完整的生成结果对象,包含 text、toolCalls、usage 等属性
- streamText 返回流式结果对象,包含 textStream、dataStream、fullStream 等可迭代流
2. 适用场景不同
- generateText 适用于需要完整结果的场景,如后台任务处理、数据提取、批量生成
- streamText 适用于需要实时反馈的场景,如聊天对话、长文本生成、进度展示
3. 消费方式不同
- generateText 的结果通过 await 一次性获取,代码结构更简洁
- streamText 的结果通过 for await 循环逐块消费,需要处理流式生命周期
4. 错误处理机制不同
- generateText 的错误在 await 时抛出,可用 try-catch 捕获
- streamText 的错误可能在流式过程中异步抛出,需要在消费循环中处理