Was this page helpful?
Claude kann Daten analysieren, Visualisierungen erstellen, komplexe Berechnungen durchführen, Systembefehle ausführen, Dateien erstellen und bearbeiten sowie hochgeladene Dateien direkt innerhalb des API-Gesprächs verarbeiten. Das Code-Ausführungstool ermöglicht es Claude, Bash-Befehle auszuführen und Dateien zu manipulieren, einschließlich des Schreibens von Code, in einer sicheren, isolierten Umgebung.
Die Code-Ausführung ist kostenlos, wenn sie mit Web-Suche oder Web-Abruf verwendet wird. Wenn web_search_20260209 oder web_fetch_20260209 in Ihrer Anfrage enthalten ist, fallen keine zusätzlichen Gebühren für Code-Ausführungstool-Aufrufe über die Standard-Eingabe- und Ausgabe-Token-Kosten hinaus an. Standard-Code-Ausführungsgebühren gelten, wenn diese Tools nicht enthalten sind.
Die Code-Ausführung ist ein Kernprimitive für die Erstellung leistungsstarker Agenten. Sie ermöglicht dynamische Filterung in Web-Such- und Web-Abruf-Tools, wodurch Claude Ergebnisse verarbeiten kann, bevor sie das Kontextfenster erreichen, was die Genauigkeit verbessert und den Token-Verbrauch reduziert.
Teilen Sie Ihr Feedback zu dieser Funktion über das Feedback-Formular mit.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Das Code-Ausführungstool ist auf den folgenden Modellen verfügbar:
| Modell | Tool-Versionen |
|---|---|
Claude Opus 4.7 (claude-opus-4-7) | code_execution_20250825, code_execution_20260120 |
Claude Opus 4.6 (claude-opus-4-6) | code_execution_20250825, code_execution_20260120 |
Claude Sonnet 4.6 (claude-sonnet-4-6) | code_execution_20250825, code_execution_20260120 |
Claude Opus 4.5 (claude-opus-4-5-20251101) | code_execution_20250825, code_execution_20260120 |
Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) | code_execution_20250825, code_execution_20260120 |
Claude Haiku 4.5 (claude-haiku-4-5-20251001) | code_execution_20250825 |
Claude Opus 4.1 (claude-opus-4-1-20250805) | code_execution_20250825 |
Claude Opus 4 (claude-opus-4-20250514) (veraltet) | code_execution_20250825 |
Claude Sonnet 4 (claude-sonnet-4-20250514) (veraltet) | code_execution_20250825 |
Claude Sonnet 3.7 (claude-3-7-sonnet-20250219) (veraltet) | code_execution_20250825 |
Claude Haiku 3.5 (claude-3-5-haiku-latest) (veraltet) | code_execution_20250825 |
code_execution_20250825 unterstützt Bash-Befehle und Dateivorgänge und ist auf jedem oben aufgeführten Modell verfügbar. code_execution_20260120 fügt REPL-Zustandspersistenz und programmatische Tool-Aufrufe innerhalb der Sandbox hinzu und ist nur auf Opus 4.5+ und Sonnet 4.5+ verfügbar. Eine ältere Version code_execution_20250522 (nur Python) ist auch auf den gleichen Modellen wie code_execution_20250825 verfügbar; siehe Upgrade auf die neueste Tool-Version, um von ihr zu migrieren.
Ältere Tool-Versionen sind nicht garantiert abwärtskompatibel mit neueren Modellen. Verwenden Sie immer die Tool-Version, die Ihrer Modellversion entspricht.
Die Code-Ausführung ist verfügbar auf:
Die Code-Ausführung ist derzeit nicht auf Amazon Bedrock oder Google Vertex AI verfügbar.
Für Claude Mythos Preview wird die Code-Ausführung auf der Claude API und Microsoft Foundry unterstützt. Sie ist nicht für Mythos Preview auf Amazon Bedrock oder Google Vertex AI verfügbar.
Hier ist ein einfaches Beispiel, das Claude auffordert, eine Berechnung durchzuführen:
Wenn Sie das Code-Ausführungstool zu Ihrer API-Anfrage hinzufügen:
Wenn Sie die Code-Ausführung zusammen mit vom Client bereitgestellten Tools verwenden, die auch Code ausführen (wie ein Bash-Tool oder eine benutzerdefinierte REPL), arbeitet Claude in einer Multi-Computer-Umgebung. Das Code-Ausführungstool wird in Anthropics Sandbox-Container ausgeführt, während Ihre vom Client bereitgestellten Tools in einer separaten Umgebung ausgeführt werden, die Sie kontrollieren. Claude kann diese Umgebungen manchmal verwechseln und versuchen, das falsche Tool zu verwenden oder anzunehmen, dass der Zustand zwischen ihnen gemeinsam genutzt wird.
Um dies zu vermeiden, fügen Sie Anweisungen zu Ihrer Systemaufforderung hinzu, die die Unterscheidung verdeutlichen:
Wenn mehrere Code-Ausführungsumgebungen verfügbar sind, beachten Sie, dass:
- Variablen, Dateien und Zustand NICHT zwischen verschiedenen Ausführungsumgebungen bestehen bleiben
- Verwenden Sie das code_execution-Tool für allgemeine Berechnungen in Anthropics Sandbox-Umgebung
- Verwenden Sie vom Client bereitgestellte Ausführungstools (z. B. Bash), wenn Sie Zugriff auf das lokale System, die Dateien oder Daten des Benutzers benötigen
- Wenn Sie Ergebnisse zwischen Umgebungen übergeben müssen, fügen Sie Ausgaben explizit in nachfolgenden Tool-Aufrufen ein, anstatt gemeinsamen Zustand anzunehmenDies ist besonders wichtig, wenn Sie die Code-Ausführung mit Web-Suche oder Web-Abruf kombinieren, die die Code-Ausführung automatisch aktivieren. Wenn Ihre Anwendung bereits ein Client-seitiges Shell-Tool bereitstellt, erstellt die automatische Code-Ausführung eine zweite Ausführungsumgebung, die Claude unterscheiden muss.
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 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 werden, einschließlich:
container_upload Content BlockWenn Claude während der Code Execution Dateien erstellt, können Sie diese Dateien mit der Files API abrufen:
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 Code schreibenDas Code Execution Tool kann zwei Arten von Ergebnissen zurückgeben, je nach Operation:
{
"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 Ausführungsfehlernreturn_code: 0 für Erfolg, nicht-null für FehlerZusätzliche Felder für Dateioperationen:
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 überschritt das maximale Zeitlimit |
| 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 |
| bash | output_file_too_large |
pause_turn Stop-GrundDie Antwort kann einen pause_turn Stop-Grund enthalten, der anzeigt, dass die API einen langen Durchgang unterbrochen hat. Sie können die Antwort in einer nachfolgenden Anfrage unverändert zurückgeben, um Claude seinen Durchgang fortsetzen zu lassen, oder den Inhalt ändern, wenn Sie das Gespräch unterbrechen möchten.
Das Code Execution Tool läuft in einer sicheren, containerisierten Umgebung, die speziell für Code Execution entwickelt wurde, mit einem höheren Fokus auf Python.
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, wenn 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": ""}}}Sie können das Code-Ausführungs-Tool in die Messages Batches API einbeziehen. Code-Ausführungs-Tool-Aufrufe über die Messages Batches API werden genauso berechnet wie solche in regulären Messages API-Anfragen.
Code execution is free when used with web search or web fetch. When web_search_20260209 or web_fetch_20260209 is included in your API request, there are no additional charges for code execution tool calls beyond the standard input and output token costs.
When used without these tools, code execution is billed by execution time, tracked separately from token usage:
Code execution usage is tracked in the response:
"usage": {
"input_tokens": 105,
"output_tokens": 239,
"server_tool_use": {
"code_execution_requests": 1
}
}Durch das Upgrade auf code-execution-2025-08-25 erhalten Sie Zugriff auf Dateimanipulation 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 |
Zum Upgrade aktualisieren Sie den Tool-Typ in Ihren API-Anfragen:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"Überprüfen Sie die Antwortbehandlung (wenn Sie Antworten programmgesteuert analysieren):
Zum Ausführen von Tools innerhalb des Code-Ausführungs-Containers siehe Programmgesteuerte Tool-Aufrufe.
Die Code-Ausführung läuft in serverseitigen Sandbox-Containern. Container-Daten, einschließlich Ausführungsartefakte, hochgeladener Dateien und Ausgaben, werden bis zu 30 Tage lang aufbewahrt. Diese Aufbewahrung gilt für alle Daten, die in der Container-Umgebung verarbeitet werden. Dateien, die die Code-Ausführung in der Files API erstellt (abrufbar über client.beta.files.download()), bleiben bestehen, bis sie explizit gelöscht werden.
Für ZDR-Berechtigung über alle Funktionen hinweg siehe API und Datenspeicherung.
Das Code-Ausführungs-Tool ermöglicht Claude die Verwendung von Agent Skills. Skills sind modulare Funktionen, die aus Anweisungen, Skripten und Ressourcen bestehen und Claudes Funktionalität erweitern.
Weitere Informationen finden Sie in der Agent Skills-Dokumentation und im Agent Skills API-Leitfaden.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
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)client = anthropic.Anthropic()
# Laden Sie eine Datei hoch
file_object = client.beta.files.upload(
file=open("data.csv", "rb"),
)
# Verwenden Sie die file_id mit Code Execution
response = client.beta.messages.create(
model="claude-opus-4-7",
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)# Initialisieren Sie den Client
client = Anthropic()
# Fordern Sie Code Execution an, die Dateien erstellt
response = client.beta.messages.create(
model="claude-opus-4-7",
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"}],
)
# Extrahieren Sie file_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":
# concrete-typed list: List[BashCodeExecutionOutputBlock]
for file in content_item.content:
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}")| Befehlsausgabe überschritt die maximale Größe |
| text_editor | file_not_found | Datei existiert nicht (für Anzeige-/Bearbeitungsvorgänge) |
| text_editor | string_not_found | Der old_str wurde nicht in der Datei gefunden (für str_replace) |
# Erste Anfrage: Erstelle eine Datei mit einer Zufallszahl
response1 = client.messages.create(
model="claude-opus-4-7",
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, # Verwende denselben Container erneut
model="claude-opus-4-7",
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)