Claude dapat menganalisis data, membuat visualisasi, melakukan perhitungan kompleks, menjalankan perintah sistem, membuat dan mengedit file, serta memproses file yang diunggah secara langsung dalam percakapan API. Alat eksekusi kode memungkinkan Claude menjalankan perintah Bash dan memanipulasi file, termasuk menulis kode, dalam lingkungan sandbox yang aman.
Eksekusi kode gratis ketika digunakan bersama web search atau web fetch. Ketika web_search_20260209 atau web_fetch_20260209 disertakan dalam permintaan Anda, tidak ada biaya tambahan untuk pemanggilan alat eksekusi kode di luar biaya token input dan output standar. Biaya eksekusi kode standar berlaku ketika alat-alat tersebut tidak disertakan.
Eksekusi kode adalah primitif inti untuk membangun agen berkinerja tinggi. Fitur ini memungkinkan pemfilteran dinamis pada alat web search dan web fetch, sehingga Claude dapat memproses hasil sebelum mencapai "context window" (jendela konteks), meningkatkan akurasi sekaligus mengurangi konsumsi token.
Hubungi kami melalui formulir umpan balik untuk membagikan masukan Anda tentang fitur ini.
Fitur ini tidak memenuhi syarat untuk Zero Data Retention (ZDR). Data disimpan sesuai dengan kebijakan retensi standar fitur ini.
Alat eksekusi kode tersedia pada model-model berikut:
| Model | Versi alat |
|---|---|
| Claude Fable 5 (claude-fable-5) | code_execution_20250825, code_execution_20260120 |
| Claude Mythos 5 (claude-mythos-5) | code_execution_20250825, code_execution_20260120 |
| Claude Opus 4.8 (claude-opus-4-8) | code_execution_20250825, code_execution_20260120 |
| 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) (tidak digunakan lagi) | code_execution_20250825 |
| Claude Opus 4 (claude-opus-4-20250514) (tidak digunakan lagi) | code_execution_20250825 |
| Claude Sonnet 4 (claude-sonnet-4-20250514) (tidak digunakan lagi) | code_execution_20250825 |
code_execution_20250825 mendukung perintah Bash dan operasi file, serta tersedia pada setiap model dalam tabel. code_execution_20260120 menambahkan persistensi state REPL dan pemanggilan alat secara programatik dari dalam sandbox, dan hanya tersedia pada Claude Fable 5, Claude Mythos 5, Opus 4.5+, dan Sonnet 4.5+. Jika Anda masih menggunakan code_execution_20250522 lama (hanya Python), lihat Upgrade ke versi alat terbaru untuk bermigrasi darinya.
Versi alat yang lebih lama tidak dijamin kompatibel mundur dengan model yang lebih baru. Selalu gunakan versi alat yang sesuai dengan versi model Anda.
Eksekusi kode tersedia di:
Eksekusi kode saat ini tidak tersedia di Amazon Bedrock atau Vertex AI.
Untuk Claude Mythos Preview, eksekusi kode hanya didukung di Claude API dan Microsoft Foundry. Fitur ini tidak tersedia untuk Mythos Preview di Amazon Bedrock, Vertex AI, atau Claude Platform on AWS.
Berikut adalah contoh sederhana yang meminta Claude melakukan perhitungan:
Ketika Anda menambahkan alat eksekusi kode ke permintaan API Anda:
Claude menjalankan kode ketika permintaan mendapat manfaat dari komputasi atau penanganan file:
Claude menjawab langsung tanpa menjalankan kode untuk:
Jika Anda ingin Claude menjalankan kode untuk permintaan yang berada di batas antara keduanya, minta secara eksplisit (misalnya, "jalankan kode untuk memverifikasi ini").
Ketika Anda menyediakan eksekusi kode bersama dengan alat yang disediakan klien yang juga menjalankan kode (seperti alat bash atau REPL kustom), Claude beroperasi dalam lingkungan multi-komputer. Alat eksekusi kode berjalan di kontainer sandbox milik Anthropic, sementara alat yang disediakan klien Anda berjalan di lingkungan terpisah yang Anda kendalikan. Claude terkadang dapat membingungkan lingkungan-lingkungan ini, mencoba menggunakan alat yang salah atau mengasumsikan state dibagikan di antara keduanya.
Untuk menghindari hal ini, tambahkan instruksi ke prompt sistem Anda yang memperjelas perbedaannya:
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 stateHal ini sangat penting ketika menggabungkan eksekusi kode dengan web search atau web fetch, yang mengaktifkan eksekusi kode secara otomatis. Jika aplikasi Anda sudah menyediakan alat shell sisi klien, eksekusi kode otomatis menciptakan lingkungan eksekusi kedua yang perlu dibedakan oleh Claude.
Untuk menganalisis file data Anda sendiri (seperti CSV, Excel, atau gambar), unggah file tersebut melalui Files API dan referensikan dalam permintaan Anda:
Menggunakan Files API dengan Code Execution memerlukan header beta Files API: "anthropic-beta": "files-api-2025-04-14"
Lingkungan Python dapat memproses berbagai jenis file yang diunggah melalui Files API, termasuk:
container_uploadKetika Claude membuat file selama eksekusi kode, Anda dapat mengambil file-file ini menggunakan Files API:
Alat eksekusi kode tidak memerlukan parameter tambahan:
{
"type": "code_execution_20250825",
"name": "code_execution"
}Ketika alat ini disediakan, Claude secara otomatis mendapatkan akses ke dua sub-alat:
bash_code_execution: Menjalankan perintah shelltext_editor_code_execution: Melihat, membuat, dan mengedit file, termasuk menulis kodeAlat eksekusi kode dapat mengembalikan dua jenis hasil tergantung pada operasinya:
{
"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
}
}Melihat file:
{
"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
}
}Membuat file:
{
"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
}
}Mengedit file (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"]
}
}Semua hasil eksekusi mencakup:
stdout: Output dari eksekusi yang berhasilstderr: Pesan error jika eksekusi gagalreturn_code: 0 untuk berhasil, bukan nol untuk gagalField tambahan untuk operasi file:
file_type, content, numLines, startLine, totalLinesis_file_update (apakah file sudah ada sebelumnya)oldStart, oldLines, newStart, newLines, lines (format diff)Setiap jenis alat dapat mengembalikan error tertentu:
Error umum (semua alat):
{
"type": "bash_code_execution_tool_result",
"tool_use_id": "srvtoolu_01VfmxgZ46TiHbmXgy928hQR",
"content": {
"type": "bash_code_execution_tool_result_error",
"error_code": "unavailable"
}
}Kode error berdasarkan jenis alat:
| Alat | Kode Error | Deskripsi |
|---|---|---|
| Semua alat | unavailable | Alat sementara tidak tersedia |
| Semua alat | execution_time_exceeded | Eksekusi melebihi batas waktu maksimum |
| Semua alat | container_expired | Kontainer kedaluwarsa dan tidak lagi tersedia |
| Semua alat | invalid_tool_input | Parameter yang diberikan ke alat tidak valid |
| Semua alat | too_many_requests | Batas laju terlampaui untuk penggunaan alat |
| bash | output_file_too_large |
pause_turnRespons dapat menyertakan stop reason pause_turn, yang menunjukkan bahwa API menjeda giliran yang berjalan lama. Anda dapat
memberikan respons tersebut apa adanya dalam permintaan berikutnya agar Claude melanjutkan gilirannya, atau memodifikasi konten jika Anda
ingin menginterupsi percakapan.
Alat eksekusi kode berjalan dalam lingkungan terkontainerisasi yang aman, dirancang khusus untuk eksekusi kode, dengan fokus lebih tinggi pada Python.
Lingkungan Python sandbox mencakup library yang umum digunakan berikut:
Anda dapat menggunakan kembali kontainer yang sudah ada di beberapa permintaan API dengan memberikan ID kontainer dari respons sebelumnya. Ini memungkinkan Anda mempertahankan file yang dibuat di antara permintaan.
Dengan streaming diaktifkan, Anda akan menerima event eksekusi kode saat terjadi:
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": ""}}}Anda dapat menyertakan alat eksekusi kode dalam Messages Batches API. Pemanggilan alat eksekusi kode melalui Messages Batches API dikenakan harga yang sama dengan permintaan Messages API reguler.
Code execution gratis jika digunakan bersama web search atau web fetch. Ketika web_search_20260209 atau web_fetch_20260209 disertakan dalam permintaan API Anda, tidak ada biaya tambahan untuk panggilan alat code execution selain biaya token input dan output standar.
Ketika digunakan tanpa alat-alat tersebut, code execution ditagih berdasarkan waktu eksekusi, yang dilacak secara terpisah dari penggunaan token:
Penggunaan code execution dilacak dalam respons:
{
"usage": {
"input_tokens": 105,
"output_tokens": 239,
"server_tool_use": {
"code_execution_requests": 1
}
}
}Dengan melakukan upgrade ke code-execution-2025-08-25, Anda mendapatkan akses ke kemampuan manipulasi file dan Bash, termasuk kode dalam berbagai bahasa. Tidak ada perbedaan harga.
| Komponen | Lama | Saat ini |
|---|---|---|
| Header beta | code-execution-2025-05-22 | code-execution-2025-08-25 |
| Tipe alat | code_execution_20250522 | code_execution_20250825 |
| Kemampuan | Hanya Python | Perintah Bash, operasi file |
| Tipe respons | code_execution_result | bash_code_execution_result, text_editor_code_execution_result |
Untuk melakukan upgrade, perbarui tipe alat dalam permintaan API Anda:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"Tinjau penanganan respons (jika mem-parsing respons secara programatik):
Untuk menjalankan alat di dalam kontainer eksekusi kode, lihat Pemanggilan alat secara programatik.
Eksekusi kode berjalan dalam kontainer sandbox sisi server. Data kontainer, termasuk artefak eksekusi, file yang diunggah, dan output, disimpan hingga 30 hari. Retensi ini berlaku untuk semua data yang diproses dalam lingkungan kontainer. File yang dibuat oleh eksekusi kode di Files API (dapat diambil melalui client.beta.files.download()) tetap ada hingga dihapus secara eksplisit.
Untuk kelayakan ZDR di semua fitur, lihat API dan retensi data.
Alat eksekusi kode memungkinkan Claude menggunakan Agent Skills. Skills adalah kemampuan modular yang terdiri dari instruksi, skrip, dan sumber daya yang memperluas fungsionalitas Claude.
Pelajari lebih lanjut di Agent Skills dan Menggunakan Agent Skills dengan API.
Was this page helpful?
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)client = anthropic.Anthropic()
# Unggah file
file_object = client.beta.files.upload(
file=open("data.csv", "rb"),
)
# Gunakan file_id dengan eksekusi kode
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)# Inisialisasi klien
client = Anthropic()
# Minta eksekusi kode yang membuat file
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"}],
)
# Ekstrak ID file dari respons
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":
# list bertipe konkret: List[BashCodeExecutionOutputBlock]
for file in content_item.content:
file_ids.append(file.file_id)
return file_ids
# Unduh file yang dibuat
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}")| Output perintah melebihi ukuran maksimum |
| text_editor | file_not_found | File tidak ada (untuk operasi view/edit) |
| text_editor | string_not_found | old_str tidak ditemukan dalam file (untuk str_replace) |
# Permintaan pertama: Buat file dengan angka acak
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"}],
)
# Ekstrak ID kontainer dari respons pertama
container_id = response1.container.id
# Permintaan kedua: Gunakan kembali kontainer untuk membaca file
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)