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. Кэш контекста: экономит, но и сам стоит денег
Логика кэша контекста — повторное использование стабильного префикса. Когда начало двух запросов полностью совпадает, попавшая в кэш часть тарифицируется по более низкой ставке, а только новая часть — по обычной ставке входа. Но кэш не бесплатен:
- Попадание тарифицируется по
cached_tokens; цена ниже обычного входа, но не равна нулю. - Хранение кэша тарифицируется по часам, обычно по максимальному числу токенов за календарный час.
- Кэш работает по принципу 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) # записывайте поля входа, выхода и кэша
Оценку выполняйте по порядку:
- Зафиксируйте состав записи: время, проект, модель, входные токены, выходные токены, попадание в кэш, потоковый режим, число повторов.
- Возьмите выборку за неделю и посчитайте средний вход и средний выход по каждому сценарию, а не среднее по всему сервису.
- Считайте стоимость запроса как «вход × ставка входа + выход × ставка выхода», а попавшую в кэш часть — отдельно по более низкой ставке.
- Умножьте на среднесуточное число вызовов и на 30 — получите месячные затраты на инференс.
- Добавьте фиксированные статьи: хранение кэша, пакетные задачи, пакеты пропускной способности или модельные юниты.
- Заложите буфер на повторы, пики и изменение цен.
- Раз в месяц сверяйте оценку со счётом и корректируйте модель расчёта.
Если в ответе нет детализации по кэшу, записывайте общий вход и общий выход, а затем восстанавливайте структуру по счёту или странице использования. Главное — единая методика: не смешивайте данные из разных точек входа и за разные даты.
6. Порядок контроля затрат
- Сначала измерьте: разложите реальную структуру токенов по проектам, моделям и сценариям, найдите три самых дорогих вызова.
- Затем повышайте попадания в кэш: стабильный префикс — в начало, меньше динамики, следите за изменением доли попаданий.
- Затем сокращайте вход: поиск возвращает только релевантные фрагменты, история суммируется, из результатов инструментов остаются нужные поля.
- Ограничьте выход: задайте разумный
max_tokens, требуйте JSON или фиксированные поля, сокращайте повторные объяснения. - Разделите модели: классификация, извлечение и переписывание — на лёгких моделях, сложные рассуждения — выше классом.
- Переведите офлайн-задачи в пакетный режим: задачи без требования реального времени отправляйте в пакетный инференс и избегайте пиков.
- Только потом обсуждайте ставку: если вход не приведён в порядок и кэш не попадает, даже более дешёвая модель не снизит затраты.
7. Как управлять бюджетом и счётом
- Один проект — один ключ; тест и продакшен раздельно, чтобы не занимать общий лимит.
- Задайте для ключей лимит расхода и оповещение о балансе, чтобы быстро остановить аномальные вызовы.
- Еженедельно сверяйте счёт по проекту, модели и сценарию, находите самые быстрорастущие вызовы.
- Отдельно фиксируйте экономию от кэша, пакетного режима и разделения моделей, иначе эффект оптимизации не доказать.
- Командам, которым нужны оплата в юанях, единый счёт и счёт-фактура, подойдёт совместимый с OpenAI ZSQH AI Gateway; цены и правила тарификации — на странице цены на модели.
Частые вопросы
Есть ли у Doubao API бесплатный лимит?
У онлайн-инференса обычно есть бесплатный лимит для новых пользователей, который вычитается из постоплаты по токенам; пакетный инференс и тонкая настройка, как правило, бесплатный лимит не принимают. Объём и срок действия — в консоли Volcengine Ark.
Почему хранение кэша тоже платное?
Кэш занимает серверные ресурсы хранения, поэтому помимо платы за попавшие в кэш токены взимается плата за объём и время хранения. При низкой доле попаданий сначала оптимизируйте структуру префикса, а при необходимости отключите кэш.
Всегда ли пакетный инференс дешевле?
Ставка за токен в пакетном инференсе обычно ниже, но результат возвращается не сразу и бесплатный лимит не применяется. Он подходит для офлайн-задач и не подходит для онлайн-поддержки с низкой задержкой.
Тарифицируются ли повторные запросы?
Если сервер завершил инференс и создал токены, они обычно тарифицируются, даже если клиент не получил результат из-за тайм-аута. Тарификация неудачных запросов определяется счётом и официальными правилами; в логику повторов добавляйте задержку и лимит.
Почему собственная оценка не сходится со счётом?
Частые пропущенные статьи: история сообщений, описания инструментов, пересчёт мультимодальных входов, хранение кэша, повторные запросы и фиксированная плата за пакеты. Сопоставляйте журнал использования с request ID, чтобы найти расхождение.
Следующий шаг
Создайте тестовый ключ в ZSQH AI Gateway, прогоните реальные задачи в течение недели, запишите вход, выход и попадания в кэш, а затем пересчитайте бюджет по странице цены на модели. Доступность моделей и цены определяются страницей цен.
Что читать дальше:
