当前位置: 首页 > news >正文

Vercel AI SDK 6 完整教程系列 - 第三部分:构建智能 Agent 与多模态应用

Vercel AI SDK 6 高级特性:构建智能 Agent 与多模态应用

前两篇教程里,我们把文本生成、结构化输出和基础工具调用都摸了一遍。用maxSteps搞出来一个多步推理的小 demo,看着挺像那么回事

但说实话,真要做一个能自己思考、自己决策的 AI Agent,光靠那些基础循环是不够的。你会发现逻辑越写越乱,代码越堆越多,到最后自己都不知道 AI 在第几步干了什么

这篇文章我们聊点更实战的东西。ToolLoopAgent怎么把智能体封装得更优雅,Loop Control 如何让你精准控制每一步执行,多模态能力怎么让 AI 真的“看懂”图片,还有 DevTools 这个神器——专治各种 Agent 调试头疼的问题

1. 用 ToolLoopAgent 把 Agent 封装起来

还记得上一章的汇率助手吗?我们把工具和maxSteps直接塞进generateText里。写个 demo 没问题,但你要是真的做业务,这代码很快就会变成一坨意大利面

你想想,每次都要重新配置工具、重新写循环逻辑,改个参数还得全局搜索。更要命的是,你没法把“这个会搜索的 AI”当成一个独立模块复用

ToolLoopAgent就是来解决这个痛点的。它把模型、工具、循环规则全打包成一个对象,你可以像调函数一样调用它。想要多个不同能力的 Agent?实例化几个就行

实战案例:做一个会搜资料的研究员 Agent

我们来搞个能模拟搜索、记笔记、写总结的 Agent

import{ToolLoopAgent,tool,stepCountIs}from'ai';import{openai}from'@ai-sdk/openai';import{z}from'zod';importdotenvfrom'dotenv';dotenv.config();// 定义工具集consttools={searchWiki:tool({description:'搜索维基百科摘要',parameters:z.object({query:z.string()}),execute:async({query})=>{console.log(`[Agent 操作] 正在搜索:${query}...`);// 模拟搜索结果return{title:query,summary:`${query}是一种强大的技术...(模拟数据)`};},}),saveNote:tool({description:'保存关键信息到笔记',parameters:z.object({content:z.string()}),execute:async({content})=>{console.log(`[Agent 操作] 记录笔记:${content}`);return{success:true};},}),};// 实例化 AgentconstresearcherAgent=newToolLoopAgent({model:openai('gpt-4o'),system:'你是一个严谨的研究员。遇到问题时,先搜索信息,然后记录关键点,最后总结回答。',tools:tools,// 默认停止条件:最多运行 10 步stopWhen:stepCountIs(10),});asyncfunctionmain(){// 使用 Agentconstresult=awaitresearcherAgent.generate({prompt:'请研究一下 Vercel AI SDK 的主要功能,并做简要总结。',});console.log('---最终报告---',result.text);}main().catch(console.error);

看到没,ToolLoopAgent把所有配置都收拢在一起了。你想在别的地方用这个研究员?直接researcherAgent.generate()就完事。想搞个编码 Agent、审核 Agent?照着这个模式再实例化几个,让它们互相配合干活

这才是工程化的写法

2. Loop Control:掌控 Agent 的每一步

Agent 跑起来就是个循环:思考→行动→观察→再思考。AI SDK 6 给了你一套 Loop Control 机制,让你能插手这个循环的任何环节

stopWhen:自己定义什么时候停

默认情况下,Agent 会一直跑到模型觉得任务完成了,或者达到最大步数。但有些场景你得强制控制,比如“调用了某个工具就立刻停”,或者“置信度太低了别继续瞎搞了”

import{stepCountIs}from'ai';// 组合多个停止条件stopWhen:[stepCountIs(10),// 防止死循环(step)=>{// 调用了 'escalateToHuman' 工具就立刻停returnstep.toolCalls.some(call=>call.toolName==='escalateToHuman');}]

prepareStep:在每一步执行前动态调整

prepareStep这个钩子很有意思。它能让你在 Agent 每走一步之前,偷偷修改请求参数。比如注入当前时间、用户位置这些动态信息,或者根据前面的执行结果临时换一套工具

constdynamicAgent=newToolLoopAgent({model:openai('gpt-4o'),tools:myTools,prepareStep:async({messages,stepCount})=>{// 每一步执行前,把当前时间塞进去consttimeContext=`当前系统时间:${newDate().toISOString()}`;return{system:`你是一个时间感知的助手。${timeContext}`,// 跑了 3 步之后,换一套简化的工具集tools:stepCount>3?simplifiedTools:myTools,};},});

3. 多模态:让 AI 真的能“看”

GPT-4o、Claude 3.5 Sonnet、Gemini 这些新模型都能看图了。AI SDK 6 把多模态输入的接口统一了,发图片变得特别简单

以前你得手动把图片转 Base64,再拼到 Prompt 里,麻烦得要死。现在content属性直接支持数组,文本和图片混着传就行

实战案例:发票识别助手

import{generateText}from'ai';import{openai}from'@ai-sdk/openai';importfsfrom'node:fs';asyncfunctionanalyzeInvoice(){constresult=awaitgenerateText({model:openai('gpt-4o'),messages:[{role:'user',content:[{type:'text',text:'帮我看看这张发票,把总金额和日期提取出来'},{type:'image',// URL 或者本地文件都行image:fs.readFileSync('./invoice.jpg'),},],},],});console.log('识别结果:',result.text);}

这个多模态能力可以跟结构化输出配合使用。你传一张网页截图进去,让 AI 用generateObject生成对应的 HTML 和 Tailwind 代码——Vercel v0 就是这么玩的

4. DevTools:给复杂 Agent 拍个 X 光片

Agent 逻辑一复杂,光靠console.log调试真的会疯。你根本看不清模型在第 3 步到底收到了啥参数,为啥它选择调工具 A 而不是工具 B

Vercel 官方搞了个AI SDK DevTools,基于 Web 的可视化调试工具,专治这种疑难杂症

怎么用:

装个依赖:

npminstall@ai-sdk/devtools

wrapLanguageModel把模型包一层,让它能捕获所有输入输出:

import{wrapLanguageModel}from'ai';import{experimental_createToolLoopAgent}from'ai';import{devtools}from'@ai-sdk/devtools';constmodel=wrapLanguageModel({model:openai('gpt-4o'),middleware:devtools,});// 后面在 generateText 或者 Agent 里用这个包装过的 model// const agent = new ToolLoopAgent({ model: model, ... });

启动 DevTools:

npx ai-sdk-devtools

打开浏览器访问http://localhost:4983,你会看到一条清晰的时间轴。每次 LLM 调用、完整的 Prompt、Token 消耗、工具调用的详细参数,全都一目了然

这玩意对优化 System Prompt 和排查 Agent “幻觉”问题太有用了。你能看到模型到底在哪一步开始胡说八道的

写在最后

到这里,你已经从写简单脚本的阶段,进化到能设计完整 Agent 系统的程度了

ToolLoopAgent让你把智能体封装成可复用的模块,Loop Control 给了你对执行流程的精准控制,多模态能力让 AI 不再只会“听”还能“看”,DevTools 则是你调试复杂 Agent 的透视镜

这些东西组合起来,基本上 Vercel AI SDK 6 的核心能力你都摸透了

下一篇实战项目篇,我们会把这些知识全部串起来,做一个真正能上生产的 RAG 聊天机器人。它会有文档理解、记忆保持、专业问答这些能力。到时候你会发现,前面学的这些东西是怎么在实际项目里配合工作的

http://www.jsqmd.com/news/392218/

相关文章:

  • 清单来了:8个降AI率网站深度测评,专科生必看!
  • 2026更新版!10个降AI率平台测评:MBA降AI率必备工具推荐
  • 一文讲透|专科生必备的一键生成论文工具 —— 千笔ai写作
  • 学长亲荐!自考论文神器 —— 千笔·专业论文写作工具
  • 建议收藏|最强的AI论文写作软件 —— 千笔写作工具
  • SLAM:前端(Front-end)、后端(Back-end)
  • 手机全程托管种地,输入一键托管指令,处理,按计划自动执行,输出,每日进度报告。
  • 企业内部培训小程序怎么做 - 码云数智
  • 微信小程序制作平台对比评测:码云数智、有赞、微盟 - 码云数智
  • 如何开发微信小程序 - 码云数智
  • 题解:洛谷 AT_dp_e Knapsack 2
  • 微信小程序开发一个多少钱? - 码云数智
  • 小程序商城哪个平台好用?SaaS小程序商城制作平台对比 - 码云数智
  • 扫码点餐小程序怎么弄 - 码云数智
  • 题解:洛谷 CF106C Buns
  • 2026年必看!单北斗GNSS变形监测大坝监测推荐榜单,助力安全管理与风险预警
  • 如何搭建微信小程序商城 - 码云数智
  • 基于jQuery与CSS3的全屏3D旋转木马焦点图特效实战代码 - 实践
  • 基于深度学习的西红柿成熟度检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Django+web+训练代码+数据集)
  • OpenCV Python技术文档
  • 实测对比后一键生成论文工具 千笔·专业论文写作工具 VS 知文AI 专科生专属
  • OpenCV Python技术文档HFS
  • OpenCV Python技术文档1
  • 少走弯路:千笔·降AIGC助手,好评如潮的降AIGC软件
  • OpenCV Python技术文档,OpenCV Python技术文档
  • 定稿前必看!专科生专属降AI平台 —— 千笔·降AI率助手
  • 对比一圈后,AI论文工具千笔ai写作 VS 灵感风暴AI,专科生首选
  • 用数据说话!AI论文工具 千笔·专业学术智能体 VS 云笔AI,专为本科生打造
  • 2026中型货架品牌排行:实力与口碑的双重考验,层板货架/阁楼货架/穿梭式货架/重型货架,中型货架生产商哪家靠谱 - 品牌推荐师
  • 【雷达原理 学习笔记 卫青老师】54. P54 雷达作用距离(十一)55. P55 雷达作用距离(十二)