RSC 与 streamUI(实验性)
官方现状: AI SDK RSC 目前是 experimental。生产环境请用 AI SDK UI(
useChat+ Route Handler)。从 RSC 迁到 UI 见官方 Migrating from RSC to UI。
@ai-sdk/rsc 面向支持 React Server Components 的框架(主要是 Next.js App Router)。它让模型在服务端生成 React 组件,再流到客户端,而不是只流文本。这就是常说的 Generative UI。
和 AI SDK UI 的差别
只有在「模型要决定渲染哪块卡片 / 图表」且团队能接受实验 API 时才用 RSC。普通聊天不要走这条路。
核心 API(知道名字即可)
安装:pnpm add @ai-sdk/rsc(另需 ai 与厂商包)。
streamUI 最小例子
工具形状接近 streamText,但执行函数叫 generate,必须返回 React 节点。可用 async generator:先 yield 加载态,再 return 最终组件。
app/actions.tsx:
没有合适工具时,模型走 text,你仍要返回一个组件。streamUI 的返回值必须是 React 节点。
客户端页调用 Server Action(普通 async 函数):
实践建议
- 密钥仍只留在 Server Action 里,和 Route Handler 同一纪律。
- 多轮聊天需要
createAI同步 AI state 与 UI state;比useChat重,官方模板(Gemini Chatbot、Generative UI with RSC)可参考,不要从零发明状态机。 - HarnessAgent / 普通
streamText聊天 不要 和streamUI混在同一个路由里硬接。
学完概念后,把时间投回 useChat 与 工具调用。需要卡片式 UI 时,也可以在 UI 路径里用 tool-* part 渲染组件,不必上 RSC。