Claudeはデータを分析し、可視化を作成し、複雑な計算を実行し、システムコマンドを実行し、ファイルを作成・編集し、APIの会話内でアップロードされたファイルを直接処理できます。 コード実行ツールにより、Claudeはセキュアなサンドボックス環境でBashコマンドを実行し、コードの記述を含むファイルを操作できます。
コード実行ツールは現在パブリックベータ版です。
この機能を使用するには、APIリクエストに"code-execution-2025-08-25" ベータヘッダーを追加してください。
コード実行ツールは以下のモデルで利用可能です:
| モデル | ツールバージョン |
|---|---|
Claude Opus 4.5 (claude-opus-4-5-20251101) | code_execution_20250825 |
Claude Opus 4.1 (claude-opus-4-1-20250805) | code_execution_20250825 |
Claude Opus 4 (claude-opus-4-20250514) | code_execution_20250825 |
Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) | code_execution_20250825 |
Claude Sonnet 4 (claude-sonnet-4-20250514) | code_execution_20250825 |
Claude Sonnet 3.7 (claude-3-7-sonnet-20250219) (非推奨) | code_execution_20250825 |
Claude Haiku 4.5 (claude-haiku-4-5-20251001) | code_execution_20250825 |
Claude Haiku 3.5 (claude-3-5-haiku-latest) (非推奨) | code_execution_20250825 |
現在のバージョンcode_execution_20250825はBashコマンドとファイル操作をサポートしています。レガシーバージョンcode_execution_20250522(Pythonのみ)も利用可能です。移行の詳細については最新ツールバージョンへのアップグレードを参照してください。
古いツールバージョンは、新しいモデルとの下位互換性が保証されていません。常にモデルバージョンに対応するツールバージョンを使用してください。
Claudeに計算を実行するよう依頼する簡単な例を以下に示します:
APIリクエストにコード実行ツールを追加すると:
Claudeにシステム情報を確認し、パッケージをインストールするよう依頼します:
Claudeはサンドボックス内のファイル操作機能を使用して、ファイルを直接作成、表示、編集できます:
独自のデータファイル(CSV、Excel、画像など)を分析するには、Files APIを使用してアップロードし、リクエストで参照します:
Files APIをコード実行と一緒に使用するには、2つのベータヘッダーが必要です:"anthropic-beta": "code-execution-2025-08-25,files-api-2025-04-14"
Python環境は、Files APIを通じてアップロードされた様々なファイルタイプを処理できます:
container_uploadコンテンツブロックを使用してメッセージ内でファイルを参照Claudeがコード実行中にファイルを作成する場合、Files APIを使用してこれらのファイルを取得できます:
すべての機能を使用した複雑なワークフロー:
コード実行ツールは追加のパラメータを必要としません:
{
"type": "code_execution_20250825",
"name": "code_execution"
}このツールが提供されると、Claudeは自動的に2つのサブツールにアクセスできます:
bash_code_execution:シェルコマンドを実行text_editor_code_execution:ファイルを表示、作成、編集し、コードを記述コード実行ツールは操作に応じて2つのタイプの結果を返すことができます:
{
"type": "server_tool_use",
"id": "srvtoolu_01B3C4D5E6F7G8H9I0J1K2L3",
"name": "bash_code_execution",
"input": {
"command": "ls -la | head -5"
}
},
{
"type": "bash_code_execution_tool_result",
"tool_use_id": "srvtoolu_01B3C4D5E6F7G8H9I0J1K2L3",
"content": {
"type": "bash_code_execution_result",
"stdout": "total 24\ndrwxr-xr-x 2 user user 4096 Jan 1 12:00 .\ndrwxr-xr-x 3 user user 4096 Jan 1 11:00 ..\n-rw-r--r-- 1 user user 220 Jan 1 12:00 data.csv\n-rw-r--r-- 1 user user 180 Jan 1 12:00 config.json",
"stderr": "",
"return_code": 0
}
}ファイルを表示:
{
"type": "server_tool_use",
"id": "srvtoolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "text_editor_code_execution",
"input": {
"command": "view",
"path": "config.json"
}
},
{
"type": "text_editor_code_execution_tool_result",
"tool_use_id": "srvtoolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": {
"type": "text_editor_code_execution_result",
"file_type": "text",
"content": "{\n \"setting\": \"value\",\n \"debug\": true\n}",
"numLines": 4,
"startLine": 1,
"totalLines": 4
}
}ファイルを作成:
{
"type": "server_tool_use",
"id": "srvtoolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "text_editor_code_execution",
"input": {
"command": "create",
"path": "new_file.txt",
"file_text": "Hello, World!"
}
},
{
"type": "text_editor_code_execution_tool_result",
"tool_use_id": "srvtoolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": {
"type": "text_editor_code_execution_result",
"is_file_update": false
}
}ファイルを編集(str_replace):
{
"type": "server_tool_use",
"id": "srvtoolu_01E6F7G8H9I0J1K2L3M4N5O6",
"name": "text_editor_code_execution",
"input": {
"command": "str_replace",
"path": "config.json",
"old_str": "\"debug\": true",
"new_str": "\"debug\": false"
}
},
{
"type": "text_editor_code_execution_tool_result",
"tool_use_id": "srvtoolu_01E6F7G8H9I0J1K2L3M4N5O6",
"content": {
"type": "text_editor_code_execution_result",
"oldStart": 3,
"oldLines": 1,
"newStart": 3,
"newLines": 1,
"lines": ["- \"debug\": true", "+ \"debug\": false"]
}
}すべての実行結果には以下が含まれます:
stdout:正常な実行からの出力stderr:実行が失敗した場合のエラーメッセージreturn_code:成功時は0、失敗時は0以外ファイル操作の追加フィールド:
file_type、content、numLines、startLine、totalLinesis_file_update(ファイルが既に存在したかどうか)oldStart、oldLines、newStart、newLines、lines(diff形式)各ツールタイプは特定のエラーを返すことができます:
共通エラー(すべてのツール):
{
"type": "bash_code_execution_tool_result",
"tool_use_id": "srvtoolu_01VfmxgZ46TiHbmXgy928hQR",
"content": {
"type": "bash_code_execution_tool_result_error",
"error_code": "unavailable"
}
}ツールタイプ別エラーコード:
| ツール | エラーコード | 説明 |
|---|---|---|
| すべてのツール | unavailable | ツールは一時的に利用できません |
| すべてのツール | execution_time_exceeded | 実行が最大時間制限を超過しました |
| すべてのツール | container_expired | コンテナが期限切れで利用できなくなりました |
| すべてのツール | invalid_tool_input | ツールに無効なパラメータが提供されました |
| すべてのツール | too_many_requests | ツール使用のレート制限を超過しました |
| text_editor | file_not_found | ファイルが存在しません(表示/編集操作の場合) |
| text_editor |
pause_turn停止理由レスポンスにpause_turn停止理由が含まれる場合があります。これはAPIが長時間実行されるターンを一時停止したことを示します。後続のリクエストでレスポンスをそのまま提供してClaudeのターンを続行させるか、会話を中断したい場合はコンテンツを変更できます。
コード実行ツールはセキュアなコンテナ化環境で実行され、特にPythonに重点を置いて設計されています。
サンドボックス化されたPython環境には、これらの一般的に使用されるライブラリが含まれています:
前のレスポンスからコンテナIDを提供することで、複数のAPIリクエスト間で既存のコンテナを再利用できます。 これにより、リクエスト間で作成されたファイルを保持できます。
ストリーミングが有効な場合、コード実行イベントが発生時に受け取られます:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "code_execution"}}
// コード実行がストリーミング
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"code\":\"import pandas as pd\\ndf = pd.read_csv('data.csv')\\nprint(df.head())\"}"}}
// コード実行中に一時停止
// 実行結果がストリーミング
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "code_execution_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"stdout": " A B C\n0 1 2 3\n1 4 5 6", "stderr": ""}}}Messages Batches APIにコード実行ツールを含めることができます。Messages Batches APIを通じたコード実行ツール呼び出しは、通常のMessages APIリクエストと同じ価格です。
Code execution tool usage is tracked separately from token usage. Execution time has a minimum of 5 minutes. If files are included in the request, execution time is billed even if the tool is not used due to files being preloaded onto the container.
Each organization receives 1,550 free hours of usage with the code execution tool per month. Additional usage beyond the first 1,550 hours is billed at $0.05 per hour, per container.
code-execution-2025-08-25にアップグレードすることで、ファイル操作とBash機能(複数の言語でのコードを含む)にアクセスできます。価格に違いはありません。
| コンポーネント | レガシー | 現在 |
|---|---|---|
| ベータヘッダー | code-execution-2025-05-22 | code-execution-2025-08-25 |
| ツールタイプ | code_execution_20250522 | code_execution_20250825 |
| 機能 | Pythonのみ | Bashコマンド、ファイル操作 |
| レスポンスタイプ | code_execution_result | bash_code_execution_result、text_editor_code_execution_result |
アップグレードするには、APIリクエストで以下の変更を行う必要があります:
ベータヘッダーを更新:
- "anthropic-beta": "code-execution-2025-05-22"
+ "anthropic-beta": "code-execution-2025-08-25"ツールタイプを更新:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"レスポンス処理を確認(プログラムでレスポンスを解析する場合):
コード実行ツールはプログラマティックツール呼び出しを強化します。これにより、Claudeは実行コンテナ内でカスタムツールをプログラマティックに呼び出すコードを記述できます。これにより、効率的なマルチツールワークフロー、Claudeのコンテキストに到達する前のデータフィルタリング、および複雑な条件付きロジックが可能になります。
# ツールのプログラマティック呼び出しを有効化
response = client.beta.messages.create(
model="claude-sonnet-4-5",
betas=["advanced-tool-use-2025-11-20"],
max_tokens=4096,
messages=[{
"role": "user",
"content": "Get weather for 5 cities and find the warmest"
}],
tools=[
{
"type": "code_execution_20250825",
"name": "code_execution"
},
{
"name": "get_weather",
"description": "Get weather for a city",
"input_schema": {...},
"allowed_callers": ["code_execution_20250825"] # プログラマティック呼び出しを有効化
}
]
)詳細はプログラマティックツール呼び出しドキュメントを参照してください。
コード実行ツールにより、ClaudeはAgent Skillsを使用できます。Skillsは、Claudeの機能を拡張する命令、スクリプト、リソースで構成されたモジュール機能です。
詳細はAgent SkillsドキュメントおよびAgent Skills APIガイドを参照してください。
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: code-execution-2025-08-25" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "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"
}]
}'curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: code-execution-2025-08-25" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [{
"role": "user",
"content": "Check the Python version and list installed packages"
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: code-execution-2025-08-25" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [{
"role": "user",
"content": "Create a config.yaml file with database settings, then update the port from 5432 to 3306"
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'# まずファイルをアップロード
curl https://api.anthropic.com/v1/files \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: files-api-2025-04-14" \
--form 'file=@"data.csv"' \
# その後、file_idをコード実行と一緒に使用
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: code-execution-2025-08-25,files-api-2025-04-14" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Analyze this CSV data"},
{"type": "container_upload", "file_id": "file_abc123"}
]
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'from anthropic import Anthropic
# クライアントを初期化
client = Anthropic()
# ファイルを作成するコード実行をリクエスト
response = client.beta.messages.create(
model="claude-sonnet-4-5",
betas=["code-execution-2025-08-25", "files-api-2025-04-14"],
max_tokens=4096,
messages=[{
"role": "user",
"content": "Create a matplotlib visualization and save it as output.png"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
# レスポンスからファイルIDを抽出
def extract_file_ids(response):
file_ids = []
for item in response.content:
if item.type == 'bash_code_execution_tool_result':
content_item = item.content
if content_item.type == 'bash_code_execution_result':
for file in content_item.content:
if hasattr(file, 'file_id'):
file_ids.append(file.file_id)
return file_ids
# 作成されたファイルをダウンロード
for file_id in extract_file_ids(response):
file_metadata = client.beta.files.retrieve_metadata(file_id)
file_content = client.beta.files.download(file_id)
file_content.write_to_file(file_metadata.filename)
print(f"Downloaded: {file_metadata.filename}")# まずファイルをアップロード
curl https://api.anthropic.com/v1/files \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: files-api-2025-04-14" \
--form 'file=@"data.csv"' \
> file_response.json
# file_idを抽出(jqを使用)
FILE_ID=$(jq -r '.id' file_response.json)
# その後、コード実行と一緒に使用
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: code-execution-2025-08-25,files-api-2025-04-14" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [{
"role": "user",
"content": [
{
"type": "text",
"text": "Analyze this CSV data: create a summary report, save visualizations, and create a README with the findings"
},
{
"type": "container_upload",
"file_id": "'$FILE_ID'"
}
]
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'string_not_found |
old_strがファイル内に見つかりません(str_replaceの場合) |
import os
from anthropic import Anthropic
# クライアントを初期化
client = Anthropic(
api_key=os.getenv("ANTHROPIC_API_KEY")
)
# 最初のリクエスト:ランダムな数字を含むファイルを作成
response1 = client.beta.messages.create(
model="claude-sonnet-4-5",
betas=["code-execution-2025-08-25"],
max_tokens=4096,
messages=[{
"role": "user",
"content": "Write a file with a random number and save it to '/tmp/number.txt'"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
# 最初のレスポンスからコンテナIDを抽出
container_id = response1.container.id
# 2番目のリクエスト:コンテナを再利用してファイルを読み取る
response2 = client.beta.messages.create(
container=container_id, # 同じコンテナを再利用
model="claude-sonnet-4-5",
betas=["code-execution-2025-08-25"],
max_tokens=4096,
messages=[{
"role": "user",
"content": "Read the number from '/tmp/number.txt' and calculate its square"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)