SuperAPI AI 工具集

tanstack-ai-core-tool-calling

编程与开发

查看项目

更新于 10-16 00:01

技能介绍

用途:在 TanStack AI 中定义并调用同构工具,让服务端与客户端共享同一套工具定义。它建立在 ai-core 之上,需先阅读 ai-core 的关键规则。

主要能力:用 toolDefinition() 声明工具的名称、描述、inputSchema 与 outputSchema(Zod),并通过 .server()、.client() 分别实现。支持四类模式:一、仅服务端工具,定义后用 .server() 实现并传给 chat({ tools }),由服务端自动执行;二、仅客户端工具,服务端只传裸定义,客户端用 clientTools() 把 .client() 实现交给 useChat;三、审批流程,设置 needsApproval: true,执行暂停为 outcome.type === 'interrupt',客户端通过绑定的 interrupt + resolveInterrupt / resolveInterrupts / cancel 处理,resolveInterrupts 可批量审批,pendingInterrupts 与 addToolApprovalResponse 为迁移期兼容接口;四、懒加载发现,设置 lazy: true,模型先看名称,经 lazy__tool__discovery 按需获取 schema,可用 lazyToolsConfig 的 includeDescription 调整目录信息量。

MCP 工具:@tanstack/ai-mcp 可在服务端 chat() 中发现并调用 MCP 服务器工具,支持 Streamable HTTP、SSE 与 stdio(stdio 仅 Node,需从 /stdio 子路径导入)。可用 createMCPClient(...).tools() 自动发现,或用 createMCPClients 连接多台服务器并自动加前缀。工具结果携带 ui:// 资源时,会以 UIResourcePart 出现在客户端消息中,仅用于展示,不进入模型输入。MCP 客户端生命周期由调用方管理,需在中间件的 onFinish / onAbort / onError 中关闭。

限制与注意:maxIterations 限制模型轮次而非工具调用次数;工具预算需用中间件 onBeforeToolCall 与 onShouldContinue。每个服务端工具的 execute 可拿到 ctx.abortSignal,用于取消耗时调用。其余如具体安装方式、价格与平台支持,资料中暂未提供。