Перейти к основному содержанию
Скомпрометированный агент не останавливается сам. Prompt-инъекция, заманившая его в цикл повторов, или утёкший ключ в логе CI будут продолжать вызывать модели, пока что-то не скажет «стоп». В OrcaRouter это «что-то» — два поля на самом ключе: лимит расходов и срок действия. Задайте их один раз в редакторе ключа, и шлюз применяет оба на каждом запросе — без изменений в коде агента, без передеплоя. Эта страница — сфокусированный справочник по этим двум лимитам. Полный список полей ключа см. в объекте токена; о модели идентичности вокруг них см. обзор ограниченных ключей.

1. Лимит расходов на API-ключе: credit_limit_usd

credit_limit_usd — это пожизненный потолок расходов для ключа, выраженный в обычных USD. Вы вводите долларовую цифру в редакторе ключа; OrcaRouter превращает её в стартовую квоту ключа и тарифицирует каждый вызов по ней.

Ограниченный

credit_limit_usd: 25 выпускает ключ с $25 расходов. Каждый вызов списывает свою стоимость; как только остаток баланса достигает нуля, ключ перестаёт авторизовать, и каждый дальнейший запрос отклоняется.

Без ограничения

credit_limit_usd: 0 — это сигнальное значение для отсутствия лимита — ключ черпает из баланса вашего рабочего пространства без потолка на ключ. Удобно, но худший радиус поражения, если он утечёт.
0 не означает «ноль долларов» — оно означает без ограничения. Ключ, который вы хотели запереть до крошечного бюджета, должен нести положительное число. Чтобы выразить «этому ключу нельзя тратить ничего», отключите или удалите его, не задавайте лимит в 0.

2. Как тарифицируется лимит: remain_quota и used_quota

Долларовый лимит, который вы вводите, — это поверхность для человека. Под ним шлюз отслеживает два текущих счётчика на ключе:
ПолеЗначение
remain_quotaРасходы, оставшиеся до того, как ключ перестанет авторизовать.
used_quotaРасходы, потреблённые до сих пор за время жизни ключа.
Установка положительного credit_limit_usd засевает remain_quota из этой долларовой цифры; каждый тарифицируемый вызов перемещает стоимость из remain_quota в used_quota. Ключ с безлимитным лимитом несёт вместо этого unlimited_quota, и проверка баланса пропускается целиком.
Блокировка guardrail или firewall ничего не стоит против лимита, когда она срабатывает до запуска модели — guardrail_blocked на входной стадии и firewall_blocked на inbound оба происходят до тарификации, так что remain_quota не трогается. Блокировка guardrail на выходной стадии возвращает средства за запрос. См. guardrails и firewall.

3. Автоистечение: expired_time

expired_time — это абсолютная отсечка — временная метка Unix epoch (секунды), после которой ключ перестаёт авторизовать, сколько бы бюджета ни осталось.
  • Будущая временная метка истекает ключ в этот момент. Шлюз сравнивает её с текущим временем на каждом запросе и отклоняет вызов, как только она прошла.
  • -1 — это сигнальное значение для никогда не истекает.
Два лимита независимы, и оба должны пройти. Ключ с оставшимся бюджетом, но прошедшим expired_time, мёртв; ключ внутри окна своей валидности с remain_quota на нуле мёртв. Какая граница сработает первой, та и побеждает. Редактор отклоняет срок действия, заданный в прошлом, так что вы не можете случайно выпустить рождённый-истёкшим ключ.
Для короткоживущих ключей, выпускаемых на каждый прогон CI или на каждый эфемерный агент, см. истекающие ключи.

4. Один конкретный ограниченный, истекающий ключ

Ночная задача, сверяющая счета с одной дешёвой моделью, работающая в течение двухнедельного пилота и никогда не должная стоить больше пары долларов за ночь, нуждается почти в нулевых полномочиях. Настройте её ключ в редакторе ключа консоли (/console/tokenDeveloper+):
1

Задайте лимит расходов

credit_limit_usd: 40 — весь бюджет пилота. Зацикленный цикл повторов исчерпывает ключ, а не баланс вашего рабочего пространства.
2

Задайте срок действия

expired_time: временная метка Unix для конца окна пилота. Ключ автоматически истекает и не может быть переиспользован после отгрузки пилота.
3

Сочетайте с другими областями

Добавьте model_limits, чтобы он не мог эскалировать к frontier-модели, и allow_ips, чтобы утёкший ключ был бесполезен вне хоста планировщика.
Если этот агент захвачен на третий день, ущерб ограничен тем, что осталось от его $40, и весь ключ исчезает за одиннадцать дней в любом случае. Остальное рабочее пространство нетронуто.
Оба поля — это USD-и-время на ключе, а не политика уровня рабочего пространства. Чтобы ограничить расходы одного прогона агента (а не времени жизни ключа), вердикт cap_cost у Firewall — это предохранитель на прогон — см. правила firewall. Эти два сочетаются: лимит ключа ограничивает время жизни, cap_cost ограничивает один прогон.

5. Кто может это задавать

Установка credit_limit_usd и expired_time — часть создания или редактирования ключа, что требует роли Developer или выше. Любой участник рабочего пространства может читать маскированную запись ключа; только Developer+ может менять его лимиты. Ключи маскируются на отображении — открытый текст показывается один раз при создании (см. маскирование ключей).

6. Ограничен по умолчанию

Ключ с credit_limit_usd: 0 и expired_time: -1 не имеет лимита расходов и никогда не истекает — максимум полномочий, худший радиус поражения. Сделайте это намеренным исключением, а не default’ом.

Без ограничения vs ограниченный

Когда ключ без лимита и без истечения действительно правильный выбор — и когда нет.

Чек-лист минимальных полномочий

Прогоните каждый production-ключ через один и тот же проход усиления, прежде чем он отгрузится.

7. Связанное

Объект токена

Каждое поле на ключе, включая счётчики квоты.

Привязка политик

Прикрепите guardrail и политику firewall к одному ключу.

Избыточные полномочия

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