tambo
React 生成式 UI 工具包,让 AI 在对话中直接渲染交互式组件
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
React 生成式 UI 工具包,让 AI 在对话中直接渲染交互式组件
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在和 AI 对话,问了一句「帮我看看这个月的产品销售数据」,AI 不仅给你一段文字回答,还直接在对话界面里渲染出一个漂亮的图表——你可以点击筛选、切换视图、甚至让 AI 帮你解读异常数据点。这就是 生成式 UI(Generative UI) 的魅力。
Tambo AI 就是为此而生的开源工具包。它专门为 React 应用而生,让 AI Agent 能够动态生成并渲染交互式界面组件,实现「对话即应用」的体验。
大模型 Agents 是 2024 年最火热的 AI 技术方向之一。Agent 能调用工具、访问外部数据、执行复杂任务——但长期以来,Agent 与用户的交互方式始终停留在「文字对话」层面。当 Agent 需要展示数据、呈现结果时,要么返回一段冷冰冰的 JSON,要么需要开发者手动写一堆适配代码来渲染特定组件。
这就催生了「生成式 UI」理念:让 AI 决定该用什么组件来呈现结果,而不是开发者预先定义好一切。打个比方,传统的 AI 应用像是「点菜式服务」——菜单上有什么你才能点什么;而生成式 UI 则是「自助厨房」——你告诉 AI 你想做什么,AI 自己决定用什么厨具、怎么摆盘。
Tambo AI 的联合创始人兼 CEO 在博客中写道:「我们构建软件时,往往假设用户的需求是一成不变的。但现实是,用户的问题各不相同,他们需要看到的数据视图也各不相同。Tambo 正是为了解决这个矛盾而生。」
Tambo 的工作方式非常优雅,核心是一个组件注册 + Schema 定义的机制:
开发者先将自己开发的 React 组件注册到 Tambo,并附带一个 Zod Schema 来描述组件的 props(参数)。例如:
const components: TamboComponent[] = [
{
name: "Graph",
description: "使用 Recharts 库渲染数据图表",
component: Graph,
propsSchema: z.object({
data: z.array(z.object({ name: z.string(), value: z.number() })),
type: z.enum(["line", "bar", "pie\]),
}),
},
];
这个 Zod Schema 会被转换成 LLM 的工具定义(tool definition)。当用户在对话中提到「显示销售数据」时,LLM 会自动调用 Graph 组件的 tool,并流式传输参数。Tambo 负责接收这些流式数据、渲染到对应的 React 组件中——整个过程对开发者是透明的。
Tambo 还内置了对话状态管理、流式传输(streaming)、错误恢复和重连机制,这些都是构建 Agent 交互体验时的常见痛点。
Tambo 不只是一个 React 库,而是一套完整的全栈解决方案,包含三个核心服务:
| 服务 | 技术栈 | 端口 | 说明 |
|---|---|---|---|
| Web | Next.js | 8260 | 用户仪表盘和操作界面 |
| API | NestJS | 8261 | 客户端请求的 REST API |
| Database | PostgreSQL 17 | 5433 | 数据持久化 |
React SDK(@tambo-ai/react)负责客户端的组件管理和流式交互。服务端则用 NestJS 构建,提供完整的认证、数据库和 API 能力。存储方面除了 PostgreSQL,还使用 MinIO(S3 兼容的对象存储)来管理文件。
在依赖管理上,Tambo 使用 Turborepo 作为 monorepo 架构的构建工具,每个服务独立构建、独立部署,同时共享类型定义和工具库。代码规范方面引入了 Prettier、ESLint、Husky(Git hooks)和 lint-staged,形成了完整的 CI 质量门禁。
Tambo 对 LLM 模型不做绑定。它支持 OpenAI、Anthropic(Claude)、Gemini、Mistral,以及任何兼容 OpenAI API 协议的自托管模型。这意味着你可以根据成本、性能和隐私需求自由选择模型。
同时,Tambo 与 LangChain 和 Mastra 等主流 Agent 框架兼容,但使用它们不是必须条件——开发者可以直接用 Tambo 的 SDK 构建自己的 Agent 逻辑。
在 AI Framework 层面,Tambo 主要利用 LLM 的 Function Calling / Tool Use 能力来驱动组件渲染。AI 模型本身不需要额外训练,依赖的是模型的工具调用能力(大多数现代 LLM 都已具备)。
Tambo 在部署方面做了充分准备。仓库根目录提供了 docker-compose.yml,默认配置了 PostgreSQL 和 MinIO 两个依赖服务。启动流程简洁:
git clone https://github.com/tambo-ai/tambo.git
cd tambo
./scripts/cloud/tambo-setup.sh # 生成 docker.env
# 编辑 docker.env 填入必要的 API Key 和密钥
./scripts/cloud/tambo-start.sh # 一键启动
./scripts/cloud/init-database.sh # 初始化数据库
# 访问 http://localhost:8260
Web 和 API 服务各自提供了多阶段 Dockerfile(基于 node:22-alpine),构建产物干净、体积小。对于生产环境,Tambo 还提供了完整的 Kubernetes manifests,包含 Deployment、Service、ConfigMap、Secret 等资源定义,可以直接部署到 K8s 集群。
部署难度评分为「中等」,主要门槛在于需要配置 LLM API Key(OpenAI 或兼容供应商)。不需要 GPU,普通云服务器即可运行。
从仓库结构来看,Tambo 的工程化水平相当成熟:
整体代码质量评分为 85/100,属于优秀水平。文档质量极高,每个功能模块都有详细的 README 和示例。
适用场景:
局限性:
生成式 UI 正在成为 AI Native 应用的标准交互范式。从 ChatGPT 的 Code Interpreter 到各类 AI 数据分析产品,都在实践这一理念。Tambo 作为开源实现,为 React 开发者提供了一条低门槛的入局路径。
随着多模态大模型能力的增强,未来的 AI 应用可能越来越多地采用「对话 + 动态 UI」的模式——用户用自然语言驱动应用,AI 实时生成最适合呈现结果的界面。Tambo 站在这个趋势的前沿,值得 AI 开发者密切关注。