先阅读第一部分有助于理解后续数据的背景信息。
这是一系列的文档内容。在第一部分中,我们大致了解了 UI-Tars 大语言模型是什么以及 Midscene 是如何对其进行统筹安排的。在本文中,我主要想通过使用 Midscene,更深入地比较 UI-Tars 和 GPT-4o 在人工智能驱动的自动化测试方面的表现,找出它们之间的差异以及优缺点。
自 2025 年 2 月起,Midscene 默认支持 GPT-4o、通义千问 2.5VL(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 | |
---|---|---|
return_format |
Json_Object | Plain text(但为 Json 字符串) |
Steps |
1 | 1 |
duration |
3.09s | 2.27s 👍 |
cost |
0.0035775\$ | 0.0011$ 👍 |
token |
1390 | 2924 |
temperature |
0.1 | 0 |
Message |
浏览器截图、指令 | 浏览器截图、指令 |
result |
{"pass":true, "thought":"截图清晰显示了一个带有国家列表的国家选择弹窗,确认了该断言。" } |
{ "pass": true, "thought": "屏幕上可见国家选择弹窗,由标题‘你住在哪里?’以及带有各自国旗的国家列表可以表明。" } |
1.2 步骤 2 - 简单操作步骤
Select France as the country that I'm living
指标 | GPT-4o | UI-Tars:7B |
---|---|---|
return_format |
Json_Object | Plain text(格式化) |
Steps |
1 | 2 |
duration |
3.22s 👍 | 4.54s(2.54s + 1.99s) |
cost |
0.0109475\$ | 0.0023$ 👍 |
token |
4184 | 14987(5110 + 9877) |
temperature |
0.1 | 0 |
Message |
截图、指令、部分 HTML 树 | 截图、指令 |
result |
{ "actions":[ { "thought":"..", "type":"Tap", "param":null, "locate":{ "id":"cngod", "prompt":"..." } } ], "finish":true, "log":"...", "error":null } | 迭代了 2 个步骤,每次返回 思路:.... 动作:\<点击 |
为了在国家选择弹窗中点击 “法国”,由于 GPT-4o 在一次回复中就返回了动作和完成状态,所以只需要调用一次大语言模型。但 UI-Tars 根据其推理需要调用两次大语言模型,第一次调用返回动作,然后在动作执行后,第二次调用大语言模型会再次发送截图,以检查 “用户指令” 是否已完成。
1.3 步骤 3 - 复杂操作步骤
Click Search bar, then Search 'Chanel', and press the Enter
GPT-4o | UI-Tars:7B | |
---|---|---|
return_format |
Json_Object | Plain text(格式化) |
Steps |
1 | 4 |
duration |
3.52s 👍 | 12.16s(4+2.77+2.36+3.03) |
cost |
0.01268\$ | 0.00608$ 👍 |
token |
4646 | 49123 |
temperature |
0.1 | 0 |
Message |
截图、指令、部分 HTML 树 | 截图、指令 |
result |
在一次回复中返回 3 个动作 { "actions":[ {...}, {...} ], "finish":true, "log":"...", "error":null } | 迭代了 4 个步骤,每次返回 思路:.... 动作:\<点击 |
对于两者来说,这个步骤都有点复杂,但它们都能处理,不过存在很大差异。GPT-4o 的结果中没有推理过程,它在动作开始前就生成了 3 个动作并将完成状态标记为 “真”…… 然而,相对来说 UI-Tars 比较慢,因为它的推理过程是先执行一个动作,然后对其进行反馈,再决定下一个动作,总共它也生成了 3 个动作,另外还在最后进行了一次检查,以根据给定的 “用户指令” 验证当前阶段是否符合用户期望。
1.4 步骤 4 - 滚动至不可预测位置
Scroll down to the 1st product
指标 | GPT-4o | UI-Tars:7B |
---|---|---|
return_format |
Json_Object | Plain text(格式化) |
Steps |
2 | 2 |
duration |
7.58s(3.01+4.57) | 5.47s 👍(3.18+2.29) |
cost |
0.01268\$ | 0.002735$ 👍 |
token |
12557 | 14994 |
temperature |
0.1 | 0 |
result |
{ "actions":[ {...} ], "finish":true, "log":"...", "error":null } | 迭代了 4 个步骤,每次返回 思路:.... 动作:\<点击 |
哇!由于在使用 GPT-4o 时没有推理过程,要滚动到一个未知位置需要调用两次 GPT-4o,第一次调用生成一个滚动动作,第二次调用检查截图后决定不再需要滚动。
但是使用 UI-Tars 时,它就像正常操作一样,第一次调用决定动作,第二次调用在浏览器动作执行后从新的截图中再次进行验证。
1.5 视觉能力对比
UI-Tars 和 GPT-4o 都有各自的视觉能力。
GPT-4o | UI-Tars:7B | |
---|---|---|
Vision | ![]() |
![]() |
对于一些小的或重叠的元素,GPT-4o 无法识别它们,而 UI-Tars:7B 几乎可以完全识别。遗憾的是,GPT-4o 甚至无法识别顶部横幅中的 “登录” 按钮。
2. 总结
2.1 处理复杂情况的能力
GPT-4o: 因为没有推理过程或没有系统 2 推理,GPT-4o 可以处理一些简单直接的测试步骤,但对于一些非常笼统的步骤,比如 “我登录”,它基本上根本无法处理这种情况。
UI-Tars:7B: 因为它有推理能力,它最多可以支持 15 个步骤,即 14 个动作 + 1 次最终检查,这是它推理能力的上限。
2.2 速度
在大多数情况下,与使用 GPT-4o 相比,如果你使用 UI-Tars,调用大语言模型的次数必须翻倍,因为 UI-Tars 需要对每个 “用户指令” 进行最终检查。
但 GPT-4o 在大多数情况下在生成动作后不需要对 “用户指令” 进行验证。
所以 GPT-4o 速度更快,但对于测试结果来说可能存在风险。
2.3 可信度水平
UI-Tars 总是会检查之前规划的动作是否达到了 “用户指令” 的要求,所以 UI-Tars 用时间换取了准确性,UI-Tars 只有在动作执行后再次检查截图时才会将完成状态标记为 “真”,但 GPT-4o 甚至在生成的动作执行之前就直接返回完成状态为 “真”……
2.4 对图形用户界面(GUI)元素的感知
从 1.4 部分我们可以清楚地看到,UI-Tars 甚至可以识别页面上的小元素和重叠元素,但 GPT-4o 却做不到。
2.5 大语言模型的额外输入
UI-Tars 仅根据截图(模拟人类视觉)做出决策,但 GPT-4o 需要构建部分 HTML 树,由于 HTML 代码规模的增加,这可能会降低 GPT-4o 的运行速度。
2.6 成本
如果我们将 UI-Tars 部署到我们自己的基础设施上,那么为了达到与 GPT-4o 相同甚至更好的结果,你可以节省 50% - 75% 的成本。
3. 结论
总的来说,如果我们计划在日常实际工作中应用人工智能,我认为在上述情况下 UI-Tars 比 GPT-4o 能做得更好。
然而,如何加快 UI-Tars 的推理速度,将是在不久的将来面临的挑战之一。