Кэширование промптов

Тема дорожной карты · Claude от Anthropic

Кэширование промптов — это мощная функция, которая позволяет оптимизировать работу с Claude, особенно при работе с повторяющимися запросами. Эта функция позволяет помечать стабильные префиксы запроса, такие как системные промпты, описания инструментов, большие документы и few-shot примеры, с помощью специального параметра cache_control: {"type": "ephemeral"}. Это позволяет Claude переиспользовать внутреннее состояние между вызовами, что значительно уменьшает затраты на токены и ускоряет обработку запросов. Кэширование особенно полезно для чат-систем, агентских циклов и Q&A по документам, где повторяющиеся запросы являются нормой.

Как это работает

Кэширование промптов реализуется через официальные SDK, такие как Python (anthropic), TypeScript (@anthropic-ai/sdk), Java и Go. Эти SDK обрабатывают retries, streaming, обеспечивают type-safe построение сообщений и поддерживают кэширование промптов. В SDK используются паттерны, такие как client.messages.create(...) для единичных запросов и client.messages.stream(...) для streaming. Инструменты представлены как типизированные аргументы, что упрощает их использование. Agent SDK (Python + TypeScript) предоставляет более высокий уровень примитивов для построения агентов с различными навыками, hooks и циклами использования инструментов.

Когда применять

SDK следует использовать везде, где требуется взаимодействие с Claude. Agent SDK особенно полезен при построении сложных систем, таких как агентские циклы, где требуется управление orchestration-циклом. Кэширование промптов можно применять с самого начала работы с Claude. Оно окупается уже через приблизительно 10 запросов для повторяющегося контекста. Важно начинать логировать затраты с самого начала, записывая usage для каждого вызова, чтобы контролировать и оптимизировать использование ресурсов.

Типичные ошибки

Существуют несколько распространенных ошибок при использовании кэширования промптов. Одна из них — неправильное использование await для streaming-ответов, что может привести к обрезанному output. Другая ошибка — неправильная обработка partial JSON в streamed tool-use, что требует инкрементального парсинга. Еще одна распространенная ошибка — использование жестко зафиксированных версий моделей в клиентском коде, вместо использования переменных окружения для их указания. Наконец, блокировка на одном запросе вместо использования batch API может привести к ненужным задержкам и увеличению затрат.

Связанные понятия

Полезные ресурсы