课程目录

第 9 课 · 动手学大模型(上海交大)

GUI Agents

GUI 智能体:让模型自己点手机

想解放双手,让 AI 替你点外卖、回消息、比价购物?这一章基于开源模型 Qwen2-VL-7B 和 OS-Kairos 数据集,构建一个自适应人机交互的 GUI 智能体,并跑通推理。

学习目标

  • 了解 GUI 智能体领域的技术路线和研究现状。
  • 尝试基于 Qwen2-VL-7B 依托 OS-Kairos 数据集构建自适应人机交互 GUI 智能体的方法。
  • 尝试基于构建的 GUI 智能体进行推理。

核心概念

GUI 智能体的输入是屏幕截图加任务描述,输出是下一步动作(点击某坐标、输入某文本、滑动、返回等)。它和纯文本智能体的差别在于,感知端必须是视觉语言模型,动作端必须落到具体的界面元素上。

这一章的重点不是「能不能点」,而是 自适应人机交互:智能体在输出动作的同时给出一个置信度分数。分数低意味着它对当前这一步没把握,应该把控制权交回给人,而不是硬着头皮点下去。这一步的设计直接决定了 GUI 智能体能不能在真实手机上被信任。

技术栈是标准的:Qwen2-VL-7B-Instruct 做基座,OS-Kairos 提供带置信度标注的训练数据,LLaMA-Factory 负责有监督微调和一键推理。

实践步骤

  1. 从 OS-Kairos 的 README 下载数据集并解压,看清数据格式。
  2. 下载 Qwen2-VL-7B-Instruct 模型权重。
  3. 拉 LLaMA-Factory 源码。
  4. 数据预处理:把 get_sharpgpt.py 里的输入输出路径填好,运行后把 Kairos_train.json 转成 LLaMA-Factory 认的 sharegpt 格式。
  5. 注册数据集:修改 data/dataset_info.json 加上新数据集条目。
  6. 配置训练:改 examples/train_full/qwen2vl_full_sft.yamlmodel_name_or_path 指向 Qwen2-VL-7B,output_dir 指向断点和日志目录。这一步至少需要三张 80GB 的 A100。
  7. 推理验证:改 examples/inference/qwen2_vl.yamlmodel_name_or_path 指向训练后的断点,然后一键推理。输入可以是 OS-Kairos 测试集的图,也可以是你自己手机的截图,配上与 get_sharpgpt.py 同格式的文本提示。

常见误区

  • 低估算力门槛。 全参微调 7B 视觉语言模型需要三张 A100 80GB,没有这个条件就先改用 LoRA 之类的轻量方案,而不是硬跑全参。
  • 推理时提示词格式和训练时不一致。 智能体对提示格式非常敏感,格式一变输出就散。务必复用 get_sharpgpt.py 里的格式。
  • 忽略置信度分数。 只看动作对不对,就丢掉了这一章最有价值的那一半。

动手练习

拿自己手机的 10 张截图(避开含个人隐私的界面),配上明确的任务描述,让智能体给出动作和置信度。按置信度从高到低排序,人工标注每个动作是否正确,然后找一个阈值:低于它就交还给人。计算在这个阈值下,被拦下的错误动作占全部错误的比例,以及被误拦的正确动作有多少。这两个数就是这个智能体能不能上手机的依据。

要点回顾

GUI 智能体真正的工程难点不在于点得准,而在于知道自己什么时候点不准。数据格式、训练配置、推理提示三者必须严格一致,否则问题会伪装成模型能力不足。评估要围绕置信度和交还机制展开,而不只是动作准确率。

参考来源

  • 上海交通大学《动手学大模型》系列编程实践教程,第九章「GUI 智能体」:documents/chapter9,核验日期:2026-09-06。