Управление контекстом инструментов
Выберите между поиском инструментов, программным вызовом инструментов, кэшированием подсказок и редактированием контекста, чтобы справиться с разрастанием контекста.
Определения инструментов и накопленные блоки 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 из истории разговора, как только они выполнили свою задачу. Длинный цикл агента может порождать сотни промежуточных результатов, которые были полезны в своё время, но теперь являются мёртвым грузом. Редактирование контекста позволяет обрезать их без перезапуска разговора.
Комбинирование подходов
Эти подходы сочетаются друг с другом. Долго работающий агент может использовать поиск инструментов, чтобы набор инструментов оставался компактным, кэширование подсказок — чтобы амортизировать стоимость оставшихся определений, и редактирование контекста — чтобы обрезать устаревшие результаты по мере роста разговора. Каждый из них решает свою часть проблемы, поэтому их совместное использование не вызывает конфликтов.
Разумная отправная точка для агента с высокой нагрузкой:
- Включите кэширование подсказок для ваших определений инструментов с первого дня. Запись в кэш имеет надбавку 25% к базовой цене входных токенов, которая окупается уже на втором запросе, попадающем в кэш.
- Добавьте поиск инструментов, когда ваш набор инструментов превысит примерно 20 инструментов или базовое использование контекста станет заметным.
- Добавьте редактирование контекста, когда отдельные разговоры начнут становиться достаточно длинными, чтобы ранние результаты теряли актуальность.
- Рассмотрите программный вызов инструментов, если вы замечаете повторяющиеся цепочки мелких вызовов инструментов, которые можно было бы выполнить одним пакетом.
Следующие шаги
Загружайте определения инструментов по требованию, а не заранее.
Сворачивайте цепочки вызовов инструментов в единый исполняемый скрипт.
Кэшируйте определения инструментов между запросами, чтобы сократить затраты на токены.
Обрезайте устаревшие результаты инструментов в долго идущих разговорах.
Was this page helpful?