Claude kann Daten analysieren, Visualisierungen erstellen, komplexe Berechnungen durchführen, Systembefehle ausführen, Dateien erstellen und bearbeiten sowie hochgeladene Dateien direkt in der API-Konversation verarbeiten. Das Code-Ausführungstool ermöglicht Claude, Bash-Befehle auszuführen und Dateien in einer sicheren, isolierten Umgebung zu manipulieren, einschließlich des Schreibens von Code.
Das Code-Ausführungstool befindet sich derzeit in der öffentlichen Beta.
Um diese Funktion zu nutzen, fügen Sie den "code-execution-2025-08-25" Beta-Header zu Ihren API-Anfragen hinzu.
Das Code-Ausführungstool ist auf den folgenden Modellen verfügbar:
| Modell | Tool-Version |
|---|---|
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) (veraltet) | code_execution_20250825 |
Claude Haiku 4.5 (claude-haiku-4-5-20251001) | code_execution_20250825 |
Claude Haiku 3.5 (claude-3-5-haiku-latest) (veraltet) | code_execution_20250825 |
Die aktuelle Version code_execution_20250825 unterstützt Bash-Befehle und Dateivorgänge. Eine ältere Version code_execution_20250522 (nur Python) ist ebenfalls verfügbar. Siehe Upgrade auf die neueste Tool-Version für Migrationsinformationen.
Ältere Tool-Versionen sind nicht garantiert rückwärtskompatibel mit neueren Modellen. Verwenden Sie immer die Tool-Version, die Ihrer Modellversion entspricht.
Hier ist ein einfaches Beispiel, das Claude auffordert, eine Berechnung durchzuführen:
Wenn Sie das Code-Ausführungstool zu Ihrer API-Anfrage hinzufügen:
Bitten Sie Claude, Systeminformationen zu überprüfen und Pakete zu installieren:
Claude kann Dateien direkt in der Sandbox mit den Dateiverwaltungsfunktionen erstellen, anzeigen und bearbeiten:
Um Ihre eigenen Datendateien (CSV, Excel, Bilder usw.) zu analysieren, laden Sie diese über die Files API hoch und referenzieren Sie sie in Ihrer Anfrage:
Die Verwendung der Files API mit Code Execution erfordert zwei Beta-Header: "anthropic-beta": "code-execution-2025-08-25,files-api-2025-04-14"
Die Python-Umgebung kann verschiedene Dateitypen verarbeiten, die über die Files API hochgeladen werden, einschließlich:
container_upload Content-BlockWenn Claude während der Code-Ausführung Dateien erstellt, können Sie diese Dateien mit der Files API abrufen:
Ein komplexer Workflow mit allen Funktionen:
Das Code-Ausführungstool erfordert keine zusätzlichen Parameter:
{
"type": "code_execution_20250825",
"name": "code_execution"
}Wenn dieses Tool bereitgestellt wird, erhält Claude automatisch Zugriff auf zwei Sub-Tools:
bash_code_execution: Shell-Befehle ausführentext_editor_code_execution: Dateien anzeigen, erstellen und bearbeiten, einschließlich des Schreibens von CodeDas Code-Ausführungstool kann je nach Vorgang zwei Arten von Ergebnissen zurückgeben:
{
"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
}
}Datei anzeigen:
{
"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
}
}Datei erstellen:
{
"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
}
}Datei bearbeiten (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"]
}
}Alle Ausführungsergebnisse enthalten:
stdout: Ausgabe aus erfolgreicher Ausführungstderr: Fehlermeldungen bei fehlgeschlagener Ausführungreturn_code: 0 für Erfolg, nicht-null für FehlerZusätzliche Felder für Dateivorgänge:
file_type, content, numLines, startLine, totalLinesis_file_update (ob Datei bereits existierte)oldStart, oldLines, newStart, newLines, lines (Diff-Format)Jeder Tool-Typ kann spezifische Fehler zurückgeben:
Häufige Fehler (alle Tools):
{
"type": "bash_code_execution_tool_result",
"tool_use_id": "srvtoolu_01VfmxgZ46TiHbmXgy928hQR",
"content": {
"type": "bash_code_execution_tool_result_error",
"error_code": "unavailable"
}
}Fehlercodes nach Tool-Typ:
| Tool | Fehlercode | Beschreibung |
|---|---|---|
| Alle Tools | unavailable | Das Tool ist vorübergehend nicht verfügbar |
| Alle Tools | execution_time_exceeded | Ausführung hat maximales Zeitlimit überschritten |
| Alle Tools | container_expired | Container ist abgelaufen und nicht mehr verfügbar |
| Alle Tools | invalid_tool_input | Ungültige Parameter für das Tool bereitgestellt |
| Alle Tools | too_many_requests | Rate Limit für Tool-Nutzung überschritten |
| text_editor | file_not_found |
pause_turn Stop-GrundDie Antwort kann einen pause_turn Stop-Grund enthalten, der anzeigt, dass die API einen lang laufenden Turn pausiert hat. Sie können die Antwort in einer nachfolgenden Anfrage unverändert bereitstellen, um Claude seinen Turn fortsetzen zu lassen, oder den Inhalt ändern, wenn Sie das Gespräch unterbrechen möchten.
Das Code-Ausführungstool wird in einer sicheren, containerisierten Umgebung ausgeführt, die speziell für die Code-Ausführung mit stärkerem Fokus auf Python konzipiert ist.
Die Sandbox-Python-Umgebung enthält diese häufig verwendeten Bibliotheken:
Sie können einen vorhandenen Container über mehrere API-Anfragen hinweg wiederverwenden, indem Sie die Container-ID aus einer vorherigen Antwort bereitstellen. Dies ermöglicht es Ihnen, erstellte Dateien zwischen Anfragen beizubehalten.
Mit aktiviertem Streaming erhalten Sie Code-Ausführungsereignisse, während sie auftreten:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "code_execution"}}
// Code-Ausführung gestreamt
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())\"}"}}
// Pause während Code ausgeführt wird
// Ausführungsergebnisse gestreamt
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": ""}}}Sie können das Code-Ausführungstool in die Messages Batches API einbeziehen. Code-Ausführungstool-Aufrufe über die Messages Batches API werden genauso berechnet wie die in regulären Messages API-Anfragen.
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.
Durch das Upgrade auf code-execution-2025-08-25 erhalten Sie Zugriff auf Dateiverwaltung und Bash-Funktionen, einschließlich Code in mehreren Sprachen. Es gibt keinen Preisunterschied.
| Komponente | Legacy | Aktuell |
|---|---|---|
| Beta-Header | code-execution-2025-05-22 | code-execution-2025-08-25 |
| Tool-Typ | code_execution_20250522 | code_execution_20250825 |
| Funktionen | Nur Python | Bash-Befehle, Dateivorgänge |
| Antworttypen | code_execution_result | bash_code_execution_result, text_editor_code_execution_result |
Um ein Upgrade durchzuführen, müssen Sie die folgenden Änderungen in Ihren API-Anfragen vornehmen:
Aktualisieren Sie den Beta-Header:
- "anthropic-beta": "code-execution-2025-05-22"
+ "anthropic-beta": "code-execution-2025-08-25"Aktualisieren Sie den Tool-Typ:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"Überprüfen Sie die Antwortbehandlung (wenn Sie Antworten programmgesteuert analysieren):
Das Code-Ausführungstool ermöglicht programmgesteuerte Tool-Aufrufe, die Claude ermöglichen, Code zu schreiben, der Ihre benutzerdefinierten Tools programmgesteuert im Ausführungscontainer aufruft. Dies ermöglicht effiziente Multi-Tool-Workflows, Datenfilterung vor Erreichen von Claudes Kontext und komplexe bedingte Logik.
# Aktivieren Sie programmgesteuerte Aufrufe für Ihre Tools
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"] # Aktivieren Sie programmgesteuerte Aufrufe
}
]
)Weitere Informationen finden Sie in der Dokumentation zu programmgesteuerten Tool-Aufrufen.
Das Code-Ausführungstool ermöglicht Claude, Agent Skills zu verwenden. Skills sind modulare Funktionen, die aus Anweisungen, Skripten und Ressourcen bestehen, die Claudes Funktionalität erweitern.
Weitere Informationen finden Sie in der Agent Skills-Dokumentation und Agent Skills API-Anleitung.
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"
}]
}'# Laden Sie zunächst eine Datei hoch
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"' \
# Verwenden Sie dann die file_id mit 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,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
# Initialisieren Sie den Client
client = Anthropic()
# Fordern Sie Code-Ausführung an, die Dateien erstellt
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"
}]
)
# Extrahieren Sie Datei-IDs aus der Antwort
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
# Laden Sie die erstellten Dateien herunter
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}")# Laden Sie zunächst eine Datei hoch
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
# Extrahieren Sie file_id (mit jq)
FILE_ID=$(jq -r '.id' file_response.json)
# Verwenden Sie es dann mit 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,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"
}]
}'| Datei existiert nicht (für view/edit-Vorgänge) |
| text_editor | string_not_found | Der old_str wurde in der Datei nicht gefunden (für str_replace) |
import os
from anthropic import Anthropic
# Initialisieren Sie den Client
client = Anthropic(
api_key=os.getenv("ANTHROPIC_API_KEY")
)
# Erste Anfrage: Erstellen Sie eine Datei mit einer Zufallszahl
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"
}]
)
# Extrahieren Sie die Container-ID aus der ersten Antwort
container_id = response1.container.id
# Zweite Anfrage: Verwenden Sie den Container erneut, um die Datei zu lesen
response2 = client.beta.messages.create(
container=container_id, # Verwenden Sie denselben Container erneut
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"
}]
)