UI-TARS项目解析:将视觉语言模型指令转换为自动化GUI操作
2025-07-07 06:00:53作者:曹令琨Iris
项目概述
UI-TARS是一个创新的Python工具包,专门设计用于解析视觉语言模型(VLM)生成的图形用户界面(GUI)操作指令,并将其转换为可执行的pyautogui自动化脚本。该项目在自动化测试、RPA(机器人流程自动化)和智能助手等领域具有广泛的应用前景。
核心功能
- 多模型支持:适配多种主流视觉语言模型的输出格式,包括但不限于Qwen-VL、Seed-VL等
- 智能坐标转换:自动处理不同分辨率下的坐标缩放问题
- 一键生成脚本:将自然语言指令直接转换为可执行的自动化脚本
- 可视化调试:支持在原始图像上标记操作点,便于验证和调试
技术原理
UI-TARS的工作原理可以分为三个关键步骤:
- 指令解析:将VLM输出的自然语言指令解析为结构化数据
- 坐标转换:根据原始图像分辨率对坐标进行归一化处理
- 脚本生成:将结构化操作转换为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脚本字符串。
实际应用场景
- 自动化测试:根据测试用例自动生成GUI测试脚本
- RPA流程:将自然语言描述的流程转换为自动化操作
- 智能助手:实现基于视觉的智能操作指导系统
- 无障碍辅助:帮助视障用户操作图形界面
最佳实践建议
- 分辨率适配:确保解析时提供的图像尺寸与实际屏幕尺寸一致
- 模型选择:根据VLM的输出格式选择合适的model_type参数
- 调试技巧:先可视化验证坐标点位置,再执行自动化脚本
- 性能优化:对于复杂操作,考虑分批解析和执行
总结
UI-TARS项目为连接视觉语言模型与实际GUI自动化操作提供了高效便捷的解决方案。通过简单的API调用,开发者可以快速将VLM的理解能力转化为实际的自动化操作,大大降低了智能自动化系统的开发门槛。该项目在保持易用性的同时,也提供了足够的灵活性来适应不同的应用场景和模型输出格式。