Claude 3.7 Sonnet 和 Claude 3.5 Sonnet(新版)能够与可以操控计算机桌面环境的工具进行交互。Claude 3.7 Sonnet 引入了额外的工具,并允许您启用思考功能,让您更深入地了解模型的推理过程。

电脑使用是一个测试版功能。请注意,电脑使用带来的风险与标准 API 功能或聊天界面的风险有所不同。当使用电脑使用功能来访问互联网时,这些风险会更高。为了最小化风险,请考虑采取以下预防措施:

  1. 使用具有最小权限的专用虚拟机或容器,以防止直接系统攻击或意外。
  2. 避免让模型访问敏感数据(如账户登录信息)以防止信息被盗。
  3. 将互联网访问限制在允许域名列表内,以减少接触恶意内容的风险。
  4. 对可能导致重要现实世界后果的决定以及任何需要明确同意的任务(如接受 cookies、执行金融交易或同意服务条款)请求人工确认。

在某些情况下,即使与用户指令相冲突,Claude 也会执行在内容中找到的命令。例如,网页上的 Claude 指令或图片中包含的指令可能会覆盖指令或导致 Claude 出错。我们建议采取预防措施,将 Claude 与敏感数据和操作隔离,以避免与提示注入相关的风险。

我们已经训练模型来抵抗这些提示注入,并添加了额外的防御层。如果您使用我们的电脑使用工具,我们会自动对您的提示运行分类器来标记潜在的提示注入实例。当这些分类器在截图中识别到潜在的提示注入时,它们会自动引导模型在执行下一个操作之前请求用户确认。我们认识到这种额外的保护并不适合每个用例(例如,没有人工参与的用例),所以如果您想选择退出并关闭它,请联系我们

我们仍然建议采取预防措施,将 Claude 与敏感数据和操作隔离,以避免与提示注入相关的风险。

最后,在您自己的产品中启用电脑使用功能之前,请告知最终用户相关风险并获得他们的同意。

电脑使用参考实现

通过我们的电脑使用参考实现快速入门,其中包括 Web 界面、Docker 容器、示例工具实现和代理循环。

注意: 该实现已更新,包含了 Claude 3.7 Sonnet 的新工具。请务必拉取最新版本的代码库以访问这些新功能。

请使用此表单提供关于模型响应质量、API 本身或文档质量的反馈 - 我们迫不及待想听到您的意见!

以下是如何使用消息 API 为 Claude 提供电脑使用工具的示例:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: computer-use-2025-01-24" \
  -d '{
    "model": "claude-3-7-sonnet-20250219",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20241022",
        "name": "str_replace_editor"
      },
      {
        "type": "bash_20241022",
        "name": "bash"
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Save a picture of a cat to my desktop."
      }
    ],
    "thinking": {
      "type": "enabled",
      "budget_tokens": 1024
    }
  }'

电脑使用的工作原理

1. 为 Claude 提供电脑使用工具和用户提示

  • 在您的 API 请求中添加 Anthropic 定义的电脑使用工具。
  • 包含可能需要这些工具的用户提示,例如”将一张猫的图片保存到我的桌面。”

2. Claude 决定使用工具

  • Claude 加载存储的电脑使用工具定义并评估是否有工具可以帮助解决用户的查询。
  • 如果是,Claude 构建一个格式正确的工具使用请求。
  • API 响应的 stop_reasontool_use,表示 Claude 的意图。

3. 提取工具输入,在计算机上评估工具,并返回结果

  • 在您这边,从 Claude 的请求中提取工具名称和输入。
  • 在容器或虚拟机上使用该工具。
  • 继续对话,发送包含 tool_result 内容块的新 user 消息。

4. Claude 继续调用电脑使用工具直到完成任务

  • Claude 分析工具结果以确定是否需要更多工具使用或任务已完成。
  • 如果 Claude 决定需要另一个工具,它会以另一个 tool_use stop_reason 响应,您应该返回步骤 3。
  • 否则,它会为用户制作文本响应。

我们将在没有用户输入的情况下重复步骤 3 和 4 称为”代理循环” - 即 Claude 响应工具使用请求,而您的应用程序则用评估该请求的结果响应 Claude。

计算环境

电脑使用需要一个沙盒计算环境,Claude 可以在其中安全地与应用程序和网络进行交互。该环境包括:

  1. 虚拟显示:虚拟 X11 显示服务器(使用 Xvfb),通过截图渲染 Claude 将看到的桌面界面,并通过鼠标/键盘动作进行控制。

  2. 桌面环境:在 Linux 上运行的轻量级 UI,带有窗口管理器(Mutter)和面板(Tint2),为 Claude 提供一致的图形界面。

  3. 应用程序:预装的 Linux 应用程序,如 Firefox、LibreOffice、文本编辑器和文件管理器,Claude 可以使用这些应用程序来完成任务。

  4. 工具实现:集成代码,将 Claude 的抽象工具请求(如”移动鼠标”或”截图”)转换为虚拟环境中的实际操作。

  5. 代理循环:处理 Claude 和环境之间通信的程序,将 Claude 的动作发送到环境并将结果(截图、命令输出)返回给 Claude。

当您使用电脑使用功能时,Claude 不会直接连接到这个环境。相反,您的应用程序:

  1. 接收 Claude 的工具使用请求
  2. 将它们转换为您的计算环境中的动作
  3. 捕获结果(截图、命令输出等)
  4. 将这些结果返回给 Claude

为了安全和隔离,参考实现将所有这些都运行在 Docker 容器内,并具有适当的端口映射以查看和与环境交互。


如何实现电脑使用

从我们的参考实现开始

我们已经构建了一个参考实现,其中包含了您快速开始使用电脑使用所需的一切:

[继续翻译…]