Дайте Claude компьютер
@ai_longreadsProgrammatic tool calling (PTC) — новая возможность Claude, которая позволяет модели писать код для оркестрации вызовов инструментов внутри контейнера, вместо того чтобы каждый вызов проходил через контекстное окно. Это снижает расход токенов и повышает качество на многошаговых задачах вроде поиска.
Это AI-перевод статьи, сделанный каналом Про AI: Лучшие Статьи и Исследования.
Дайте Claude компьютер
Give Claude a computer Автор: Lance Martin Оригинальный текст:
TL;DR — [Programmatic tool calling](https://platform.claude.com/docs/en/agents-and-tools/tool-use/programmatic-tool-calling) (программный вызов инструментов, PTC) — интересная возможность Claude Opus/Sonnet 4.6. Вместо того чтобы делать вызовы инструментов, каждый из которых проходит через контекст Claude, модель пишет код, который может оркестрировать вызовы инструментов непосредственно внутри контейнера. Промежуточные результаты возвращаются в код, а не в контекстное окно Claude. Это снижает расход токенов (tokens*) и улучшает производительность на многошаговых задачах вроде поиска. Opus 4.6 с PTC недавно занял первое место в поисковом бенчмарке LMArena. Ознакомьтесь с нашей документацией, чтобы узнать больше о PTC и нашем новом инструменте веб-поиска, который использует PTC по умолчанию.*
Работа с компьютером — одна из ключевых возможностей Claude. Достаточно дать Claude инструмент bash, и открывается широкое пространство действий. Это приводит к типичному вопросу: достаточно ли одного bash? И как решить, какие ещё инструменты давать агенту?
Действия — это способ взаимодействия Claude с миром. Инструменты — это декларативный способ задать набор действий, доступных Claude. API позволяет добавлять инструменты, указывая имя, описание и входные аргументы.
Если Claude хочет вызвать инструмент, он отвечает JSON-объектом с аргументами для запуска. Обработчик инструмента (например, MCP-сервер, ваш собственный код и т.д.) выполняет инструмент и передаёт обратно контекст. Если запустить это в цикле — получится агент. Например, инструмент bash генерирует bash-команды в виде JSON-объекта с командой, который передаётся обработчику bash для выполнения:
{"command": "pip install requests"}Когда использовать инструменты
Claude с инструментом bash, работающим в цикле, — это агент для работы с компьютером. Это основа Claude Code. Но Claude Code использует не только bash. Он применяет инструменты как поверхность управления для определённых действий. Смотрите разбор @trq212 по этим вопросам. Выделение действия в отдельный инструмент имеет смысл в нескольких случаях:
- UX. Как отмечает @trq212, инструмент AskUserQuestion — хороший пример. Инструменты полезны, когда определённые действия нужно перехватывать и отображать пользователю особым образом.
- Ограничения безопасности. Некоторым действиям нужны защитные механизмы. Например, инструмент редактирования файлов может проверять актуальность файла — не изменился ли он с момента последнего чтения моделью.
- Управление параллельностью. Иногда полезно группировать действия по безопасности для параллельного выполнения (например, инструменты только для чтения могут выполняться параллельно).
- Наблюдаемость. Бывает полезно изолировать конкретные действия для логирования (например, измерение задержки (latency) или расхода токенов).
- Автономность. Может потребоваться группировать действия по уровню автономности. Если система может отменить действие, она может одобрять его более свободно.
Проблема инструментов
Инструменты создают компромисс между контролем и композиционностью. Представьте три действия как вызовы инструментов. Контекст из каждого вызова возвращается обратно в Claude. Каждый раунд стоит задержки, сериализует результат в контекст (например, передаёт тысячи строк, даже если следующему шагу нужны только пять) и добавляет шаг рассуждения. Налог на композицию растёт с количеством действий.
Programmatic tool calling
Claude развивает возможность, которая объединяет композиционность кода с поверхностью управления инструментов. Claude может выполнять programmatic tool calling (программный вызов инструментов, PTC, документация): вы определяете инструменты, как обычно. Но вместо того чтобы вызывать их по одному, Claude может компоновать их как функции и запускать в контейнере выполнения кода. Результат каждой функции возвращается в контейнер, а не в контекстное окно Claude.
Когда код вызывает инструмент (например, await web_search(query)), контейнер приостанавливается. Вызов пересекает границу песочницы как типизированное событие tool-use. Он обрабатывается точно так же, как если бы модель напрямую вызвала инструмент (через обработчик, MCP-сервер и т.д.). Но результат возвращается в работающий код, а не в контекстное окно Claude. Код обрабатывает его, следуя потоку управления, заданному Claude (вызывает другой инструмент, фильтрует данные, накапливает результаты). Только финальный вывод попадает к Claude.
С Opus 4.6 мы наблюдаем прирост эффективности по токенам и производительности на некодовых бенчмарках (benchmark) — например, BrowseComp и DeepsearchQA для веб-поиска — при использовании PTC. Например, вместо загрузки 50 необработанных результатов поиска в контекст для анализа, код может программно парсить, фильтровать и перекрёстно сопоставлять результаты. Это сохраняет релевантное и отбрасывает остальное (например, динамическая фильтрация). На бенчмарках BrowseComp и DeepsearchQA точность улучшилась в среднем на 11% при использовании на 24% меньше входных токенов. Opus 4.6 с PTC сейчас занимает первое место в Search Arena от LMarena.
С учётом этих результатов, PTC теперь встроен в инструмент веб-поиска в API для повышения производительности и экономии токенов при использовании поиска:
{
"model": "claude-opus-4-6",
"max_tokens": 4096,
"tools": [
{
"type": "web_search_20260209",
"name": "web_search"
}
],
"messages": [
{
"role": "user",
"content": "<запрос>"
}
]
}PTC — это способ получить преимущества выполнения кода (композиционность), сохраняя при этом поверхность управления инструментов: реализации инструментов работают на вашей стороне песочницы, а не внутри неё. Обработчики инструментов по-прежнему находятся в центре каждого вызова как поверхность управления — они могут проверять, отклонять, логировать или ставить в очередь на одобрение человеком. Но при этом Claude может свободно оркестрировать действия в коде.
Подпишитесь на канал и каждый день читайте лучшие материалы про AI переведенные на русский!
Нашли интересную статью для перевода? Пришлите нашему боту: @ailongreadsbot