程式碼執行:Claude 執行它自己撰寫的程式碼
程式碼執行讓 Claude 撰寫 Python,在 Anthropic 端執行, 並根據輸出內容回答。
本影片中的示範錄製於 2026 年 9 月。當時使用 Claude Sonnet 5(claude-sonnet-5)執行。在較新的模型上結果可能有所不同。
有些問題需要跨多個檔案進行運算,這正是程式碼該做的工作。
以 Meridian 為例,這是一家虛構的工程顧問公司。它有 12 個 CSV 檔案,每個抽水站一個,每個檔案都保存了一年的流量讀數。它想知道是否有任何一個抽水站曾經超過其設計容量,如果有,是在何時發生的。
程式碼執行正是 Claude 完成這項工作的方式。Claude 會取得一個容器,可以在其中執行它撰寫的 Python,並根據程式碼輸出的內容作答。
將工具加入您的請求
程式碼執行是一種伺服器工具,也就是在 Anthropic 基礎架構上執行的工具。您不需要為它撰寫處理函式,您的程式碼也不會傳回 tool_result。
新增程式碼執行只需在您的 tools 清單中加入一個項目。 該項目 type 結尾的日期即為該工具的版本,Meridian 使用的是 code_execution_20260120。目前的版本列於工具參考文件中(在新分頁中開啟),請從該處複製 type 的值。
Meridian 將清單保存在一個名為 TOOLS 的常數中,其請求會以 tools=TOOLS 方式傳入:
TOOLS = [{"type": "code_execution_20260120", "name": "code_execution"}]截至 2026 年 10 月,程式碼執行(在新分頁中開啟)可在 Claude API、Claude Platform on AWS、Anthropic 在 Google Cloud 上管理的 Claude 模型,以及託管於 Anthropic 的 Microsoft Foundry 部署上執行。
將您的檔案放入容器中
Claude 的程式碼是在 Anthropic 端的容器中執行。您的檔案仍保留在您的電腦上,因此容器尚未取得這些檔案。Meridian 的程式透過兩個步驟將檔案載入容器:
- 使用 Files API(在新分頁中開啟) 上傳每個檔案,該 API 會回傳一個檔案 ID。
- 將該檔案 ID 放入您的訊息中的
container_upload區塊裡。
Meridian 的程式會為每個檔案新增一個 container_upload 區塊,與其問題置於同一則訊息中。 接著這些檔案便會載入到容器中,供 Claude 的程式碼開啟使用。
閱讀 Claude 的答案
您的程式碼傳送一次請求,通常就能取得完整的答案。
API 可以暫停一個執行時間較長的回合,並回傳 stop_reason 為 pause_turn。發生這種情況時,請將回應的內容以助理訊息的形式傳回,並帶上相同的 tools,Claude 便會繼續執行。
Claude 給 Meridian 的答案是:7 號抽水站曾兩次超過其 600 L/s 的設計容量,分別發生在 2025 年 4 月和 5 月。在回應中,答案出現在 Claude 執行的指令之後。
組合完整程式
下方 Meridian 的程式會加入工具、將檔案放入容器,並讀取答案。在程式中,paths 以 pathlib.Path 物件的形式保存這 12 個 CSV 檔案,而 QUESTION 則保存 Meridian 的問題。
重點整理
- 程式碼執行是一種伺服器工具。您只需在
tools中新增一個項目,Claude 的程式碼便會在 Anthropic 端的容器中執行。 - 您使用 Files API 上傳每個檔案,接著將其檔案 ID 放入
container_upload區塊中。