首页 / 资讯中心 / 文章详情

SeeAct两阶段推理:如何让视觉大模型先生成动作、再用多选题完成元素定位

SeeAct两阶段推理:如何让视觉大模型先生成动作、再用多选题完成元素定位 ★ FEATURED ARTICLE
【免费下载链接】android_worldAndroidWorld is an environment and benchmark for autonomous agents项目地址https://gitcode.com/gh_mirrors/an/android_world点击查看免费下载AndroidWorld 是一个用于构建和评测自主手机操作智能体autonomous agents的环境与基准内置了 SeeAct 这一经典 Agent。SeeAct 的核心设计是两阶段推理先让视觉大模型基于截图想清楚下一步做什么动作再通过一道多选题让模型从 UI 元素列表中选出目标元素从而完成元素定位Grounding。本文带你拆解这套先生成动作、再定位元素的完整流程看懂它如何兼顾了决策质量与定位稳定性。为什么需要两阶段推理 让视觉大模型一步到位输出点击坐标 (x, y)很容易失败模型可能输出格式混乱、坐标偏移甚至编造不存在的坐标。SeeAct 的做法是把一个开放问题拆成两个子问题阶段要解决的问题输入输出第一阶段动作生成Action Generation下一步该做什么任务描述 历史动作 截图自然语言动作推理含目标元素描述第二阶段元素定位Grounding目标元素具体是哪一个第一阶段输出 UI 元素候选列表A/B/C…标准三行格式ELEMENT / ACTION / VALUE这样决策与定位各司其职第一阶段可以专注推理第二阶段则把开放式的坐标预测降级为封闭式选择题大幅降低解析失败率。整个实现集中在 seeact.py 与 seeact_utils.py 两个文件中。阶段一动作生成——先想清楚做什么SeeAct 的系统提示词要求模型像人类一样逐步操作 Android 设备可用的动作包括点击CLICK、长按、滑动SWIPE、输入文本INPUT TEXT、打开应用OPEN APP、按键ENTER/HOME/BACK等完整动作清单定义在 VALID_ACTIONS。第一阶段的用户提示词由 generate_action_generation_prompt 拼接而成包含任务目标、历史动作和一段引导模型分步思考的指令。其推理路径分为四步见 SEEACT_ONLINE_QUESTION_DESCRIPTION_NEW_EXP4当前屏幕识别判断现在处于什么界面历史动作分析结合截图逐步复盘之前每个动作的意图特别关注最后一步例如刚做过 INPUT TEXT 时通常还需要按 Enter 确认截图细节分析逐块检查屏幕状态弥补文字历史记录的信息缺失决定下一步动作结合手机操作习惯与 App 设计逻辑明确指出目标元素、位置与操作。此时模型输出的是自然语言推理不要求精确格式——为第二阶段的严格解析留出了容错空间。阶段二元素定位——用多选题圈出目标元素这一阶段的关键准备是把无障碍树accessibility tree里的 UI 元素变成一组选项。1️⃣ 构建选项列表format_and_filter_elements 会过滤掉无效元素并为每个元素生成一条人类可读的描述_get_element_description例如Send button——带文本的按钮a To text box with the text Alice ...——文本输入框a switch with the text Wi-Fi that is checked——开关及其状态同时用 format_action_options 给选项分配 A、B、C……字母标签超过 26 个自动升级为 AA、AB 等最多支持 676 个选项并约定选项按元素在屏幕上的位置从上到下、从左到右排列方便模型对照截图定位。2️⃣ 多选题提示词第二阶段提示词由 generate_grounding_prompt 生成结构为复述 → 选择题 → 最终格式见 SEEACT_CHOICE_PROMPT_DICT(Reiteration) 复述先复述第一阶段得出的目标元素、位置和对应操作强化上下文(Multichoice Question) 选择题要求模型逐个检查选项结合文本内容与截图细节判断哪个选项匹配目标元素多个匹配时选最可能的一个无匹配时选兜底项(Final Answer) 标准格式输出严格的三行格式ELEMENT: 选项字母如 ASWIPE 时可省略 ACTION: 动作类型从 VALID_ACTIONS 中选择 VALUE: 附加输入如要输入的文本、滑动方向 up/down/left/right、应用名多数动作为 None3️⃣ 两次 API 调用的消息结构两阶段的请求消息分别由 create_action_generation_messages_payload 和 create_grounding_messages_payload 构造。值得注意的是第二阶段会把第一阶段的输出作为 assistant 消息保留在对话中再以 user 消息追加选择题提示词——相当于让模型接着自己的思路回答保证两个阶段上下文连贯。解析与执行从字母回到真实动作拿到模型回复后step 方法 按以下流程处理解析extract_element_action_value 逐行提取 ELEMENT/ACTION/VALUE并通过 _validate_action 校验合法性如 CLICK 必须有 ELEMENT、SWIPE 的方向必须是四向之一映射convert_seeact_action_to_json_action 把 SeeActAction 转换为环境统一的 JSONAction选项字母会被反查回元素的真实索引例如模型选 A就定位到列表中第 0 个元素执行通过 ADB 动作在模拟器上真实执行点击坐标来自元素的 UI 树数据而非模型猜测容错解析失败时不会抛异常中断而是记录No Operation with error: ...并返回 UNKNOWN 动作下一轮重试收尾当动作为 TERMINATE 时done 标志置位任务结束。测试用例 seeact_test.py 完整演示了这一闭环模型回复ELEMENT: A / ACTION: CLICK / VALUE: None时Agent 正确解析出 CLICK 动作并映射到第 0 个元素AnImage image。如何运行 SeeAct AgentSeeAct 已在 run.py 中注册配置好环境见 README 的安装步骤并设置模型密钥后只需一条命令即可运行export OPENAI_API_KEYyour-key python run.py --suite_familyandroid_world --agent_nameseeact --perform_emulator_setup 小贴士--perform_emulator_setup只需在首次运行时加一次运行完成后generate_full_report 可以把每个任务的过程截图与动作描述汇总成 HTML 报告方便逐步回放 Agent 的决策轨迹。总结三点对 Agent 设计的启发拆解难问题把生成动作 定位元素这个开放性难题拆成两步第二步用多选题这种封闭形式稳定性和可解析性显著提升双通道信息融合截图负责看懂画面UI 元素树负责精确定位两者互补模型无需自己猜坐标严格输出 宽容容错最终答案要求严格三行格式但解析失败只降级为无操作而非崩溃保证长程任务能持续运行。这套两阶段范式不只适用于手机操作对任何视觉理解 界面操作的 Agent 项目都是值得借鉴的参考实现。赞分享【免费下载链接】android_worldAndroidWorld is an environment and benchmark for autonomous agents项目地址https://gitcode.com/gh_mirrors/an/android_world点击查看免费下载相关推荐先写旋律再配伴奏YuE 两阶段生成架构到底妙在哪先写旋律再配伴奏YuE 两阶段生成架构到底妙在哪 2025 至 2026 年的 AI 音乐赛道已经卷成一片红海Suno 迭代到 v5/v6Mureka、M音乐生成大模型人工智能媒体生成如何用ruyiPage XPath Picker自动生成元素定位代码完整录制教程如何用ruyiPage XPath Picker自动生成元素定位代码完整录制教程 ruyiPage 是一款面向 AI 分析与数据采集的 Python WebVOZEB PRO 五阶段创作闭环揭秘从创作简报到自动视觉复盘AI规划如何让生成更稳定VOZEB PRO 五阶段创作闭环揭秘从创作简报到自动视觉复盘AI规划如何让生成更稳定 VOZEB PRO 是一款 AI 创作工作台把创作简报、视觉方向上一篇跨平台音乐聚合神器LX Music Desktop 2.12.2 完全体验指南下一篇免费CVAT标注平台完整工作流从Docker部署到训练集导出创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站