深入学习Rabbit AI的“教学模式”
昨天在CES上宣布了兔子R1,这是第一个专用的LLM代理设备。
一个展示的特点是能够“教导”Rabbit AI代替你进行操作。
今天我打算探索一下他们如何实现这个功能,然后下周,如果大家有兴趣的话,我会探索如何通过自定义的GPT将类似的功能添加到ChatGPT中。
注意:这是我的确切猜测,而不是Rabbit所采取的实际方法。这是对如何处理这个问题的一种探索,其中夹杂着我对他们实施方式的有限理解。它也忽略了在大规模运作中所需的重大工程挑战。
兔子演示
在开始之前,让我们来回顾一下兔子发布的一些演示。
两个示例都依赖于Rabbit所称的“大动作模型”(LAM),他们声称这是将用户意图翻译成行动的基础模型。¹
通过中途旅程生成一张图像
在CES宣布会上,我们看到了通过Midjourney使用实验性的“教学模式”来训练AI生成图像。
要做到这一点,用户必须:
- 访问兔子“教学模式”页面
- 输入 web 应用的 URL(https://discord.com)
- 开始会话
- 执行完成任务所需的操作(通过Midjourney生成一张图片)
- 当任务完成时,请按停止按钮。
- 注释记录的任务Rabbit以概括任务(在演示过程中只描述但未展示)。
用户完成了这些步骤后,记录的任务需要由兔子服务器进行处理,然后才能在兔子操作系统中使用。
一旦准备好,用户可以通过中旅的Rabbit设备简单地询问任何提示,生成图像。
通过AirBnB预订房间
另一个我们提供的演示位于兔子网站的研究页面上。
在这个演示中,我们看到一个用户通过AirBnB预订房间,同时显示出了Large Action Model(LAM)正在观察和执行的内容。这让我们能够从幕后了解LAM的工作。
在视频中,我们可以看到LAM执行与用户相同的操作,同时强调它已检测到用户正在与之交互的用户界面(UI)元素。
兔子LAM似乎使用分层的UI元素检测,将单个HTML控件分组为更高级的概念控件。
以下我们可以看到,当用户按下“+”图标增加成年人数量时,LAM识别到的不仅仅是红色的加号按钮本身,还突出显示了绿色的更高级别的“成年人数量”控制,其中包括了相应的减号按钮。
我们还可以在LAM图像底部看到通过用户交互检测到的高级指令的叠加显示。
用户录制会话的组合指令将形成LAM将用于执行后续操作的网络自动化脚本的基础。
在视频的下半部分,我们看到LLM执行了这个网络自动化脚本。
在执行过程中,我们看到了在录制脚本时使用的相同的控件层次检测,然后LLM使用这些控件执行指令。
如何实现兔子的“教学模式”
如果您在研究页面向下滚动,兔子团队讨论了使用原始HTML理解应用程序时遇到的困难。
同样地,他们声称“教学模式”也适用于不使用HTML的移动和桌面应用程序。
这意味着他们正在使用一种多模态模型来检测和与用户界面控件进行交互。
例如,如果我向ChatGPT提供AirBnB网站的截图,并询问我在哪里寻找要租房的城市,它会立即告诉我如何找到UI控件:
虽然在这个简单的例子中,ChatGPT在一段文本中描述了控制方式,但使用提示工程或微调都不难返回一个结构化的响应,可以转化为一条指令。
他们是否使用分层方法?
在他们的研究页面上,Rabbit提到了一篇名为"HeaP: 使用LLMs的层次化Web操作策略"的论文,该论文描述了如何将"输入一个城市"这样的高级指令与执行该指令所需的低级命令集成到Web自动化引擎中。
兔子似乎通过使用一种多模式LLM创新了这种方法,它可以直接“查看”网页上的图形元素,而不是试图从HTML中推断它们 - 但请阅读下一节,我对此是否正确表示怀疑。
使用分层方法将使他们能够创建指令列表时所需的标记比使用原始HTML少得多,并将此方法扩展到不使用HTML但其控件可视可观的桌面和移动应用程序中。
他们是否采用多模式方法?
对于HTML应用程序,它们可以创建一个多模式的LLM,通过图像和HTML片段来检测UI控件。
由于此情况发生在用户记录他们的操作时,他们可以访问用户互动信息。这很有帮助。
而不是让 LLM 来查看整个页面,他们可以将 LLM 的注意力集中在用户刚刚交互的特定元素上,例如通过突出显示该元素。
类似地,与其将整个HTML传递到网页的DOM中,他们只需传递特定元素及其周围上下文的HTML。这样解决了他们指出的问题,即大多数现代Web应用程序使用的HTML对于较小的上下文窗口来说太大了。
最终的结果将是改进的用户界面控制检测和操作。
实际上,仅仅使用基于上下文的HTML,可能就可以获得令人满意的结果,而不需要进行任何图像识别;尽管我不确定这如何在桌面或移动应用程序中实现。
他们在使用多个模型吗?
我们可以将在软件应用程序中检测和执行任务的问题分解为不同的阶段,每个阶段理论上都可以使用自己定制的模型来解决。
- UI控件检测 一种用于检测UI控件的方法。如前所述,它本身可能是分层的,例如一个加号按钮可以被识别为更广泛的“成年人数量”输入控件的一部分。
- 指令提炼:一种从一组用户界面操作中创建高级指令的方法。例如,点击“成人数量”的加号按钮三次可以被提炼为指令:“将成人数量设为【3】”。
- 任务推理 一种将指令按顺序排列并与任务目标关联起来的方法,尤其是当用户界面每次略有不同或者用户缺少某些信息时。也可以用来将指令分组为子任务。
并非所有这些模型都需要是LLMs——例如,可以通过算法来从HTML片段中进行输入控制检测。
他们是否在使用开源的网络自动化软件?
一旦他们有了脚本,当用户发出需要它的请求时,他们需要执行它。
旁注:根据我所阅读的内容,似乎他们正在使用ChatGPT作为“主”LLM,根据用户的请求来协调调用这些脚本,这本质上是GPT内部插件的概念。
流行的项目包括Playwright、Puppeteer和Cypress,它们都有可以记录您在浏览器中的操作并生成脚本供后续重放的软件包。
乍一看,将脚本记录器与LLM扩展以处理UI检测和指令抽象化似乎是工程问题而不是创新问题。
一个单独的LLM(大型动作模型)可以被训练用于为其中一种扩展的网络自动化工具生成脚本,从而使Rabbit能够通过基于云的虚拟机扩展任务运行。
这种工具还可以保存用于身份验证所需的会话 cookie 或本地存储数据,使其能够在以后作为同一用户运行脚本,而无需再次输入凭据(当然,直到会话过期为止)。
然而,似乎没有任何一个情况属实。根据他们的研究页面:
为了辅助新模型,我们从头开始设计技术栈,包括数据收集平台和利用变压器式注意力和基于图的消息传递的新网络架构,结合示范和示例指导的程序合成器。
我仍然很好奇你能从修改现有的开源项目中获得什么样的结果,特别是如果在提示LLMs之前对图像或HTML数据进行预处理以去除噪音的话。
他们如何处理缺失参数、变量和错误?
坦率地说,我不知道。他们提到了一系列不同的方法,然后谈论了他们如何创建了一个同时使用符号算法和神经网络的混合系统。这超出了我目前对人工智能的了解范围。
即使如此,在构建这样一个系统时,我可能会探索一些事项,包括:
- 子目标使用LLM确定任务的子目标,并将说明分组为支持每个子目标的子任务。例如,当预订AirBnB时,我需要:a)设置我的筛选器,b)浏览结果,c)选择一个选项,d)预订该选项。然后,每个子任务可以进一步拆分。
- 使用算法和LLM的组合,确定哪些子目标彼此存在依赖关系。例如,我需要在选择选项之前设置我的过滤器,但是我应用过滤器的顺序可能是不相关的。
- 参数分析 确定哪些输入参数是必需的,以及何时,这样LLM就可以回到用户那里获取更多信息。在兔子演示中,他们没有展示任何对话功能 - 他们提供了所有的信息。在我对自定义GPT的探索中,我发现教它们在调用插件之前要求缺失的必需参数会很有帮助。
- 使用 Web 自动化软件的断言功能来断言操作是否成功,并根据特定错误对操作 LLM 进行微调、训练,并选择相应的纠正措施,包括向用户报告相关信息。
- 完成条件类似于断言,能够从特定子目标中提取并自动定义完成条件对于允许LLM知道何时转移到下一个子目标是有用的。
我的直觉告诉我这是工程和发明的结合。兔子团队无疑对这个问题有足够强烈的感觉,他们从零开始构建了他们的系统来处理这些事情。在接下来的几个月里,当它到达消费者手中时,我们将会看到他们的表现如何。
不要相信炒作
兔子在推出他们的项目上做得非常出色。如果你阅读了关于该产品的数十篇文章,它们大部分都是重复演示中的声明。在这一部分,我想对一些这些声明提出挑战。
“无需软件”声明
在演示过程中,他们声称教授兔子不需要任何软件。
对于Web应用程序而言,从技术上讲,它们可以通过其服务器代理所有的交互,这样就可以在不破坏浏览器的安全模型的情况下,获得来回发送的HTML内容。这也会使它们能够访问会话cookie,从而在没有用户凭证的情况下以用户身份进行后续验证,这是他们声称的。
我不明白这对于桌面和移动应用程序会如何工作。然而,他们没有演示如何教兔子使用这些应用程序,所以目前尚不清楚这将如何运作。
我怀疑他们在夸大事实。使用浏览器扩展进行教学比代理请求更容易和更安全。而且自动录制或执行桌面或移动应用程序需要用户明确给予安装软件的权限。²
WIRED提供的另一种解释是,你只需将相机对准你的桌面屏幕,并以此方式进行训练。然而,在兔子训练期间,Figure只是展示了基于视频的机器人训练,用户在训练时的网页上有一个叠加的停止按钮,如果你只是单纯地录制屏幕视频,这是不可能出现的。
底线是:某些事情不合常理,但是一旦设备在三月底发货,我们就会找出答案。
“无需应用程序”的说法
许多记者采用了他们的“没有应用程序”的说法。虽然从技术上讲是真的,但我觉得这种说法有失诚信。
首先,他们正在使用应用程序,只是这些应用程序没有安装在操作系统中。它们是Web应用程序,AI需要访问并执行任务。
从他们展示的所有内容来看,这并不是一个可以自动找到要做的事情的通用人工智能。你实质上必须逐步训练它。我们似乎在这里拥有的是一个通过插件架构集成到 LLM 中的高级自动化脚本。
是的,“插件”在技术上并不属于“应用程序”,但它们非常接近。而且,仅凭他们声称的无需准备即可“要求它执行任何操作”的概念,显然是错误的。
其次,像Siri和Google助手这样的AI助手已经拥有自动化脚本,它们被称为快捷方式。
是的,它们可能不像Rabbit所演示的功能那样有能力或易教,但这与完全不存在是相去甚远的。
底线是:尽管从技术上讲是正确的,Rabbit仍然使用着类似于应用程序的架构,需要预先定义的插件。他们的最终目标可能是打造一种通用型的人工智能,可以在没有训练的情况下操作任何应用程序,但他们还没有达到那个目标。
“没有保存凭证”声明
他们声称不存储第三方凭据或保存你的用户名或密码。然而,他们必须存储某些凭据以便在以后能够访问网络应用程序。
从演示中可以看出他们可能会使用OAuth。如果是这样的话,他们需要保存一个访问令牌以便以后访问该应用程序。
许多网络应用程序不支持OAuth,那么它们如何处理保存认证信息的问题呢?如果它们代理请求,那么可以存储从服务器返回的会话令牌。但是再次提醒,这是存储一种凭据形式。
无论如何,他们都会存储一些凭据,以便稍后使用自动脚本来访问该服务。无论是访问令牌还是会话令牌,它们的安全存储都至关重要,即使相对于用户名和密码来说,它们可以更轻松地过期。
底线是,他们似乎在使用一个狭义的“凭证”定义,来掩盖他们存储的可能被黑客或滥用的身份验证信息这一事实。
最终想法
总的来说,我对Rabbit印象深刻。他们将许多现有技术有机地结合在一起,呈现出一个设计精良的综合解决方案,并且在一些网络自动化的关键领域上进行了创新。
同时,ChatGPT所展现的延迟令人印象深刻。消除延迟将极大地减少我为《AI改变工作效率》播客进行编辑的时间。尽管我想知道规模扩大后的真实世界延迟会是多少。
我的印象是这款产品为了CES匆忙推出,到三月底发货时可能仍然存在很多问题。
我也不预见这会成为主流产品。很少有人愿意随身携带多个设备,而硬件方面也没有任何特别之处。iPhone 15 Pro 用户已经可以用 ChatGPT 替换 Siri,只需一键即可访问,而 GPT 的插件能力和 GPT 商店将很快超过 Rabbit 今天展示的创新水平。
依然,看到这一切的发展是多么迅速,以及意外事件的频繁发生,真是令人感兴趣。我完全没想到CES会宣布像兔子这样专用的人工智能设备。
如果你觉得这篇文章有趣,请鼓掌。如果你希望我深入介绍如何将类似的“教学”功能添加到ChatGPT中,请在下方留言。
尚不清楚兔子的大型语言模型是一个真正的通用基础模型还是一种特定任务的模型,以及它到底有多“大”。他们似乎没有筹集足够的资金来训练一个基础LLM。然而,为了本文的目的,我将使用他们的术语。
² 从技术角度上讲,用户可以为浏览器应用程序授予记录脚本的权限,但我不知道如何在桌面操作系统上执行这些脚本。
后记:我最近的合同刚刚结束,我正在探索人工智能领域的选择。我对研究新的用户界面(UI/UX)对应用于LLMs(法学硕士学位)非常感兴趣。我已经列出了一些潜在的新应用,并且对系统性的人工智能对齐(即当“对齐”的人工智能系统共同工作并/或融入关键基础设施时如何防止出现问题)也很感兴趣。如果您对这方面有讨论的机会,请与我联系。