Все записи
6 мин

Менял Haiku на DeepSeek и поймал миф про «-90% на кэше»: экономия оказалась вдвое меньше

нейросетивайбкодинг

Если совсем коротко, то я неделю сравнивал модели для чат-бота AI-персонажа в Картаре, хотел уйти с claude-haiku-4.5 на что-то дешевле и человечнее, и по дороге выяснил, что обещанные «90 процентов экономии на prompt caching» у Anthropic в моём случае дают примерно 51 процент, а не 90, потому что кэшируется только статический system-промпт, а выход модели не кэшируется вообще. Финалистами остались DeepSeek V4 Pro, GLM-5 и тот же Haiku, и в итоге я переключился на DeepSeek V4 Pro, чтобы пощупать его уже вживую. А теперь подробно, как я к этому пришёл и на чём чуть не обжёгся.

С чего всё началось

Сразу скажу честно, как и всегда говорю: код тут пишет нейросеть, я только оркестрирую. Сам сижу за рулём такси весь день и командую разработкой с телефона, а вечером смотрю что получилось. И вот в один из таких дней я подумал, а почему я вообще плачу за Haiku, если у меня бот, который должен писать живо и по-человечески, а вокруг куча моделей подешевле, которые вроде как пишут не хуже. Знакомый говорил, что DeepSeek пишет человечнее и его приятнее читать, а для чата с AI-персонажем это как раз то, что важно, ведь юзер должен чувствовать близость, а не получать сухой ответ-отписку.

Я взял OpenRouter, чтобы не плодить десять интеграций, и накидал список кандидатов: DeepSeek V4 Pro, GLM-5, Kimi K2.6 и MiniMax M2.7. Мелочь сразу отрезал, потому что какой смысл брать flash-версии, когда есть про. Если уж сравнивать, то по верхней планке линейки, а не по огрызкам, иначе потом скажешь «дипсик плохой», а ты просто взял слабую модель и сам себя обманул.

Первый сюрприз: reasoning-модели молчат

И тут первая засада, на которую я не закладывался. Часть кандидатов — это reasoning-модели, они же thinking, то есть они сначала «думают» в отдельном поле, а потом отвечают. DeepSeek V4 Pro в этом режиме, Kimi, MiniMax — все они в моём сетапе возвращали content равный null. То есть модель честно отработала, что-то у себя нагенерила в reasoning, а само сообщение, которое надо показать пользователю, пустое. Для чата это просто не работает, ведь мне нужен текст ответа, а не пустота с пометкой «я подумал».

Это, кстати, важный момент для любого, кто собирает бота с нейросетью и берёт модель с полки на OpenRouter не глядя. Reasoning-режим заточен под задачи, где важна цепочка рассуждений, а не под лёгкий живой диалог, и если просто дёрнуть его как обычную chat-модель, можно долго чесать репу, почему ответ пустой. Я и сам потратил время, пока понял, что это не баг у меня, а особенность режима — и это уже второй раз, когда DeepSeek отдаёт мне пустой ответ и кладёт боевую фичу, так что теперь я к этому отношусь серьёзно.

Второй сюрприз: галочка privacy, которая режет провайдеров

Дальше ещё веселее. OpenRouter гоняет запросы через разных провайдеров, и у меня в настройках стоит privacy-галочка, которая блокирует «Paid endpoints that may train on request data», то есть платные эндпоинты, которые могут обучаться на твоих данных. Логично же не хотеть, чтобы переписки юзеров уезжали кому-то в датасет. Но из-за этой галочки у меня просто отваливались DeepSeek через одного провайдера, SiliconFlow, GMICloud — то есть модель есть, а доступа к ней нет, потому что единственные, кто её раздаёт, как раз те, кого privacy-фильтр и отрезает.

Получается такая ловушка: вы хотите и приватность, и дешёвую модель, а они конфликтуют, потому что дешёвые провайдеры часто как раз те, кто кормится на ваших данных. И тут надо решать осознанно, а не на автомате, ведь для чат-бота с личными переписками это вообще не мелочь. Я для себя приватность пока не сдвигал.

Главное: миф про «-90% на кэше»

А теперь то, ради чего я вообще сел писать этот пост. У Anthropic есть prompt caching, у нас он был настроен, и я был уверен, что это даёт нам около 90 процентов экономии. Так и заходил в расчёты. И вот мы сели тестить, и картина оказалась не такой радужной.

Дело в том, что кэшируется только статический кусок промпта — system prompt, то есть инструкции, личность персонажа, правила, всё то, что не меняется от запроса к запросу. Как я резал этот системный промпт и включал кэш, когда денег на API просто нет — отдельная история, но суть в том, что кэшируется именно эта статика. А что НЕ кэшируется: переменная часть, история диалога, и самое главное — выход модели, то есть то, что она вам сгенерила в ответ. А именно output у Haiku 4.5 стоит дороже всего, цены на январь 2026 — это доллар за миллион входных токенов и пять за миллион выходных. Соотношение один к пяти, и вот эта самая дорогая пятёрка кэшем не покрывается никак.

В итоге, когда мы посчитали реальную структуру запроса в чате, экономия от кэша вышла около 51 процента, а не 90. Это всё ещё неплохо, кэш реально режет половину стоимости статики, но это вдвое меньше той цифры, с которой я заходил. И вот вам мысль, которую стоит держать в голове: «90 процентов экономии на кэше» — это потолок для сценария, где у вас гигантский неизменный контекст и крошечный ответ. У чат-бота всё наоборот, там короткий system, живая история и весомый ответ, и потолок съезжает ровно вдвое. Так что считайте по своему профилю запросов, а не по красивой цифре с лендинга.

Чтобы было видно вилку цен, для сравнения. Sonnet 4.6 — это три доллара за вход и пятнадцать за выход, то есть в три раза дороже Haiku по обоим концам, а условный gpt-4o-mini — пятнадцать центов за вход и шестьдесят за выход, совсем другой порядок. Когда у вас бот крутится на потоке сообщений, эта разница в выходных токенах решает всё, и кэш её не спасёт, потому что выход не кэшируется в принципе.

Кто оценивает качество

Отдельно был смешной момент с тем, как вообще мерить качество ответов. Возникла идея сделать автоматического грейдера, который будет сравнивать ответы конкурентов и выставлять оценки. И тут я притормозил, потому что грейдером предлагалось поставить Haiku — ту самую модель, которую мы и хотим заменить. Ну это же конфликт интересов в чистом виде, когда модель сама судит, кто лучше неё. Так что качество в итоге оценивали я сам плюс ассистент, живыми глазами, на реальных ответах, а не отдавали суд тому, кого собрались уволить. В другой раз я честно прогнал 160 вызовов через eval и сменил модель по данным, но тут до такого не дошло.

Что в итоге

Финалистами после всех отсевов остались трое: DeepSeek V4 Pro, GLM-5 и Haiku, который никуда не делся и остался в обойме как база для сравнения. Kimi и MiniMax отвалились на той самой reasoning-проблеме с пустым content. И между про-версией и младшими я был непреклонен с самого начала, сравнивать надо только по верхней планке, иначе тест выходит нечестный.

Выбор на этой неделе пал на DeepSeek V4 Pro, и дальше план простой — юзать его вживую, на реальных переписках, и смотреть, правда ли он пишет человечнее, как обещали, и сходятся ли цифры по деньгам на потоке. Потому что одно дело прикинуть на бумаге, и совсем другое, когда бот неделю отвечает живым людям и ты видишь и качество, и счёт.

Если из всей этой возни вытащить пару выводов для тех, кто сам выбирает модель для чат-бота на нейросети, то они такие. Первое — reasoning-модель и chat-модель это не одно и то же, и thinking-режим может вернуть пустоту там, где вы ждёте текст, так что проверяйте перед интеграцией. Второе — privacy-настройки и дешёвые провайдеры часто дерутся между собой, и это надо решать руками, а не оставлять на дефолтах. И третье, главное — не верьте круглым цифрам про экономию на кэше, посчитайте свой профиль, потому что у меня вместо обещанных 90 процентов вышел 51, а это, как ни крути, разные деньги. Вот и делайте выводы.

Кому интересно как это всё устроено внутри, у меня тут рядом был пост про то, как два проекта чуть не умерли, когда кончились деньги на OpenAI — там как раз про то, почему я вообще ушёл на OpenRouter и считаю теперь каждый токен.