useExternalStoreRuntime 适配器连接到 useStream。
工作原理
- 使用
useStream流式传输 — 连接到您的代理并获取响应式消息、加载状态以及提交/取消回调 - 使用
useExternalStoreRuntime适配 — 通过将BaseMessage[]转换为ThreadMessageLike[],将stream.messages桥接到 assistant-ui 的运行时格式 - 提供运行时 — 将您的 UI 包装在
AssistantRuntimeProvider中,并渲染任何 assistant-ui 线程组件
安装
连接 useStream
useExternalStoreRuntime 适配器将 stream.messages 桥接到 assistant-ui 运行时。将其传递给 AssistantRuntimeProvider 并渲染任何线程组件:
转换消息
toThreadMessages 将 LangChain BaseMessage[] 映射到 assistant-ui 期望的 ThreadMessageLike[] 格式。处理每种消息类型——人类、AI 和工具——并转换内容块、工具调用和推理标记:
自定义线程 UI
<Thread /> 提供了一个完整的默认线程 UI,包括消息列表、撰写器和滚动管理。通过覆盖组件插槽来自定义各个部分:
最佳实践
- 记忆消息转换: 将
toThreadMessages(stream.messages)包装在useMemo中,以避免在每次渲染时重新运行转换 - 处理附件: 使用
CompositeAttachmentAdapter和SimpleImageAttachmentAdapter处理图像上传;通过自定义适配器扩展文件处理 - 使用分支: assistant-ui 通过
MessageBranch提供内置消息分支支持;编辑消息以从该点重新生成 - 线程持久化: 使用
useStream并设置fetchStateHistory: true和reconnectOnMount: true,使 assistant-ui 在页面加载时能够访问完整的线程历史记录
通过 MCP 连接这些文档 到 Claude、VSCode 等,以获取实时答案。

