Как я потратил вечер, разбираясь, почему кэш в клоде, gpt и джемини — это три разных зверя
Устал переплачивать за одну и ту же память, которуе гоняю по кругу, и решил разобраться, как у кого на самом деле устроен кэш, а не просто верить строчке «у нас есть кэширование» и «так дешевле» в доке.Начал с клода, как с самой популярной тулы. Кэш там не работает сам по себе, нужно руками вешать cache_control: ephemeral на кусок промпта (тулы, системный промпт, длинный документ, что угодно стабильное). Ничего не закэшируется, если явно не попросишь. При этом ценой все прозрачно: запись на 5 минут стоит 1.25 от обычной цены, запись на час — уже 2x, а вот чтение из кэша дешевле раз в 10. Если один и тот же кусок дергается хотя бы пару раз за окно, уже в плюсе.Но! Где-то в марте anthropic тихо поменял дефолтный TTL с часа на пять минут, без нормального анонса, просто взяли и поменяли поведение по умолчанию для тех, кто не указал TTL явно. У меня был пайплайн, заточенный под часовое окно, и я не сразу понял, почему счет подрос процентов на 15, пока не полез в changelog. Так что если у вас что-то крутится на клоде на автомате уже давно, стоит перепроверить, какой TTL у вас реально стоит сейчас, а не какой вы когда-то настраивали.С openai все проще, и в хорошем смысле. Там кэш вообще не настраивается руками, он просто есть у любого промпта от 1024 токенов: система сама ищет совпадающий префикс с шагом в 128 токенов, и если находит, режет цену пополам. Ничего в коде трогать не надо. Из минусов, контроля тоже никакого, попал в кэш или нет, узнаешь только постфактум по usage в ответе. И живет это недолго: 5-10 минут простоя, максимум час, потом стирается железно. Читать далее