Коротко
Китайская модель в 8 раз дешевле и в 4 раза быстрее прошла все бенчмарки — а потом начала вставлять иероглифы в русские новости. Кейс о том, почему экономия на LLM всегда обходится дороже, чем кажется.
Разработчик двуязычного новостного бота нашёл LLM в 8 раз дешевле текущей: inclusionai/ling-2.6-flash за $0.010 за миллион входных токенов против $0.098 у deepseek-v4-flash. Качество на тестах — то же, скорость — в 4 раза выше. Он выкатил её в прод. Через час в ленте появился заголовок «Как не,让智能手机 перегревать: советы в жару» — иероглифы прямо посреди русского текста, с китайской запятой вместо обычной. Модель китайская, и на длинных генерациях она сваливается в родной язык чаще, чем хотелось бы: 57% длинных разборов содержат утечку CJK-символов. На коротких — 17%. У deepseek-v4-flash — 0 из 12. Чем дольше модель генерирует, тем выше шанс, что она забудет, на каком языке начинала. Это не баг, который видно в бенчмарках. Это слепое пятно тестов. Автор проверял точность категоризации и полноту JSON. Ему не пришло в голову проверить, что ответ на русский промпт будет на русском. Бесплатные модели на OpenRouter — отдельная история. Из 17 моделей с ценой $0 по-настоящему работают три. Одна заточена под код, вторая отвечает по 11–21 секунду и иногда возвращает пустой ответ, третья не поддерживает response_format — OpenRouter молча маршрутизирует мимо неё. При пачке из 60 новостей и таймауте 600 секунд модель с 20 секундами на вызов гарантированно роняет прогон. Бесплатно — не значит работает. Решение для утечки иероглифов получилось pragmatic: регулярка детектит CJK-символы и полноширинную пунктуацию, при срабатывании тот же запрос уходит на дорогую модель-чистильщик. Дешёвая обслуживает большинство новостей, дорогая подчищает за ней. На проде за первые 10 минут детектор сработал 25 раз, 23 — на длинных разборах. Экономия тоже оказалась скромнее обещанной: $8.6 в месяц против $14.8 на чистом deepseek, а не восьмикратная. Причина — за 57% длинных разборов приходится платить дважды: сначала дешёвой модели, потом дорогой. Три финансовых сюрприза, которые не очевидны до деплоя. Счёт не зависит от числа пользователей: 30 активных юзеров дают 0.3% расходов, всё остальное съедает поток новостей, который идёт независимо от аудитории. При отрицательном балансе OpenRouter перестаёт работать даже с бесплатными моделями — резервирует кредит под ответ для всех. Без явного max_tokens резервируется весь контекст модели: запрос на 65536 токенов, хотя ответ занимает около тысячи. Одна строка "max_tokens": 2048 убирает проблему. Главный вывод здесь не про деньги. Дешёвая модель бывает отличной по всем метрикам, которые ты догадался замерить, и ломается там, где проверить не додумался. Если вы переключаетесь на китайскую LLM ради экономии — добавьте в тесты проверку языка ответа до деплоя, а не после того, как пользователи увидят иероглифы в новостях.