Claude может анализировать данные, создавать визуализации, выполнять сложные вычисления, запускать системные команды, создавать и редактировать файлы, а также обрабатывать загруженные файлы непосредственно в разговоре API. Инструмент выполнения кода позволяет Claude запускать команды Bash и манипулировать файлами, включая написание кода, в безопасной изолированной среде.
Выполнение кода бесплатно при использовании с веб-поиском или веб-выборкой. Когда web_search_20260209 или web_fetch_20260209 включены в ваш запрос, дополнительные расходы за вызовы инструмента выполнения кода отсутствуют, помимо стандартных затрат на входные и выходные токены. Стандартные расходы на выполнение кода применяются, когда эти инструменты не включены.
Выполнение кода является основным примитивом для создания высокопроизводительных агентов. Это позволяет динамически фильтровать результаты в инструментах веб-поиска и веб-выборки, позволяя Claude обрабатывать результаты до того, как они попадут в контекстное окно, улучшая точность при снижении потребления токенов.
Поделитесь своим отзывом об этой функции через форму обратной связи.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Инструмент выполнения кода доступен на следующих моделях:
| Модель | Версии инструмента |
|---|---|
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) (устарела) | 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 3.5 (claude-3-5-haiku-latest) (устарела) | code_execution_20250825 |
code_execution_20250825 поддерживает команды Bash и операции с файлами и доступен на всех перечисленных выше моделях. code_execution_20260120 добавляет сохранение состояния REPL и программное вызывание инструментов из песочницы, и доступен только на Opus 4.5+ и Sonnet 4.5+. Устаревшая версия code_execution_20250522 (только Python) также доступна на тех же моделях, что и code_execution_20250825; см. Обновление до последней версии инструмента для миграции с неё.
Старые версии инструмента не гарантированно совместимы с более новыми моделями. Всегда используйте версию инструмента, которая соответствует вашей версии модели.
Выполнение кода доступно на:
Выполнение кода в настоящее время недоступно на Amazon Bedrock или Google Vertex AI.
Для Claude Mythos Preview выполнение кода поддерживается на Claude API и Microsoft Foundry только. Оно недоступно для Mythos Preview на Amazon Bedrock или Google Vertex AI.
Вот простой пример, который просит Claude выполнить вычисление:
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)Когда вы добавляете инструмент выполнения кода в ваш запрос API:
Когда вы предоставляете выполнение кода вместе с предоставленными клиентом инструментами, которые также запускают код (такими как инструмент bash или пользовательский REPL), Claude работает в многокомпьютерной среде. Инструмент выполнения кода работает в изолированном контейнере Anthropic, в то время как ваши предоставленные клиентом инструменты работают в отдельной среде, которую вы контролируете. Claude иногда может путать эти среды, пытаясь использовать неправильный инструмент или предполагая, что состояние общее между ними.
Чтобы избежать этого, добавьте инструкции в ваш системный запрос, которые уточняют различие:
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 stateЭто особенно важно при объединении выполнения кода с веб-поиском или веб-выборкой, которые автоматически включают выполнение кода. Если ваше приложение уже предоставляет инструмент оболочки на стороне клиента, автоматическое выполнение кода создает вторую среду выполнения, которую Claude должен различать.
Для анализа собственных файлов данных (CSV, Excel, изображения и т. д.) загрузите их через Files API и ссылайтесь на них в своем запросе:
Использование Files API с Code Execution требует заголовок бета-версии Files API: "anthropic-beta": "files-api-2025-04-14"
Окружение Python может обрабатывать различные типы файлов, загруженные через Files API, включая:
container_uploadclient = anthropic.Anthropic()
# Upload a file
file_object = client.beta.files.upload(
file=open("data.csv", "rb"),
)
# Use the file_id with 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)Когда Claude создает файлы во время выполнения кода, вы можете получить эти файлы, используя Files API:
# Initialize the client
client = Anthropic()
# Request code execution that creates files
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"}],
)
# Extract file IDs from the response
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
# Download the created files
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}")Инструмент выполнения кода не требует дополнительных параметров:
{
"type": "code_execution_20250825",
"name": "code_execution"
}Когда этот инструмент предоставляется, Claude автоматически получает доступ к двум вспомогательным инструментам:
bash_code_execution: Выполнение команд оболочкиtext_editor_code_execution: Просмотр, создание и редактирование файлов, включая написание кодаИнструмент выполнения кода может возвращать два типа результатов в зависимости от операции:
{
"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 для успеха, ненулевое значение для сбояДополнительные поля для операций с файлами:
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 | Превышен лимит частоты запросов для использования инструмента |
| bash | output_file_too_large | Вывод команды превысил максимальный размер |
| text_editor | file_not_found | Файл не существует (для операций просмотра/редактирования) |
| text_editor | string_not_found | old_str не найден в файле (для str_replace) |
pause_turnОтвет может включать причину остановки pause_turn, которая указывает, что API приостановил долгоживущий ход. Вы можете предоставить ответ как есть в последующем запросе, чтобы позволить Claude продолжить свой ход, или изменить содержимое, если вы хотите прервать разговор.
Инструмент выполнения кода работает в безопасной контейнеризованной среде, разработанной специально для выполнения кода, с повышенным акцентом на Python.
Изолированная среда Python включает эти часто используемые библиотеки:
Вы можете повторно использовать существующий контейнер в нескольких запросах API, предоставив ID контейнера из предыдущего ответа. Это позволяет вам сохранять созданные файлы между запросами.
# First request: Create a file with a random number
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"}],
)
# Extract the container ID from the first response
container_id = response1.container.id
# Second request: Reuse the container to read the file
response2 = client.messages.create(
container=container_id, # Reuse the same container
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)При включенной потоковой передаче вы будете получать события выполнения кода по мере их возникновения:
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": ""}}}Вы можете включить инструмент выполнения кода в Messages Batches API. Вызовы инструмента выполнения кода через Messages Batches API оцениваются так же, как и в обычных запросах Messages API.
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
}
}
}Обновившись до code-execution-2025-08-25, вы получите доступ к возможностям манипуляции файлами и Bash, включая код на нескольких языках. Разницы в цене нет.
| Компонент | Устаревшая версия | Текущая версия |
|---|---|---|
| Заголовок Beta | 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:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"Проверьте обработку ответов (если вы программно анализируете ответы):
Для запуска инструментов внутри контейнера выполнения кода см. Программное вызывание инструментов.
Выполнение кода происходит в контейнерах песочницы на стороне сервера. Данные контейнера, включая артефакты выполнения, загруженные файлы и выходные данные, сохраняются до 30 дней. Это хранение применяется ко всем данным, обработанным в среде контейнера. Файлы, которые выполнение кода создает в Files API (доступные через client.beta.files.download()), сохраняются до явного удаления.
Для соответствия требованиям ZDR по всем функциям см. API и хранение данных.
Инструмент выполнения кода позволяет Claude использовать Agent Skills. Skills — это модульные возможности, состоящие из инструкций, скриптов и ресурсов, которые расширяют функциональность Claude.
Узнайте больше в документации Agent Skills и руководстве API Agent Skills.
Was this page helpful?