Экономика AI

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

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

8.1 Единица тарификации — токен, и считаются оба направления

Токен — это примерно фрагмент слова, единица, в которой модель читает и пишет текст. Любой коммерческий API тарифицирует использование в токенах, причём отдельно по двум потокам: то, что вы отправили, и то, что модель вернула. Платят за оба. Заказчик, который прикидывает стоимость по формуле «сколько стоит один ответ» и не считает вопрос, инструкции и историю переписки, промахивается в разы и всегда в меньшую сторону.

Здесь контекстное окно перестаёт быть технической деталью и становится статьёй расходов. Между вызовами у модели нет памяти: она знает ровно то, что лежит в запросе прямо сейчас, — поэтому наспех собранный чат-бот пересылает всю историю разговора на каждом шаге. Десятая реплика стоит не как реплика, а как она сама плюс девять предыдущих, и так на каждом шаге. У бота поддержки с долгими сессиями счёт зависит не от числа вопросов, а от того, докуда доходит каждый диалог, пока кто-нибудь не займётся его обрезкой.

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

8.2 Токены на выходе обычно дороже, и это должно влиять на дизайн фичи

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

Следствие для дизайна прямое. Фича, которая просит модель переписать весь входящий текст, поменяв в нём два слова, платит по дорогому тарифу за текст, который у системы уже был. Попросите вместо этого правку, патч или только новый раздел — тариф тот же, объём в разы меньше. Микрооптимизацией это не назовёшь: на фиче, которая срабатывает тысячи раз в день, из этой разницы и складывается ответ на вопрос, доживёт ли она до второго квартала.

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

8.3 Инференс — расход, который не заканчивается

Разработка фичи — проектная стоимость: случается один раз, попадает в смету и на этом заканчивается. Работа фичи — инференс, то есть момент, когда модель отвечает живому пользователю, — расход операционный. Он повторяется на каждом вызове, пока фича жива, и растёт вместе с использованием, а не с усилиями команды.

Разницу стоит проговаривать заказчику прямым текстом, потому что оба вопроса задают одним предложением и ответа ждут одного. У «сколько это будет стоить» есть проектный ответ и есть ежемесячный, и предложение, где написан только первый, ведёт к неприятному разговору на третий месяц — когда использование выросло, проект признан успешным, и счёт впервые отразил этот успех.

8.4 Почему «open source» не значит «дешевле»

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

Свой хостинг означает взять на себя всё, что раньше молча покрывала комиссия вендора за API:

  • Эксплуатация. Сервинг надо поднять и держать поднятым: обновления, мониторинг, запас мощности под всплески трафика. У вендора API этим занимаются те же самые люди — просто их зарплата уже зашита в цену за токен и отдельной строкой не видна.
  • Дежурство. Когда своя модель начнёт отвечать мусором в три ночи, узнает об этом не статус-страница вендора, а живой человек в компании заказчика. Этот человек стоит денег каждый месяц, независимо от того, случится авария или нет.
  • Железо. Отвечать быстро и качественно модель будет на GPU, а GPU дороги не из-за жадности продавца: чипы специализированные, и в очереди за ними стоят все, кто считает ровно ту же задачу. Пока очередь не рассосётся, цена не упадёт. Счёт за карту приходит одинаковый и в пиковый вторник, и в новогодние каникулы, когда системой не пользуется никто; неиспользованный API не стоит ничего.
  • Обновления модели. У вендора модель становится лучше сама и незаметно. Своя — тогда, когда кто-то в команде заказчика заметил свежий релиз с открытыми весами, проверил его на своих задачах и выкатил заново. Это не разовая миграция, а работа, которая возвращается.

Из этого не следует, что своё железо — ошибка. Следует другое: сравнивать надо не цену за токен с нулём, а цену за токен с фиксированным месячным порогом, и решает всё то, где проходит объём заказчика относительно этого порога. Там, где токенов набегает столько, что счёт по API перевалил бы за стоимость своей стойки, а инженеры с дежурством уже есть, — свой хостинг обоснован. Там, где объём скромный, а инфраструктурой между делом занимается единственный админ, покупают фиксированный расход, чтобы не платить переменный, который был меньше.

8.5 Как считать на реальных цифрах

Структура выше устойчива, цифры внутри неё — нет, поэтому раздел не печатает ни одной. Зато он может указать на инструмент, который держит цифры за вас, чтобы не запоминать их наизусть.

Что взять с собой на встречу

Пять вопросов превращают расплывчатый разговор про стоимость в конкретный:

  1. Какая средняя длина диалога, включая найденный контекст? Оценка цены за вопрос, которая не считает растущую историю и поиск, ошибётся, и всегда в меньшую сторону.
  2. Не генерирует ли фича больше, чем нужно? Правка дешевле пересказа, а ставка за вывод дорогая, и так при каждом вызове.
  3. О каком числе спросили — о смете или о ежемесячном счёте? Вопрос задают одним предложением, а ответов у него два, и умолчание про второй вскроется на третий месяц.
  4. Если разговор свернул на своё железо — кто дежурит в три ночи? Это человек, который уже в штате, или дырка в плане?
  5. Месячный объём в токенах кто-нибудь измерял — или его до сих пор прикидывают на глаз? Пока этой цифры нет, спор «своё железо или API» идёт о вкусах: переменный расход не с чем сравнить, а фиксированный придёт в любом случае.

Предложение, которое отвечает на эти пять вопросов раньше, чем их задаст заказчик, — это то предложение, которое не придётся пересогласовывать в месяц, когда придёт счёт.

Оператор техподдержки считает бюджет чат-бота с RAG по формуле: «средний ответ — сто пятьдесят слов, вот и весь расчёт токенов». Чего не хватает в этой прикидке?