В большинстве предложений архитектура посчитана верно, а экономика — нет, причём ошибаются не в сумме, а в самой форме расчёта. Никто не объясняет заранее, почему счёт за первый живой месяц втрое больше того, что обещало демо, почему «маленькая» фича съедает больше крупной и почему технический директор заказчика упорно верит, что своё железо сэкономит деньги, хотя посчитанные цифры этого не подтверждают.
Цен в этой главе нет ни одной. Их пересматривают каждый квартал, и число, напечатанное сегодня, к следующей вашей встрече уже врёт. Устойчива форма счёта: что считают, что умножают и что заказчик покупает на самом деле, выбирая одну модель вместо другой. Форму держат в голове, а свежие цифры подставляют прямо на встрече, без этой книги под рукой.
8.1 Единица тарификации — токен, и считаются оба направления
Токен — это примерно фрагмент слова, единица, в которой модель читает и пишет текст. Любой коммерческий API тарифицирует использование в токенах, причём отдельно по двум потокам: то, что вы отправили, и то, что модель вернула. Платят за оба. Заказчик, который прикидывает стоимость по формуле «сколько стоит один ответ» и не считает вопрос, инструкции и историю переписки, промахивается в разы и всегда в меньшую сторону.
Здесь контекстное окно перестаёт быть технической деталью и становится статьёй расходов. Между вызовами у модели нет памяти: она знает ровно то, что лежит в запросе прямо сейчас, — поэтому наспех собранный чат-бот пересылает всю историю разговора на каждом шаге. Десятая реплика стоит не как реплика, а как она сама плюс девять предыдущих, и так на каждом шаге. У бота поддержки с долгими сессиями счёт зависит не от числа вопросов, а от того, докуда доходит каждый диалог, пока кто-нибудь не займётся его обрезкой.
RAG добавляет ещё один слой до того, как модель произнесла хоть слово. Найденные фрагменты кладут в запрос рядом с вопросом, поэтому любой ответ RAG стоит как минимум вопрос плюс все документы, которые под него подтянули. Поиск, возвращающий десять длинных фрагментов там, где хватило бы трёх, — это не только про качество: это счёт втрое больше нужного, на каждом вопросе, всегда.
8.2 Токены на выходе обычно дороже, и это должно влиять на дизайн фичи
В большинстве коммерческих тарифов сгенерировать токен дороже, чем прочитать. Дело не в прайс-листе: каждый выходной токен требует отдельного прохода модели, один за другим, а входные обрабатываются в основном параллельно. Асимметрия структурная, и отменить её вендор в следующем квартале не может.
Следствие для дизайна прямое. Фича, которая просит модель переписать весь входящий текст, поменяв в нём два слова, платит по дорогому тарифу за текст, который у системы уже был. Попросите вместо этого правку, патч или только новый раздел — тариф тот же, объём в разы меньше. Микрооптимизацией это не назовёшь: на фиче, которая срабатывает тысячи раз в день, из этой разницы и складывается ответ на вопрос, доживёт ли она до второго квартала.
Та же логика — про настройки многословности и про системные промпты, требующие развёрнутого форматирования, заголовков и повторяющихся преамбул. Всё, что модель произносит сверх собственно ответа, тарифицируется по дорогой ставке, и так при каждом вызове.
8.3 Инференс — расход, который не заканчивается
Разработка фичи — проектная стоимость: случается один раз, попадает в смету и на этом заканчивается. Работа фичи — инференс, то есть момент, когда модель отвечает живому пользователю, — расход операционный. Он повторяется на каждом вызове, пока фича жива, и растёт вместе с использованием, а не с усилиями команды.
Разницу стоит проговаривать заказчику прямым текстом, потому что оба вопроса задают одним предложением и ответа ждут одного. У «сколько это будет стоить» есть проектный ответ и есть ежемесячный, и предложение, где написан только первый, ведёт к неприятному разговору на третий месяц — когда использование выросло, проект признан успешным, и счёт впервые отразил этот успех.
8.4 Почему «open source» не значит «дешевле»
Идея есть почти в каждой AI-дорожной карте: взять модель с открытыми весами, поднять её у себя и перестать платить за токен. Счёт за токен действительно исчезает, тут спорить не с чем. Но картина неполная, и неполнота существенная: переменный расход меняется на фиксированный, а фиксированному всё равно, пользовался кто-нибудь системой сегодня или нет.
Свой хостинг означает взять на себя всё, что раньше молча покрывала комиссия вендора за API:
- Эксплуатация. Сервинг надо поднять и держать поднятым: обновления, мониторинг, запас мощности под всплески трафика. У вендора API этим занимаются те же самые люди — просто их зарплата уже зашита в цену за токен и отдельной строкой не видна.
- Дежурство. Когда своя модель начнёт отвечать мусором в три ночи, узнает об этом не статус-страница вендора, а живой человек в компании заказчика. Этот человек стоит денег каждый месяц, независимо от того, случится авария или нет.
- Железо. Отвечать быстро и качественно модель будет на GPU, а GPU дороги не из-за жадности продавца: чипы специализированные, и в очереди за ними стоят все, кто считает ровно ту же задачу. Пока очередь не рассосётся, цена не упадёт. Счёт за карту приходит одинаковый и в пиковый вторник, и в новогодние каникулы, когда системой не пользуется никто; неиспользованный API не стоит ничего.
- Обновления модели. У вендора модель становится лучше сама и незаметно. Своя — тогда, когда кто-то в команде заказчика заметил свежий релиз с открытыми весами, проверил его на своих задачах и выкатил заново. Это не разовая миграция, а работа, которая возвращается.
Из этого не следует, что своё железо — ошибка. Следует другое: сравнивать надо не цену за токен с нулём, а цену за токен с фиксированным месячным порогом, и решает всё то, где проходит объём заказчика относительно этого порога. Там, где токенов набегает столько, что счёт по API перевалил бы за стоимость своей стойки, а инженеры с дежурством уже есть, — свой хостинг обоснован. Там, где объём скромный, а инфраструктурой между делом занимается единственный админ, покупают фиксированный расход, чтобы не платить переменный, который был меньше.
8.5 Как считать на реальных цифрах
Структура выше устойчива, цифры внутри неё — нет, поэтому раздел не печатает ни одной. Зато он может указать на инструмент, который держит цифры за вас, чтобы не запоминать их наизусть.
Что взять с собой на встречу
Пять вопросов превращают расплывчатый разговор про стоимость в конкретный:
- Какая средняя длина диалога, включая найденный контекст? Оценка цены за вопрос, которая не считает растущую историю и поиск, ошибётся, и всегда в меньшую сторону.
- Не генерирует ли фича больше, чем нужно? Правка дешевле пересказа, а ставка за вывод дорогая, и так при каждом вызове.
- О каком числе спросили — о смете или о ежемесячном счёте? Вопрос задают одним предложением, а ответов у него два, и умолчание про второй вскроется на третий месяц.
- Если разговор свернул на своё железо — кто дежурит в три ночи? Это человек, который уже в штате, или дырка в плане?
- Месячный объём в токенах кто-нибудь измерял — или его до сих пор прикидывают на глаз? Пока этой цифры нет, спор «своё железо или API» идёт о вкусах: переменный расход не с чем сравнить, а фиксированный придёт в любом случае.
Предложение, которое отвечает на эти пять вопросов раньше, чем их задаст заказчик, — это то предложение, которое не придётся пересогласовывать в месяц, когда придёт счёт.