就在昨天,字节跳动开源了 UI-TARS 模型。
UI-TARS 是一种原生图像界面代理(Native GUI Agent)模型,能够将屏幕截图和自然语言指令作为输入,准确预测出完成指令的下一步操作,帮助用户操作 UI 界面。UI-TARS 的名字来源于电影星际穿越电影的 TARS 机器人[1],预示着它具备高度的智能和自主思考能力。
许多开发者可能还记得,Web Infra 团队在 2024 年开源了 Midscene.js 框架,它支持接入 GPT-4o 等大参数模型,提供了网页自动化操作及测试的能力。
现在我们可以高兴地宣布:Midscene.js 与 UI-TARS 强强联合,已经完成了接入工作!随着新模型的引入,Midscene 的各方面能力都得到了显著增强:支持目标驱动、兼容画布操作、允许私有化部署、执行效率跃升等等,开发者将能明显感受到其中的变化。
这里展示一些 Midscene.js 接入 UI-TARS 模型后的 Show Case,开发者也可以在自己的本地环境中完整复现。
案例一: 一条指令完成 Twitter 发布
案例二:用 JS 代码驱动编排任务,搜集周杰伦演唱会的信息,并写入 Google Docs
下面我们将为大家展开讲解:
OpenAI 在 2023 年 9 月份推出了 GPT 4V、2024 年 5 月份推出了 GPT 4o。通用大语言模型的能力不再局限于文本,在图片理解、音频理解等领域表现的越来越出色,用多模态大模型来执行 UI 自动化也变得可行。用自然语言维护自动化脚本的方式将极大提升测试用例的可维护性和编写体验。
由此,我们开始了 Midscene.js 项目的建设和开源 ( https://github.com/web-infra-dev/midscene )。Midscene.js 项目提供了几个核心 API:
同时,Midscene.js 还发布了浏览器插件供开发者进行零代码体验:https://midscenejs.com/zh/quick-experience.html
在迭代了几个月之后,我们发现虽然通用大模型可以完成常见任务,但它也存在一些显著的瓶颈。
为了执行用户指令,我们需要提取特定元素的坐标信息。然而,通用大模型通常缺乏这种精确的数值理解能力。
因此,Midscene 采用了 Javascript 工程技术,将元素的坐标和类型进行提取。此外,我们还对提取出的元素信息进行截图标注。之后,标注后的图像与元素描述一同发送给大模型,由大模型返回期望操作的元素 ID。这种方法有效地规避了数值理解的问题,从而实现了精准的 UI 操作。
但是,这种方法显然并不完美。例如,一些 CSS 属性可能无法准确地描述元素的层级。此外,Canvas 场景也无法进行详细的提取。
样例:标注图与元素信息
如上文所述,我们需要同时发送图片信息与元素描述,造成模型调用的过程需要消耗大量 token,这对接口性能、AI 服务费用都造成了明显的不利影响。
为了确保效果的稳定性,开发者一般需要在 Midscene.js 中连接商业大模型服务。这对于许多业务来说是一个障碍,因为他们常常无法将内部系统和后台数据对外发送,从而无法使用 UI 自动化服务。
通用大模型在处理目标驱动场景时,其理解力往往不佳。为了解决这一问题,我们通常需要开发者提供详细的自然语言说明操作步骤(即以步骤为驱动),然而,这也相应地增加了开发者的负担。
例如,使用“点一杯无糖奶茶”这样的指令,相比更为详细的语言描述:“点开茉莉奶茶,点击无糖,向下滑动,点击加入购物车...”,大模型在后者的稳定性上表现更好。
在上文中,我们提到了传统大模型直接应用在 GUI agent 上的诸多问题,那么有没有更漂亮的解法呢?有,那就是 UI-TARS!
UI-TARS 基于通用多模态语言模型,面向智能 UI 交互领域做了定向的训练,它在 GUI agent 领域能发挥的表现要远好于其他通用模型或 GUI 模型。
图片来自:UI-TARS: Pioneering Automated GUI Interaction with Native Agents - Figure 2
UI-TARS 模型将人类指令、屏幕截图、之前的 Action 作为自注意力机制的一部分,让模型能够充分的感知到:人类目标指令、为完成人类指令的过程中已经执行了哪些事件、当前的屏幕状态,从而更好的推理出下一步的执行事件。
UI-TARS 核心能力中包括了四个核心部分,用于提升 GUI 任务规划过程中的准确性:
图片来自:UI-TARS: Pioneering Automated GUI Interaction with Native Agents - Figure 4
UI-TARS 模型帮助 Midscene.js 实现了一些架构级的提升:
UI-TARS 模型并不完美,它也存在局限性。当前,UI-TARS 在 GUI 任务中尚无法实现百分之百的执行正确率。当任务步骤超过 12 个时,模型容易产生误判。此外,模型在识别关键性决策和将控制权交还给人类时,能力设计仍显不足。这些问题有待 UI-TARS 在后续新版本发布中逐步解决。
完整的配置讲解:https://midscenejs.com/zh/choose-a-model
使用 Midscene + UI-TARS 模型你需要进行以下的准备工作:
MIDSCENE_USE_VLM_UI_TARS=1
OPENAI_BASE_URL='' #配置为使用你部署或者临时体验的推理服务
OPENAI_API_KEY='' # 配置对应推理服务的密钥
MIDSCENE_USE_VLM_UI_TARS=1 # 使用 UI-TARS 模型
如果你希望完成更复杂和自动化的任务,可以使用 Midscene 提供的 YAML 脚本和 JavaScript SDK。这种方式可以很好地解决当 UI-TARS 模型在执行繁琐任务时,因步骤过多而导致的性能和稳定性下降问题。此外,通过 Midscene 提供的独特报告设计,您能轻松完成对 AI 执行过程的调试工作。
这个答案在 UI-TARS 的探索上已经得到了回答:可以不需要。
通过提供更小参数规模、将通用模型转变为专业模型,这种设计不仅提升了任务的准确性,还显著提高了速度。在设备网络通信损耗可忽略,并且算力充足的情况下,UI-TARS 模型在常规的 Web 页面或桌面应用中推理速度可以在 0.5s~2s 内完成。这一速度基本与人类速度相当,更不必说在某些对于延迟要求更低的场景下(如自动化测试),这个速度已经完成可以接受了。
这更类似于一个交互的问题,而不是一个纯粹的技术问题。在某些任务中,我们可能无需让 AI 100% 取代人类的决策和执行过程,而应在关键决策时让人类参与其中。
例如,在商品购物过程中,AI 可以负责商品规格的筛选,但在最终支付确认阶段,需要人类介入。一个专业术语称其为 Human in Loop,即让人类扮演副驾驶员的角色,同时具备随时接管成为主驾驶的权限。
TARS 机器人: https://baike.baidu.com/item/TARS/16169925
[2]Midscene Chrome 插件: https://chromewebstore.google.com/detail/midscenejs/gbldofcpkknbggpkmbdaefngejllnief?hl=zh-CN&utm_source=ext_sidebar