系列文档:UI-Tars LLM 与 GPT-4o 在 AI 自动化测试中的比较
在第 1 部分中,我们大致了解了 UI-Tars LLM 是什么以及 Midscene 如何对其进行编排。在本文中,我主要想通过使用 Midscene 来比较 UI-Tars 和 GPT-4o 在 AI 驱动的自动化测试中的表现,以识别它们之间的差异、优缺点。
自 2025 年 2 月以来,Midscene 默认支持 gpt-4o、qwen-2.5VL 和 ui-tars。
1. 比较 GPT-4o 和 UI-Tars 在相同测试用例下的结果
我们将分析和比较不同类型的测试步骤。
1.1 步骤 1 - AI 断言
await aiWaitFor('The country selection popup is visible')
GPT-4o | UI-Tars:7B | |
---|---|---|
返回格式 | Json_Object | Plain text, but Json String |
步骤数 | 1 | 1 |
时长 | 3.09s | 2.27s 👍 |
成本 | 0.0035775\$ | 0.0011\$ 👍 |
token | 1390 | 2924 |
温度 | 0.1 | 0 |
消息 | Browser Screenshot, Instructions | Browser Screenshot, Instructions |
结果 | {"pass":true, "thought":"The screenshot clearly shows a country selection popup with a list of countries, confirming the assertion." } | { "pass": true, "thought": "The country selection popup is visible on the screen, as indicated by the title 'Where do you live?' and the list of countries with their respective flags." } |
1.2 步骤 2 - 简单操作步骤
Select France as the country that I'm living
GPT-4o | UI-Tars:7B | |
---|---|---|
返回格式 | JsonObject | Plain text, formated |
步骤数 | 1 | 2 |
时长 | 3.22s 👍 | 4.54s(2.54s + 1.99) |
成本 | 0.0109475\$ | 0.0023\$ 👍 |
token | 4184 | 14987(5110 + 9877) |
温度 | 0.1 | 0 |
消息 | 截图、指令、部分 HTML 树 | 截图、指令 |
结果 | { "actions":[ { "thought":"..", "type":"Tap", "param":null, "locate":{ "id":"cngod", "prompt":"..." } } ], "finish":true, "log":"...", "error":null } | 迭代 2 步,每次返回 Thought:.... Action: \<click> |
要点击国家弹窗中的“法国”,GPT-4o 仅需 1 次 LLM 调用,因为 GPT-4o 能够在一个回复中返回操作和完成状态。然而,UI-Tars 需要 2 次 LLM 调用,基于其推理过程,第一次调用返回操作,然后在执行操作后,第二次 LLM 调用会再次发送截图,以检查“用户指令”是否已完成
1.3 步骤 - 复杂步骤
Click Search bar, then Search 'Chanel', and press the Enter
GPT-4o | UI-Tars:7B | |
---|---|---|
返回格式 | JsonObject | 平文本,格式化 |
步骤数 | 1 | 4 |
时长 | 3.52s 👍 | 12.16s (4+2.77+2.36+3.03) |
成本 | 0.01268\$ | 0.00608\$ 👍 |
token | 4646 | 49123 |
温度 | 0.1 | 0 |
消息 | 截图、指令、部分 HTML 树 | 截图、指令 |
结果 | 返回 3 个操作在一个回复中 { "actions":[ {...}, {...} ], "finish":true, "log":"...", "error":null } | 迭代 4 步,每次返回 Thought:.... Action: \<click> |
对于这个步骤,两者都能处理,但有很大差异。GPT-4o 的结果中没有推理,它生成了 3 个操作,并在操作开始前将 finish 标记为 true... 然而 UI-Tars 相对较慢,因为其推理 - 它执行一个操作,然后反思,然后决定下一个操作,总共也生成了 3 个操作,加上一个检查以验证当前阶段是否符合用户的期望,基于给定的“用户指令”。
1.4 步骤 - 滚动到不可预测的位置
Scroll down to the 1st product
GPT-4o | UI-Tars:7B | |
---|---|---|
返回格式 | JsonObject | 平文本,格式化 |
步骤数 | 2 | 2 |
时长 | 7.58 (3.01+4.57) | 5.47s (3.18+2.29) 👍 |
成本 | 0.01268\$ | 0.002735\$ 👍 |
token | 12557 | 14994 |
温度 | 0.1 | 0 |
消息 | 截图、指令、部分 HTML 树 | 截图、指令 |
结果 | { "actions":[ {...} ], "finish":true, "log":"...", "error":null } | 迭代 4 步,每次返回 Thought:.... Action: \<click> |
哇!由于 GPT-4o 使用中没有推理,要滚动到未知位置需要 2 次 GPT-4o 调用,第一次调用生成滚动操作,第二次调用检查截图并决定是否需要继续滚动。但使用 UI-Tars 时,它表现正常,第一次调用做出操作决策,第二次调用再次验证浏览器操作执行后的新截图。
1.5 “视觉”比较
UI-Tars 和 GPT-4o 都有自己的视觉。
GPT-4o | UI-Tars:7B | |
---|---|---|
视觉 | ![]() |
![]() |
对于一些小的或重叠的元素,GPT-4o 无法识别,而 UI-Tars:7B 可以实现几乎完全的识别。不幸的是,GPT-4o 甚至无法识别顶部横幅中的“登录”按钮。
2. 总结
2.1 处理复杂情况的能力
- GPT-4o:由于没有推理或没有系统 2 推理,GPT-4o 可以处理一些直接的测试步骤,但对于一些非常一般的步骤,如“我登录”,它基本上无法处理这种情况。
- UI-Tars:7B:由于其具有推理能力,它可以支持多达 15 个步骤,即 14 个操作 + 1 个最终检查,这是其推理的上限。
2.2 速度
在大多数情况下,使用 UI-Tars 需要的 LLM 调用次数是 GPT-4o 的两倍,因为 UI-Tars 需要对每个“用户指令”进行最终检查。 但 GPT-4o 在大多数情况下不需要在生成操作后验证“用户指令”。 所以 GPT-4o 更快,但测试结果可能更危险。
2.3 信任度
UI-Tars 总是检查之前计划的操作是否实现了“用户指令”,所以 UI-Tars 用时间换取了准确性,UI-Tars 只有在执行操作后再次检查截图时才将 finish 标记为 true,但 GPT-4o 即使在生成的操作执行之前也会直接返回 finish\=true...
2.4 对 GUI 元素的感知
从第 1.4 节可以看出,UI-Tars 甚至可以识别页面上的小元素和重叠元素,但 GPT-4o 在这方面失败了。
2.5 LLM 的额外输入
UI-Tars 仅根据截图做出决策(模仿人类视觉),但 GPT-4o 需要构建部分 HTML 树,这可能会因 HTML 代码的大小增加而减慢 GPT-4o 的速度。
2.6 成本
如果我们把 UI-Tars 部署到我们自己的基础设施上,那么为了实现与 GPT-4o 相同甚至更好的结果,你可以节省 50% - 75% 的成本。
3. 结论
总体而言,如果我们计划在日常工作中应用 AI,我相信 UI-Tars 在上述上下文中可以比 GPT-4o 做得更好。 然而,如何加快 UI-Tars 的推理速度,将是近期面临的一个挑战。