Claude Platform Docs
MessagesИнфраструктура инструментов

Управление контекстом инструментов

Выберите между поиском инструментов, программным вызовом инструментов, кэшированием подсказок и редактированием контекста, чтобы справиться с разрастанием контекста.

Определения инструментов и накопленные блоки tool_result расходуют ваше «context window» (контекстное окно). Долго работающие агенты с большим количеством инструментов или множеством ходов могут исчерпать доступный контекст до завершения задачи. Четыре подхода решают эту проблему на разных этапах конвейера.

Четыре подхода

Каждый подход нацелен на свой источник нагрузки на контекст. Выберите тот, который соответствует тому, куда уходят ваши токены.

ПодходЧто он сокращаетКогда подходитПодробнее
Поиск инструментовОпределения инструментов, загружаемые заранееБольшие наборы инструментов (20+ инструментов), где большинство инструментов не нужны на каждом ходуИнструмент поиска инструментов
Программный вызов инструментовЦиклы обмена tool_resultЦепочки вызовов инструментов, которые можно выполнить как единый скриптПрограммный вызов инструментов
Кэширование подсказокСтоимость токенов повторяющихся определений инструментовСтабильные наборы инструментов во множестве запросовИспользование инструментов с кэшированием подсказок
Редактирование контекстаСтарые блоки tool_result в историиДлинные разговоры, где ранние результаты больше не актуальныРедактирование контекста

«Tool search» (поиск инструментов) удерживает определения инструментов вне контекстного окна до тех пор, пока Claude их не запросит. Вместо того чтобы отправлять 50 схем инструментов заранее, вы отправляете один инструмент tool_search и позволяете Claude обнаруживать остальные по мере необходимости. Это обмен небольшой задержки (один дополнительный ход для поиска инструмента) на значительное сокращение базового использования контекста.

Программный вызов инструментов

«Programmatic tool calling» (программный вызов инструментов) сворачивает последовательность вызовов инструментов в единый блок кода, который пишет Claude и выполняет песочница выполнения кода Anthropic. Вместо пяти циклов обмена tool_use и tool_result Claude выдаёт один скрипт, который вызывает все пять функций изнутри песочницы. Промежуточные результаты никогда не попадают в историю разговора.

Кэширование подсказок

«Prompt caching» (кэширование подсказок) не уменьшает количество токенов в контексте, но снижает то, что вы платите за них в последующих запросах. Если ваши определения инструментов стабильны, закэшируйте их один раз и повторно используйте кэшированный префикс в тысячах запросов. Это правильный выбор, когда набор инструментов большой, но фиксированный.

Редактирование контекста

«Context editing» (редактирование контекста) удаляет старые блоки tool_result из истории разговора, как только они выполнили свою задачу. Длинный цикл агента может порождать сотни промежуточных результатов, которые были полезны в своё время, но теперь являются мёртвым грузом. Редактирование контекста позволяет обрезать их без перезапуска разговора.

Комбинирование подходов

Эти подходы сочетаются друг с другом. Долго работающий агент может использовать поиск инструментов, чтобы набор инструментов оставался компактным, кэширование подсказок — чтобы амортизировать стоимость оставшихся определений, и редактирование контекста — чтобы обрезать устаревшие результаты по мере роста разговора. Каждый из них решает свою часть проблемы, поэтому их совместное использование не вызывает конфликтов.

Разумная отправная точка для агента с высокой нагрузкой:

  1. Включите кэширование подсказок для ваших определений инструментов с первого дня. Запись в кэш имеет надбавку 25% к базовой цене входных токенов, которая окупается уже на втором запросе, попадающем в кэш.
  2. Добавьте поиск инструментов, когда ваш набор инструментов превысит примерно 20 инструментов или базовое использование контекста станет заметным.
  3. Добавьте редактирование контекста, когда отдельные разговоры начнут становиться достаточно длинными, чтобы ранние результаты теряли актуальность.
  4. Рассмотрите программный вызов инструментов, если вы замечаете повторяющиеся цепочки мелких вызовов инструментов, которые можно было бы выполнить одним пакетом.

Следующие шаги

Загружайте определения инструментов по требованию, а не заранее.

Сворачивайте цепочки вызовов инструментов в единый исполняемый скрипт.

Кэшируйте определения инструментов между запросами, чтобы сократить затраты на токены.

Обрезайте устаревшие результаты инструментов в долго идущих разговорах.

Was this page helpful?