TanStack AI
用类型安全的统一接口构建跨模型流式聊天、工具调用与多模态应用。
- 源仓库
- TanStack/ai
- Star 数
- ★ 3.2k
- 最近更新
- 4 天前
- License
- MIT
- 主语言
- TypeScript
- FA 评分
- 76/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude APICodex · Claude Code(部分支持)
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- React、Vue、Svelte、Solid 或 Preact 团队需要在现有应用中加入带类型化消息和工具调用的流式聊天。
- 不适合
- 需要开箱即用托管聊天产品的团队,这里要自己搭前端、服务端和部署
- 只想用一个厂商模型、不愿维护适配器与框架包组合的团队
- 源码审查
- 76/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
TanStack AI 是一个由可组合活动和提供商适配器构成的 TypeScript SDK,用于开发流式聊天、工具调用智能体、结构化输出、实时语音和媒体生成应用。核心包 @tanstack/ai 提供 chat()、toolDefinition() 和流式响应工具,OpenAI、Anthropic、Gemini、Ollama、Grok、Groq、ElevenLabs、BytePlus、fal.ai 与 OpenRouter 等能力通过独立适配器接入。客户端层包括无框架绑定的 @tanstack/ai-client,以及面向 React、Solid、Vue、Svelte 和 Preact 的原生包。它可以处理文本、图片、音频、视频和文档,并支持 JSON Schema、Zod、ArkType 与 Valibot 驱动的结构化结果。代码作为应用依赖运行在开发者自己的前端或服务器边界内;具体模型服务、凭据、托管方式和费用由所选适配器决定。它适合希望保留提供商切换能力、同时接受自行集成和部署 TypeScript 应用的团队。
应用把消息传给 chat(),并通过 openaiText() 等活动适配器选择模型;返回流可由 toServerSentEventsResponse() 转成服务器发送事件响应。toolDefinition() 使用输入和输出 schema 定义共享契约,再通过 .server() 或客户端实现执行工具。设置 outputSchema 后,聊天调用生成经过 JSON Schema、Zod、ArkType、Valibot 或普通 JSON Schema 约束的对象。生成客户端以统一模式调用图片、音频、视频、语音、转录和摘要能力;实时适配器负责语音会话与令牌签发。Code Mode 允许模型在隔离沙箱中编写并执行 TypeScript,以循环、分支或并行调用组织工具。开发工具、类型化事件、使用量和错误观测以及 OpenTelemetry 链路可用于检查消息、工具调用和流数据。
- React、Vue、Svelte、Solid 或 Preact 团队需要在现有应用中加入带类型化消息和工具调用的流式聊天。
- 后端 TypeScript 团队希望用同一套
toolDefinition()契约实现服务端或客户端工具。 - 需要在 OpenAI、Anthropic、Gemini、Ollama 或其他已列适配器之间切换模型提供商的产品团队。
- 需要让模型返回符合 Zod、ArkType、Valibot 或 JSON Schema 的业务对象,而非自由文本的开发者。
- 构建图片、视频、语音、转录、音频或摘要工作流,并希望采用统一生成客户端模式的多媒体应用。
- 需要实时语音会话、Code Mode 工具编排或 OpenTelemetry 可观测性的高级 AI 应用团队。
如何安装或部署这个 Agent?
安装核心包和 OpenAI 适配器:
pnpm add @tanstack/ai @tanstack/ai-openaiReact 流式聊天还需要客户端与 React 包:
pnpm add @tanstack/ai @tanstack/ai-client @tanstack/ai-react @tanstack/ai-openai若希望通过一个 API 入口访问多个模型,可安装 OpenRouter 适配器:
pnpm add @tanstack/ai @tanstack/ai-openrouter来源未规定 Node.js 版本,也未给出提供商凭据的环境变量名称或配置步骤;运行前需按所选适配器补齐相应服务访问配置。
如何使用这个 Agent?
在支持标准 Request、Response 和服务器发送事件的 TypeScript 服务端路由中创建聊天流:
import { chat, toServerSentEventsResponse } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
export async function POST(request: Request) {
const body = await request.json()
const stream = chat({
adapter: openaiText('gpt-5.2'),
messages: body.messages,
})
return toServerSentEventsResponse(stream)
}调用方应向该 POST 端点发送包含 messages 的 JSON 请求。示例使用 OpenAI 适配器和 gpt-5.2;来源没有展示凭据配置、错误处理或部署命令。
如需结构化对象,可设置 outputSchema:
import { chat } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
import { z } from 'zod'
const Person = z.object({
name: z.string(),
age: z.number(),
})
const person = await chat({
adapter: openaiText('gpt-5.2'),
messages: [{ role: 'user', content: 'Ada Lovelace, 36' }],
outputSchema: Person,
})这个 Agent 有哪些优点和局限?
- 提供 OpenAI、Anthropic、Gemini、Ollama、OpenRouter、Grok、Groq、ElevenLabs、BytePlus 和 fal.ai 等官方适配器,降低单一提供商绑定。
toolDefinition()让服务端和客户端实现共享输入、输出类型契约。- 一个 SDK 覆盖流式聊天、结构化输出、实时语音、图片、音频、视频、语音、转录和摘要。
- 提供 React、Solid、Vue、Svelte、Preact 及无框架客户端,并可按活动进行 tree-shaking。
- 包含类型化观测事件、开发工具与 OpenTelemetry 支持,可检查流、工具调用、错误和使用量。
- 需要自行选择、安装并配置提供商与框架包;来源没有给出完整的凭据配置流程。
- 不同适配器覆盖的能力并不一致,例如部分仅面向聊天,另一些才支持图片、视频或实时语音。
- 采用方需维护 TypeScript 应用、服务端端点和部署环境;它不是开箱即用的托管聊天产品。
- Code Mode 会执行模型生成的 TypeScript,虽然描述为隔离沙箱,但来源未提供具体安全策略、权限边界或部署要求。
- 来源未规定受支持的 Node.js 版本,也未展示重试、速率限制或生产故障恢复配置。
这个 Agent 与同类方案有什么区别?
项目提供一份“TanStack AI vs Vercel AI SDK”文档,用于比较架构、功能覆盖和取舍;所给材料没有列出具体比较结论,因此无法据此断言哪一方在性能、成本或功能上更优。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| TanStack AI 当前 | 76 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 3.2k | 4 天前 | TypeScript | OpenAI API · Claude API |
| Mirascope | 55 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 1.5k | 1 天前 | Python | Claude API |
| Rig | 70 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 8.9k | 今天 | Rust | OpenAI API |
| Adaline Gateway | 69 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 607 | 2 个月前 | TypeScript | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
工作流使用只读 contents 权限、关闭持久化凭据并以提交散列固定第三方 Actions;Code Mode 声称使用隔离沙箱,ACP 测试也展示了沙箱边界。扣分在于 SDK 可调用外部模型、工具、本地进程及媒体服务,而所给文件未完整说明运行时最小权限、网络范围或默认工具授权;工具审批只有文档链接。提供商和可观测性路径较清楚,但没有 API 密钥、日志脱敏、提示内容保留或敏感数据处理政策。ACP 对不可恢复的 attach 会拒绝,并提示重复执行和双重追加风险,但框架整体没有通用回滚机制。仓库、包名、MIT 著作权人和社区渠道可追溯,不过维护主体及发布身份未被企业注册表验证,因此不作负面推断,也不视为充分组织身份保证。
README、包脚本、工作流和 ACP 测试对流式事件、会话恢复、协议协商、runId 与耐久性限制的描述高度一致,故自洽性满分。多提供商及 Ollama 本地选项降低单一依赖风险,但实际功能仍依赖 npm 包、模型供应商、运行时和外部服务,且来源未展示离线降级全貌。失败消息证据很强:配置错误、协议版本错误及不支持 attach 均有明确且可操作的说明,并区分可重试与非瞬态条件。
材料明确覆盖 React、Vue、Svelte、Solid、Preact、无头客户端、纯服务端、实时、多媒体及多提供商场景,受众和环境适配充分。能力边界部分明确,例如 ACP 尚不写 journal、Bun 驱动需要特定运行时,但这些限制主要出现在测试注释而非顶层说明。工具 schema、客户端/服务端实现和审批流程表明触发接口较精确,但审批文档正文和实际策略未提供,因此不能满分。
README 的开始路径、能力分类、提供商表、框架表和高级文档导航结构清晰。安装命令实用,但缺少密钥配置、运行时版本及生产部署的完整就地说明。包命名一致且采用 changesets/release 流程,不过大量活动和适配器显示接口仍可能演进,所给材料没有兼容性承诺。示例覆盖聊天、工具和结构化输出,但没有随附 FAQ;已知限制有测试级证据,却没有集中限制章节。MIT 文本完整,故许可满分。维护渠道、贡献入口和自动维护脚本存在,但未明确列出责任人、响应承诺或安全更新路径。
流式事件、类型化工具、结构化输出、多模态和框架绑定直接产出可供应用消费的结果,输出可用性证据充分。统一的 provider/activity 抽象、运行时切换、Code Mode 和可观测性相较基础模型 SDK 提供明显增量价值。树摇、按需包和 OpenRouter 成本跟踪有助于控制成本,但未给出性能、费用、延迟或运维负担的量化数据,因此成本效益不满分。
核心能力可追溯到具体 README 示例、package 脚本、固定版本工作流及针对 ACP 行为的细粒度测试;多类文件相互印证配置验证、协议协商、沙箱执行、事件输出和耐久性限制,因此追溯性与交叉佐证充分。扣分在于部分广泛能力、隔离安全性和奖项属于概述或外链声明,当前材料未提供对应实现或独立证据;测试源码只能证明测试意图,不能证明本次修订实际执行通过。
- ACP 兼容适配器目前不写 journal;在耐久 attach 场景会拒绝操作,新耐久运行也明确不可在之后恢复。
- Code Mode 和本地进程适配器可执行生成代码或命令;部署者应自行限制文件系统、网络、凭据和工具权限,并设置明确审批边界。
- 所给材料没有说明 API 密钥保护、提示与媒体数据保留、日志脱敏或供应商数据政策,处理敏感数据前需单独审查。
- 本评估仅基于所给静态文件;未执行测试,也未验证外链文档、奖项、发布物或依赖漏洞状态。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Minor Changes - [#1715](https://github.com/TanStack/ai/pull/1715) [fac0555](https://github.com/TanStack/ai/commit/fac055559de98eb0fa23a0bc725808033ba3c2fc) - New hooks for hosts that run chat() for a long session. - @tanstack/ai exports runAgentStream (runs a defineAgent agent outside a parent chat turn), createSubagentId, createSubagentSink, CapabilityRegistry, and the SubagentsBag and SubagentSink types. Pass the sink to keep interrupt objects and token usage. The finished event has interruptIds only. …在 GitHub 查看 ↗ -
发布说明摘录
Patch Changes - Updated dependencies \[[1bfcee3](https://github.com/TanStack/ai/commit/1bfcee35bb3cf0ff3aac005440c842e66c3d687d), [412b0fe](https://github.com/TanStack/ai/commit/412b0fea4f4bb569998c3d253d174efd7b501e3c), [a0150c2](https://github.com/TanStack/ai/commit/a0150c26b9e2b6050663450171e36a9dfa80915b), [b881627](https://github.com/TanStack/ai/commit/b881627d51076dcc1af031ac951046e2fb7d84c4), [fac0555](https://github.com/TanStack/ai/commit/fac055559de98eb0fa23a0bc725808033ba3c2fc), [6774e80](https://github.com/TanStack/ai/commit/6774e803da3205101613ab2857c9ed4fbf97568 …在 GitHub 查看 ↗ -
发布说明摘录
Patch Changes - Updated dependencies \[[1bfcee3](https://github.com/TanStack/ai/commit/1bfcee35bb3cf0ff3aac005440c842e66c3d687d), [412b0fe](https://github.com/TanStack/ai/commit/412b0fea4f4bb569998c3d253d174efd7b501e3c), [a0150c2](https://github.com/TanStack/ai/commit/a0150c26b9e2b6050663450171e36a9dfa80915b), [b881627](https://github.com/TanStack/ai/commit/b881627d51076dcc1af031ac951046e2fb7d84c4), [fac0555](https://github.com/TanStack/ai/commit/fac055559de98eb0fa23a0bc725808033ba3c2fc), [6774e80](https://github.com/TanStack/ai/commit/6774e803da3205101613ab2857c9ed4fbf97568 …在 GitHub 查看 ↗
常见问题
是否必须使用 OpenAI?
它是否包含托管服务或模型费用?
浏览器能否直接执行工具?
toolDefinition() 支持从同一契约附加服务端或客户端实现。具体权限和敏感操作应放在哪一侧,材料没有规定。能否在没有前端框架的服务器上使用?
@tanstack/ai-client 也提供无框架客户端。