Skip to main content
智能体-UI 是一个无头 React UI 框架,用于 AI 对话。它提供了一个完整的运行时层——线程管理、消息分支、附件处理——通过 useExternalStoreRuntime 适配器连接到 @[useStream]。
克隆并运行 完整智能体-UI 示例,查看一个类似 Claude 风格的对话界面,该界面连接到带有 useExternalStoreRuntime 的 LangChain 智能体。

工作原理

  1. 使用 @[useStream] 流式传输: 连接到您的智能体,获取反应式消息、加载状态以及提交/取消回调
  2. 使用 useExternalStoreRuntime 适配: 将 stream.messages 桥接为 assistant-ui 的运行时格式,通过将 BaseMessage[] 转换为 ThreadMessageLike[]
  3. 提供运行时: 将您的 UI 包裹在 AssistantRuntimeProvider 中,并渲染任何 assistant-ui 线程组件

安装

连接 useStream

useExternalStoreRuntime 适配器将 stream.messages 桥接为 assistant-ui 运行时。将其传递给 AssistantRuntimeProvider 并渲染任何线程组件:

转换消息

toThreadMessages 将 LangChain BaseMessage[] 映射为 assistant-ui 所期望的 ThreadMessageLike[] 格式。处理每种消息类型——人类、AI 和工具——并转换内容块、工具调用和推理 Token:

自定义线程 UI

<Thread /> 提供了一个完整的默认线程 UI,包括消息列表、作曲家和滚动管理。通过覆盖组件插槽来自定义单个部分:

最佳实践

  • 记忆化消息转换: 将 toThreadMessages(stream.messages) 包裹在 useMemo 中,以避免在每次渲染时重新运行转换
  • 处理附件: 使用 CompositeAttachmentAdapter 与 SimpleImageAttachmentAdapter 进行图片上传;通过自定义适配器扩展文件
  • 使用分支: assistant-ui 通过 MessageBranch 提供内置的消息分支支持;当您需要 LangGraph 检查点分支时,将编辑与 useMessageMetadata 和 forkFrom 配合使用
  • 线程持久化: 使用 onThreadId 持久化 threadId,并在页面加载时将其传递回 @[useStream],以便 assistant-ui 重新连接到同一线程

官方原文:src/oss/langchain/frontend/integrations/assistant-ui.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026