useExternalStoreRuntime 适配器连接到 useStream。
工作方式
- 使用
useStream流式传输:连接到代理,并获取响应式消息、加载状态以及提交/取消回调 - 使用
useExternalStoreRuntime适配:将BaseMessage[]转换为ThreadMessageLike[],从而把stream.messages桥接到 assistant-ui 的运行时格式 - 提供运行时:用
AssistantRuntimeProvider包裹 UI,并渲染任何 assistant-ui 线程组件
安装
连接 useStream
useExternalStoreRuntime 适配器会将 stream.messages 桥接到 assistant-ui 运行时。将它传给 AssistantRuntimeProvider,然后渲染任何线程组件:
转换消息
toThreadMessages 会将 LangChain BaseMessage[] 映射到 assistant-ui 期望的 ThreadMessageLike[] 格式。处理每种消息类型,包括 human、AI 和 tool,并转换内容块、工具调用和推理 token:
自定义线程 UI
<Thread /> 提供完整的默认线程 UI,包括消息列表、composer 和滚动管理。通过覆盖组件 slots 可以自定义各个部分:
最佳实践
- 记忆化消息转换:用
useMemo包裹toThreadMessages(stream.messages),避免每次渲染都重新运行转换 - 处理附件:使用
CompositeAttachmentAdapter搭配SimpleImageAttachmentAdapter处理图片上传;如需文件支持,可用自定义适配器扩展 - 使用分支:assistant-ui 通过
MessageBranch内置支持消息分支;当你需要 LangGraph checkpoint fork 时,将编辑与useMessageMetadata和forkFrom搭配使用 - 线程持久化:使用
onThreadId持久化threadId,并在页面加载时将其传回useStream,让 assistant-ui 重新连接到同一线程
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

