Claude API 代碼執行工具(code execution)怎麼用:tools 寫法、上載文件分析、取回生成文件、容器限制和計費

想讓 Claude API 真的跑代碼做數據分析、生成圖表和文件?按官方《Code execution tool》講清三個工具版本、最小請求、上載 CSV 分析、$OUTPUT_DIR 取回文件、容器內存與聯網限制、錯誤碼、容器複用和計費規則。

NNathaniel bigo··原創首發·AI 輔助撰寫
12 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 Claude 開發者平台官方文檔《Code execution tool》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。

適用於誰

  • 想讓 Claude 在 API 調用裏真正執行代碼,做數據分析、畫圖、生成 Excel / PDF 的開發者;
  • 看到響應裏有 bash_code_execution、server_tool_use,不知道是什麼的人。

基礎調用見 /guides/claude-api-python-quickstart。想自己定義工具、自己執行,見 /guides/claude-tool-use-basics;代碼執行是 Anthropic 一側執行的工具,和它不同。網頁版 Claude 的數據分析見 /guides/claude-data-analysis-csv。

結論先說

  1. 官方定義: 代碼執行工具讓 Claude 在安全的沙盒容器裏運行 Bash 命令、創建和編輯文件(包括寫代碼),在 API 對話中分析數據、畫圖表、做複雜計算、處理上載的文件。
  2. 服務端執行,不需要你回傳結果。 官方說 API 在服務端運行每條命令,並在同一次請求裏把結果交給 Claude,你不需要自己執行代碼,也不用回傳 tool_result(只有 Claude 同時調用你自己的客戶端工具時,才會出現需要你回傳的情況)。
  3. 三個版本: code_execution_20250825(Bash 和文件操作)、code_execution_20260120(再加 REPL 狀態保持和程序化工具調用)、code_execution_20260521(與前者同一運行時,只是工具描述裏告知了每個 Python 單元 90 秒牆鐘上限)。三個版本都不需要 anthropic-beta 頭。
  4. 容器沒有網絡。 官方明確:沙盒完全禁止聯網,不能運行時下載包,只能用預裝庫。
  5. 計費: 與聯網搜尋 / 網頁抓取(web_search_20260209 或 web_fetch_20260209 及更新版本)一起用時,除標準 token 外不額外收費;否則按執行時間計,每個組織每月有免費額度,超出部分按小時算(具體數字見第五節,以官方當前顯示為準)。

調用代碼執行工具的流程

圖:本站根據 Claude 官方文檔:Code execution tool 整理的示意圖

一、最小請求

官方 Quick start 讓 Claude 計算一組數的平均值和標準差。Python 寫法:

python
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "Use the code execution tool to calculate the mean and standard deviation of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
        }
    ],
    tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
print(response)

工具定義不需要額外參數。官方說明兩個字段都是固定的:type 選擇工具版本,name 必須是 code_execution。

加了這個工具,Claude 自動獲得兩個子工具:bash_code_execution(運行 shell 命令)和 text_editor_code_execution(查看、創建、編輯文件)。

Claude 什麼時候會跑代碼: 官方列出:非平凡的數學(大數、多步、對精度敏感)、數據分析 / 文件解析 / 可視化、算法執行或模擬,以及你明確要求「運行」「計算」「執行」。簡單算術、事實問答、簡單換算和翻譯會直接回答。邊界情況想讓它跑,就明確說「run code to verify this」。

二、上載自己的文件來分析

官方列出的可處理文件:CSV、Excel(.xlsx、.xls)、JSON、XML、圖片(JPEG、PNG、GIF、WebP)以及 .txt / .md / .py 等文本文件。三步:

  1. 用 Files API 上載文件;
  2. 在消息裏用 container_upload 內容塊引用它;
  3. 請求裏帶上代碼執行工具。

官方 Python 示例:

python
from pathlib import Path
import anthropic

client = anthropic.Anthropic()

# 上載文件
file_object = client.files.upload(file=Path("data.csv"))

# 在代碼執行裏使用 file_id
response = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Analyze this CSV data"},
                {"type": "container_upload", "file_id": file_object.id},
            ],
        }
    ],
    tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
print(response.to_json())

注意計費細節:官方說,只要請求裏帶了文件,即使 Claude 沒調用工具,也會按執行時間計費,因為文件會被預加載到容器裏。

三、取回 Claude 生成的文件

代碼執行沒拿到文件或報錯時先查什麼

圖:本站根據官方文檔整理的示意圖

官方機制:每次 bash_code_execution 調用都會得到一個全新的空目錄,命令裏可通過環境變量 $OUTPUT_DIR 訪問。命令結束後,該目錄頂層的文件會被捕獲,並作為 file_id 條目出現在結果的 content 列表裏;寫在別處的文件留在容器裏,不會返回。拿到 file_id 後,用 Files API 下載。

官方建議:如果你的應用依賴拿到某個文件,在提示詞裏讓 Claude 把文件複製到 $OUTPUT_DIR 並在同一條命令裏列出目錄,ls 的輸出能確認文件確實被捕獲(Claude 自己看不到 content 列表):

bash
python /tmp/make_report.py && cp /tmp/report.pdf "$OUTPUT_DIR/" && ls "$OUTPUT_DIR"

如果文件被寫在別處,可以複用容器,再讓 Claude 複製進 $OUTPUT_DIR。

官方還提到:在 Claude API 上,沙盒裏生成的受支持的圖片、影片、音頻文件,通過 Files API 下載時會帶 C2PA 內容憑證,所以下載文件的大小和校驗值與容器裏的不同;文本、PDF 和 Office 文檔不會被簽名。

四、返回裏怎麼看,錯誤怎麼查

命令結果(bash_code_execution_result)包含 stdout、stderr、return_code(0 為成功,非 0 為失敗)和 content($OUTPUT_DIR 裏的文件列表)。文件操作有各自的結果類型,例如查看文件 text_editor_code_execution_view_result、創建文件 text_editor_code_execution_create_result。

錯誤會出現在結果塊的 error_code 裏,官方列出的錯誤碼:

錯誤碼含義
unavailable工具暫時不可用
execution_time_exceeded工具調用超過最大執行時間
invalid_tool_input傳給工具的參數無效
too_many_requests工具使用超出速率限制
output_file_too_large(僅 bash)命令輸出超過最大大小
file_not_found(僅文件編輯)要查看 / 編輯的文件不存在

另外,官方說明已過期的容器不能複用,引用它的請求會返回錯誤;重新發請求,不帶 container 參數即可拿到新容器。長回合可能返回 stop_reason: "pause_turn",把響應原樣放進下一次請求就能讓 Claude 繼續,並且要把響應裏的容器 ID 一起帶上,否則會在新容器裏繼續,之前的文件會丟。

五、容器、複用和計費

運行環境(官方): Python 3.11、Linux、x86_64;5 GiB 內存、5 GiB 工作區磁盤、1 個 CPU;完全禁止聯網;容器創建 30 天后過期。

預裝庫: 數據科學(pandas、numpy、scipy、scikit-learn、statsmodels)、可視化(matplotlib、seaborn)、文件處理(pyarrow、openpyxl、xlsxwriter、xlrd、pillow、python-pptx、python-docx、pypdf、pdfplumber 等)、數學(sympy、mpmath),以及 unzip、rg、sqlite 等命令行工具。完整列表見官方頁面。

容器複用: 響應裏有頂層 container 對象,帶 id 和 expires_at。把這個 ID 通過請求的頂層 container 參數傳回,就能繼續使用同一個容器、保留創建的文件。官方說明:容器約 5 分鐘不活動會被存檔,在 30 天內帶 ID 請求可以恢復;響應裏的 expires_at 是更短的滾動值,不代表 30 天的上限。使用 code_execution_20260120 或更新版本並配合程序化工具調用時,Python 解釋器狀態(比如變量)也會保留。

計費(官方頁面 2026-11-05):

  • 與聯網搜尋 / 網頁抓取(web_search_20260209、web_fetch_20260209 或更新)一起用,除標準 token 外無額外費用;
  • 單獨使用時按執行時間計費,與 token 分開統計:最少 5 分鐘;每個組織每月有 1,550 小時免費;超出部分每個容器每小時 0.05 美元;
  • 用量在響應的 usage.server_tool_use.code_execution_requests 裏體現。

價格以官方頁面當前顯示為準。聯網搜尋見 /guides/claude-api-web-search-tool。

六、和你自己的執行工具一起用

官方提醒:如果同時提供了你自己的、也能執行代碼的客戶端工具(比如 Bash 工具或自定義 REPL),Claude 面對的是「多台計算機」的環境:代碼執行工具在 Anthropic 的沙盒容器裏,你的工具在你控制的另一個環境裏,Claude 有時會用錯工具,或誤以為兩邊狀態共享。解決辦法是在系統提示詞裏寫清區別,官方給了一段示例,要點是:變量和文件不會在不同環境間保留;通用計算用 code_execution;需要訪問用戶本地文件時用客戶端工具;要傳結果就在後續調用裏明確帶上。聯網搜尋和網頁抓取會自動啟用代碼執行,所以組合使用時尤其要注意。

常見問題

Q:能裝自己需要的 Python 包嗎?

不能。官方說容器沒有網絡,不能運行時下載或安裝包,只能用預裝庫。

Q:能用在 Bedrock、Vertex 上嗎?

官方頁面的支持平台列了 Claude API、Claude Platform on AWS、Claude Models on Google Cloud(Anthropic 託管)和 Microsoft Foundry(託管在 Anthropic 上)。其他平台請看官方「Availability」一節。

Q:數據會保留多久?敏感數據能用嗎?

官方說明容器數據最多保留 30 天,並且代碼執行不符合零數據保留條件。涉及敏感數據請先自行評估。

Q:429 怎麼辦?

見 /guides/claude-api-error-429-rate-limit。

相關教學

參考資料

  • Claude 開發者平台文檔:Code execution tool — https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool

Nathaniel 的更多內容

  1. 01

    Claude Personal Finance 是什麼:連銀行帳戶問花銷、怎麼開、只讀權限、誰能用、怎麼解除

    Claude 的 Personal Finance(beta)通過 Plaid 只讀連接你的銀行、信用卡、貸款和投資帳戶,在一頁裏看餘額和花銷並用自然語言提問。本文按官方幫助頁講誰能用(僅美國、Pro/Max/Ultra)、連接與解除步驟、Claude 能看什麼,以及它做不到的事。

    Claude0
  2. 02

    Claude Code 離開一小時回來對話被「壓縮」了:Idle compaction 是什麼、條件、怎麼關

    Claude Code 的 idle compaction 會在你離開約一小時後,把 200K token 以上的長對話先壓縮成摘要,下一條消息就不用重新處理整段歷史。本文按官方文檔講觸發條件、看到什麼提示、用 /config 或 idleCompaction 關閉、調閾值,以及恢復舊對話的用量警告。

    Claude0
  3. 03

    ChatGPT Computer History 是什麼:Mac 桌面端的活動記憶怎麼開、怎麼暫停和清除、誰能用

    Computer History 是 ChatGPT macOS 桌面應用裏預設關閉的可選功能,把你在應用和網站裏的活動整理成記憶和時間線,供 ChatGPT 與 Codex 引用。本文按官方文檔講怎麼開、記錄什麼不記錄什麼、怎麼暫停與清除、數據存哪、誰能用,以及提示注入風險。

    ChatGPTCodex0
  4. 04

    Codex 輸入框出現灰色建議:Composer predictions 是什麼、Tab 接受、怎麼關、誰能用

    Codex 桌面 App 的 Composer predictions(beta)會在 Codex 回完後,根據當前對話在輸入框裏給出下一條消息的建議,按 Tab 接受、不會自動發送。本文按官方幫助頁講誰能用、哪些線程支持、怎麼關、算不算額度,以及沒出現時怎麼查。

    ChatGPTCodex0
  5. 05

    ChatGPT 私隱中心(Privacy Center)在哪裏:私隱設定入口、三大分類和哪些套餐有

    ChatGPT 的 Privacy Center 把記憶、廣告、位置、臨時對話、鎖定對話、兩步驗證、模型改進、數據導出和刪號等入口集中到一頁。本文按官方幫助頁講怎麼打開、三大分類各有什麼、哪些套餐有,以及它不會替你改任何設定。

    ChatGPT0
  6. 06

    Claude Code 處理大倉庫:怎麼讓它只看需要的目錄(子目錄 CLAUDE.md、claudeMdExcludes、deny 規則)

    倉庫太大,Claude Code 總在讀無關文件、讀進別的包的規則?本文按官方大倉庫指南講:從哪個目錄啟動、子目錄 CLAUDE.md、claudeMdExcludes、Read 的 deny 規則、worktree.sparsePaths、additionalDirectories,以及一份合併後的配置示例。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 在 CI 裏跑:從本機 claude -p 到 GitHub Actions 的完整例子(自動審 PR、控成本)

    一條線走完 Claude Code 的 CI 用法:先在本機用 claude --bare -p 配 --json-schema 跑通,再寫進 GitHub Actions 用 claude-code-action@v1 自動審 PR,最後加上 --max-turns、超時、並發限制來控成本,並附上常見故障的排查順序。

    Claude0
  2. 02

    Claude Code 自定義 subagent 實例:測試員、調試員、只讀調研員、只讀數據庫員怎麼寫

    四個可直接改的 subagent 實例:跑測試的 test-runner、找根因的 debugger、只讀調研員、用 PreToolUse hook 限成只讀 SQL 的 db-reader;講 tools、disallowedTools、model、maxTurns 怎麼配,怎麼點名調用。

    Claude0
  3. 03

    Claude Code 的 CLAUDE.md 模板:前端、後端、數據分析各一份,附拆分與自檢方法

    直接拿去改的三份 CLAUDE.md 模板(前端、後端、數據分析),每份都控制在官方建議的 200 行以內;再講怎麼用 .claude/rules 的 paths 拆出專屬規則、用 @ 導入長文檔,以及用 /context all 和 /doctor prompt-audit 檢查是否生效。

    Claude0
  4. 04

    Claude Code 自己寫一個插件並發布到 marketplace:plugin.json、marketplace.json、validate 到團隊安裝的完整流程

    想把自己寫的 Skill、Hook 打包給團隊用?按 Claude Code 官方 Plugins 文檔,從目錄結構、plugin.json、claude plugin validate,到寫 marketplace.json、推到 Git、讓同事一條命令安裝,再到版本更新,走完一遍完整流程。

    Claude0
  5. 05

    Claude Code 寫一個會自動觸發的 Skill:從需求到觸發,用 description、when_to_use 和 paths 控制它什麼時候出場

    寫好的 Skill 總是不觸發,或者什麼都觸發?本文按 Claude Code 官方「Extend Claude with skills」走一遍完整實例:把「改數據庫遷移前先檢查」寫成一個會自動出場的 Skill,包含 description、when_to_use、paths、附帶腳本、觸發測試和評估。

    Claude0
  6. 06

    Claude Code 配 Sentry MCP 排查線上報錯:添加命令、瀏覽器授權、貼 issue 連結修 bug 和插件子智能體

    線上報錯只能手動複製堆棧給 Claude Code?Sentry 官方提供 MCP 服務,可以讓它直接讀 issue、堆棧和 trace。本文按 Claude Code 官方 MCP 文檔和 Sentry MCP 官方說明,講添加命令、/mcp 授權、典型排查流程、插件方式和自託管注意事項。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~