ai
TypeScript 全链路 AI SDK,支持 OpenAI/Anthropic/Gemini 等
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
TypeScript 全链路 AI SDK,支持 OpenAI/Anthropic/Gemini 等
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
发布日期:2024年 | 语言:TypeScript | License: MIT | 仓库:TanStack/ai
TanStack AI 是一个用 TypeScript 编写的、厂商无关的 AI SDK,通过模块化适配器架构,让开发者能在 React、Vue、Svelte、Solid 等主流前端框架中,无缝接入 OpenAI、Anthropic、Google Gemini 等任意 AI 提供商,并获得端到端类型安全的流式对话、工具调用、结构化输出和多媒体处理能力。
TanStack 的创始人 Tanner Linsley 早年是 React 社区的知名贡献者,以 React Query(TanStack Query)成名。React Query 解决了前端数据获取与缓存的难题,让全球数十万开发者从手动管理服务器状态的泥潭中解脱出来。
但 Tanner 很快发现,AI 应用的开发体验同样混乱——每个 AI 提供商(OpenAI、Anthropic、Google)都有自己独特的 SDK、API 格式、认证方式和错误处理逻辑。开发者在切换 AI 提供商时,往往要重写大量代码。
这种"锁定效应"让 Tanner 决定:为 TypeScript 生态打造一个像 React Query 那样优雅的 AI 抽象层——让 AI 能力像数据获取一样,变成一种可组合、可缓存、可追踪的基础设施。
TanStack AI 的架构分为三层,每一层都可以独立使用,也可以按需组合:
第一层:通用 AI Core
chat():流式对话核心函数,输入消息列表,返回流式响应。底层与具体 AI 提供商解耦,理论上可以对接任何支持流式输出的 API。generate():非流式的生成接口,适用于批处理或不需要实时反馈的场景。toolDefinition():类型安全的工具定义 DSL,支持 Zod、ArkType、Valibot 等主流 Schema 库,实现输入输出的双向类型校验。第二层:Provider 适配器 每个 AI 提供商对应一个适配器包,通过统一的接口与 Core 层交互。目前已支持:
@tanstack/ai-openai:OpenAI 全系模型(GPT-4o、GPT-4o-mini、o1、o3 等)@tanstack/ai-anthropic:Claude 系列模型@tanstack/ai-gemini:Google Gemini 全家桶@tanstack/ai-ollama:本地 Ollama 部署@tanstack/ai-openrouter:聚合 OpenRouter 上的数百个模型@tanstack/ai-groq、@tanstack/ai-grok、@tanstack/ai-fal 等数十种切换 AI 提供商只需要换一行 import,所有业务逻辑保持不变。
第三层:Framework 绑定 为了让 AI 能力在 UI 层面自然融入,TanStack AI 提供了各框架的原生绑定:
@tanstack/ai-react:React Hooks 风格,useChat / useGenerate / useTool@tanstack/ai-vue:Vue Composables@tanstack/ai-svelte:Svelte 5 Runes@tanstack/ai-solid:Solid Signals@tanstack/ai-preact:轻量级框架支持传统 AI 工具调用面临的最大问题是:Schema 定义在服务端,但类型信息无法传递到客户端,导致运行时才能发现类型错误。TanStack AI 通过 toolDefinition() 解决了这一痛点——定义一个工具后,服务器端实现和客户端调用共享同一套类型推导,任何不匹配都会在编译阶段暴露。
const searchProducts = toolDefinition({
name: 'searchProducts',
description: 'Search the product catalog',
inputSchema: z.object({ query: z.string() }),
outputSchema: z.array(z.object({ id: z.string(), name: z.string() })),
}).server(async ({ query }) => {
return db.products.search(query)
})
TanStack AI 支持通过 JSON Schema、Zod、ArkType、Valibot 约束模型输出格式。在需要 AI 返回格式化数据(如 API 响应、代码补全、数据抽取)的场景下,这意味着不再需要解析 free-text 再做 regex 提取,AI 直接输出符合 Schema 的结构化数据。
TanStack AI 包含一个独特的 Code Mode 特性:在 packages/ai-code-mode 中,LLM 可以在隔离的 QuickJS 沙箱中动态编写和执行 TypeScript 代码。这意味着 AI 不再只能"调用预定义工具",而是能够根据问题动态构造工具逻辑,极大扩展了 Agent 的自主性边界。
开发者往往对 AI 的"黑盒"行为感到无力。TanStack AI 通过 @tanstack/ai-devtools 包,提供了类似 React DevTools 的可视化调试面板,可实时查看:消息流、工具调用、Token 消耗、OpenTelemetry 链路追踪。
TanStack AI 定位是开发工具包,面向有 TypeScript 开发能力的技术用户。没有 Web UI,所有交互通过 API 编程完成。对于有 React/Vue 经验的开发者,官方 Quick Start 文档清晰,从 npm install 到跑通流式对话示例,熟练开发者 10 分钟内可完成。
官方 examples 目录包含了 Chat、Media(多模态)、Search、RCT Native 等多种场景的参考实现,代码质量高,是很好的学习资料。
无容器化方案:项目纯 TypeScript SDK,没有 Dockerfile 或 docker-compose,无法直接容器化部署。这对需要一键部署 Serverless 或容器化环境的团队来说是障碍。
学习曲线:适配器模式虽然解耦了厂商依赖,但也意味着开发者在选择和使用适配器时需要额外理解架构。如果仅需要对接一个固定 AI 提供商,直接用原生 SDK 可能更简单。
包体积:TanStack AI 采用 monorepo 架构,所有子包加在一起体积不小(bundlephobia 可见主包 ~50KB gziped)。在极致追求首屏性能的移动端场景需要评估。
TanStack AI 的出现代表了 AI SDK 领域的一个趋势:从"SDK 大一统"到"类型安全的中间层"。Vercel AI SDK 选择了另一条路——与 Vercel 平台深度绑定,换取部署便利性;TanStack AI 则选择与平台解耦,换取最大的灵活性。
截至目前,TanStack AI 已获得 2759 GitHub Stars,npm 周下载量持续攀升,TypeScript 社区对其类型安全的工具调用机制评价极高。它的增长曲线也反映了 AI 应用开发从"实验性探索"向"工程化落地"迁移的大趋势。
对于需要构建生产级 AI 应用的 TypeScript 开发团队,TantStack AI 是一款值得关注的基础设施级工具。