机器之心报道
编辑:佳琪、小舟
大模型的执行力从哪里来?
上个月,Anthropic 推出了升级版的 Claude 3.5 Sonnet。最新版本的 Claude 3.5 Sonnet 能够根据用户指令移动光标、点击相应位置以及通过虚拟键盘输入信息,模仿人类与计算机的交互方式。
简单来说,Claude 3.5 Sonnet 能像人一样使用计算机了!
被 Computer Use 功能点化过的 Claude 3.5 Sonnet,是首个以图形用户界面(GUI)agent 形式,可以在公开测试中控制电脑的 AI 模型。
作为早期测试版,Anthropic 在发布时表示其在现实复杂环境中的能力仍然未知。
最近,来自新加坡国立大学(NUS)Show Lab 的研究团队策划和组织了一系列精心设计的任务,来测试 Computer Use 功能这里面的门道究竟有多深。
不测不知道,除了发布 demo 中秀出的「成熟的 AI 已经学会自己打工了」。
成熟的 AI 也学会自己打游戏了!不信,请看 Claude 代打《崩坏:星穹铁道》的 VCR:
平时需要我们动手操作的找到副本、点击传送,现在 Claude 可以用「无形的手」代劳了。
它不仅知道什么时候该行动,还知道来都来了,多刷几次吧。
能看到电脑自己开始玩自己,这意味着,Claude 不仅能识别画面上的按钮,还能理解每个按钮的含义和功能,比如哪里是开启副本、哪里是开始战斗,再判断何时应该按下对应的按钮,执行相应的操作。
就是 Claude 还没学会换阵容,这个配队有点稀碎。
看来以后养号不必找代练了,学会进阶的提示词技巧,让 Claude 试试也行。它不会悄悄花掉星轨通票,更不会手抖把保底都抽没了。
除了刷副本之外,这个团队还实现了自动清《星铁》的每日任务。
Claude 自动刷每日任务 + 材料副本约等于【精品托管】,找真人代肝市场价 60 元。
不得不感叹,以后的人机交互方式真要变天了。
该团队还用填表格、下载音乐等 20 项任务对 Claude 3.5 Computer Use 进行了测试,这些案例表明,其在端到端语言到桌面操作方面具有前所未有的能力。
- 论文链接:https://arxiv.org/pdf/2411.10323
- 项目链接:https://github.com/showlab/computer_use_ootb
他们还提供了 Claude Computer Use 的系统提示。对于其实现原理,他们提供了一种解释,Computer Use 基于 ReAct 框架。
但与传统 ReAct 框架中每次操作都需截取一次屏幕的方式不同,Computer Use 引入了「择优观察」策略 —— 仅在必要时才截图观察环境,大幅提高了效率和灵活性。
此外,该研究还提供了一个开箱即用的智能体框架 Computer Use Out-of-the-Box(Computer Use OOTB),用于部署基于 API 的 GUI 自动化模型,Computer Use 的功能实现起来更容易了。
Computer Use Out-of-the-Box 打开谷歌表格,在其中的一栏自动填上「Hail Computer Use OOTB」。
关于 GUI 自动化智能体的研究,主要聚焦于如何利用通用大语言模型理解 GUI 状态并生成操作,从而实现与图形用户界面(GUI)的智能交互。
Anthropic 发布的 Computer Use 功能标志着 GUI 自动化智能体的重大进步。与以往的模型不同,Computer Use 功能通过 API 调用提供了端到端的解决方案,智能体不再需要进一步的先验知识,只观察纯视觉的 GUI 状态,就能完成用户要求的任务。
深入解析 Claude 的「Computer Use」
模型设计
简要概括 Claude Computer Use 的原理:
用户给出一条自然语言指令 X_instr 时,智能体就像用户的「替身使者」一样,根据指令在电脑上完成一系列任务。
从开始到结束,这个「替身使者」和环境的是这么互动的:在每个时间步 t,先观察当前的 GUI 状态 I_t,然后从自己的「动作库」中挑选下一步动作,熟练地调用相应工具执行操作,让任务更进一步。
- 系统提示
系统提示是智能体的「规则手册」,以下是 Claude Computer Use 的系统提示:
System Overview* You have access to a set of functions that allow you to int eract with a sandboxed computing environment.* You do NOT have access to external resources, except through the functions provided below.* You can invoke one or more functions by writing a block like this:plaintext ... antml:invoke> ... antml:invoke>antml:function_calls>* String and scalar parameters should be passed as is. Lists and objects should be passed in JSON format.* The output or any errors will appear in a subsequent block. If a block does NOT appear, your function call was likely malformatted.Available Functions1. Computer Interaction (GUI): * Description: Use a mouse and keyboard to interact with the computer and take screenshots. You can only interact with the desktop GUI (no terminal or application menu access). * Actions include: * key: Press a key or key-combination. * type: Type a string of text. * mouse_move: Move the cursor to specified coordinates. * left_click, right_click, middle_click, double_click: Perform mouse cli : Click and drag the cursor. * screenshot: Take a screenshot of the screen. * Important Notes: * The screen resolution is [SCREEN_RESOLUTION, e.g., 1024x768]. * Always check the coordinates of elements via screenshots before moving the cursor. * If a click fails, adjust your cursor position and retry. * Parameters: * action (required): The action to perform, such as key, type, etc. * coordinate: The (x, y) coordinates for mouse-related actions. * text: The text to type or key to press for type and key actions.Bash Shell Commands: * Description: Run commands in a bash shell. * Parameters: * command (required): The bash command to run. * restart: If true, restarts the tool.File Editing Tool: * Description: View, create, and edit files. * view: Displays a file or lists directory contents. * create: Creates a new file (fails if the file already exists). * str_replace: Replaces a specific string in a file. * insert: Inserts a string after a specified line. * Parameters: * path (required): The absolute path to the file or directory. * write_text: The content for creating a file. * str: Strings for replacing or inserting content. * line: Line number for inserting content. * view_range: Specify range of lines to view.System Capabilities* You are using an Ubuntu virtual machine with aarch64 architecture.* You can install applications using apt or pip.* Firefox is installed (use the firefox-esr version).* GUI applications can be started from the Bash shell usinSystem Overview
* You have access to a set of functions that allow you to interact with a sandboxed computing environment.
* You do NOT have access to external resources, except through the functions provided below.
* You can invoke one or more functions by writing a
block like this:
plaintext
"$FUNCTION_NAME"
>$PARAMETER_VALUE
"$PARAMETER_NAME"
"$FUNCTION_NAME2"
* String and scalar parameters should be passed as is. Lists and objects should be passed in JSON format.
* The output or any errors will appear in a subsequent
block. If a
block does NOT appear, your function call was likely malformatted.
Available Functions
1. Computer Interaction (GUI):
* Description: Use a mouse and keyboard to interact with the computer and take screenshots.
You can only interact with the desktop GUI (no terminal or application menu access).
* Actions include:
* key: Press a key or key-combination.
* type: Type a string of text.
* mouse_move: Move the cursor to specified coordinates.
* left_click, right_click, middle_click, double_click: Perform mouse clicks.
* left_click_drag: Click and drag the cursor.
* screenshot: Take a screenshot of the screen.
* Important Notes:
* The screen resolution is [SCREEN_RESOLUTION, e.g., 1024x768].
* Always check the coordinates of elements via screenshots before moving the cursor.
* If a click fails, adjust your cursor position and retry.
* Parameters:
* action (required): The action to perform, such as key, type, etc.
* coordinate: The (x, y) coordinates for mouse-related actions.
* text: The text to type or key to press for type and key actions.
Bash Shell Commands:
* Description: Run commands in a bash shell.
* Parameters:
* command (required): The bash command to run.
* restart: If true, restarts the tool.
File Editing Tool:
* Description: View, create, and edit files.
* view: Displays a file or lists directory contents.
* create: Creates a new file (fails if the file already exists).
* str_replace: Replaces a specific string in a file.
* insert: Inserts a string after a specified line.
* Parameters:
* path (required): The absolute path to the file or directory.
* write_text: The content for creating a file.
* str: Strings for replacing or inserting content.
* line: Line number for inserting content.
* view_range: Specify range of lines to view.
System Capabilities
* You are using an Ubuntu virtual machine with aarch64 architecture.
* You can install applications using apt or pip.
* Firefox is installed (use the firefox-esr version).
* GUI applications can be started from the Bash shell using DISPLAY=:1.
* The current date is [DATETIME, e.g., Wednesday, October 23, 2024].
Important Notes
* If the startup wizard for Firefox appears, ignore it. Do not click "skip this step." Instead, click on the address bar and enter the appropriate URL or search there.
* For handling PDFs, it may be better to download using a URL and convert it to text using pdftotext for easier reading.
Summary of How to Use the Tools
* Function Invocation: To interact with the environment, use the
block.
* Error Handling: If no
appear, check for malformatted calls.状态观察
Claude Computer Use 通过实时截图来观察环境,完全不依赖元数据或 HTML。
这种「纯视觉」的方式让它无需借助应用的 API,就能适应动态的 GUI 环境。因此,在闭源软件中也能表现出色。
- 推理范式
Claude Computer Use 采用类似 ReAct 的框架进行推理,但和传统的 ReAct 会在每一步操作中都反复观察环境,比如每点击一次按钮都重新检查屏幕状态不同,Claude Computer Use 采用了「择优观察」策略 ———— 只有在需要的时候才观察环境。就像我们在操作电脑时,如果知道接下来的操作无需确认界面状态,就直接继续下一步,而不是每做一步都重新检查界面。
- 智能体的工具
想让成熟的 AI 学会自己打工,它需要像「哆啦 A 梦」一样,为各种任务在口袋里准备好了工具。
Claude Computer Use 的「口袋」里装的是由 Anthropic 定义的三种工具:计算机工具、文本编辑工具和 Bash 工具。
(1)计算机工具
计算机工具帮助 Claude Computer Use 使用鼠标和键盘,并截图来观察实时环境。
计算机工具说明:
具体如何调用:
"properties": {
"action": {
"description": """The action to perform. The available actions are:
* key: Press a key or key-combination on the keyboard.
* This supports xdotool's key syntax.
* Examples: "a", "Return", "alt+Tab", "ctrl+s", "Up", "KP_0" (for the numpad 0 key).
* type: Type a string of text on the keyboard.
* cursor_position: Get the current (x, y) pixel coordinate of the cursor on the screen.
* mouse_move: Move the cursor to a specified (x, y) pixel coordinate on the screen.
* left_click: Click the left mouse button.
* left_click_drag: Click and drag the cursor to a specified (x, y) pixel coordinate on the screen.
* right_click: Click the right mouse button.
* middle_click: Click the middle mouse button.
* double_click: Double-click the left mouse button.
* screenshot: Take a screenshot of the screen.
""",
"enum": [
"key",
"type",
"mouse_move",
"left_click",
"left_click_drag",
"right_click",
"middle_click",
"double_click",
"screenshot",
"cursor_position"
],
"type": "string"
},
"coordinate": {
"description": "(x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by action=mouse_move and action=left_click_drag.",
"type": "array"
},
"text": {
"description": "Required only by action=type and action=key.",
"type": "string"
},
"required": ["action"],
"type": "object"
(2)文本编辑工具
文本编辑工具帮助 Claude Computer Use 使用自定义工具来查看、创建和编辑文件。
文本编辑工具说明:
具体如何调用:
"properties": {
"command": {
"description": "The commands to run. Allowed options are:`view`,`create`,`str_replace`,`insert`,`undo_edit`.",
"enum": ["view", "create", "str_replace", "insert", "undo_edit"],
"type": "string"
},
"file_text": {
"description": "Required parameter of`create`command, with the content of the file to be created.",
"type": "string"
},
"insert_line": {
"description": "Required parameter of`insert`command. The`new_str`will be inserted AFTER the line`insert_line`of`path`.",
"type": "integer"
},
"new_str": {
"description": "Optional parameter of`str_replace`command containing the new string (if not given, no string will be added). Required parameter of`insert`command containing the string to insert.",
"type": "string"
},
"old_str": {
"description": "Required parameter of`str_replace`command containing the string in`path`to replace.",
"type": "string"
},
"path": {
"description": "Absolute path to file or directory, e.g.,`/repo/file.py`or`/repo/`.",
"type": "string"
},
"view_range": {
"description": "Optional parameter of`view`command when`path`points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g., [11, 12] will show lines 11 and 12. Indexing starts at 1. Setting`[start_line, -1]`shows all lines from`start_line`to the end of the file.",
"items": { "type": "integer" },
"type": "array"
},
"required": ["command", "path"],
"type": "object"
{(3)Bash 工具
Bash 工具帮助 Claude Computer Use 在 Bash Shell 中运行命令。
Bash 工具说明:
具体如何调用:
"properties": {
"command": {
"description": "The bash command to run. Required unless the tool is being restarted.",
"type": "string"
},
"restart": {
"description": "Specifying true will restart this tool. Otherwise, leave this unspecified.",
"type": "boolean"
动作空间
Claude Computer Use 的 GUI 动作空间涵盖了所有常见的鼠标和键盘操作,包括鼠标移动、左键单击、右键单击、中键单击、双击、拖拽操作,以及文本输入、按键触发和快捷键组合等。
此外,与坐标相关的操作还精确到目标位置在截图像素空间中的具体坐标。
- 智能体的记忆
开箱即用的智能体框架
为了让 GUI 智能体更实用,该团队开发了一款跨平台框架 Computer Use Out-of-the-Box,它可以在 Windows 和 macOS 上运行,无需依赖 Docker 或特定的 Linux 环境。
通过使用 PyAutoGUI,这个框架能让模型通过简单的动作指令远程控制软件,实现跨系统的兼容操作。
Computer Use能力评估
除了上文展示的视频游戏任务,该研究对 Claude 计算机使用能力的评估还涵盖了网页搜索、工作流、办公软件几个领域,总体评估情况如下表 1 所示:
该团队选择了以下三个维度严格评估基于 API 的 GUI 自动化模型的性能:
- 规划:评估模型根据用户的输入生成可执行计划的能力。这个计划应该是能让软件整体成功运行,每个步骤都清晰且可执行的正确流程。
- 行动:评估模型是否能够准确识别并操作可交互的 GUI 元素,同时按照派生计划逐步执行具体操作。
- 反思:衡量模型对动态环境的感知能力,包括其根据操作结果进行调整的能力,例如在任务失败时尝试重试,或在任务完成后及时终止操作。
网页搜索
由于互联网网页具有动态特性、互连结构等特点,模型需要根据每个规划步骤的执行状态来决定何时向前或向后导航历史记录。因此,模型必须具备相应地批评和调整其规划的能力。
该研究评估了模型在反映现实场景的复杂网络搜索任务上的性能,旨在评估其在处理动态内容、执行多步骤规划以及调整策略以响应意外界面行为方面的熟练程度。
例如,在 Amazon 商城上查找价格低于 100 美元的 ANC 耳机:
浏览 Apple 官方网站:
然而,也有失败的情况,例如执行 Fox 体育订阅任务失败:
工作流
工作流任务涉及多应用程序交互或多目标用户查询,需要模型跨不同软件平台无缝导航和管理数据。在现实场景中,用户通常需要协调 Web 浏览器、生产力工具和专用应用程序之间的操作以完成复杂的目标。这些任务测试模型在不同环境中维护上下文、准确处理数据传输以及执行多步骤流程而不会在中间状态中丢失跟踪的能力。
例如,查找最新和本地流行音乐并添加到播放列表:
办公软件
办公软件是现代工作场所和教育环境中最受欢迎且使用最广泛的组成部分。这些应用程序是各种任务的核心,从起草文档和分析数据到创建有影响力的演示文稿。这些应用程序中的自动化任务可以显著提高效率、减少重复性工作量并最大限度地减少人为错误,因此其也是 GUI 自动化模型需要解决的关键领域。
然而,与通常提供 API 或结构化 HTML 来实现自动化的 Web 环境不同,Office 应用程序通常缺乏此类用于文件操作的编程接口。因此,GUI 自动化模型必须像人类用户一样直接与应用程序的可视界面交互。这涉及将操作植根于视觉元素,例如菜单、按钮、文本字段和表格单元格。模型必须准确地感知和解释这些界面组件,以浏览复杂的菜单、执行命令以及操作文档或电子表格中的内容。
该研究检查了模型在 Office 软件中自动执行任务的性能,重点关注其有效规划、执行和调整操作的能力,旨在模拟用户遇到的常见现实场景,从而深入了解模型在文字处理、电子表格和演示应用程序中提高生产力的潜力。
例如, 转发特定电子邮件并抄送给另一个收件人:
更改文档布局:
当然,也有失败的情况,例如更新简历模板上的姓名和电话号码:
感兴趣的读者可以阅读论文原文,了解更多研究内容。