原文:
towardsdatascience.com/claudes-computer-use-intuitively-and-exhaustively-explained-5ceca60a9da8
昨天(在撰写本文时),Anthropic 发布了他们新计算机使用功能的演示。现在,Anthropic 的旗舰 LLM Claude 可以用来在您的计算机上执行操作。
我给订阅者发送了一封快速电子邮件,关于这是如何工作的,但我还想花更多时间深入探讨。在这个过程中,我们将涵盖以下内容:
-
为什么这很重要
-
演示的分解
-
克劳德的计算机交互(可能)是如何工作的,分为两部分:代理和多模态交互。
这对谁有用? 任何对理解新而有趣的 AI 驱动工具感兴趣的人。
这篇文章有多高级? 本文包含对高级和相关 AI 概念的入门级描述。
先决条件: 无。
免责声明: 在撰写本文时,我以任何方式与 Anthropic 无关。所有观点都是我自己的,且未受赞助。
这是什么大新闻?
互联网上关于这个演示的热潮:
我明白为什么。我认为这个演示在 AI 行业引起了两大共鸣:
-
Anthropic 与 OpenAI 已经竞争了一段时间。看到 Anthropic 推出如此成熟和创新的演示,感觉像是期待已久的 AI 力量平衡转变的延续。
-
在过去几个月中,AI 的炒作已经降温。我们已从 AGI 即将到来的高潮中回落,公众开始看到 AI 创新的现实:令人惊叹但并不完美。聊天应用和图像生成很酷,但人们需要更强大的工具。这似乎是朝着这个方向迈出的一步。
这个演示的承诺是一个可以根据您的自然语言提示在您的计算机上自动执行复杂操作的系统。
-
“请将这些文件从这里移动到那里”
-
“你能修改这个组件,使其在我的 React 项目中工作,并展示结果吗?”
-
“我不太懂 Blender,但我想修改我的场景以获得更好的照明设置”
-
“你能在我 MS Word 文档中创建一个分割列布局吗?”
与在提示中花费大量时间总结你正在做什么,以便语言模型能够理解正在发生的事情相比,它可以直接跳入你的实际计算机并在你的系统中进行更改。
因此,承诺很酷。让我们更仔细地看看这个演示,然后讨论一些可能隐藏在幕后使整个活动发生的可能技术。
演示
首先,在第 12 秒,我们看到这个:
使用受控环境进行这类演示很常见,我喜欢他们明确地这样做。将一个完整的产品和演示区分开来有很大的不同。产品需要时间和重大投资,因此缓慢推出并获取大量反馈是一个好主意。我们所看到的是实现愿景的开始。
在这个阶段,它仍然是实验性的——有时笨拙且容易出错。我们提前发布计算机使用功能以获取开发者的反馈,并期望该功能能够随着时间的推移迅速改进。来源
在演示本身中,目标是制作一个有趣的 90 年代主题网站,就像这样:
在演示中制作的最终网站。2:46 来源。
重要的是要注意,这个网站是用一个 HTML 页面创建的,比大多数现代网站都要简单得多。我想,这个项目存在于一个页面上,使得 LLM 理解和在这个项目中工作要容易得多。
为了启动这个项目,我们让电脑上的 Claude 导航到 claude.ai,并要求浏览器中的 Claude 创建我们的网站。
如果你没有一些 AI 的实际经验,这将是荒谬的。我们使用控制我们计算机的 AI 模型在浏览器中打开一个 AI 模型,然后我们要求 AI 模型要求另一个 AI 模型为我们制作网站。
我们稍后会深入探讨这个问题,但运行在计算机上的 AI 模型很可能是抽象成所谓的“代理”。本质上,控制我们计算机的 Claude 负责很多事情,因此为处理“制作一个 90 年代主题的 HTML 网站”这样的简单原子任务而打开一个不同的 Claude 实例是有意义的。你可能会要求你电脑上的 Claude 直接制作网站,但使用一个专注于当前任务且不受干扰的 Claude 实例有一些方法上的合理性。
网站实际上是通过以下步骤创建的:
-
Claude 首先构建了一个计划
-
Claude 截取了桌面的屏幕截图
-
Claude 找到了 Chrome,将光标移动到它上面,然后点击。
现在 Chrome 已经打开,它然后将光标移动到搜索栏,点击搜索栏,然后搜索 claude.ai。
等等。你明白了。运行在电脑上的 Claude 最终请求运行在浏览器中的 Claude 为我们制作网站。
在生成 HTML 并因此完成第一个任务之后,用户让 Claude 在 VS Code 中打开那段代码并在自己的电脑上本地运行。在 Claude 下载代码并在 VS Code 中打开后,用户让 Claude 在终端中运行网站,它尝试这样做,但在遇到错误之前失败了:一个相当常见的问题,命令python在这个电脑上无法工作。Claude 看到这个错误并尝试使用python3,然后网站成功运行。
这个演示探索了更多克服障碍和执行需要了解操作系统一般知识的动作的例子,这相当不错。
让我们谈谈是什么让这一切工作。Claude 的工作中有两个关键概念,我们将分别探讨:代理和多模态。
工作原理 – 代理
在 Claude 的计算机使用系统中最基本的概念是“代理”。代理的一般想法是允许语言模型将任务分解成步骤,然后在一段时间内执行这些步骤。这通常是通过将 LLM 包裹在一些预定义的逻辑结构中,然后使用提示技术来引导 LLM 遵循该结构来完成的。
例如,看起来 Claude 正在使用类似于 ReAct 风格的代理。ReAct 代理框架,我在我的关于代理的文章中深入探讨,旨在引导模型首先思考它应该做什么,然后根据那个计划采取行动,然后观察那些行动的结果。它通过循环这样做,直到得出最终输出。
一个 ReAct 风格代理处理问题的示例。来自ReAct 论文。这个特定的代理有两个可以使用的工具,“搜索”,用于搜索 Bing,“完成”,从代理返回最终答案。
看起来 Anthropic 的团队创建了一个可以执行诸如将光标导航到屏幕的某个部分、点击事物和截图等操作的应用程序,然后将这些定义为 LLM 可以在 ReAct 风格代理中调用的显式工具。
如果我们再次查看视频,我们会注意到一些有点奇怪的事情。
在调用命令python -m http.server 8000之后,模型创建了一个观察结果,表明发现了错误。模型是如何意识到这个错误的并不完全明显。除非他们使用了魔法,我怀疑有两种可能:
-
运行代理的应用程序在执行操作后使用截图作为反馈,并将有关这些截图的信息提供给语言模型,而不必打扰用户界面,以免信息杂乱。
-
可能运行 Claude 的应用程序不仅能够查看截图,还可以观察某些应用程序的数据。
根据这些引言,我认为第一个选项更有可能:
我们不是制作特定的工具来帮助 Claude 完成单个任务,而是在教它通用的计算机技能 - 允许它使用为人类设计的广泛的标准工具和软件程序。 - 来源
在OSWorld上,该网站评估 AI 模型像人类一样使用计算机的能力,Claude 3.5 Sonnet 在仅截图的类别中得分 14.9% - 来源
ReAct 风格的代理系统可能存在令人惊讶的限制。一个 LLM 可能通过文本描述隐式地理解某些工具,从而实现简单的集成。一个用于点击的工具可能被描述为“如果你想点击屏幕上的某个东西,告诉我,我会帮你点击”。其他工具,如滚动,可能不那么清晰。“如果你告诉我向下滚动,我会滚动当前活动窗口的一些量”。看起来 Claude 的新计算机使用能力在其早期版本中正在努力解决这个问题的:
虽然我们预计这种能力在接下来的几个月里会迅速提高,但 Claude 目前使用计算机的能力并不完美。一些人们轻松完成的行为 - 滚动、拖动、缩放 - 目前对 Claude 来说仍然存在挑战,我们鼓励开发者从低风险任务开始探索。 - 来源
当然,我不知道 Anthropic 在幕后具体做了什么,但对我来说,很明显他们使用了一些 ReAct 风格的代理的变体,可能还有一些针对特定任务的微小修改。如果你想知道如何从头开始制作一个 ReAct 代理,请查看这篇文章:
你可能想知道 Claude 计算机使用代理如何处理截图。如果代理本质上是一个语言模型,它是如何观察、基于截图进行推理并合理地做出决定的?我们将在下一节中讨论这个问题。
工作原理 – 多模态
在最后一节中,我们简要讨论了 ReAct 风格代理是什么以及它从高层次上是如何工作的:它规划、选择执行动作,然后根据这些动作做出观察。在原始的 ReAct 论文中,这是仅使用文本完成的,但计算机使用还需要视觉理解。
在我看来,这可以通过两种方式实现:
-
使用多模态模型
-
将多模态操作卸载到专用模型上
Claude 是一个多模态模型(继承了 OG Flamingo 模型的思想),这意味着它可以理解图像和文本。对 Claude 进行快速的手稿测试,看起来这个模型能够定位屏幕上的特定对象。
为了验证这个功能,我要求它将这些坐标转换为百分比
这里是那个点覆盖在原始图像上的情况。
当被提示点击北极熊时,模型所说的点击位置
虽然方向正确,但还不够好用于计算机。我认为他们也可能使用特定的、定制的视觉模型来帮助代理在特定用例中执行一些任务。
例如,可以定义一个工具,它接受一个文本查询,如“一张北极熊的图片”,然后尝试使用目标检测模型找到由该查询描述的图像的边界框。这个边界框可以用来决定在图像上应该点击鼠标的位置。
一个 YOLO 风格的模型正在检测一张包含狗、自行车和汽车的图片。来自 YOLO 论文,如我在 YOLO 文章中所述(我的 YOLO 文章)。
使用现成的目标检测模型在我看来是不可行的。以下是从 Blender,一个 3D 建模工具中截取的屏幕截图:
要说“将旋转模式更改为独立原点”,就需要点击这里的小家伙:
对于在简单网站上点击一只北极熊的图片,可能一个目标检测模型就足够了,也许这种模型在交互流程的某个环节中被使用,但对于这些更细微的导航任务,我感觉检测模型并不能满足需求。
Anthropic 没有太多关于他们内部正在做什么的说明(这就是为什么我要做很多猜测),但似乎他们可能正在使用一个微调模型,可能使用像LoRA这样的技术来实现准确的计算机交互:
升级的 Claude 3.5 Sonnet 和 Claude 3.5 Haiku 模型在工具使用和代理任务方面表现出更高的能力,特别是在自主行动、从错误中自我纠正和调用外部函数的能力上。我们使用多个基准对这些模型进行了评估,包括两个对我们测试套件来说是新的外部评估:SWE-bench Verified[1]和 TAU-bench (τ -bench)[2]。 – 来源
看起来他们还在开发集成了独立模型的强大工具。
虽然 Claude 在计算机任务上的可靠性还无法与人类性能相媲美,但我们正在建立几个监控协议和缓解措施,以确保这一能力的安全、谨慎发布。我们还开发了复杂的工具来评估潜在的《使用政策》违规行为,例如新的分类器来识别和评估计算机功能的使用。 – 来源
我们还可以查看OS World 的排行榜,看看截图类别中的亚军Cradle正在做什么,以便猜测 Anthropic 可能正在做的事情。
根据我的阅读,Cradle 确实使用了一个多模态 LLM 作为其核心,但使用了各种补充工具以实现更稳健的导航。
此外,对于每个环境,我们通过不同的工具增强 LMMs 的能力,例如模板匹配[8]、Grounding DINO[35]和 SAM[29],为对象检测和定位提供额外的定位支持。 – 来源
因此,在 Anthropic 的提示和类似系统的方法之间,似乎很多计算机交互都是由多模态 LLM 引导的,经过针对计算机交互任务的微调,并辅以一些额外的外部工具/模型来增强交互的鲁棒性。
我怀疑,随着由 LLM 驱动的代理开始以更复杂的方式与世界互动,这个研究领域将会成熟。目前看来,似乎有众多方式可以“某种程度上”地完成这种互动。对我来说,智能导航和感知复杂文本、空间和视觉数据是计算机使用,乃至整个 AI 进步的最大途径。
结论
我已经说过好几次了:AI 原则开始渗透到应用设计中。虽然这项功能仍然相对不成熟,但感觉我们正在接近 AI 系统的新兴和令人兴奋的能力。看起来代理和丰富的多模态理解正在引领这一潮流。
如果你想自己尝试,我建议使用 docker 化的沙盒,这样新潮的 AI 模型就不会不小心拍下你的银行对账单。如果你喜欢这种方式,这里有一个单行命令。
export ANTHROPIC_API_KEY=%your_api_key%
docker run
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY
-v $HOME/.anthropic:/home/computeruse/.anthropic
-p 5900:5900
-p 8501:8501
-p 6080:6080
-p 8080:8080
-it ghcr.io/anthropics/anthropic-quickstarts:computer-use-demo-latest
在播放之前,请阅读这篇文档,其中包含了 Anthropic 关于如何安全、安全地使用此系统的建议。
加入直观且详尽的解释
在 IAEE,你可以找到:
-
长篇内容,如你刚刚阅读的文章
-
基于我作为数据科学家、工程总监和企业家的经验撰写的观点文章
-
一个专注于学习 AI 的 Discord 社区
-
定期讲座和办公时间
9747

被折叠的 条评论
为什么被折叠?



