Я ненавижу платить за одно и то же дважды. Особенно когда дело касается AI API — там каждый токен на счету. В BrainGrid мы обнаружили, что 40% наших расходов на Claude шли на… пересылку одних и тех же tool definitions. Снова и снова.
Проблема: токены-близнецы
Типичный диалог с нашим агентом выглядит так:
- Пользователь спрашивает: “Как сделать авторизацию через Google?”
- Мы отправляем запрос с:
- Вопросом пользователя
- JSON-схемами всех 12 инструментов (read_web_page, generate_code и т.д.)
- Claude отвечает: “Вызови read_web_page для документации Firebase”
- Мы выполняем инструмент и отправляем ответ… снова со всеми схемами
Наш read_web_page инструмент весит 2К токенов в JSON Schema. Умножаем на 12 инструментов и 5-7 итераций в диалоге — получаем 100К+ токенов впустую.
Решение: кэширование в Anthropic SDK v5
Во время миграции на AI SDK v5 мы наткнулись на малоизвестную фичу:
providerOptions: {
anthropic: { cacheControl: { type: 'ephemeral' } }
}
Это включало кэширование схем инструментов на стороне Anthropic. Да, вы платите на 25% дороже за кэшированные токены, но:
- Кэш хитает за 10% стоимости
- Схемы инструментов почти никогда не меняются
- Скорость возрастает (меньше данных передается)
Неочевидный лайфхак
По документации непонятно, но кэширование работает по принципу “точки остановки”. Если пометить последний инструмент в массиве как кэшируемый, Anthropic закэширует ВСЕ инструменты перед ним:
const tools = [
generateRequirementsTool, // Будет закэширован
clarifyQuestionsTool, // Будет закэширован
{ ...readWebPageTool, // Помечаем только этот инструмент
providerOptions: {
anthropic: { cacheControl: { type: 'ephemeral' } }
}
}
];
Результаты в продакшене
После внедрения:
- Стоимость запросов упала на 65% (несмотря на премиум за кэш)
- Задержки уменьшились на 30-40 мс на запрос
- Никаких изменений в бизнес-логике
Профит становится очевидным после 4-5 итераций в диалоге. А в наших сценариях агенты делают 10-15 вызовов.
Где подводные камни
- Только для Anthropic — другие провайдеры могут не поддерживать
- Эфемерный кэш — данные хранятся не вечно (но нам и не нужно)
- Порядок инструментов важен — кэшируемый должен быть последним
Если вы используете AI SDK v5 с инструментами — добавьте эти три строки прямо сегодня. Это редкий случай, когда оптимизация требует минимум усилий, но дает мгновенный эффект.
P.S. Нам потребовалось два дня, чтобы понять, что кэшируемый инструмент должен быть последним. Не повторяйте наших ошибок — берите готовое решение.