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

工作原理

  1. 将组件作为源文件安装: AI Elements 通过 CLI 发布,该 CLI 将组件直接添加到你的项目中(shadcn/ui 注册表风格)
  2. 将消息映射到组件: 遍历 stream.messages,将 HumanMessage 实例渲染为用户气泡,将 AIMessage 实例渲染为助手响应
  3. 组合更丰富的 UI: 将工具调用包装在 <Tool> 中,推理过程包装在 <Reasoning> 中,并将所有内容包装在 <Conversation> 中以进行滚动管理

安装

通过 CLI 安装 AI Elements 组件。它们作为可编辑的源文件添加到你的项目中:

连接 useStream

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

最佳实践

  • 自由编辑源文件: 组件发布在你的项目中,而不是作为外部包依赖,因此你可以更改任何内容而无需 fork
  • 使用 MessageResponse 进行流式传输: 它能正确处理流式部分令牌;避免在流式传输期间直接渲染原始的 msg.content
  • 包装在 Conversation 中: Conversation 组件管理滚动行为,使新消息能自动滚动到视图中
  • 使用 isInstance 进行判断: 使用 HumanMessage.isInstance(msg)AIMessage.isInstance(msg),而不是检查 msg.getType(),以实现正确的 TypeScript 类型收窄