assistant-ui 概览

开源 React AI 聊天界面组件库,Radix 风格组合式原语架构,支持流式响应、工具调用渲染、多后端运行时。

#type / concept #status / evergreen #tech / dev / frontend #tech / ai

[!info] related notes

assistant-ui 概览

开源 React 组件库,将 ChatGPT 级别的聊天体验带入你的 React 应用。MIT 协议,Y Combinator 孵化。

核心特点

特性说明
组合式原语Thread、Message、Composer、ActionBar 等独立原语,自由组合
流式打字机原生支持 SSE 流式响应,逐 token 渲染
工具调用渲染function calling 结果渲染为 React 组件,支持人工审批
多后端运行时通过运行时抽象层切换 Vercel AI SDK / LangGraph / 自定义后端
TypeScript 强类型运行时 API、工具 schema、消息 part 全部类型化
shadcn/ui 集成CLI 一键添加预样式组件到项目

安装

# 新项目
npx assistant-ui@latest create

# 已有项目
npx assistant-ui@latest init

# 手动安装
npm install @assistant-ui/react @assistant-ui/react-ai-sdk

架构分层

┌─────────────────────────────────┐
│  预构建 UI 组件 (shadcn Thread)  │  ← 开箱即用
├─────────────────────────────────┤
│  原语 (Primitives)              │  ← ThreadPrimitive, MessagePrimitive...
├─────────────────────────────────┤
│  运行时 (Runtime)               │  ← useChatRuntime, useLangGraphRuntime...
├─────────────────────────────────┤
│  后端集成 (Adapters)            │  ← Vercel AI SDK, LangGraph, 自定义 SSE
└─────────────────────────────────┘

Radix 风格:每个原语都是独立的 headless 组件,开发者掌控布局和样式,原语负责行为和状态管理。

原语一览

原语职责
ThreadPrimitive可滚动消息容器、自动滚动、空状态
MessagePrimitive单条消息渲染、内容 part 分发、hover 状态
ComposerPrimitive输入框、提交、附件、语音输入
ActionBarPrimitive消息级操作按钮(复制、重试、编辑、反馈)
BranchPickerPrimitive多分支回复导航(重新生成/编辑后)
ThreadListPrimitive多会话列表管理

后端集成

集成包名
Vercel AI SDK@assistant-ui/react-ai-sdk
LangGraph@assistant-ui/react-langgraph
LangChain@assistant-ui/react-langchain
AG-UI 协议@assistant-ui/react-ag-ui
Google ADK@assistant-ui/react-google-adk
自定义数据流@assistant-ui/react-data-stream
托管云服务assistant-cloud

基础用法

// app/page.tsx
import { Thread } from "@/components/assistant-ui/thread";
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";

export default function ChatPage() {
  const runtime = useChatRuntime({
    api: "/api/chat",  // 后端 API 路由
  });

  return (
    <AssistantRuntimeProvider runtime={runtime}>
      <Thread />
    </AssistantRuntimeProvider>
  );
}

优雅之处

  • 所有原语共享同一个 AssistantRuntimeProvider 上下文,状态管理自动完成
  • 运行时可热切换——从 Vercel AI SDK 换到 LangGraph 只改一行
  • 预构建组件可逐步替换为自定义原语,无需重写整个架构

创建于 2026/6/25 更新于 2026/6/25