UI-TARS:原生代理驱动的GUI自动化交互新范式
UI-TARS:原生代理驱动的GUI自动化交互新范式
【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS
每天面对重复的GUI操作时,开发者们不禁会想:如果电脑能像人类一样"看懂"屏幕并自主操作,那该多好。传统自动化工具依赖坐标录制或DOM解析,难以应对复杂的界面变化和跨平台场景。UI-TARS的出现,正试图用原生代理(Native Agents)技术重新定义GUI自动化的技术边界。
架构设计:从感知到执行的闭环系统
UI-TARS采用分层架构设计,将GUI交互分解为四个核心模块:感知(Perception)、动作(Action)、系统2型推理(System-2 Reasoning)和经验学习(Learning from Prior Experience)。这种设计让系统不仅能"看到"界面,还能"理解"界面,最终"操作"界面。
感知模块是系统的"眼睛",通过Element Description识别界面元素、Dense Captioning生成详细描述、Transition Captioning跟踪状态变化,以及Question Answering回答界面相关问题。Set-of-Mark技术则像人类在屏幕上做标记一样,精准定位关键交互点。
动作模块定义了统一的操作空间,支持click、type、drag等基础动作,结合标注数据集和开源数据构建多步交互轨迹。这种设计让系统能够处理复杂的操作序列,而不仅仅是单次点击。
系统2型推理是UI-TARS的"大脑",通过GUI教程增强和思维增强技术,模拟人类的分步规划过程。当面对"在Word中打开Documents/Papers文件夹下的文档并输入'Hello'"这样的复杂任务时,系统会先规划"找到Word图标→点击→导航到文件夹→打开文档→定位输入框→输入文本"的完整流程。
经验学习模块实现了在线轨迹自举和反思优化,系统在实际交互中不断学习,形成"交互→反馈→学习"的闭环。这种持续优化机制让UI-TARS能够在真实环境中越用越智能。
坐标处理:从视觉理解到物理执行的技术桥梁
GUI自动化的核心挑战之一是如何将视觉理解转化为精确的物理操作。UI-TARS通过智能坐标处理解决了这一难题。
def smart_resize(height: int, width: int, factor: int = 28, min_pixels: int = 100*28*28, max_pixels: int = 16384*28*28) -> tuple[int, int]: """ 智能缩放图像,满足三个条件: 1. 高度和宽度都能被factor整除 2. 总像素数在[min_pixels, max_pixels]范围内 3. 尽可能保持原始纵横比 """ if max(height, width) / min(height, width) > 200: raise ValueError(f"纵横比必须小于200,当前为{max(height, width) / min(height, width)}") h_bar = max(factor, round_by_factor(height, factor)) w_bar = max(factor, round_by_factor(width, factor)) if h_bar * w_bar > max_pixels: beta = math.sqrt((height * width) / max_pixels) h_bar = floor_by_factor(height / beta, factor) w_bar = floor_by_factor(width / beta, factor) elif h_bar * w_bar < min_pixels: beta = math.sqrt(min_pixels / (height * width)) h_bar = ceil_by_factor(height * beta, factor) w_bar = ceil_by_factor(width * beta, factor) return h_bar, w_bar上图展示了UI-TARS在GIMP图像编辑软件中的坐标处理过程。系统通过红色标记点精准定位"Preferences"窗口中的目标位置,这种基于绝对坐标的定位方式相比相对坐标更加鲁棒,能够适应不同分辨率和缩放比例的屏幕环境。
对于Qwen2.5VL模型输出的绝对坐标,UI-TARS采用智能缩放算法将其转换为屏幕实际坐标:
# Qwen2.5VL输出绝对坐标,需要根据缩放因子转换 if model_type == "qwen25vl": smart_resize_height, smart_resize_width = smart_resize( origin_resized_height, origin_resized_width, factor=IMAGE_FACTOR, min_pixels=MIN_PIXELS, max_pixels=MAX_PIXELS ) # 坐标归一化处理 x_normalized = float(x) / smart_resize_width y_normalized = float(y) / smart_resize_height性能表现:超越现有SOTA的实测数据
在GUI自动化领域,性能指标直接决定了技术的实用性。UI-TARS在多个标准基准测试中展现出了显著优势。
从性能对比图中可以看出,UI-TARS-72B在GUI-Odyssey任务中相比前代最佳系统提升了42.90%,在OSWorld(15步)任务中提升了33.53%。这种提升在复杂多步任务中尤为明显,证明了系统2型推理架构的有效性。
计算机使用基准测试显示,UI-TARS-1.5在OSWorld(100步)任务中达到42.5分,超越了OpenAI CUA的36.4分和Claude 3.7的28分。在Windows Agent Arena(50步)任务中,UI-TARS-1.5的42.1分大幅领先前代SOTA的29.8分。
浏览器自动化测试中,UI-TARS-1.5在Online-Mind2web任务中获得75.8分,优于OpenAI CUA的71分。在WebVoyager任务中,虽然以84.8分略低于OpenAI CUA的87分,但整体表现依然强劲。
移动设备测试方面,UI-TARS-1.5在Android World任务中取得64.2分,超越前代SOTA的59.5分,展现了跨平台适配能力。
技术实现:从模型输出到PyAutoGUI代码的转换
UI-TARS的核心技术栈包括模型推理、动作解析和代码生成三个层次。系统首先通过多模态模型理解屏幕内容和用户指令,然后解析动作指令,最后生成可执行的PyAutoGUI代码。
from ui_tars.action_parser import parse_action_to_structure_output, parsing_response_to_pyautogui_code # 模型输出示例 response = "Thought: 点击开始菜单按钮\nAction: click(start_box='(150,300)')" # 解析动作指令 parsed_dict = parse_action_to_structure_output( response, factor=1000, origin_resized_height=1080, origin_resized_width=1920, model_type="qwen25vl" ) # 生成PyAutoGUI代码 pyautogui_code = parsing_response_to_pyautogui_code( responses=parsed_dict, image_height=1080, image_width=1920 )系统支持多种动作类型,包括鼠标点击、键盘输入、拖拽操作等:
# 鼠标点击操作 if action_type in ["click", "left_single", "left_double", "right_single", "hover"]: start_box = action_inputs.get("start_box") if start_box: x1, y1, x2, y2 = eval(start_box) x = round(float((x1 + x2) / 2) * image_width, 3) y = round(float((y1 + y2) / 2) * image_height, 3) if action_type == "left_single" or action_type == "click": pyautogui_code += f"\npyautogui.click({x}, {y}, button='left')" elif action_type == "left_double": pyautogui_code += f"\npyautogui.doubleClick({x}, {y}, button='left')"提示词工程:面向不同场景的优化策略
UI-TARS提供了三种针对不同使用场景的提示词模板,确保模型能够生成最适合当前环境的动作指令。
COMPUTER_USE模板专为桌面环境设计,支持鼠标点击、键盘快捷键、文本输入等常见操作。这种模板适合浏览器导航、办公软件交互等桌面任务。
MOBILE_USE模板针对移动设备优化,包含long_press、open_app、press_home、press_back等移动端特有操作。这种模板适合应用启动、视图滚动、表单填写等移动场景。
GROUNDING模板专注于动作输出,省略推理过程,适用于模型训练和评估场景。这种轻量级模板能够快速生成动作指令,提高系统响应速度。
部署实践:从云端到本地的技术栈选择
UI-TARS支持多种部署方式,满足不同用户的需求。对于云端部署,推荐使用Hugging Face Inference Endpoints,配置GPU L40S 48G显存以获得最佳性能。
# 云端API调用示例 client = OpenAI( base_url="https://your-huggingface-endpoint", api_key="your-api-key" ) chat_completion = client.chat.completions.create( model="tgi", messages=messages, temperature=0.0, max_tokens=400 )对于本地部署,UI-TARS-desktop版本提供了完整的桌面自动化解决方案。系统采用模块化设计,各组件可以独立替换或升级,确保技术栈的灵活性。
应用场景:超越传统自动化的创新实践
游戏自动化是UI-TARS的亮点之一。在Poki游戏测试中,UI-TARS-1.5在2048、迷宫解谜等14款游戏中实现了100%的完成率,远超OpenAI CUA和Claude 3.7。这种表现证明了系统在复杂决策任务中的强大能力。
Minecraft环境测试进一步验证了UI-TARS的泛化能力。在200个挖矿任务和100个击杀怪物任务中,带思维链(Thought)的UI-TARS-1.5平均得分分别达到0.42和0.31,显著优于前代SOTA系统。
办公自动化场景中,UI-TARS能够处理"打开Word文档→编辑内容→保存文件→发送邮件"的完整工作流。系统通过多步推理和坐标精确定位,实现了接近人类的操作精度。
技术挑战与未来展望
尽管UI-TARS在GUI自动化领域取得了显著进展,但仍面临一些技术挑战。计算资源需求较高,特别是在大规模任务或长时间游戏场景中。模型偶尔会产生幻觉,在模糊或陌生环境中可能生成不准确的描述或采取次优动作。
UI-TARS-2的发布标志着技术的又一次飞跃,这个"All In One"代理模型集成了GUI、游戏、代码和工具使用能力,实现了多能力的无缝集成。未来,UI-TARS有望演进为更加复杂的代理体验,能够在真实世界中执行动作,为平台如豆包(doubao)赋能,完成更复杂的任务。
对于开发者社区而言,UI-TARS的开源特性提供了宝贵的学习资源。通过研究其架构设计和实现细节,开发者可以深入了解多模态代理、坐标处理、动作解析等核心技术,推动整个GUI自动化领域的技术进步。
UI-TARS不仅是一个工具,更是GUI自动化技术发展的里程碑。它展示了原生代理在理解、推理和操作图形界面方面的潜力,为构建更加智能、自主的人机交互系统提供了新的技术路径。
【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考