Claude kann Daten analysieren, Visualisierungen erstellen, komplexe Berechnungen durchführen, Systembefehle ausführen, Dateien erstellen und bearbeiten sowie hochgeladene Dateien direkt innerhalb der API-Konversation verarbeiten. Das Code-Execution-Tool ermöglicht es Claude, Bash-Befehle auszuführen und Dateien zu manipulieren, einschließlich des Schreibens von Code, in einer sicheren Sandbox-Umgebung.
Code-Ausführung ist kostenlos, wenn sie mit Websuche oder Web-Fetch verwendet wird. Wenn web_search_20260209 (oder neuer) oder web_fetch_20260209 (oder neuer) in deiner Anfrage enthalten ist, fallen für Aufrufe des Code-Execution-Tools keine zusätzlichen Kosten über die standardmäßigen Input- und Output-Token-Kosten hinaus an. Die Standardgebühren für Code-Ausführung gelten, wenn diese Tools nicht enthalten sind.
Code-Ausführung ist ein zentrales Grundelement für den Aufbau leistungsstarker Agenten. Sie ermöglicht dynamisches Filtern in den Websuche- und Web-Fetch-Tools, sodass Claude Ergebnisse verarbeiten kann, bevor sie das Kontextfenster erreichen – das verbessert die Genauigkeit und reduziert gleichzeitig den Token-Verbrauch.
Teile dein Feedback zu dieser Funktion über das Feedback-Formular mit uns.
Diese Funktion ist nicht für Zero Data Retention (ZDR) qualifiziert. Daten werden gemäß der standardmäßigen Aufbewahrungsrichtlinie der Funktion gespeichert.
Das Code-Execution-Tool ist für die folgenden Modelle verfügbar:
| Modell | Tool-Versionen |
|---|---|
| Claude Fable 5 (claude-fable-5) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Mythos 5 (claude-mythos-5) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Sonnet 5 (claude-sonnet-5) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.8 (claude-opus-4-8) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.7 (claude-opus-4-7) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.6 (claude-opus-4-6) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Sonnet 4.6 (claude-sonnet-4-6) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.5 (claude-opus-4-5-20251101) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Haiku 4.5 (claude-haiku-4-5-20251001) | code_execution_20250825 |
| Claude Opus 4.1 (claude-opus-4-1-20250805) (veraltet) | code_execution_20250825 |
code_execution_20250825 unterstützt Bash-Befehle und Dateioperationen und ist für jedes Modell in der Tabelle verfügbar. code_execution_20260120 fügt REPL-Zustandspersistenz und programmatische Tool-Aufrufe aus der Sandbox heraus hinzu und ist nur für Claude Fable 5, Claude Mythos 5, Opus 4.5+ und Sonnet 4.5+ verfügbar. code_execution_20260521 ist dieselbe Laufzeitumgebung wie _20260120, wobei das Ausführungszeitlimit pro Zelle in der Tool-Beschreibung offengelegt wird, sodass Claude lang laufende Zellen entsprechend einplanen kann. Jede Zelle hat ein Wall-Clock-Zeitlimit von 90 Sekunden; Code, der dieses überschreitet, gibt ein detection_timeout-Ergebnis zurück. Wenn du noch die Legacy-Version code_execution_20250522 (nur Python) verwendest, siehe Upgrade auf die neueste Tool-Version, um davon zu migrieren.
Ältere Tool-Versionen sind nicht garantiert abwärtskompatibel mit neueren Modellen. Verwende immer die Tool-Version, die deiner Modellversion entspricht.
Code-Ausführung ist verfügbar auf:
Code-Ausführung ist derzeit nicht auf Amazon Bedrock oder Google Cloud verfügbar.
Für Claude Mythos Preview wird Code-Ausführung nur auf der Claude API und Microsoft Foundry unterstützt. Sie ist für Mythos Preview nicht auf Amazon Bedrock, Google Cloud oder Claude Platform on AWS verfügbar.
Hier ist ein einfaches Beispiel, das Claude bittet, eine Berechnung durchzuführen:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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"}],
)
print(response)Wenn du das Code-Execution-Tool zu deiner API-Anfrage hinzufügst:
Claude führt Code aus, wenn die Anfrage von Berechnungen oder Dateiverarbeitung profitiert:
Claude antwortet direkt ohne Code-Ausführung bei:
Wenn du möchtest, dass Claude bei einer Grenzfall-Anfrage Code ausführt, frage explizit danach (zum Beispiel: „Führe Code aus, um das zu verifizieren").
Wenn du Code-Ausführung zusammen mit clientseitig bereitgestellten Tools anbietest, die ebenfalls Code ausführen (wie ein Bash-Tool oder ein benutzerdefiniertes REPL), arbeitet Claude in einer Multi-Computer-Umgebung. Das Code-Execution-Tool läuft in Anthropics Sandbox-Container, während deine clientseitig bereitgestellten Tools in einer separaten Umgebung laufen, die du kontrollierst. Claude kann diese Umgebungen manchmal verwechseln und versuchen, das falsche Tool zu verwenden oder anzunehmen, dass der Zustand zwischen ihnen geteilt wird.
Um das zu vermeiden, füge deinem System-Prompt Anweisungen hinzu, die den Unterschied klarstellen:
When multiple code execution environments are available, be aware that:
- Variables, files, and state do NOT persist between different execution environments
- Use the code_execution tool for general-purpose computation in Anthropic's sandboxed environment
- Use client-provided execution tools (e.g., bash) when you need access to the user's local system, files, or data
- If you need to pass results between environments, explicitly include outputs in subsequent tool calls rather than assuming shared stateDas ist besonders wichtig, wenn du Code-Ausführung mit Websuche oder Web-Fetch kombinierst, die Code-Ausführung automatisch aktivieren. Wenn deine Anwendung bereits ein clientseitiges Shell-Tool bereitstellt, erzeugt die automatische Code-Ausführung eine zweite Ausführungsumgebung, zwischen denen Claude unterscheiden muss.
Um deine eigenen Datendateien (wie CSV, Excel oder Bilder) zu analysieren, lade sie über die Files API hoch und referenziere sie in deiner Anfrage:
Die Verwendung der Files API mit Code Execution erfordert den Files-API-Beta-Header: "anthropic-beta": "files-api-2025-04-14"
Die Python-Umgebung kann verschiedene Dateitypen verarbeiten, die über die Files API hochgeladen wurden, darunter:
container_upload-Content-Blockclient = anthropic.Anthropic()
# Lade eine Datei hoch
file_object = client.beta.files.upload(
file=open("data.csv", "rb"),
)
# Verwende die file_id mit der Code-Ausführung
response = client.beta.messages.create(
model="claude-opus-4-8",
betas=["files-api-2025-04-14"],
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)Wenn Claude während der Code-Ausführung Dateien erstellt, kannst du diese Dateien über die Files API abrufen:
# Initialisiere den Client
client = Anthropic()
# Fordere Code-Ausführung an, die Dateien erstellt
response = client.beta.messages.create(
model="claude-opus-4-8",
betas=["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"}],
)
# Extrahiere 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":
# konkret typisierte Liste: List[BashCodeExecutionOutputBlock]
for file in content_item.content:
file_ids.append(file.file_id)
return file_ids
# Lade 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}")Das Code-Execution-Tool 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-Execution-Tool kann je nach Operation 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 bei erfolgreicher Ausführungstderr: Fehlermeldungen, wenn die Ausführung fehlschlägtreturn_code: 0 bei Erfolg, ungleich Null bei FehlerZusätzliche Felder für Dateioperationen:
file_type, content, numLines, startLine, totalLinesis_file_update (ob die Datei bereits existierte)oldStart, oldLines, newStart, newLines, lines (Diff-Format)Jeder Tool-Typ kann spezifische Fehler zurückgeben:
Allgemeine 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 das maximale Zeitlimit überschritten |
| Alle Tools | container_expired | Container ist abgelaufen und nicht mehr verfügbar |
| Alle Tools | invalid_tool_input | Ungültige Parameter an das Tool übergeben |
| Alle Tools | too_many_requests | Ratenlimit für Tool-Nutzung überschritten |
| bash | output_file_too_large | Befehlsausgabe hat die maximale Größe überschritten |
| text_editor | file_not_found | Datei existiert nicht (für View-/Edit-Operationen) |
| text_editor | string_not_found | Der old_str wurde in der Datei nicht gefunden (für str_replace) |
pause_turn-Stop-ReasonDie Antwort kann einen pause_turn-Stop-Reason enthalten, der anzeigt, dass die API einen lang laufenden Turn pausiert hat. Du kannst die Antwort unverändert in einer nachfolgenden Anfrage zurückgeben, damit Claude seinen Turn fortsetzt, oder den Inhalt ändern, wenn du die Konversation unterbrechen möchtest.
Das Code-Execution-Tool läuft in einer sicheren, containerisierten Umgebung, die speziell für Code-Ausführung entwickelt wurde, mit einem stärkeren Fokus auf Python.
Die Sandbox-Python-Umgebung enthält diese häufig verwendeten Bibliotheken:
Du kannst einen bestehenden Container über mehrere API-Anfragen hinweg wiederverwenden, indem du die Container-ID aus einer vorherigen Antwort angibst. Dadurch kannst du erstellte Dateien zwischen Anfragen beibehalten.
# Erste Anfrage: Erstelle eine Datei mit einer Zufallszahl
response1 = client.messages.create(
model="claude-opus-4-8",
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"}],
)
# Extrahiere die Container-ID aus der ersten Antwort
container_id = response1.container.id
# Zweite Anfrage: Verwende den Container erneut, um die Datei zu lesen
response2 = client.messages.create(
container=container_id, # Reuse the same container
model="claude-opus-4-8",
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"}],
)
print(response2)Wenn Streaming aktiviert ist, erhältst du Code-Execution-Events, sobald 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 execution streamed
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 while code executes
// Execution results streamed
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": ""}}}Du kannst das Code-Execution-Tool in die Messages Batches API einbinden. Aufrufe des Code-Execution-Tools über die Messages Batches API werden genauso berechnet wie in regulären Messages-API-Anfragen.
Code-Ausführung ist kostenlos, wenn sie mit Websuche oder Web-Fetch verwendet wird. Wenn web_search_20260209 (oder neuer) oder web_fetch_20260209 (oder neuer) in deiner API-Anfrage enthalten ist, fallen für Aufrufe des Code-Ausführungs-Tools keine zusätzlichen Kosten an, abgesehen von den standardmäßigen Kosten für Input- und Output-Token.
Bei Verwendung ohne diese Tools wird die Code-Ausführung nach Ausführungszeit abgerechnet, die getrennt von der Token-Nutzung erfasst wird:
Die Nutzung der Code-Ausführung wird in der Antwort erfasst:
{
"usage": {
"input_tokens": 105,
"output_tokens": 239,
"server_tool_use": {
"code_execution_requests": 1
}
}
}Durch ein Upgrade auf code-execution-2025-08-25 erhältst du Zugriff auf Dateimanipulation und Bash-Fähigkeiten, 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 |
| Fähigkeiten | Nur Python | Bash-Befehle, Dateioperationen |
| Antworttypen | code_execution_result | bash_code_execution_result, text_editor_code_execution_result |
Um ein Upgrade durchzuführen, aktualisiere den Tool-Typ in deinen API-Anfragen:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"Überprüfe die Antwortverarbeitung (wenn du Antworten programmatisch parst):
Informationen zum Ausführen von Tools innerhalb des Code-Execution-Containers findest du unter Programmatische Tool-Aufrufe.
Code-Ausführung läuft in serverseitigen Sandbox-Containern. Container-Daten, einschließlich Ausführungsartefakten, hochgeladenen Dateien und Ausgaben, werden bis zu 30 Tage aufbewahrt. Diese Aufbewahrung gilt für alle Daten, die innerhalb der Container-Umgebung verarbeitet werden. Dateien, die Code-Ausführung in der Files API erstellt (abrufbar über client.beta.files.download()), bleiben bestehen, bis sie explizit gelöscht werden.
Informationen zur ZDR-Eignung über alle Funktionen hinweg findest du unter API und Datenaufbewahrung.
Das Code-Execution-Tool ermöglicht es Claude, Agent Skills zu verwenden. Skills sind modulare Fähigkeiten, die aus Anweisungen, Skripten und Ressourcen bestehen und Claudes Funktionalität erweitern.
Erfahre mehr unter Agent Skills und Agent Skills mit der API verwenden.
Was this page helpful?