首页
/ UI-TARS项目解析:将视觉语言模型指令转换为自动化GUI操作

UI-TARS项目解析:将视觉语言模型指令转换为自动化GUI操作

2025-07-07 06:00:53作者:曹令琨Iris

项目概述

UI-TARS是一个创新的Python工具包,专门设计用于解析视觉语言模型(VLM)生成的图形用户界面(GUI)操作指令,并将其转换为可执行的pyautogui自动化脚本。该项目在自动化测试、RPA(机器人流程自动化)和智能助手等领域具有广泛的应用前景。

核心功能

  1. 多模型支持:适配多种主流视觉语言模型的输出格式,包括但不限于Qwen-VL、Seed-VL等
  2. 智能坐标转换:自动处理不同分辨率下的坐标缩放问题
  3. 一键生成脚本:将自然语言指令直接转换为可执行的自动化脚本
  4. 可视化调试:支持在原始图像上标记操作点,便于验证和调试

技术原理

UI-TARS的工作原理可以分为三个关键步骤:

  1. 指令解析:将VLM输出的自然语言指令解析为结构化数据
  2. 坐标转换:根据原始图像分辨率对坐标进行归一化处理
  3. 脚本生成:将结构化操作转换为pyautogui可执行的Python代码

快速入门指南

安装方法

pip install ui-tars
# 或者使用uv pip
uv pip install ui-tars

基础使用示例

from ui_tars.action_parser import parse_action_to_structure_output, parsing_response_to_pyautogui_code

# 示例VLM输出
response = "Thought: 点击按钮\nAction: click(point='<point>200 300</point>')"
original_image_width, original_image_height = 1920, 1080

# 解析为结构化数据
parsed_dict = parse_action_to_structure_output(
    response,
    factor=1000,
    origin_resized_height=original_image_height,
    origin_resized_width=original_image_width,
    model_type="doubao"
)

# 生成pyautogui脚本
pyautogui_code = parsing_response_to_pyautogui_code(
    parsed_dict, 
    original_image_height, 
    original_image_width
)
print(pyautogui_code)

操作可视化

from PIL import Image, ImageDraw
import matplotlib.pyplot as plt

image = Image.open("example.png")
draw = ImageDraw.Draw(image)

# 获取解析后的坐标
start_box = parsed_dict[0]["action_inputs"]["start_box"]
x, y = eval(start_box)[:2]  # 获取前两个坐标值

# 转换为实际像素坐标
x_pixel = int(x * original_image_width)
y_pixel = int(y * original_image_height)

# 在图像上标记操作点
radius = 10
draw.ellipse(
    (x_pixel - radius, y_pixel - radius, 
     x_pixel + radius, y_pixel + radius),
    fill="red", outline="red"
)

plt.imshow(image)
plt.axis("off")
plt.show()

核心API详解

parse_action_to_structure_output 函数

功能: 将VLM输出的自然语言指令解析为结构化字典,自动处理坐标缩放和格式转换。

参数说明

  • text: VLM输出的原始文本
  • factor: 坐标缩放因子
  • origin_resized_height/width: 原始图像的高度和宽度
  • model_type: 使用的VLM模型类型
  • max_pixels/min_pixels: 图像像素的上下限阈值

返回值: 包含结构化操作的列表,每个操作包含以下字段:

  • action_type: 操作类型(click, type等)
  • action_inputs: 操作参数(坐标、文本等)
  • thought: 操作对应的思考过程

parsing_response_to_pyautogui_code 函数

功能: 将结构化操作转换为可执行的pyautogui脚本。

参数说明

  • responses: 结构化操作字典或列表
  • image_height/width: 图像的实际高度和宽度
  • input_swap: 是否使用剪贴板实现文本输入(避免直接键盘输入)

返回值: 可直接执行的pyautogui脚本字符串。

实际应用场景

  1. 自动化测试:根据测试用例自动生成GUI测试脚本
  2. RPA流程:将自然语言描述的流程转换为自动化操作
  3. 智能助手:实现基于视觉的智能操作指导系统
  4. 无障碍辅助:帮助视障用户操作图形界面

最佳实践建议

  1. 分辨率适配:确保解析时提供的图像尺寸与实际屏幕尺寸一致
  2. 模型选择:根据VLM的输出格式选择合适的model_type参数
  3. 调试技巧:先可视化验证坐标点位置,再执行自动化脚本
  4. 性能优化:对于复杂操作,考虑分批解析和执行

总结

UI-TARS项目为连接视觉语言模型与实际GUI自动化操作提供了高效便捷的解决方案。通过简单的API调用,开发者可以快速将VLM的理解能力转化为实际的自动化操作,大大降低了智能自动化系统的开发门槛。该项目在保持易用性的同时,也提供了足够的灵活性来适应不同的应用场景和模型输出格式。