TanStack/ai
🤖 Type-safe, provider-agnostic TypeScript AI SDK for streaming chat, tool calling, agents, and multimodal apps across OpenAI, Anthropic, Gemini, React, Vue, Svelte, and Solid.
TanStack AI – 用于构建生成式 AI 应用的类型安全、与提供商无关的 SDK
它是什么 – 一组 TypeScript 包,可让您编写流式聊天、工具调用代理、结构化输出流程、多模态生成(图像、音频、视频、文档)、实时语音和代码执行代理。核心 SDK 与提供商无关;您可以为 OpenAI、Anthropic、Gemini、Ollama 等添加适配器,并为 React、Vue、Solid、Svelte、Preact 或无头客户端添加框架绑定。
核心概念
| 概念 | 它为您提供什么 |
|---|---|
| 可组合活动 | 聊天、生成、实时、工具等是独立的“活动”,您仅在需要时导入,从而保持包体积小巧。 |
| 与提供商无关的适配器 | 通过单个 adapter 对象在 OpenAI、Anthropic、Grok、Ollama、Cloudflare Workers AI 等之间切换。 |
| 类型安全契约 | 工具、结构化输出,甚至每个模型的负载都使用 Zod/Valibot/ArkType 或原始 JSON Schema 定义,因此 TypeScript 知道输入和结果的确切形状。 |
| 框架原生钩子 | useChat、useRealtimeChat、生成钩子以及适用于 React、Vue、Solid、Svelte、Preact 的 UI 组件。 |
| 代理技能集成 | 包可以公开 SKILL.md,编码助手(Claude、Cursor、Copilot…)可以自动安装,将 SDK 转变为 AI 辅助开发的一流技能。 |
快速入门
# 核心 SDK + OpenAI 适配器
pnpm add @tanstack/ai @tanstack/ai-openai
# 对于 React UI(钩子 + UI 组件)
pnpm add @tanstack/ai-react @tanstack/ai-client
服务端流式聊天示例
import { chat, toServerSentEventsResponse } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
export async function POST(req: Request) {
const { messages } = await req.json()
const stream = chat({
adapter: openaiText('gpt-5.2'),
messages,
})
return toServerSentEventsResponse(stream) // 用于浏览器的 SSE
}
相同的 chat 调用可在浏览器、worker 或测试脚本中工作。
主要功能
1. 流式聊天和工具调用
- 类型化消息对象(
role、content)。 - 内置对工具定义(
toolDefinition)的支持,可在服务器或客户端上以相同的类型契约执行。 - 自动工具审批流程和延迟发现,用于动态工具加载。
2. 结构化输出
const Person = z.object({ name: z.string(), age: z.number() })
const result = await chat({
adapter: openaiText('gpt-5.2'),
messages: [{ role: 'user', content: '给我一个 Ada Lovelace 的简短传记' }],
outputSchema: Person,
})
// result 的类型为 { name: string; age: number }
适用于任何模式库或原始 JSON Schema。
3. 多模态生成
- 像
openaiImage、falVideo、geminiSpeech这样的单行适配器可让您使用相同的generationClient模式请求图像、视频、音频、转录、摘要等。
4. 实时语音聊天
适配器公开一个实时会话,该会话铸造令牌并流式传输音频块,从而实现低延迟语音助手。
5. 代码模式
模型可以编写在沙盒 VM 中运行的 TypeScript,允许循环、分支和并行工具调用——对于复杂的编排或数据处理代理很有用。
6. 可观察性和开发工具
- 用于消息、工具调用、使用情况和错误的事件流。
- 用于供应商中立跟踪的 OpenTelemetry 导出器。
- 可选的 UI 开发工具包,用于检查实时流。
生态系统和可扩展性
| 部分 | 用途 |
|---|---|
@tanstack/ai-client |
无头客户端 – 没有框架绑定的核心逻辑。 |
@tanstack/ai‑react、‑solid、‑vue、‑svelte、‑preact |
相应 UI 库的钩子/组合式函数。 |
@tanstack/ai‑react/ui(及类似) |
用于聊天窗口的现成无头 UI 组件(已弃用,推荐使用自定义 UI)。 |
提供商适配器(‑openai、‑anthropic、‑gemini、‑ollama、‑groq、…) |
将通用 SDK 调用转换为每个供应商的 HTTP API。 |
@tanstack/ai‑openrouter |
单个 API 密钥,可路由到 300 多个模型,并具有每次请求的成本跟踪功能。 |
@tanstack/ai‑cloudflare |
在 Cloudflare Workers 上运行,公开 AI Gateway、嵌入等。 |
由于每个活动和适配器都是可摇树优化的,您只发送实际使用的代码。
谁可能使用这个?
- 全栈开发人员构建聊天机器人、AI 增强 UI 或需要类型安全的内部工具。
- 产品团队希望在提供商之间切换(OpenAI ↔ Anthropic ↔ 本地 Ollama)而无需重写代码。
- LLM 运维工程师寻找统一的可观察性层和 OpenTelemetry 支持。
- 工具构建平台向下游代理公开类型化工具契约。
- 教育或业余项目想要一个现成的、文档完善的 SDK,而不是自己编写 HTTP 包装器。
文档和社区
- 完整文档 – https://tanstack.com/ai(概述、快速入门、与 Vercel AI SDK 的比较、高级主题)。
- GitHub 讨论、Discord 和面向贡献者的赞助计划。
- 代理技能 – 一个独特的功能,可让编码助手自动将 SDK 安装为技能,使 TanStack AI 成为开发人员的一流助手。
总结
TanStack AI 是一个类型安全、模块化的 TypeScript SDK,用于构建任何类型的生成式 AI 应用程序——聊天、工具调用代理、多模态生成、实时语音或沙盒代码执行。它通过适配器抽象了许多提供商,提供特定于框架的钩子,并强调开发人员体验(模式、可观察性、摇树优化)。非常适合希望获得强 TypeScript 保证同时保持提供商无关的团队。
相关
- 项目
- 项目
- 项目
- 项目
- 项目