尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

为AI智能体赋予视觉能力:从CV到多模态大模型的实践指南

为AI智能体赋予视觉能力:从CV到多模态大模型的实践指南 1. 从文本到视觉为什么Agent需要“看见”世界最近在折腾各种AI Agent框架和项目时我总感觉缺了点什么。无论是用LangChain搭个简单的任务链还是研究AutoGPT、CrewAI这类多智能体协作框架大家讨论的核心似乎都围绕着“文本”打转如何解析用户指令、如何调用API、如何生成回复。这当然没错但现实世界的信息远不止文字这一种形态。我们人类获取信息超过80%是通过视觉完成的。一个只会“读”而不会“看”的Agent就像一个被蒙住眼睛的专家知识再渊博在真实场景中也寸步难行。这就是“Agent Skills Should Go Beyond Text: The Case for Visual Skills”这个标题直击的核心痛点。它不是在否定文本能力而是在呼吁一种能力的升维。想象一下你让一个家庭服务机器人“把桌上那个红色的马克杯拿过来”。如果它只能理解“红色”、“马克杯”、“桌上”这些文本标签而无法通过摄像头“看到”并识别出哪个是红色的、哪个是杯子、哪个是桌子以及它们之间的空间关系那么指令就是一句空谈。再比如你想让一个自动化测试Agent去检查一个网页的UI布局是否正确或者让一个数据分析Agent从一张复杂的仪表盘截图中提取关键指标这些任务的核心输入都不是纯文本而是图像。因此为Agent赋予视觉技能Visual Skills本质上是让它获得与物理世界和数字界面直接交互的“眼睛”和“手眼协调能力”。这不仅仅是接一个图像识别API那么简单它涉及到感知、理解、决策到执行的一整套闭环。从技术栈上看它要求我们将计算机视觉CV、多模态大模型MLLM的能力深度集成到Agent的认知、规划和行动循环中。接下来我们就深入拆解一个具备视觉技能的Agent到底需要哪些核心能力以及我们该如何一步步构建它。2. 视觉技能的核心维度从“看到”到“做到”为Agent装备视觉能力不能简单地理解为“加一个图像识别模块”。这是一个系统工程需要从多个维度来构建其视觉智能。我们可以将其分解为几个层层递进的核心技能维度。2.1 视觉感知与理解超越OCR的“场景阅读”最基础的视觉技能是感知和理解。这不仅仅是把图片中的文字识别出来OCR更是要理解图像的整体场景、其中的物体、它们的关系以及可能蕴含的意图。物体检测与识别这是基石。Agent需要能定位并识别出图像中的关键实体。例如在GUI自动化中需要识别出“按钮”、“输入框”、“复选框”、“下拉菜单”等界面元素。在物理机器人场景需要识别“门把手”、“水杯”、“障碍物”。这里常用的技术包括YOLO、Faster R-CNN等目标检测模型但对于特定领域如GUI组件可能需要针对性的数据集进行微调。光学字符识别将图像中的文本信息转化为机器可读的字符串。这对于处理扫描文档、截图中的文字、产品标签等信息至关重要。Tesseract是经典选择但基于深度学习的OCR如PaddleOCR、EasyOCR在复杂场景下准确率更高。场景理解与描述这是更高级的能力要求Agent能综合图像中的信息用自然语言描述整个场景。例如给Agent一张会议室白板的照片它需要描述出“白板上画了一个流程图左侧写着‘需求分析’右侧有‘开发’和‘测试’两个分支”。这通常需要借助多模态大模型如GPT-4V、Gemini Pro Vision、Qwen-VL来实现。这些模型能将视觉特征与语言模型对齐实现高质量的图像描述、问答和推理。空间关系与属性理解理解物体之间的相对位置“鼠标在键盘的右边”、大小比较、颜色、形状等属性。这对于执行精确操作如“点击左上角的那个蓝色图标”至关重要。实操心得在项目初期不要追求大而全的通用模型。针对你的核心场景定义好需要识别的物体类别和关键属性收集或生成一批高质量的标注数据哪怕是几百张去微调一个轻量级的检测模型如YOLOv8n其效果和速度往往远优于直接调用庞大的通用模型。对于OCR如果场景字体固定、背景干净传统Tesseract配置好语言包和PSM页面分割模式可能就足够了如果是复杂背景或非常规字体则必须上深度学习OCR。2.2 视觉推理与规划连接“所见”与“所为”看到并理解了接下来就要思考“该怎么做”。视觉推理与规划是连接感知与行动的大脑。状态判断基于视觉输入判断当前系统或环境的状态。例如通过识别屏幕截图判断一个软件安装向导进行到了哪一步“正在显示许可协议”、“等待输入安装路径”或者判断一个网页是否加载完成通过识别特定的加载图标消失或内容区域出现。意图映射与任务分解将用户的自然语言指令与视觉场景结合分解出可执行的动作序列。用户说“帮我把这个商品加入购物车”Agent需要1在屏幕上找到代表该商品的图片区域2找到该区域附近的“加入购物车”按钮3规划出“鼠标移动到商品图 - 点击‘加入购物车’按钮”的操作序列。这需要将NLU自然语言理解与视觉理解的结果进行对齐和推理。异常检测与处理在自动化流程中视觉技能可以用来检测预期之外的状态。比如自动化测试中对比当前界面截图与基线截图发现意外的错误弹窗或者在物流分拣中识别出破损的包裹。这需要定义什么是“正常”并能够敏感地捕捉视觉上的“异常”。这个层面通常需要结合规则引擎、知识图谱以及具备强大推理能力的多模态大语言模型。例如你可以将视觉感知的结果检测到的物体列表及其属性、OCR提取的文字作为上下文连同用户指令一起喂给LLM让LLM来生成下一步的行动计划Plan。2.3 视觉引导下的交互与控制精准的“手眼协调”这是视觉技能的最终出口——驱动执行器完成操作。在数字世界这通常是控制鼠标和键盘在物理世界则是控制机械臂、底盘等。屏幕坐标计算这是GUI自动化的核心。检测到一个按钮后需要计算出它在屏幕上的精确坐标通常是其包围框的中心点然后驱动鼠标点击。这里要注意屏幕分辨率缩放、多显示器等带来的坐标变换问题。操作模拟不仅仅是点击还包括输入文本、拖拽、滚动等。需要模拟真实的人类操作节奏有时还需要加入随机延迟以避免被反自动化机制检测到。反馈循环执行一个操作后环境状态会改变。一个成熟的视觉Agent必须能通过再次“看”屏幕来确认操作是否成功并基于新的视觉状态决定下一步行动。这就形成了一个“感知 - 规划 - 执行 - 再感知”的闭环。在技术选型上Python生态中有pyautogui、pynput等库用于控制键鼠opencv-python用于图像处理pytesseract用于OCR再结合selenium或playwright用于Web自动化它们本身也提供元素定位但视觉方法可以作为补充或用于无法直接定位的场景。更高级的框架如Robocorp的RPA库也集成了计算机视觉能力。踩坑实录直接使用绝对屏幕坐标是非常脆弱的一旦应用窗口位置改变或UI缩放比例调整坐标就失效了。更健壮的方法是使用相对定位或特征匹配。例如先找到某个稳定的视觉锚点如应用logo再根据相对偏移量去定位目标按钮。或者使用图像模板匹配cv2.matchTemplate来寻找目标区域尽管计算量稍大但对UI位置变化的容忍度更高。另外在自动化操作中一定要在关键步骤后加入视觉验证点比如点击“提交”后去检测“提交成功”的提示框是否出现而不是假设点击就一定成功。3. 技术栈选型与集成策略打造你的视觉Agent明确了能力维度我们来看看如何用现有的工具和技术栈将这些能力组装起来。这里没有银弹需要根据你的具体场景是纯数字GUI自动化还是需要结合物理摄像头来搭配。3.1 核心组件拆解一个典型的视觉Agent技术栈可以分层来看环境感知层数字屏幕使用mss、PIL.ImageGrab或pygetwindowpyautogui来捕获屏幕截图。对于特定应用可能用pywinauto或win32gui获取窗口句柄后再截图更高效。物理摄像头使用opencv-pythoncv2.VideoCapture读取USB摄像头或网络视频流。图像预处理OpenCV负责图像的裁剪、缩放、灰度化、二值化、滤波等为后续识别优化输入。视觉理解层专用模型对于固定模式的识别如特定的图标、控件模板匹配cv2.matchTemplate简单有效。对于需要识别的物体类别较多则需训练目标检测模型YOLO系列、Detectron2。OCR引擎Tesseract通过pytesseract调用是标配但强烈建议评估PaddleOCR或EasyOCR它们在中文、复杂布局上的表现通常更好且自带文本检测定位功能。多模态大模型这是实现复杂场景理解和推理的“大脑”。通过API调用GPT-4V、Gemini Pro Vision或开源模型如Qwen-VL-Chat、LLaVA。将截图和问题如“这个页面上有哪些可点击的按钮”发给MLLM让它返回结构化的理解结果。这是实现“视觉问答”和高级规划的关键。决策规划层智能体框架这是协调一切的中枢。LangChain、LlamaIndex可以作为编排框架将视觉感知的结果作为Tool的输入或者作为Agent的观察Observation。更新的框架如AutoGen、CrewAI对多智能体协作支持更好适合复杂任务分解。任务规划器可以是一个简单的if-else状态机也可以是一个LLM如GPT-3.5/4。将当前视觉状态描述文本或结构化数据和用户目标输入LLM要求它输出下一步动作的JSON格式指令例如{action: click, target: submit_button, coordinates: [x, y]}。动作执行层GUI自动化pyautogui提供基础的鼠标键盘控制。pywinauto、win32gui对Windows原生应用控件操作更精准。selenium、playwright是Web自动化的王者。机器人控制如果涉及物理机器人则需要ROSRobot Operating System或类似框架将视觉解析出的目标位置像素坐标通过手眼标定转换为机器人坐标系下的坐标再发送给运动控制节点。3.2 两种主流集成模式在实际构建中通常有两种模式模式一以CV模型为核心的“硬编码”流程这种模式适用于任务固定、界面变化少的场景。你预先定义好所有需要识别的视觉元素和操作流程。循环开始 1. 截取屏幕。 2. 使用预训练的YOLO模型检测所有“按钮”。 3. 根据业务逻辑判断当前应该点击哪个按钮例如状态为“等待输入”时去找“输入框”和“确定按钮”。 4. 计算目标按钮坐标用pyautogui点击。 5. 等待片刻回到步骤1进行状态确认。这种模式速度快、可控性强但灵活性差UI一旦改版就需要重新训练或调整检测逻辑。模式二以MLLM为核心的“认知驱动”流程这种模式利用多模态大模型的强大理解和推理能力实现更灵活的任务处理。1. 用户输入指令“帮我在这个ERP系统中为张三创建一个新的采购订单。” 2. AgentLLM驱动规划需要先登录 - 导航到采购模块 - 点击新建 - 填写表单 - 提交。 3. 执行“登录”子任务截取登录页面截图连同问题“登录按钮在哪里”发送给GPT-4V。 4. GPT-4V返回描述“屏幕中央有一个用户名输入框下方是密码输入框最下面有一个蓝色的‘登录’按钮。” 5. Agent解析描述调用工具find_element_by_description内部可能用OCR或特征匹配定位“登录”文本然后执行点击。 6. 进入下一个子任务循环此“感知-规划-执行”过程。这种模式非常灵活能处理未见过的界面和复杂指令但依赖大模型API成本较高速度较慢且需要精心设计提示词Prompt来让MLLM返回稳定、可解析的结果。个人经验在实际项目中我通常采用混合模式。将高频、固定的操作如登录、导航到主菜单用模式一的硬编码方式实现保证稳定和速度。对于可变性强、需要理解复杂语义的操作如从一份格式多变的报告中提取特定信息则调用MLLM。同时为MLLM设计良好的提示词模板要求它必须以指定的JSON格式返回答案方便后续程序解析这是工程化的关键一步。4. 实战构建一个GUI自动化视觉Agent理论说再多不如动手做一遍。让我们以一个具体的场景为例创建一个能自动在某个图形化桌面应用假设是一个简单的待办事项管理软件中根据我们的文字指令添加、查询待办项的视觉Agent。我们假设这个软件的UI元素无法通过传统的UI自动化工具如pywinauto直接访问或者我们想打造一个与具体UI框架无关的通用方案。4.1 环境准备与基础工具链首先搭建我们的工作环境。我们将使用一个轻量级但功能齐全的技术栈。# 创建虚拟环境可选但推荐 python -m venv visual_agent_env source visual_agent_env/bin/activate # Linux/Mac # visual_agent_env\Scripts\activate # Windows # 安装核心依赖 pip install opencv-python-headless # 图像处理headless版本无需GUI库 pip install pillow # 图像处理 pip install pyautogui # 鼠标键盘控制 pip install pytesseract # OCR需要额外安装Tesseract-OCR引擎 pip install easyocr # 备选深度学习OCR pip install langchain # Agent框架这里我们主要用其思路和工具抽象 pip install openai # 如需调用GPT-4V API # 如果使用开源MLLM可能需要安装transformers, torch等此外你需要从Tesseract官网下载并安装Tesseract-OCR引擎并将其安装路径如C:\Program Files\Tesseract-OCR\tesseract.exe添加到系统环境变量PATH中或者在代码中指定。4.2 定义Agent的核心能力Tools我们将Agent的能力封装成一个个“工具”Tool。这是LangChain等框架的核心思想但我们这里简化实现。import pyautogui import cv2 import numpy as np from PIL import ImageGrab, Image import pytesseract import time import json class VisualAgentTools: def __init__(self): self.screen_width, self.screen_height pyautogui.size() # 可以在这里初始化EasyOCR reader等 # self.reader easyocr.Reader([ch_sim,en]) def capture_screen(self, regionNone): 捕获指定区域或全屏的截图返回OpenCV格式图像 screenshot ImageGrab.grab(bboxregion) if region else ImageGrab.grab() screenshot_cv cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) return screenshot_cv def find_element_by_text(self, text_to_find, screenshotNone): 通过OCR在截图中查找包含特定文本的区域。 返回找到的第一个匹配区域的中心坐标和区域图像。 这是一个简化实现实际中可能需要更复杂的文本检测和匹配。 if screenshot is None: screenshot self.capture_screen() # 转为灰度图进行OCR gray cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY) # 使用Tesseract获取文本和位置信息 data pytesseract.image_to_data(gray, output_typepytesseract.Output.DICT) for i in range(len(data[text])): if text_to_find.lower() in data[text][i].lower(): x, y, w, h data[left][i], data[top][i], data[width][i], data[height][i] center_x, center_y x w // 2, y h // 2 print(fFound {text_to_find} at ({center_x}, {center_y})) return (center_x, center_y), screenshot[y:yh, x:xw] print(fText {text_to_find} not found.) return None, None def click_at(self, coordinates, buttonleft): 在指定坐标点击鼠标 x, y coordinates # 可加入随机微小偏移模拟人类操作 pyautogui.click(x, y, buttonbutton) time.sleep(0.5) # 操作后等待让界面响应 def type_text(self, text): 模拟键盘输入文本 pyautogui.write(text, interval0.1) time.sleep(0.3) def get_visual_description(self, screenshot): 获取屏幕的视觉描述简化版。 在实际应用中这里应该调用多模态大模型API。 此处我们模拟一个简单的规则识别几个关键区域。 # 这里只是一个示例实际应调用GPT-4V等模型 # 假设我们通过一些图像处理知道顶部是标题栏中间是列表底部是输入框和按钮 height, width screenshot.shape[:2] # 模拟分析 description 屏幕顶部是应用程序标题栏中间区域是一个空白的列表区域底部有一个文本输入框和一个‘添加’按钮。 return description4.3 设计任务规划与执行循环现在我们创建一个简单的“大脑”它根据用户指令和当前视觉状态决定调用哪个工具。class SimpleVisualAgent: def __init__(self): self.tools VisualAgentTools() # 简单的状态记忆记录我们刚刚做了什么 self.last_action None def execute_task(self, user_instruction): 执行用户指令的核心循环。 这是一个非常简化的示例真实场景需要更复杂的规划器如LLM。 print(f执行指令: {user_instruction}) if 添加 in user_instruction and 待办 in user_instruction: # 任务添加待办事项 # 1. 找到输入框 coords, _ self.tools.find_element_by_text(输入框) # 假设按钮上有“输入框”文本或通过其他方式定位 if coords is None: # 如果找不到尝试点击可能的位置或通过MLLM描述来定位 print(未找到输入框尝试通过视觉描述定位...) # 这里可以调用 get_visual_description 并解析但为了简化我们假设它在固定位置 coords (self.tools.screen_width // 2, self.tools.screen_height - 100) # 假设的底部中央位置 self.tools.click_at(coords) else: self.tools.click_at(coords) # 2. 输入待办内容从指令中提取这里简单处理 todo_text user_instruction.replace(添加, ).replace(待办, ).strip() if not todo_text: todo_text 新的待办项 self.tools.type_text(todo_text) # 3. 找到并点击“添加”按钮 add_coords, _ self.tools.find_element_by_text(添加) if add_coords: self.tools.click_at(add_coords) self.last_action f添加了待办: {todo_text} print(self.last_action) else: print(未找到‘添加’按钮任务可能失败。) elif 查询 in user_instruction or 显示 in user_instruction: # 任务查询/显示待办列表 # 在这个简单示例中我们只是截个图并模拟进行OCR读取列表内容 print(正在查看待办列表...) screenshot self.tools.capture_screen() # 假设列表在屏幕中央区域 list_region (self.tools.screen_width//4, self.tools.screen_height//4, self.tools.screen_width*3//4, self.tools.screen_height*3//4) list_screenshot self.tools.capture_screen(regionlist_region) # 对列表区域进行OCR gray_list cv2.cvtColor(list_screenshot, cv2.COLOR_BGR2GRAY) text pytesseract.image_to_string(gray_list, langchi_simeng) # 中英文 print(识别到的列表内容) print(text if text else (可能为空或识别失败)) self.last_action 查询了待办列表 else: print(f无法理解指令: {user_instruction}) # 使用示例 if __name__ __main__: agent SimpleVisualAgent() # 假设你已经打开了那个待办事项软件并把它放在前台 time.sleep(3) # 给你3秒时间切换窗口 agent.execute_task(添加待办 购买 groceries) time.sleep(2) agent.execute_task(显示待办列表)4.4 引入多模态大模型进行高级规划上面的例子是“硬编码”逻辑。要让Agent真正理解“帮我把上个月的项目报告找出来并邮件发给经理”这种复杂指令我们需要引入MLLM作为规划器。这里以OpenAI GPT-4V为例需要API Key展示如何将视觉感知与LLM规划结合import openai import base64 from io import BytesIO class MLLMEnhancedAgent(SimpleVisualAgent): def __init__(self, api_key): super().__init__() openai.api_key api_key self.client openai.OpenAI() def get_vision_analysis(self, prompt, screenshotNone): 调用GPT-4V分析截图 if screenshot is None: screenshot self.tools.capture_screen() # 将OpenCV图像转为base64 _, buffer cv2.imencode(.png, screenshot) img_base64 base64.b64encode(buffer).decode(utf-8) response self.client.chat.completions.create( modelgpt-4-vision-preview, # 或使用最新模型名 messages[ { role: user, content: [ {type: text, text: prompt}, { type: image_url, image_url: { url: fdata:image/png;base64,{img_base64} } } ] } ], max_tokens500, ) return response.choices[0].message.content def execute_complex_task(self, user_instruction): 利用MLLM进行任务分解和规划 print(f分析复杂指令: {user_instruction}) # 第一步让MLLM根据当前屏幕理解指令并生成第一步动作 initial_prompt f 你是一个视觉AI助手。当前用户指令是{user_instruction}。 现在我给你一张当前电脑屏幕的截图。 请只做以下两件事 1. 用一句话简要描述你看到的屏幕主要内容。 2. 根据用户指令和屏幕内容输出一个JSON对象指明下一步最应该执行的**单个**原子操作。 JSON格式必须严格如下{{action: click | type | press_key | describe, target: 目标描述或坐标, value: 仅当action为type时需要的文本}} 例如{{action: click, target: 左上角的文件菜单}} 或 {{action: type, target: 搜索框, value: 项目报告}} 如果无法确定action设为describetarget设为你的疑问。 analysis_result self.get_vision_analysis(initial_prompt) print(fMLLM分析结果: {analysis_result}) # 这里需要解析MLLM返回的文本提取出JSON部分。实际应用中需要更鲁棒的解析。 # 假设MLLM乖乖地输出了JSON通过精心设计的prompt可以大大提高几率 # 解析JSON并执行对应的工具调用... # 例如如果action是click我们需要将target如“左上角的文件菜单”转换为坐标。 # 这可以再次通过MLLM询问“请用红框标出文件菜单的位置”或通过CV模板匹配来实现。 # 执行完一步后再次截图将新的状态和未完成的指令再次发送给MLLM进行下一步规划形成循环。 # 这就是一个完整的基于MLLM的视觉推理与规划循环。这个MLLMEnhancedAgent展示了一个范式让MLLM充当“指挥官”它根据看到的屏幕视觉输入和用户指令决定下一步具体的原子操作点击哪里、输入什么。然后我们的代码去解析这个指令调用相应的工具find_element_by_text,click_at等执行。执行后环境状态改变再次截图连同“我们刚刚点击了文件菜单现在打开了下拉菜单接下来该怎么做”这样的历史信息再次询问MLLM直到任务完成。关键技巧与避坑指南Prompt工程是关键让MLLM返回稳定、可解析的格式如JSON至关重要。在Prompt中明确指定格式并给出清晰示例。可以要求它分两步思考“思考过程”和“最终答案”并将答案用特定标记括起来便于程序提取。坐标转换是难点MLLM可以描述“点击左上角的蓝色图标”但如何将其转化为屏幕坐标有几种思路a) 让MLLM直接输出坐标不太可靠因为模型并非为像素级精度设计b) 让MLLM用自然语言描述位置再用CV方法如颜色筛选、模板匹配根据描述去定位c) 采用“指哪打哪”的交互式标注但这不适合全自动化。成本与延迟频繁调用GPT-4V API成本不菲且存在延迟。对于固定流程的部分尽量用本地CV模型只在需要高级语义理解和规划时才调用MLLM。也可以考虑使用开源的、可本地部署的多模态小模型如Qwen-VL-Chat-Int4来平衡成本与能力。错误处理与鲁棒性自动化脚本非常脆弱。必须在每个操作后加入验证步骤。例如点击“保存”后要去检测“保存成功”提示或页面跳转是否发生。如果没有需要能触发重试或转入异常处理流程如记录日志、发送警报、回退到上一步。5. 视觉Agent的挑战与未来展望构建一个真正鲁棒、通用的视觉Agent我们依然面临诸多挑战这也是当前研究和工程实践的热点。主要挑战视觉理解的准确性光照变化、界面缩放、字体渲染、动态内容如GIF、视频都会影响CV模型和OCR的准确性。UI组件的变体如不同风格的按钮也可能导致检测失败。动作执行的可靠性模拟的鼠标点击可能因为窗口失去焦点、元素加载延迟而失败。在物理世界动作执行的不确定性更大。规划与推理的复杂性多步骤任务中任何一步的失败都可能导致整个任务链崩溃。如何让Agent具备从失败中恢复、尝试替代方案的能力鲁棒规划是一个难题。效率与成本实时屏幕截图、调用大模型进行推理这对计算资源和响应时间都是考验。难以应用于对实时性要求高的场景。泛化能力在一个应用上训练或调校的Agent很难直接迁移到另一个界面迥异的应用上。如何实现“一次学习多处应用”是终极目标。未来方向与实用建议尽管挑战重重但视觉Agent的价值毋庸置疑。对于想要入手的开发者我的建议是从具体、狭窄的场景开始不要想着一开始就做一个能操作任何软件的“通用Agent”。从一个具体的、高重复性的任务开始比如自动处理某种特定格式的邮件附件并录入系统或者自动对某个软件进行每日健康检查。混合策略结合传统RPA对可访问性API好的应用、CV图标、文字识别和MLLM复杂理解和规划。用最合适的技术解决每个子问题。重视数据与迭代收集你目标应用在各种状态下的截图标注关键元素。这些数据不仅可以用于训练定制化的CV模型也可以作为Few-shot示例放入给MLLM的Prompt中极大提高其理解准确性。关注开源生态社区已经出现了一些专注于视觉自动化的框架和工具如Robocorp集成了CV、OpenAI的GPT-4V API、Microsoft的Visual ChatGPT概念、以及诸多开源的多模态模型。保持关注并尝试集成它们。设计良好的评估体系如何衡量你的视觉Agent是否可靠需要定义清晰的测试用例和成功率指标。自动化测试本身也要有“眼睛”能够判断任务是否成功完成。视觉技能让Agent从纯粹的“文本思考者”进化为能够“眼观六路、手到擒来”的实干家。这条路虽然充满挑战但每解决一个具体问题你构建的Agent就向真正的智能助理迈近了一步。从今天开始试着为你手中的Agent项目装上“眼睛”吧。
返回列表