Skip to main content
Version: 1.5.0

Расчет расхода

Если для нексуса включен биллинг, платформа считает расход каждого обращения к нему в кредитах по правилам биллинга нексуса. Правила состоят из четырех частей:

  • метрики – числовые значения из запроса или ответа нейросети, например количество токенов запроса и ответа;
  • пути извлечения – где в теле запроса или ответа находится значение каждой метрики;
  • коэффициенты – именованные числа, например цена одного токена в кредитах;
  • формулы – основная и резервная: по ним метрики и коэффициенты пересчитываются в кредиты.

Правила задаются на вкладке Биллинг формы нексуса. Читайте подробнее в статье Биллинг нексуса.

Израсходованные кредиты по лицензии, потребителям и нексусам показывает личный кабинет. Читайте подробнее в статье Мониторинг потребления.

Чтобы клиент получал расход обращения в самом ответе API, включите на нексусе возврат кредитов. Читайте подробнее в статье Биллинг нексуса.

Метрики и пути извлечения​


Метрика – это значение, которое платформа извлекает из обращения и подставляет в формулу. Метрики бывают двух видов: метрики из справочника, значение которых берется по пути извлечения, и системные, которые платформа считает сама.

Метрики из справочника берутся из тела запроса или ответа нейросети по пути извлечения. Код и путь по умолчанию задаются в справочнике Метрики биллинга (mai_billing_metric). Путь можно изменить на конкретном нексусе, потому что нейросети разных провайдеров возвращают одни и те же данные в разных полях.

Путь извлечения начинается с request. или response. – тело запроса или тело ответа нейросети. Дальше через точку перечисляются ключи вложенных объектов:

  • response.usage.prompt_tokens – поле prompt_tokens в объекте usage ответа;
  • request.max_tokens – поле max_tokens в теле запроса.

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

Системные метрики платформа считает сама, путь для них не нужен:

КодОписание
RQBРазмер тела запроса в формате JSON в байтах.
RSBРазмер тела ответа в формате JSON в байтах.
TBСуммарный размер запроса и ответа в байтах.
RQSКоличество символов в теле запроса в формате JSON.
RSSКоличество символов в теле ответа в формате JSON.
TSСуммарное количество символов в запросе и ответе.
CountКоличество обращений. Всегда равно 1: используйте эту метрику, чтобы каждое обращение расходовало фиксированное число кредитов.

Коды метрик чувствительны к регистру: Count, а не count.

Коэффициенты​


Коэффициент – именованное число, которое используется в формуле вместо конкретного значения. Например, коэффициенты p_in = 0.15 и p_out = 0.25 задают цену токена запроса и токена ответа в кредитах. Формула RQT*p_in + RST*p_out понятнее, чем RQT*0.15 + RST*0.25, а цену можно изменить, не трогая формулу.

Имя коэффициента пишется латиницей и не должно совпадать с кодом системной метрики или метрики из справочника. Значение коэффициента – обычное число, например 0.15 или -2.

Основная и резервная формулы​


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

Резервная формула применяется, когда основную посчитать нельзя:

  • одной из метрик основной формулы нет в запросе или ответе, например нейросеть не вернула объект usage;
  • значение по пути метрики – не число;
  • при расчете возникает деление на 0.

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

caution

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

Обе формулы обязательны, если биллинг нексуса включен. Если биллинг отключен, обращения к нексусу не расходуют кредиты.

Результат расчета округляется вверх до целого числа кредитов. Округляется расход каждого обращения отдельно, поэтому обращение с положительным расходом стоит не меньше одного кредита.

Если результат расчета отрицательный, расход обращения равен 0 кредитов – и в учете, и в ответе API.

Чтобы проверить правила на примере реального запроса и ответа, воспользуйтесь панелью Расчет кредитов на вкладке Биллинг нексуса. Читайте подробнее в статье Биллинг нексуса.

Синтаксис формул​

В формулах допускаются:

  • числа с точкой в качестве разделителя дробной части, например 0.125;
  • коды метрик и имена коэффициентов;
  • арифметические операции +, -, *, /;
  • круглые скобки.

Знак - перед числом допускается только в начале формулы и сразу после открывающей скобки. После оператора берите отрицательное число в скобки: RQT*(-2), а не RQT*-2. Знак + перед числом не ставится.

Функции, например max или round, и экспоненциальная запись чисел, например 1e-7, в формулах не поддерживаются.

Делить на число 0 и на коэффициент со значением 0 нельзя: такая формула не проходит проверку. Деление на метрику, равную 0, переводит расчет на резервную формулу.

Пример расчета​

Правила нексуса:

Часть правилЗначение
Пути извлеченияRQT – response.usage.prompt_tokens, RST – response.usage.completion_tokens
Коэффициентыp_in = 0.15, p_out = 0.25
Основная формулаRQT*p_in + RST*p_out
Резервная формулаTB*0.125

Нейросеть вернула в ответе "usage": {"prompt_tokens": 1000, "completion_tokens": 200}. Обе метрики найдены, поэтому применяется основная формула: 1000 × 0.15 + 200 × 0.25 = 200 кредитов.

Если в ответе нет объекта usage, применяется резервная формула. При суммарном размере запроса и ответа 4000 байт расход составит 4000 × 0.125 = 500 кредитов.

Пример с кешированными токенами​

Нейросети с API, совместимым с OpenAI, возвращают количество кешированных токенов запроса в поле usage.prompt_tokens_details.cached_tokens и включают их в prompt_tokens. Чтобы считать кешированные токены по отдельной цене:

  1. Создайте метрику, например CQT, с путем response.usage.prompt_tokens_details.cached_tokens.

  2. Добавьте коэффициент p_cache.

  3. Вычтите кешированные токены из токенов запроса в основной формуле:

    (RQT-CQT)*p_in + CQT*p_cache + RST*p_out

Без вычитания кешированные токены будут посчитаны дважды: по цене p_in и по цене p_cache.

Потоковая передача​


При потоковой передаче из ответа доступен только объект usage – из события, в котором нейросеть передает расход токенов модели. Используйте пути вида response.usage.<ключ>. Если такого события в потоке нет, применяется резервная формула. Для нейросетей с API, совместимым с OpenAI, событие с расходом приходит, только если клиент передал в запросе "stream_options": {"include_usage": true}. Читайте подробнее в статье Обращение к нексусу.