Doubao API предоставляется через Volcengine Ark, и его счёт — не фиксированная плата «за каждый вызов». Итог складывается из входных токенов, выходных токенов, кэша, способа инференса и резервируемых ресурсов. Многие команды строят бюджет по одной ставке, а после запуска видят завышенные затраты. Причина обычно не в подорожании модели, а в структуре входа, доле попаданий в кэш и способе вызова, которые отличаются от расчётных.

В статье тарификация Doubao API разложена на статьи, которые можно проверить по отдельности, а также приведены порядок оценки и снижения затрат. Конкретные ставки — на странице цены на модели и на официальной странице цен Volcengine Ark; цены и правила могут меняться.

Примечание: Doubao, Volcengine Ark и Volcengine — товарные знаки соответствующих правообладателей. Статья носит технический характер и не означает какого-либо партнёрства; правила тарификации и выставления счетов определяются официальными страницами.

1. Из чего состоит счёт

Онлайн-инференс в Volcengine Ark оплачивается постфактум по токенам, но полный счёт может включать хранение кэша, пакетный инференс, пакеты пропускной способности и тонкую настройку.

Статья Когда возникает Единица Примечание
Вход (без попадания в кэш) Промпт впервые попадает в контекст Токен Соответствует prompt_tokens
Вход (попадание в кэш) Повторно используется ранее закэшированный префикс Токен Соответствует cached_tokens, ставка обычно ниже
Хранение кэша После включения кэша контекста Токен × час Считается по максимальному объёму за календарный час
Выход Модель генерирует текст или структурированный результат Токен Соответствует completion_tokens
Пакетный инференс Офлайн-обработка Токен Отдельная цена, обычно не покрывается бесплатным лимитом
Пакет TPM Резервирование пропускной способности в минуту Срок покупки Тарифицируется и без вызовов
Модельный юнит Выделенные вычисления Срок покупки Тарифицируется и без вызовов
Тонкая настройка Этап обучения Токен × эпоха или вычисления Считается отдельно от инференса

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

2. Как считаются вход и выход

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

Несколько деталей, которые легко упустить:

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

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

3. Кэш контекста: экономит, но и сам стоит денег

Логика кэша контекста — повторное использование стабильного префикса. Когда начало двух запросов полностью совпадает, попавшая в кэш часть тарифицируется по более низкой ставке, а только новая часть — по обычной ставке входа. Но кэш не бесплатен:

  1. Попадание тарифицируется по cached_tokens; цена ниже обычного входа, но не равна нулю.
  2. Хранение кэша тарифицируется по часам, обычно по максимальному числу токенов за календарный час.
  3. Кэш работает по принципу best effort и не обещает попадание; при низкой доле попаданий плата за хранение может превысить сэкономленную стоимость входа.

Чтобы кэш действительно экономил, ставьте стабильный контент в начало запроса: фиксированный system prompt, фиксированные описания инструментов, фиксированный префикс базы знаний. Метки времени, случайные ID, имена пользователей и динамические результаты поиска переносите в конец. Если бизнес-запросы каждый раз полностью разные, сначала отключите кэш и посмотрите на счёт, а потом решайте.

4. Онлайн, пакетный режим и пакеты пропускной способности

Volcengine Ark предлагает несколько способов инференса с разными ценами и сценариями:

  • Онлайн-инференс с постоплатой по токенам: подходит для бизнеса с непредсказуемым трафиком и обычными требованиями к задержке; без вызовов платы нет, у новых пользователей обычно есть вычитаемый бесплатный лимит.
  • Пакетный инференс: подходит для офлайн-разметки, модерации контента и массового суммирования, где не нужен ответ в реальном времени; цена обычно ниже, но бесплатный лимит не применяется.
  • Пакет TPM: подходит для продакшена с прогнозируемым трафиком и потребностью в стабильной пропускной способности; покупается на дни или часы и тарифицируется даже без вызовов.
  • Модельный юнит: выделенные вычисления для тонко настроенных моделей или особых требований к параллелизму; относится к фиксированным затратам.

При выборе не сравнивайте только ставку. Пакетный инференс дешевле, но результат приходит с задержкой; пакет пропускной способности стабилен, но расходует деньги и в простое. Разделите бизнес на «реальное время / офлайн» и «прогнозируемый / непрогнозируемый трафик», а затем подберите способ тарификации. Обычно это эффективнее простой смены модели.

5. Оценка по полю usage

Не угадывайте токены по числу символов. Записывайте usage из каждого ответа: через неделю наблюдений вы получите реальную структуру своего бизнеса.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ARK_API_KEY"],
    base_url="https://ark.cn-beijing.volces.com/api/v3",
)

resp = client.chat.completions.create(
    model=os.environ["ARK_ENDPOINT_ID"],  # ID точки доступа или модели, уточните в консоли
    messages=[
        {"role": "system", "content": "Ты помощник поддержки, отвечай не больше чем тремя предложениями."},
        {"role": "user", "content": "Можно ли изменить адрес доставки после отправки заказа?"},
    ],
)

print(resp.usage)  # записывайте поля входа, выхода и кэша

Оценку выполняйте по порядку:

  1. Зафиксируйте состав записи: время, проект, модель, входные токены, выходные токены, попадание в кэш, потоковый режим, число повторов.
  2. Возьмите выборку за неделю и посчитайте средний вход и средний выход по каждому сценарию, а не среднее по всему сервису.
  3. Считайте стоимость запроса как «вход × ставка входа + выход × ставка выхода», а попавшую в кэш часть — отдельно по более низкой ставке.
  4. Умножьте на среднесуточное число вызовов и на 30 — получите месячные затраты на инференс.
  5. Добавьте фиксированные статьи: хранение кэша, пакетные задачи, пакеты пропускной способности или модельные юниты.
  6. Заложите буфер на повторы, пики и изменение цен.
  7. Раз в месяц сверяйте оценку со счётом и корректируйте модель расчёта.

Если в ответе нет детализации по кэшу, записывайте общий вход и общий выход, а затем восстанавливайте структуру по счёту или странице использования. Главное — единая методика: не смешивайте данные из разных точек входа и за разные даты.

6. Порядок контроля затрат

  1. Сначала измерьте: разложите реальную структуру токенов по проектам, моделям и сценариям, найдите три самых дорогих вызова.
  2. Затем повышайте попадания в кэш: стабильный префикс — в начало, меньше динамики, следите за изменением доли попаданий.
  3. Затем сокращайте вход: поиск возвращает только релевантные фрагменты, история суммируется, из результатов инструментов остаются нужные поля.
  4. Ограничьте выход: задайте разумный max_tokens, требуйте JSON или фиксированные поля, сокращайте повторные объяснения.
  5. Разделите модели: классификация, извлечение и переписывание — на лёгких моделях, сложные рассуждения — выше классом.
  6. Переведите офлайн-задачи в пакетный режим: задачи без требования реального времени отправляйте в пакетный инференс и избегайте пиков.
  7. Только потом обсуждайте ставку: если вход не приведён в порядок и кэш не попадает, даже более дешёвая модель не снизит затраты.

7. Как управлять бюджетом и счётом

  • Один проект — один ключ; тест и продакшен раздельно, чтобы не занимать общий лимит.
  • Задайте для ключей лимит расхода и оповещение о балансе, чтобы быстро остановить аномальные вызовы.
  • Еженедельно сверяйте счёт по проекту, модели и сценарию, находите самые быстрорастущие вызовы.
  • Отдельно фиксируйте экономию от кэша, пакетного режима и разделения моделей, иначе эффект оптимизации не доказать.
  • Командам, которым нужны оплата в юанях, единый счёт и счёт-фактура, подойдёт совместимый с OpenAI ZSQH AI Gateway; цены и правила тарификации — на странице цены на модели.

Частые вопросы

Есть ли у Doubao API бесплатный лимит?

У онлайн-инференса обычно есть бесплатный лимит для новых пользователей, который вычитается из постоплаты по токенам; пакетный инференс и тонкая настройка, как правило, бесплатный лимит не принимают. Объём и срок действия — в консоли Volcengine Ark.

Почему хранение кэша тоже платное?

Кэш занимает серверные ресурсы хранения, поэтому помимо платы за попавшие в кэш токены взимается плата за объём и время хранения. При низкой доле попаданий сначала оптимизируйте структуру префикса, а при необходимости отключите кэш.

Всегда ли пакетный инференс дешевле?

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

Тарифицируются ли повторные запросы?

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

Почему собственная оценка не сходится со счётом?

Частые пропущенные статьи: история сообщений, описания инструментов, пересчёт мультимодальных входов, хранение кэша, повторные запросы и фиксированная плата за пакеты. Сопоставляйте журнал использования с request ID, чтобы найти расхождение.

Следующий шаг

Создайте тестовый ключ в ZSQH AI Gateway, прогоните реальные задачи в течение недели, запишите вход, выход и попадания в кэш, а затем пересчитайте бюджет по странице цены на модели. Доступность моделей и цены определяются страницей цен.

Что читать дальше: