AI SDK 7
AI SDK 每周下载量超过1600万次,是用于构建跨任何模型提供商的 AI 应用、功能、框架和智能体的 TypeScript SDK。它是 Vercel 的开源智能体框架 eve 所构建的同一层。AI SDK 7 在五个方面为智能体工作增加了生产级深度:开发具有推理控制、工具和运行时上下文的智能体,支持提供商文件与技能上传、MCP Apps 以及终端 UI。运行智能体时支持工具审批、持久性(WorkflowAgent)、超时和沙箱支持。可集成任何智能体套件,如 Codex、Claude Code、Deep Agents、OpenCode 或 Pi。通过遥测、Node.js 追踪通道、生命周期事件和性能统计来观察智能体。超越文本智能体,提供与提供商无关的实时语音支持和视频生成。
开发智能体
构建行为良好的智能体需要对模型推理、工具上下文和文件处理进行细粒度控制。
推理控制
大多数前沿模型支持可配置的推理,但每个提供商 API 的暴露方式不同。AI SDK 7 通过为 generateText 和 streamText 提供 reasoning 选项来标准化这一点。它会映射到提供商原生推理设置,让你只需一行代码即可控制推理强度。当你需要更详细、针对特定提供商的推理配置时,你仍然可以回退到提供商选项。了解更多请查看推理文档。
工具上下文
工具越来越多地独立于特定智能体或应用进行开发。例如,第三方公司提供工具,使智能体能够使用他们的 API。因此,工具需要额外的输入,这些输入并非由 LLM(大语言模型)生成,例如 API 密钥或配置设置。AI SDK 7 添加了一个完全类型化的工具上下文,可通过模式为每个工具指定。该上下文仅限于该工具,以防止第三方工具访问它们不需要的上下文。了解更多关于工具上下文的信息。
运行时上下文
对于更复杂的智能体循环,你经常需要可以在 prepareStep 中访问和修改变量,以调整提示、模型选择等。AI SDK 7 引入了一个类型化的运行时上下文,可在步骤准备和工具批准函数中使用,并支持可选的遥测功能。这使你能够在 ToolLoopAgent 中封装更多逻辑,并共享包含这些内部逻辑的智能体。了解更多关于运行时上下文的信息。
提供商文件上传
许多智能体工作流需要处理大型输入,例如 PDF、图像、数据集或其他工件。内联发送这些文件既慢又浪费,尤其是在无状态推理中,它们会被反复发送。AI SDK 7 添加了一个顶层的 uploadFile API,让你只需上传一次文件,然后将轻量级引用传递给后续模型调用。这避免了重复上传相同的字节,使推理更快,并在重复或多步骤运行期间节省带宽。uploadFile 可用于任何提供文件上传端点的提供商。该函数返回一个跨提供商可移植的提供商引用对象。了解更多关于提供商文件上传的信息。
提供商技能上传
在每次请求中将技能内联发送到提供商管理的容器环境,与内联发送文件存在相同的开销问题。AI SDK 7 添加了一个顶层的 uploadSkill API,让你只需上传一次技能,然后在后续推理调用中使用对该技能的引用。与 uploadFile 类似,该函数返回一个提供商引用对象。了解更多关于提供商技能上传的信息。
MCP Apps
MCP(模型上下文协议)已成为将智能体连接到工具和资源的常见方式。但并非每个工具都应让模型可见,某些 MCP 服务器需要在其工具旁边暴露专门的 UI。AI SDK 7 增加了对 MCP Apps 的支持。MCP 服务器现在可以将模型可见的工具与仅限应用的工具分离,保留应用元数据,并在沙箱化的 iframe 中渲染应用 UI。一个 JSON-RPC 桥接器连接工具、资源和显示交互。这让你能够构建更丰富的智能体体验,模型可以使用所需的工具,而用户则看到特定于应用的界面进行审查、配置或交互。立即使用 AI SDK 开始构建你的第一个 MCP App。
TUI
在开发智能体时,你需要能够快速测试它们,而无需编写完整的应用。AI SDK 7 增加了一个终端 UI(TUI)包,让你只需几行代码即可运行智能体:TUI 是交互式的,支持推理和工具,并将 Markdown 渲染为格式化文本。了解更多关于创建你自己的终端智能体的信息。
运行智能体
随着智能体变得越来越自主、运行时间越来越长,对审批、持久性、沙箱和健壮性的需求也随之增加。
工具审批(Tool approvals)
AI SDK 7 支持代理级别的工具审批,可自动执行或引入人工干预。审批类型包括:针对特定工具的简单用户审批;针对特定工具的工具审批函数,可自动批准、自动拒绝或转发给用户审批;以及通用的兜底工具审批函数。工具审批定义在 ToolLoopAgent、generateText 和 streamText 上,因为特定工具的使用场景决定了审批需求。对于高风险工作流,AI SDK 7 引入了可选启用 HMAC 签名的工具审批,以防止伪造审批。该 SDK 还通过在执行继续前重新验证工具输入和策略来强化重放行为。请参阅工具审批工作原理。
WorkflowAgent(持久性)
当代理运行跨越多个步骤或等待人工审批时,运行中途进程重启或部署意味着需要从头开始。AI SDK 7 引入了 @ai-sdk/workflow 和 WorkflowAgent,用于实现持久化、可恢复的代理执行,能够承受进程重启、部署、中断和延迟的审批。WorkflowAgent 支持基于工作流的流式传输、工具、审批、回调、prepareCall,以及跨工作流步骤边界的提供者模型序列化。它还支持类型化的运行时上下文,用于共享代理状态和稳定的遥测。回调现在包含更丰富的执行数据,如步骤编号、先前结果、持续时间和成功/失败信息。无效的工具调用会被保留而不执行无效工具,并且工具到 toModelOutput 的转换可以保留原始输出,供 UI 和回调使用。了解如何使用 WorkflowAgent 构建代理。
超时(Timeouts)
代理可能比简单请求更容易陷入停滞:提供者可以打开一个流然后停止发送数据块,工具可能挂起,或者多步运行可能超出总预算。AI SDK 7 在文本生成和代理 API 中新增了一流的超时配置,包括总超时、每步超时、每数据块超时和每工具超时限制。超时中止使用 TimeoutError,中止原因会通过流和 UI 协议传播。了解更多关于超时的信息。
沙箱支持(Sandbox support)
运行 Shell 命令、读写文件或执行生成代码的代理需要一个一致的执行环境,但底层沙箱在本地开发、CI 和生产环境中通常不同。AI SDK 7 新增了一流的 SandboxSession 抽象,用于在工具和代理中实现可移植的命令执行。工具可以独立于任何特定沙箱进行开发,并且你可以将任何支持沙箱的工具与任何沙箱提供者一起使用。沙箱环境(如 Vercel Sandbox)非常适合此目的。
集成任何代理框架(Integrate any agent harness)
代理运行时正在超越单个应用服务器。团队希望在同一代理逻辑下运行在编码环境、托管沙箱、本地会话和第三方框架中。
HarnessAgent
AI SDK 7 引入了实验性的框架抽象和 HarnessAgent:一个 API 用于运行完全配置的、成熟的代理框架,如 Claude Code、Codex 和 Pi。框架可通过沙箱、自定义指令、技能和工具进行配置。通过一致的接口运行已建立的框架,独立配置每个框架,并在不更改集成层的情况下进行替换。底层上,该抽象由 v1 适配器规范、桥接支持和扩展的沙箱会话原语组成,用于创建和恢复会话。框架会话可以暂停和恢复,甚至单个回合也可以在中途中断和恢复。HarnessAgent 实现了 AI SDK 的 Agent 接口,因此其 generate 和 stream 返回值与现有的 AI SDK 集成完全兼容,并且 useChat() 和新的 TUI 无需额外连接即可工作。了解更多关于 AI SDK Harnesses 的信息。
观察代理(Observe agents)
了解代理在生产中的行为是一项挑战。AI SDK 7 将可观测性作为构建代理的一流组成部分。
遥测(Telemetry)
AI SDK 7 围绕一个单一、可扩展的集成系统重新设计了遥测。无需将生命周期回调连接到每个 generateText 或 streamText 调用,而是在应用启动时注册一次遥测:重新设计包括:为第三方提供者集成提供的专用遥测接口;通过一次注册覆盖所有 AI SDK 功能的全局范围;可选使用最新 GenAI 语义约定的 OpenTelemetry 集成;Node.js 追踪通道支持。可观测性集成:Datadog、Langfuse、Braintrust、Raindrop、Sentry、Laminar、Langsmith。追踪现在捕获 AI 操作的完整形态,包括根生成、每个模型调用、各个步骤、工具执行、嵌入、重排序、使用量、错误,以及选定的运行时或工具上下文。你可以在 AI SDK Telemetry 文档 中找到更多细节。
Node.js 追踪通道
AI SDK 7 通过 node:diagnostics_channel 新增了对 Node.js 追踪通道的支持。该 SDK 在 ai:telemetry 通道上为 generateText、streamText、模型调用、工具执行、嵌入(embeddings)和重排序(reranking)发出结构化遥测事件。一个可观测性提供者(observability provider)通过其检测包(instrumentation package)订阅一次后,就能自动将 AI SDK 活动转换为追踪信息,并在流式响应和工具调用之间保持异步上下文。更多信息请参阅追踪通道文档。
性能统计
AI SDK 7 新增了针对模型输出、流式行为和工具执行的每步性能统计。你可以回答如下问题:模型开始响应花了多长时间?令牌到达的速度有多快?哪个工具耗时最长?了解更多关于性能统计的信息。
生命周期事件
生产环境中的智能体(agent)需要生命周期钩子,因为记录状态、计费和调试都依赖于准确了解运行(run)、步骤(step)和工具的起止时间。AI SDK 7 使得回调在模型调用、智能体、工具和其他函数之间一致触发,从而你可以观察每个运行何时开始、哪个模型被调用、消耗了多少令牌以及它是如何结束的。更多详情请参阅生命周期回调文档。
提供商无关的实时支持
实时模型 API 功能强大,但每个提供商在会话(session)、音频、工具和浏览器认证方面的实现各不相同。AI SDK 7 新增了实验性的、与提供商无关的实时支持,用于直接的浏览器 WebSocket 会话。该 SDK 支持服务端创建的临时令牌(ephemeral token)、OpenAI、Google 和 xAI 的提供商实现,以及一个返回 UIMessage[] 的 React 实时钩子(hook)。实时会话支持音频转录和客户端驱动的工具调用,因此你可以构建语音智能体、协作副驾驶(collaborative copilot)和低延迟交互界面,而无需将 UI 绑定到某个提供商的特定事件格式。AI Gateway 也通过 gateway.experimental_realtime() 支持标准化的实时会话,包括 WebSocket 子协议认证、模型查询选择以及经过验证的提供商选项。了解更多关于实时功能。
视频生成
AI 应用正扩展到文本和图像之外。AI SDK 7 引入了实验性的 generateVideo 支持,并提供针对 fal、Google AI Studio、Google Vertex 和 Replicate 的提供商实现。AI SDK 7 中的视频生成使用视频专有的模型分辨率,支持通过默认提供商进行基于字符串的模型查询,并通过可配置的大小限制和中止支持,实现更安全的有界下载处理。了解更多关于生成视频的信息。
快速开始
使用一条命令即可安装 AI SDK 7。
开始使用 AI SDK 7
查看完整的变更日志
迁移到 v7
加入社区
标题:AI SDK 7
贡献者
AI SDK 7 是 Vercel 核心团队(Gregor、Lars、Felix、Aayush、Josh、Nico)与我们出色的社区贡献者共同努力的成果:0xr3ngar、31Carlton7、A-Vamshi、Abdulwadood-zawity、abhicris、adithya-tako、AhmadYasser1、ahmedrowaihi、allenzhou101、anaclumos、arnaugomez、auscaster、AVtheking、B-Step62、bb220、ben-vargas、benyebai、bittere、blurrah、bolaabanjo、boylec、BrianHung、BrianP8701、chenxin-yan、christian-bromann、Christian-Sidak、cipher416、CloudFaye、codewarnab、codicecustode、codylittle、cristiandrei1234、csidak、ctate、cyphercodes、defrex、dflynn15、dinmukhamedm、dnukumamras、DongSeonYoo、dukex、edawerd、EdwardIrby、edwardwc、ellis-driscoll、embedder-dev、etairl、EurFelux、eyueldk、fahe1em1、Falven、fran3cc、gdborton、genmin、geraint0923、Ghitahouir、GidianB、grant0417、gsdv、guillemwilly、hank9999、harpreetarora、haydenbleasel、he-yufeng、heiwen、hkd987、hntrl、http-samc、i5d6、ismaelrumzan、Jaaneek、jaderiverstokes、jakobhoeg、Jaksenc、jarod、jaydeep-pipaliya、jeremyphilemon、jerilynzheng、jerome-benoit、jferrettiboke、jlsandri、JoanLaRosa、joaopedroassad、JohnnyHBon、josh-williams、jovanwongzixi、JulesGuesnon、Kage18、kagura-agent、kairosci、kaizen403、karthik-idikuda、kimchnn、kkawamu1、kkdawkins、leog25、leothorp、liaoliaojun、lihuimingxs、Mahendradeokar、MarcACard、marcusschiesser、markmcd、max-programming、MaxwellCalkin、mclenhard、MehediH、Melkeydev、michael-han-dev、michaelcummings12、Mmartinrusso、monadoid、montyanderson、more-by-more、mrpaaradox、msullivan、muniter、muraliavarma、murataslan1、mvanhorn、myprototypewhat、Nezz、nicoloboschi、nielskaspers、Nutlope、nwalters512、ohansFavour、ousugo、pablof7z、Pash10g、patrikdevlin、paulelliotco、pavel-y-ivanov、PierreLeGuen、posva、Pranav-Wadhwa、privatenumber、quuu、R-Taneja、raphaeleidus、reynkonig、Ricardo-M-L、richardsolomou、robechun、rubdos、samjbobb、SamyPesse、seojcarlos、shaper、shrey150、shubham-021、shujanislam、ShyamSathish005、sleitor、Subr1ata、syeddhasnainn、sylviezhang37、szymonrybczak、t-mdo、techwraith、theQuert、thestonechat、timvucina-soniox、tomdale、tresorama、tsuzaki430、turisanapo、Und3rf10w、undo76、ushiroimiya-lion、visyat、wong2、Xiang-CH、xlianghang、zapagenrevdale、Zawwarsami16、zirkelc、zxuhan。你们在 GitHub 上的反馈、错误报告和拉取请求对本次版本的成型至关重要。我们非常期待看到大家利用这些新能力创造出什么!了解更多。