Skip to main content
AI Elements 是一个基于 shadcn/ui 的可组合组件库,专为 AI 聊天界面构建。诸如 ConversationMessageToolReasoningPromptInput 等组件设计为可直接放入任何 React 项目,并通过最少的胶水代码连接到 stream.messages
克隆并运行 完整的 AI Elements 示例,以在实际项目中查看工具调用渲染、推理显示、消息流式传输等功能。

工作原理

  1. 以源文件形式安装组件: AI Elements 通过 CLI 提供,可将组件直接添加到您的项目中(类似于 shadcn/ui 注册表风格)
  2. 将消息映射到组件: 遍历 stream.messages,将 HumanMessage 实例渲染为用户气泡,将 AIMessage 实例渲染为助手回复
  3. 组合更丰富的 UI: 将工具调用包裹在 <Tool> 中,推理内容包裹在 <Reasoning> 中,所有内容包裹在 <Conversation> 中以管理滚动

安装

通过 CLI 安装 AI Elements 组件。它们将以可编辑的源文件形式添加到您的项目中:

连接 useStream

直接从 stream.messages 渲染 AI Elements 组件。每个 LangChain BaseMessage 都映射到一个组件:

最佳实践

  • 自由编辑源文件: 组件以项目内文件形式提供,而非外部包依赖,因此您可以修改任何内容而无需分叉
  • 使用 MessageResponse 处理流式传输: 它能正确处理流式传输的部分令牌;避免在流式传输期间直接渲染原始的 msg.content
  • 使用 Conversation 包裹: Conversation 组件管理滚动行为,确保新消息自动滚动到视图中
  • 使用 isInstance 进行类型守卫: 使用 HumanMessage.isInstance(msg)AIMessage.isInstance(msg) 而不是检查 msg.getType(),以获得正确的 TypeScript 类型收窄