Claude 4 Opus 和 Sonnet,以及 Claude Sonnet 3.7 和 Claude Sonnet 3.5(新版)能夠與可以操控電腦桌面環境的工具互動。Claude 4 模型使用針對新架構優化的更新工具版本。Claude Sonnet 3.7 引入了額外的工具,並允許您啟用思考功能,讓您更深入了解模型的推理過程。

電腦使用是一項測試版功能。請注意,電腦使用功能帶來的風險與標準 API 功能或聊天界面不同。當使用電腦使用功能來與網際網路互動時,這些風險會更高。為了降低風險,請考慮採取以下預防措施:

  1. 使用具有最小權限的專用虛擬機器或容器,以防止直接系統攻擊或意外。
  2. 避免讓模型訪問敏感數據,如帳戶登錄信息,以防止信息被盜。
  3. 將網際網路訪問限制在允許的域名列表內,以減少接觸惡意內容的風險。
  4. 請人工確認可能導致有意義的現實世界後果的決定,以及任何需要明確同意的任務,例如接受 cookie、執行金融交易或同意服務條款。

在某些情況下,Claude 會遵循內容中的命令,即使這與用戶的指示相衝突。例如,網頁上的 Claude 指令或包含在圖像中的指令可能會覆蓋指令或導致 Claude 犯錯。我們建議採取預防措施,將 Claude 與敏感數據和操作隔離,以避免與提示注入相關的風險。

我們已經訓練模型來抵抗這些提示注入,並添加了額外的防禦層。如果您使用我們的電腦使用工具,我們將自動對您的提示運行分類器,以標記潛在的提示注入實例。當這些分類器在截圖中識別出潛在的提示注入時,它們將自動引導模型在繼續下一個操作之前請求用戶確認。我們認識到這種額外的保護並不適合每個用例(例如,沒有人在循環中的用例),所以如果您想選擇退出並關閉它,請聯繫我們

我們仍然建議採取預防措施,將 Claude 與敏感數據和操作隔離,以避免與提示注入相關的風險。

最後,請在您自己的產品中啟用電腦使用功能之前,告知最終用戶相關風險並獲得他們的同意。

電腦使用參考實現

使用我們的電腦使用參考實現快速入門,其中包括網頁界面、Docker 容器、示例工具實現和代理循環。

注意: 該實現已更新,包含了 Claude 4 和 Claude Sonnet 3.7 的新工具。請確保拉取最新版本的存儲庫以訪問這些新功能。

請使用此表單提供有關模型回應質量、API 本身或文檔質量的反饋 - 我們迫不及待想聽取您的意見!

以下是如何使用 Messages 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-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20250429",
        "name": "str_replace_based_edit_tool"
      },
      {
        "type": "bash_20250124",
        "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 容器內,並具有適當的端口映射,用於查看和與環境交互。


如何實現電腦使用

從我們的參考實現開始

我們已經構建了一個參考實現,其中包含了您快速開始使用電腦使用所需的一切:

理解多代理循環

電腦使用的核心是「代理循環」 - 一個 Claude 請求工具操作,您的應用程序執行它們,並將結果返回給 Claude 的循環。以下是一個簡化的例子:

async def sampling_loop(
    *,
    model: str,
    messages: list[dict],
    api_key: str,
    max_tokens: int = 4096,
    tool_version: str,
    thinking_budget: int | None = None,
    max_iterations: int = 10,  # 添加迭代限制以防止無限循環
):
    """
    Claude 電腦使用交互的簡單代理循環。

    此函數處理以下來回過程:
    1. 向 Claude 發送用戶消息
    2. Claude 請求使用工具
    3. 您的應用執行這些工具
    4. 將工具結果發送回 Claude
    """
    # 設置工具和 API 參數
    client = Anthropic(api_key=api_key)
    beta_flag = "computer-use-2025-01-24" if "20250124" in tool_version else "computer-use-2024-10-22"

    # 配置工具 - 您應該已經在其他地方初始化這些
    tools = [
        {"type": f"computer_{tool_version}", "name": "computer", "display_width_px": 1024, "display_height_px": 768},
        {"type": f"text_editor_{tool_version}", "name": "str_replace_editor"},
        {"type": f"bash_{tool_version}", "name": "bash"}
    ]

    # 主代理循環(帶有迭代限制,以防止 API 成本失控)
    iterations = 0
    while True and iterations < max_iterations:
        iterations += 1
        # 設置可選的思考參數(用於 Claude Sonnet 3.7)
        thinking = None
        if thinking_budget:
            thinking = {"type": "enabled", "budget_tokens": thinking_budget}

        # 調用 Claude API
        response = client.beta.messages.create(
            model=model,
            
            max_tokens=max_tokens,
            messages=messages,
            tools=tools,
            betas=[beta_flag],
            thinking=thinking
        )

        # 將 Claude 的響應添加到對話歷史
        response_content = response.content
        messages.append({"role": "assistant", "content": response_content})

        # 檢查 Claude 是否使用了任何工具
        tool_results = []
        for block in response_content:
            if block.type == "tool_use":
                # 在實際應用中,您會在這裡執行工具
                # 例如:result = run_tool(block.name, block.input)
                result = {"result": "Tool executed successfully"}

                # 為 Claude 格式化結果
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result
                })

        # 如果沒有使用工具,Claude 已完成 - 返回最終消息
        if not tool_results:
            return messages

        # 將工具結果添加到消息中,用於下一次與 Claude 的迭代
        messages.append({"role": "user", "content": tool_results})

循環會一直持續,直到 Claude 響應時沒有請求任何工具(任務完成)或達到最大迭代限制。這個保障措施可防止可能導致意外 API 成本的潛在無限循環。

對於每個工具版本,您必須在 API 請求中使用相應的測試版標誌:

我們建議在閱讀本文檔的其餘部分之前先嘗試參考實現。

通過提示優化模型性能

以下是一些關於如何獲得最佳質量輸出的提示:

  1. 指定簡單、明確定義的任務,並為每個步驟提供明確的指示。
  2. Claude 有時會假設其操作的結果而不明確檢查它們。為了防止這種情況,您可以提示 Claude:在每個步驟之後,截取屏幕截圖並仔細評估您是否已經達到了正確的結果。明確展示您的思考過程:"我已經評估了步驟 X..."如果不正確,請重試。只有當您確認步驟已正確執行時,才能繼續下一步。
  3. 某些 UI 元素(如下拉菜單和滾動條)可能難以通過鼠標移動操作。如果您遇到這種情況,請嘗試提示模型使用鍵盤快捷鍵。
  4. 對於可重複的任務或 UI 交互,在您的提示中包含成功結果的示例截圖和工具調用。
  5. 如果您需要模型登錄,請在提示中使用 xml 標籤(如 <robot_credentials>)提供用戶名和密碼。在需要登錄的應用程序中使用電腦使用功能會增加由於提示注入而導致不良結果的風險。在向模型提供登錄憑據之前,請查看我們關於緩解提示注入的指南。

如果您反覆遇到一組明確的問題,或事先知道 Claude 需要完成的任務,請使用系統提示為 Claude 提供明確的提示或關於如何成功完成任務的指示。

系統提示

當通過 Anthropic API 請求 Anthropic 定義的工具之一時,會生成特定於電腦使用的系統提示。它類似於工具使用系統提示,但以以下內容開始:

您可以使用一組函數來回答用戶的問題。這包括訪問沙盒計算環境。除了調用以下函數外,您目前無法檢查文件或與外部資源交互。

與常規工具使用一樣,用戶提供的 system_prompt 字段仍然受到尊重,並用於構建組合系統提示。

了解 Anthropic 定義的工具

作為測試版,這些工具定義可能會發生變化。

我們提供了一組工具,使 Claude 能夠有效地使用電腦。在指定 Anthropic 定義的工具時,不需要或不允許使用 descriptiontool_schema 字段。

Anthropic 定義的工具由用戶執行

Anthropic 定義的工具由 Anthropic 定義,但您必須明確評估工具的結果並將 tool_results 返回給 Claude。與任何工具一樣,模型不會自動執行工具。

我們提供了一組 Anthropic 定義的工具,每個工具都有針對 Claude 4、Claude Sonnet 3.7 和 Claude Sonnet 3.5 優化的版本:

type 字段標識工具及其用於驗證的參數,name 字段是暴露給模型的工具名稱。

如果您想提示模型使用這些工具之一,可以通過 name 字段明確引用該工具。name 字段在工具列表中必須是唯一的;您不能在同一個 API 調用中定義與 Anthropic 定義的工具同名的工具。

我們不建議定義與 Anthropic 定義的工具同名的工具。雖然您仍然可以重新定義具有這些名稱的工具(只要工具名稱在您的 tools 塊中是唯一的),但這樣做可能會導致模型性能下降。

在 Claude 4 和 Claude Sonnet 3.7 中啟用思考功能

Claude Sonnet 3.7 引入了一個新的「思考」功能,允許您查看模型在處理複雜任務時的推理過程。此功能幫助您了解 Claude 如何解決問題,對於調試或教育目的特別有價值。

要啟用思考,請在 API 請求中添加 thinking 參數:

"thinking": {
  "type": "enabled",
  "budget_tokens": 1024
}

budget_tokens 參數指定 Claude 可以用於思考的標記數量。這從您的整體 max_tokens 預算中扣除。

啟用思考後,Claude 將在響應中返回其推理過程,這可以幫助您:

  1. 了解模型的決策過程
  2. 識別潛在問題或誤解
  3. 從 Claude 的問題解決方法中學習
  4. 獲得對複雜多步驟操作的更多可見性

以下是思考輸出的示例:

[Thinking]
我需要將貓的圖片保存到桌面。讓我將這個任務分解為步驟:

1. 首先,我將截取屏幕截圖,看看桌面上有什麼
2. 然後我將尋找網絡瀏覽器來搜索貓的圖片
3. 找到合適的圖片後,我需要將其保存到桌面

讓我先截取屏幕截圖,看看有什麼可用的...

將電腦使用與其他工具結合

您可以將常規工具使用與 Anthropic 定義的電腦使用工具結合使用。

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-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20250124",
        "name": "str_replace_editor"
      },
      {
        "type": "bash_20250124",
        "name": "bash"
      },
      {
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "input_schema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"],
              "description": "The unit of temperature, either 'celsius' or 'fahrenheit'"
            }
          },
          "required": ["location"]
        }
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Find flights from San Francisco to a place with warmer weather."
      }
    ],
    "thinking": {
      "type": "enabled",
      "budget_tokens": 1024
    }
  }'

構建自定義電腦使用環境

參考實現旨在幫助您開始使用電腦使用功能。它包含了讓 Claude 使用電腦所需的所有組件。但是,您可以根據自己的需求構建自己的電腦使用環境。您需要:

  • 適合 Claude 電腦使用的虛擬化或容器化環境
  • 至少一個 Anthropic 定義的電腦使用工具的實現
  • 與 Anthropic API 交互並使用您的工具實現執行 tool_use 結果的代理循環
  • 允許用戶輸入啟動代理循環的 API 或 UI

了解電腦使用的限制

電腦使用功能處於測試版階段。雖然 Claude 的功能是前沿的,但開發人員應該了解其限制:

  1. 延遲:當前電腦使用的人機交互延遲可能比常規人工指導的電腦操作慢。我們建議專注於速度不重要的用例(例如,後台信息收集、自動化軟件測試)在受信任的環境中。
  2. 計算機視覺準確性和可靠性:Claude 在生成操作時輸出特定坐標時可能會出錯或產生幻覺。Claude Sonnet 3.7 引入了思考功能,可以幫助您了解模型的推理並識別潛在問題。
  3. 工具選擇準確性和可靠性:Claude 在生成操作時選擇工具時可能會出錯或產生幻覺,或者採取意外操作來解決問題。此外,在與小眾應用程序或同時與多個應用程序交互時,可靠性可能較低。我們建議用戶在請求複雜任務時謹慎提示模型。
  4. 滾動可靠性:雖然 Claude Sonnet 3.5(新版)在滾動方面有限制,但 Claude Sonnet 3.7 引入了帶有方向控制的專用滾動操作,提高了可靠性。模型現在可以明確地向任何方向(上/下/左/右)滾動指定的量。
  5. 電子表格交互:在 Claude Sonnet 3.7 中,用於電子表格交互的鼠標點擊通過添加更精確的鼠標控制操作(如 left_mouse_downleft_mouse_up)和新的修飾鍵支持得到了改進。通過使用這些精細控制並將修飾鍵與點擊結合,單元格選擇可以更可靠。
  6. 在社交和通信平台上創建帳戶和生成內容:雖然 Claude 會訪問網站,但我們限制了其創建帳戶或生成和分享內容或以其他方式在社交媒體網站和平台上進行人類模仿的能力。我們可能會在未來更新此功能。
  7. 漏洞:像越獄或提示注入這樣的漏洞可能會在前沿 AI 系統中持續存在,包括測試版電腦使用 API。在某些情況下,Claude 會遵循內容中的命令,有時甚至與用戶的指示相衝突。例如,網頁上的 Claude 指令或包含在圖像中的指令可能會覆蓋指令或導致 Claude 犯錯。我們建議: a. 將電腦使用限制在受信任的環境中,如具有最小權限的虛擬機器或容器 b. 避免在沒有嚴格監督的情況下讓電腦使用訪問敏感帳戶或數據 c. 在您的應用程序中啟用或請求電腦使用功能所需的權限之前,告知最終用戶相關風險並獲得他們的同意
  8. 不適當或非法操作:根據 Anthropic 的服務條款,您不得使用電腦使用功能違反任何法律或我們的可接受使用政策。

始終仔細審查和驗證 Claude 的電腦使用操作和日誌。不要在沒有人工監督的情況下使用 Claude 執行需要完美精度或敏感用戶信息的任務。


定價

有關 Claude 工具使用 API 請求如何定價的詳細說明,請參閱工具使用定價文檔。

作為工具使用請求的子集,電腦使用請求的定價與任何其他 Claude API 請求相同。

我們還自動為模型包含一個特殊的系統提示,啟用電腦使用功能。

模型工具選擇系統提示標記數
Claude 4 Opus 和 Sonnetauto
any, tool
466 標記
499 標記
Claude Sonnet 3.7auto
any, tool
466 標記
499 標記
Claude Sonnet 3.5(新版)auto
any, tool
466 標記
499 標記

除了基本標記外,Anthropic 定義的工具還需要以下額外輸入標記:

工具額外輸入標記
computer_20250124(Claude 4)735 標記
computer_20250124(Claude Sonnet 3.7)735 標記
computer_20241022(Claude Sonnet 3.5)683 標記
text_editor_20250429(Claude 4)700 標記
text_editor_20250124(Claude Sonnet 3.7)700 標記
text_editor_20241022(Claude Sonnet 3.5)700 標記
bash_20250124(Claude 4)245 標記
bash_20250124(Claude Sonnet 3.7)245 標記
bash_20241022(Claude Sonnet 3.5)245 標記

如果您在 Claude 4 或 Claude Sonnet 3.7 中啟用思考功能,用於思考的標記將根據您在思考參數中指定的 budget_tokens 計入您的 max_tokens 預算。