如何用 Qwen2.5-VL 智能体驱动电脑与手机:GUI 自动化实操教程
【免费下载链接】Qwen3-VLQwen3-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen3-VL
如果模型能看着你的屏幕帮你点鼠标、打字符,重复性的界面操作就可以交给它完成。Qwen2.5-VL 智能体做到的就是这件事:给它一张屏幕截图加一句自然语言,它回一条"点哪个坐标、输入什么文字"的具体动作,这就是 GUI 自动化的核心闭环。下面用仓库里自带的电脑端与手机端两个示例 notebook,把 Qwen2.5-VL 智能体教程能覆盖的最小完整流程走一遍,照着跑就能得到第一个可工作的 demo。
三分钟看懂原理:截图、识别、动作的闭环
智能体机制本质是一个三步循环:先截图输入,把当前界面转成 base64 与任务描述一起发给模型;再由模型做元素识别,在视觉上定位按钮、输入框等可交互元素;最后是动作指令生成,输出一个 JSON 函数调用,action指定动作类型,coordinate和text等参数指定细节。
入口在 cookbooks/utils/agent_function_call.py 文件,里面定义了ComputerUse(电脑)和MobileUse(手机)两个工具类,通过 qwen-agent 的函数调用机制把可用动作与参数格式声明给模型;图像预处理可借助qwen-vl-utils/src/qwen_vl_utils/vision_process.py中的smart_resize函数控制送入模型前的分辨率。每执行一步就再截一张图重新识别,如此循环直到任务完成。
从零跑通第一个示例:安装依赖与发起调用
克隆仓库并安装依赖
在 notebook 的 cookbooks 目录下运行示例。先拿到代码,再装四个包:
git clone https://gitcode.com/GitHub_Trending/qw/Qwen2.5-VL cd Qwen2.5-VL/cookbooks pip install transformers qwen-vl-utils qwen-agent openai最短调用链路
最短路径是走 OpenAI 兼容 API:初始化ComputerUse,用它自带的函数描述生成 system 提示,再把"截图 + 任务"发给模型。
from openai import OpenAI from utils.agent_function_call import ComputerUse from qwen_agent.llm.fncall_prompts.nous_fncall_prompt import ( NousFnCallPrompt, Message, ContentItem) computer_use = ComputerUse( cfg={"display_width_px": 1000, "display_height_px": 1000}) system_msgs = NousFnCallPrompt().preprocess_fncall_messages( messages=[Message(role="system", content=[ContentItem(text="You are a helpful assistant.")])], functions=[computer_use.function]) client = OpenAI(api_key="sk-xxx", base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1")随后把截图 base64 编码放进 user 消息,任务描述写成一句话(例如"打开第三行条目"),调用client.chat.completions.create并把system_msgs[0].model_dump()作为 system 消息传入,返回内容里就是模型给出的动作 JSON。仓库 notebook 同时保留了用 transformers 本地加载模型的分支,有 GPU 可以自行替换。
桌面 GUI 自动化落地:从一张截图到一次点击
仓库自带示例
cookbooks/computer_use.ipynb 用的是一个 GitLab Issues 页面截图,任务设为 "open the third issue"(打开第三个 issue)。页面上排着若干 issue 条目,模型需要按顺序数出目标行,再输出该行标题的点击坐标。
模型会输出什么
ComputerUse声明的动作覆盖桌面常见操作:左键/双击/右键点击、key按键、type打字、scroll滚轮滚动、wait等待、terminate结束任务等。模型分析截图后的输出形如{"action": "left_click", "coordinate": [x, y]},其中坐标位于 cfg 声明的 1000x1000 虚拟屏幕上,执行前要换算成真实分辨率(见下文"常见坑")。点击执行后重新截图校验:界面按预期变化则任务完成,否则带着新截图进入下一轮。
移动设备控制落地:完成一次应用内搜索
可用的触控动作
MobileUse面向触屏设计,动作集与桌面有差异:click、type之外,还有long_press长按、swipe滑动(coordinate到coordinate2)、open打开应用、system_button(Back / Home / Menu / Enter)、wait、terminate,参数 schema 同样定义在 cookbooks/utils/agent_function_call.py 中,模型输出的每个动作都会按它校验。
一次完整搜索流程
cookbooks/mobile_agent.ipynb 演示了"在 B 站应用里搜索 Qwen-VL 视频"这个完整小任务:先open打开应用,click点击搜索框,type输入关键词,再click点击"搜索"按钮。关键是每一轮模型只接收两样东西——当前截图、已执行步骤的简短总结(Task progress);它生成下一个动作,执行器跑完后截新图再进入下一轮,直到terminate收尾。这个"截图 + 进度 → 动作 JSON → 执行 → 新截图"的循环,就是 Qwen2.5-VL 手机自动化教程里最小的可复用单元。
常见坑与调试技巧
- 点击坐标怎么换算:模型输出的坐标在虚拟网格上(手机 999x999、电脑 1000x1000),不是真实像素,要分别按屏幕宽高缩放。
mobile_agent.ipynb里已带现成工具:
def rescale_coordinates(point, width, height): return [round(point[0] / 999 * width), round(point[1] / 999 * height)]- 界面加载等待:应用启动和页面跳转都有延迟,旧截图上的坐标点下去可能已经错位。工具描述本身就提示"wait and take successive screenshots",拿不准就先用
wait动作,再截一张图确认。 - 失败重试:点击落空时,从新截图重新确认元素位置,把点击点瞄准元素中心而不是按钮边缘,同一动作重试一两次通常即可命中。
- 可视化调试:用 notebook 里的
draw_point函数在截图上给模型选的点画一个红圈,和真实元素比对,一眼看出坐标偏没偏。💡
适用场景
- GUI 自动化测试:在固定界面上回放一串操作,验证新版本没有破坏交互流程
- 数据录入与表单填写:报表登记、邮件批处理这类规则明确的重复操作
- 跨设备任务执行:同一套"截图 + 指令"模式,电脑端与手机端都能跑
- 无障碍辅助:代行动不便的用户完成界面点击与信息查找
- 快速原型验证:不写 UI 自动化脚本,直接用自然语言描述任务,快速验证想法
以上代码均出自仓库 cookbooks 目录,打开对应 notebook 即可按顺序执行;整体使用方式可参考 README.md。
【免费下载链接】Qwen3-VLQwen3-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen3-VL
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考