На этой странице рассматривается «prompt caching» (кэширование подсказок) для определений инструментов: где размещать точки останова cache_control, как defer_loading сохраняет ваш кэш и что делает его недействительным. Общие сведения о кэшировании подсказок см. в разделе Кэширование подсказок.
Разместите cache_control: {"type": "ephemeral"} на последнем инструменте в вашем массиве tools. Это кэширует весь префикс определений инструментов — от первого инструмента до отмеченной точки останова:
{
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"]
}
},
{
"name": "get_time",
"description": "Get the current time in a given time zone",
"input_schema": {
"type": "object",
"properties": {
"timezone": { "type": "string" }
},
"required": ["timezone"]
},
"cache_control": { "type": "ephemeral" }
}
]
}Для mcp_toolset точка останова cache_control приходится на последний инструмент в наборе. Вы не управляете порядком инструментов внутри набора инструментов MCP, поэтому разместите точку останова на самой записи mcp_toolset, и API применит её к последнему развёрнутому инструменту.
Записи наборов инструментов computer use (использование компьютера) и browser use (использование браузера) следуют тому же правилу: разместите cache_control на самой записи набора инструментов, и точка останова окажется после определения набора. Внутри записи configs отдельного участника она не принимается, поскольку участники набора загружаются как одно определение. В рамках пакетного действия маркер cache_control на любом из блоков tool_use или tool_result участников данного хода принимается и вступает в силу в конце этого пакета, поэтому несколько маркеров в одном пакете действуют как одна точка останова. Каждый маркер по-прежнему учитывается в лимите запроса в четыре точки останова, поэтому используйте по одному на ход.
Отложенные инструменты не включаются в префикс системной подсказки. Когда модель обнаруживает отложенный инструмент через поиск инструментов, его определение добавляется непосредственно в историю разговора в виде блока tool_reference. Префикс остаётся нетронутым, поэтому кэширование подсказок сохраняется.
Это означает, что динамическое добавление инструментов через поиск инструментов не нарушает ваш кэш. Вы можете начать разговор с небольшим набором всегда загружаемых инструментов (кэшированных), позволить модели обнаруживать дополнительные инструменты по мере необходимости и сохранять одно и то же попадание в кэш на каждом ходу.
defer_loading также действует независимо от построения грамматики для строгого режима. Грамматика строится на основе полного набора инструментов независимо от того, какие инструменты отложены, поэтому и кэширование подсказок, и кэширование грамматики сохраняются при динамической загрузке инструментов.
Кэш следует иерархии префиксов (tools → system → messages), поэтому изменение на одном уровне делает недействительным этот уровень и всё, что следует за ним:
| Изменение | Делает недействительным |
|---|---|
| Изменение определений инструментов | Весь кэш (tools, system, messages) |
| Включение или отключение веб-поиска или цитирования | Кэши system и messages |
Изменение tool_choice | Кэш messages |
Изменение disable_parallel_tool_use | Кэш messages |
| Переключение наличия/отсутствия изображений | Кэш messages |
| Изменение параметров мышления | Кэш messages всегда; кэши инструментов и system — также на моделях, которые отображают конфигурацию мышления перед ними (подробности) |
Изменение output_config.effort | То же, что и для параметров мышления; явная установка значения по умолчанию для модели эквивалентна его отсутствию |
Когда в вашем запросе включено кэширование подсказок и Claude использует серверный инструмент, такой как веб-поиск, веб-загрузка или выполнение кода, API автоматически размещает точку останова кэша на результате серверного инструмента перед запуском следующей итерации агентного цикла. Это позволяет последующим итерациям в рамках того же запроса читать растущий префикс из кэша вместо его повторной обработки.
Эта автоматическая точка останова всегда использует TTL по умолчанию в 5 минут, независимо от любого TTL, который вы задаёте в собственных маркерах cache_control. В поле usage ответа эти записи отображаются в cache_creation.ephemeral_5m_input_tokens, поэтому вы можете видеть 5-минутные записи в кэш, даже если каждый заданный вами cache_control использует TTL в 1 час.
Это поведение применяется только тогда, когда в вашем запросе уже есть хотя бы один маркер cache_control. Запросы без кэширования подсказок не получают автоматическую точку останова.
| Инструмент | Особенности кэширования |
|---|---|
| Веб-поиск | Включение или отключение делает недействительными кэши system и messages |
| Веб-загрузка | Включение или отключение делает недействительными кэши system и messages |
| Выполнение кода | Состояние контейнера не зависит от кэша подсказок |
| Поиск инструментов | Обнаруженные инструменты загружаются как блоки tool_reference, сохраняя кэш префикса |
| Использование компьютера | Наличие снимков экрана влияет на кэш messages; cache_control размещается на записи набора инструментов (см. cache_control в определениях инструментов) |
| Использование браузера | Наличие снимков экрана влияет на кэш messages; cache_control размещается на записи набора инструментов (см. cache_control в определениях инструментов) |
| Текстовый редактор | Стандартный клиентский инструмент, без особого взаимодействия с кэшированием |
| Bash | Стандартный клиентский инструмент, без особого взаимодействия с кэшированием |
| Память | Стандартный клиентский инструмент, без особого взаимодействия с кэшированием |
Изучите полную модель кэширования подсказок, включая TTL и цены.
Загружайте инструменты по требованию, не нарушая ваш кэш.
Просмотрите все доступные инструменты и их параметры.
Was this page helpful?