Я делаю 1trAIner — ИИ-тренера, который составляет планы, разбирает тренировки и отвечает в чате. Кажется, посчитать стоимость такого сервиса просто: посмотреть списания за модель, разделить на пользователей и получить расход на человека в месяц.
Но в счёт попадают не только разговоры с тренером. Есть проверочные ответы, переводы, редакторская вычитка, повторные оценки после исправлений. Всё это — расходы на модели, но причины у них разные. Если сложить их без разбора, получится число, по которому неудобно принимать решения.
Сразу обозначу границу: месячного счёта DeepSeek и стоимости обслуживания одного пользователя в этой статье не будет. Сервис молодой, аудитория маленькая, и честной месячной выборки у нас пока нет. Подменять её расходами на отдельные задачи я не хочу.
Зато есть конкретные списания, устройство нашего расчёта и история о том, почему работа останавливалась при неизрасходованном бюджете. На этих примерах хорошо видно, что именно нужно считать, прежде чем писать «наш ИИ стоит столько-то в месяц».
Не все обращения к модели — обслуживание пользователей
Внутри сервиса DeepSeek отвечает как тренер. Но та же модель может переводить служебное сообщение или участвовать в проверке нового правила. Название модели одинаковое, назначение расходов — нет.
Для себя я разделяю повседневную работу тренера и изменения продукта. В первом случае человек задаёт вопрос, получает разбор или план. Во втором мы переводим интерфейс, проверяем ответы, исправляем формулировки. Отдельно смотрю на расходы редакторской модели: она не ведёт диалог с пользователем, а оценивает или вычитывает то, что мы собираемся ему показать.
Это не попытка убрать неудобные расходы из расчёта. Они никуда не исчезают. Просто вопросы разные:
- Сколько стоит обслуживать текущую нагрузку?
- Сколько мы потратили на изменение продукта?
- Во сколько обошлась проверка этого изменения?
Например, при проверке медицинской границы в ответах тренера мы получили 36 проверочных ответов DeepSeek. Они шли через работающий сервис и попали в эксплуатацию, а не в бюджет задачи. Их стоимость — порядка центов.
Из такой оценки нельзя получить точную стоимость ответа. Тем более нельзя растянуть её на месяц. Можно сказать лишь, что проверочные обращения тоже расходуют деньги и что граница между разработкой и эксплуатацией сама собой в счёте не появляется.
Даже стоимость запроса можно посчитать неправильно
В нашем расчёте недостаточно взять весь отправленный текст и умножить его объём на цену.
Модель получает входной текст и возвращает ответ. Часть входа может повторяться и оплачиваться по отдельной ставке: поставщик учитывает её как уже обработанную. Важная деталь — этот повторно использованный объём уже входит в общий входной счётчик.
Если сначала оплатить весь вход, а затем добавить повторно использованную часть, мы посчитаем её заново. Поэтому расчёт сначала отделяет обычный вход от повторного, а потом применяет соответствующие ставки.
Есть похожая тонкость с внутренними рассуждениями модели. В нашем расчёте они уже учтены в объёме выхода и отдельно не прибавляются. Иначе собственная таблица расходов будет показывать больше, чем следует из исходных счётчиков.
Для читателя это, возможно, скучная бухгалтерия. Для меня — основа любых разговоров об экономии. Прежде чем сокращать запросы или менять модель, нужно убедиться, что мы не нарисовали лишние расходы сами.
И ещё важно не переоценивать такой расчёт. Наличие правильной функции не доказывает полноту месячного отчёта. Она отвечает на вопрос «как посчитать конкретное обращение», но не подтверждает, что в итоговую выборку попали все обращения.
Сегодняшний прайс не должен переписывать прошлый счёт
У нас цена выбирается с учётом поставщика, названия модели и момента обращения. Расчёт ищет подходящий тариф, который уже действовал на тот момент.
Почему я вообще обращаю на это внимание? Потому что соблазн пересчитать всю историю по текущему прайсу очень большой. Получается аккуратная таблица, только отвечает она уже на другой вопрос: сколько прежняя нагрузка стоила бы при сегодняшних условиях.
Для фактического расхода нужна цена на момент запроса.
В расчёте также предусмотрены обычные и пиковые ставки. Это не утверждение, что каждое наше обращение обязательно дорожает в определённое время. Это возможность применить такой тариф, если он задан. Если отдельная пиковая ставка отсутствует, используется обычная.
Я бы не делал из этого совет немедленно переносить всю работу на дешёвые часы. Ответ в чате и фоновая вычитка имеют разную срочность. Прежде нужно увидеть, какая нагрузка действительно попадает под другой тариф и что можно отложить без ущерба для сценария.
Цена решения здесь не только денежная. Можно сэкономить на обращении, но заставить человека ждать там, где ожидание ломает смысл продукта. Без данных о нагрузке такой обмен легко сделать вслепую.
Конкретные суммы: вычитка, а не месячная работа тренера
Самые заметные расходы последних дней — вычитка английских и китайских страниц. Это работа редакторской модели через OpenRouter, не счёт за повседневные ответы DeepSeek.
В начальном этапе вычитки потратили $3,89. В продолжении после пополнения баланса — $4,98. В вечернем этапе — $4,71. Это расходы отдельных этапов, а не тариф сервиса и не стоимость месяца.
За ними стоят вполне предметные исправления. В английском переводе название марафона «Дёмино» превратилось в выдуманное «Demyansky». Редактор вернул правильное название. В справке уточнил формулировку о данных Garmin: речь идёт о записанных данных, а не о том, что часы якобы являются единственным источником любых фактов.
При этом редактору мы тоже не доверяем безусловно. Правки проходят автоматические проверки: сохраняются ли числа, соблюдается ли словарь терминов, нет ли неожиданного смешения алфавитов. Если проверка отклоняет правку, она не попадает в опубликованный перевод.
Здесь у экономии есть неприятная сторона. Деньги за работу модели уже потрачены, но часть предложений не используется. Можно считать это потерями и ослабить проверки. Я так на эти расходы не смотрю: оплаченный ответ не становится правильным только потому, что за него выставили счёт.
Оставить прежний машинный перевод тоже не значит получить идеальный текст. Это лишь означает не применять изменение, которое не прошло действующие правила. Вопрос качества остаётся открытым и требует отдельного решения.
Бюджет есть, а работа стоит
В вычитке несколько раз возникла ситуация, которую легко неверно описать словами «закончились деньги».
На задачу был выделен бюджет, и он ещё не был потрачен. Но OpenRouter отказывал в следующем обращении: доступного баланса не хватало на запрос с заданным максимальным объёмом ответа.
Лимит расходов на задачу и доступный баланс у поставщика — разные вещи. Лимит задаёт, сколько мы разрешили потратить. Баланс определяет, может ли поставщик принять следующий запрос с его параметрами.
В начальном этапе было потрачено $3,89 при бюджете до $10, но продолжение всё равно остановилось. После пополнения вычитка пошла дальше. Позже ограничение баланса возникло снова.
Был и менее очевидный случай: редактор успел вернуть правки, они были применены, а последующее обращение за сводкой уже не прошло. Поэтому сообщение об ошибке в конце не означало, что весь этап оказался пустым.
Из этого для меня следует практическое правило учёта: смотреть не только на статус «завершено» или «ошибка», но и на фактически полученный результат. Иначе можно либо не учесть сделанную работу, либо повторно оплатить уже выполненное.
В этих задачах после отказа из-за баланса повторы не запускали. Продолжение привязывали к сохранённым результатам. Это не красивая оптимизация стоимости модели, а обычная аккуратность: не заставлять систему снова делать то, что она уже сделала.
Проверка качества тоже имеет свой счёт
Отдельная история — границы ответов тренера. При проверке языковых версий выяснилось, что проблема есть не только в переводе: ответы на русском тоже требовали исправлений.
В задаче меняли инструкции модели, добавляли автоматическую проверку и повторно оценивали ответы. Расход составил $1,42. Внутри этой суммы перевод предупреждения через DeepSeek стоил $0,01, остальное в таблице — прогоны редакторской оценки. Проверочные ответы самого тренера, как я уже написал, учитывались отдельно.
Важно, что потраченный бюджет не означал достигнутого качества: целевой критерий мы так и не выполнили. Наличие предупреждения в конце ответа не всегда исправляло неудачную формулировку в начале.
На следующем этапе добавили более подробную автоматическую проверку. Оценка обошлась в $0,41. Целевой китайский ответ получил более высокую оценку, но средний балл по тому же набору ответов снизился с 4,33 до 4,00. Часть претензий редактор предъявил к словам, которые раньше оценивал мягче.
Для меня это полезнее истории «потратили немного и всё починили». Видно сразу несколько ограничений: дописанная строка не обязательно устраняет противоречие, а оценщик на основе модели не всегда стабилен.
Поэтому редакторский балл для меня не доказательство качества. Обязательные признаки ответа мы теперь проверяем фиксированным списком, а редакторскую модель используем для ревизии формулировок.
Что нужно для честной цены в месяц
После такого разбора мне недостаточно показать остаток денег у поставщика. Для месячной стоимости нужны расходы за определённый период, понятные правила включения запросов и данные об активности пользователей за тот же период.
Нужно заранее решить, что считать эксплуатацией, как учитывать проверочные обращения на работающем сервисе и куда относить перевод новых страниц. И не менять эти правила от отчёта к отчёту ради более приятного итога.
Делить расход на зарегистрированные аккаунты без оговорок я бы тоже не стал. Человек, который не открывал тренера, и человек, который регулярно общается с ним, создают разную нагрузку. Среднее может быть полезным, но только если ясно, что именно находится в его знаменателе.
Поэтому мой вывод пока скромнее, чем «ИИ-тренер стоит копейки». В разобранных задачах небольшие расходы на обращения к моделям. Есть отдельно оплаченная проверка качества. Есть остановки из-за баланса, хотя бюджет задачи не исчерпан. И есть результаты, которые нельзя признать достаточными только на основании потраченной суммы.
Месячная стоимость начинается с учёта этих различий. А цена всего сервиса не заканчивается счётом DeepSeek.
