TanStack AI:类型安全、厂商中立的 AI 应用 SDK
TanStack AI 是 TanStack 团队的新 SDK:一套类型安全、厂商中立的 API 同时接 OpenAI/Anthropic/Gemini/Llama,前端框架无关。本文讲清设计理念与上手实战。
直接回答:TanStack AI 是 TanStack 家族(Query/Router 同门)的开源 AI SDK:用适配器模式统一 OpenAI、Anthropic、Gemini、Llama 等模型厂商,端到端 TypeScript 类型安全,前端框架无关(React/Solid/原生 JS)。 接口仍应按安装版本核对,本文按当前官方快速开始说明。
四个核心设计原则
1. 厂商中立(适配器系统)
应用逻辑写一次,公共调用可复用,但切换提供商仍需验证工具、模态与参数兼容。按成本、性能、特性自由选模型,拒绝供应商锁定。
2. 类型安全一等公民
模型名、厂商特有参数、工具 schema 全部有类型与 IDE 自动补全——可在编译期发现部分错误,但网络、输出语义与权限仍需运行时检查。
3. 框架无关
核心逻辑不绑定单一 UI 框架;客户端支持列表与包名应按当前发行版核对。
4. 野心不止 JS
类型化服务端与客户端可解耦;其他语言集成需要核对协议和当前实际实现,不能将路线图当成已可用功能。
上手:流式聊天端点
下面是服务端路由片段,需先安装对应包并在服务端设置 OPENAI_API_KEY。模型名要选择当前账户支持且适配器接受的值,示例不代表推荐旧型号。
import { chat, chatParamsFromRequest, toServerSentEventsResponse } from '@tanstack/ai';
import { openaiText } from '@tanstack/ai-openai';
export async function POST(request: Request) {
const { messages, threadId, runId } = await chatParamsFromRequest(request);
const stream = chat({
adapter: openaiText('gpt-4o'),
messages, threadId, runId,
});
return toServerSentEventsResponse(stream);
}
这是局部接口示意,未在本轮运行。生产环境还要加认证、消息大小限制、取消、超时、限流和错误处理;密钥不能传到浏览器。
工具调用(Function Calling)
当前工具定义应使用官方支持的工具定义及服务端/客户端绑定方式,不存在通用的 ai.tool/ai.chat 写法。先从对应版本的工具指南定义输入、输出 schema,再实现处理函数。
TypeScript 类型不能替代对模型输入的运行时校验。天气查询等工具应验证参数;有副作用的工具要做身份校验、权限与幂等处理。
适合谁
- TypeScript 技术栈、对类型安全有洁癖的团队
- 需要多模型路由或想保留切换自由的应用
- 已经是 TanStack 生态用户(Query/Router/Table)的项目
常见问题(FAQ)
Q:能直接用于生产吗?
A:先固定版本并回归测试,评估支持状态与破坏性变更。
Q:Vercel AI SDK 只适合 React 吗?
A:不是,二者都有框架无关的部分;应比较实际适配器和所需能力,不虚构类型深度排名。
Q:换适配器就完全兼容吗?
A:不是,厂商独有工具、模态和计费需单独验证。
参考资料
资料核对日期:2026 年 9 月 29 日。本文基于公开文档整理,代码片段和评估方案未作独立运行或性能验证;厂商测试结果已注明来源。