Перейти к содержимому

Лимиты и расход

usage = await cloud.get_usage(days=30) # рубли: суммарно и по статьям
by_key = await cloud.get_usage_by_token(days=30) # какой ключ сколько потратил
by_role = await cloud.get_usage_by_agent(days=30) # какая роль ассистента сколько потратила
quota = await cloud.get_quota() # остаток по тарифу

GET /v1/usage считает по фактически выполненным операциям, поэтому сумма отстаёт от только что запущенной фоновой задачи: расход появится, когда задача доработает. GET /v1/usage/quota показывает остаток и объясняет отказ загрузки до попытки — им стоит пользоваться, а не ловить 402.

Разбивки по ключам и по ролям — это те же строки в другом разрезе, поэтому их суммы совпадают с GET /v1/usage за тот же период. У каждой есть строка-остаток: token_id: null — расход не через API-ключ (работа в приложении, фоновые задачи), пустой slug — расход не про роль (загрузка, обогащение, поиск). Без них разбивка не сошлась бы с общей суммой.

Дорогие ответы возвращают стоимость прямо в теле: у /v1/ask это поле cost_rub, у агента — то же поле в SSE-событии done.

Вызовы на своём подключении стоят ноль. Если вы подключили собственный ключ LLM, токены в отчёте видны (сколько израсходовано — ваш вопрос), а рубли по ним не считаются: счёт за них выставил ваш провайдер, а не мы.

Ограничения, которые стоит заложить в клиент

Заголовок раздела «Ограничения, которые стоит заложить в клиент»
  • top_k урезается сервером. Запрошенное число больше потолка инсталляции молча уменьшается — рассчитывать на выдачу произвольного размера нельзя.
  • object_ids в /ask — до 100, scope_object_ids в агенте — до 25, вложений к сообщению — до 5.
  • Длина запроса: 2000 символов у /ask и /search, 8000 — у агента.
  • Частота — минутное окно, см. Ошибки и повторы.
  • Месячная квота тарифа: документы и минуты аудио. Её исчерпание — 402, а не 429.
  • Ходы чата обычно не ограничены. Там, где потолок всё же включён, GET /v1/usage/quota вернёт ещё и chat_messages с остатком. Отсутствие этого поля значит «ограничения нет» — это НЕ то же, что limit: null внутри ресурса, который значит «лимит есть и он бесконечен».
Дёшево Дорого
cloud_summary / get_summary — готовое содержание из обогащения summarize — зовёт модель
search — индекс уже построен ask — эмбеддинг запроса плюс ответ модели
get_object, списки, папки конвертация, перевод, расшифровка речи

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