Skip to main content

Почему контроль бюджета важен

ИИ-агент, вызывающий платные API в цикле, может быстро накопить значительные расходы. Контроль бюджета позволяет:
  • Ограничить общие расходы за сессию
  • Установить лимиты по доменам (например, не более 100 sats/сессию на api.weather.com)
  • Получать обратный вызов перед каждым платежом
  • Получить полный отчёт о расходах в любое время

Глобальный бюджет

Когда ответ 402 содержит поле priceSats и его значение превышает оставшийся бюджет, клиент выбрасывает BudgetExceededError до совершения платежа — никакие satoshi не тратятся.

Бюджет по доменам

Лимиты по доменам проверяются независимо от глобального лимита — оба условия должны выполняться, чтобы платёж был совершён.

Обратные вызовы

onBudgetExceeded / on_budget_exceeded вызывается непосредственно перед выбросом BudgetExceededError — удобно для логирования или оповещений.

Отчёт о расходах

spendingReport() возвращает null / None, если бюджет не настроен.

Обработка BudgetExceededError


Замечания о параллельном выполнении

Не используйте один экземпляр L402Client в параллельных вызовах Promise.all, если важны лимиты бюджета.BudgetTracker.check() и record() разделены операцией await (платёж через Lightning Network). Два параллельных вызова client.fetch() к разным эндпоинтам могут оба пройти проверку бюджета до того, как хоть один из них зафиксирует расход — это означает, что суммарные затраты могут временно превысить лимит бюджета на один платёж.Безопасный паттерн — последовательные вызовы:
Рискованный паттерн — параллельные вызовы:
Решение для параллельных задач: устанавливайте budgetSats с запасом (например, 80% от реального лимита), чтобы компенсировать перерасход от одного параллельного платежа. Для строгого соблюдения лимитов обрабатывайте вызовы последовательно.

Полный справочник параметров