cap_cost firewall — это
предохранитель для этого: вы создаёте потолок в центах на прогон один раз, и
шлюз отклоняет следующий вызов инструмента в тот момент, когда накопленные
траты прогона его пересекают, — до того как этот вызов достигнет модели или
инструмента.
Это контроль стоимости ИИ-агента, применяемый на шлюзе, а не прикрученный к
циклу вашего агента. Как каждый вердикт firewall,
правило cap_cost живёт в политике рабочего пространства, привязывается к ключу
и вступает в силу на следующем вызове без передеплоя.
1. Предохранитель трат на прогон
cap_cost — это вердикт правила, который вы создаёте с одним дополнительным
полем — cap_cost_cents, потолком трат прогона в центах USD. Когда правило
совпадает с вызовом инструмента, движок сравнивает накопленные траты прогона
агента с этим потолком:
- Под потолком → вызов разрешается; вычисление продолжается.
- Над потолком → вызов отклоняется, с причиной, называющей общую сумму прогона против потолка. Это терминальный исход-предохранитель — прогон не может выпустить ещё один управляемый вызов до свежего прогона.
Область прогона, с откатом на запрос. Когда запрос несёт id прогона
агента, потолок применяется к накопленным тратам прогона. Вызов без связи с
прогоном (например, голый MCP-диспетч без переданной сессии) вместо этого
откатывается к сравнению на запрос. В любом случае предохранитель срабатывает
до того, как сверхбюджетный вызов диспетчеризован.
2. Один конкретный пример
Ограничьте любой прогон на ключе $5.00 накопленных трат. Единственное wildcard-правило делает это —cap_cost_cents равно 500 (центов):
firewall_policy_id или сделайте её default рабочего пространства, и каждый
прогон, которым управляет этот ключ, теперь ограничен.
Вы можете ограничить потолок уже, чем «каждый инструмент». Сузьте
глоб имени инструмента, так чтобы к
предохранителю учитывалось только дорогое семейство вызовов — например,
cap_cost на *.search, чтобы ограничить разворачивание веб-поиска, оставляя
дешёвые локальные инструменты неучтёнными.
3. Где он срабатывает — и где не может
cap_cost имеет смысл только до того, как вызов диспетчеризован — это та
единственная точка, где остановка вызова всё ещё предотвращает траты. Так что
он живой на двух pre-dispatch поверхностях и
отклоняется на post-dispatch:
| Поверхность | cap_cost? |
|---|---|
inbound (рекламируемые инструменты) | Применяется. |
mcp (диспетч tools/call) | Применяется. |
response (выданные моделью вызовы) | Отклоняется при сохранении — останавливать нечего. |
egress (исходящее назначение) | Отклоняется при сохранении — останавливать нечего. |
cap_cost, привязанное к response или egress, отказывается при
сохранении, так что правило никогда не может отображаться как живое, будучи
неспособным когда-либо отклонить. Оставьте стадию пустой, чтобы покрыть обе
pre-dispatch поверхности, или привяжите его к inbound / mcp.
4. Как выглядит предохранитель, когда он срабатывает
Сверхбюджетный вызов — это обычный deny firewall:- На
inboundретрансляция возвращает HTTP 400 с кодом ошибкиfirewall_blocked. Блокировка срабатывает до вызова вышестоящей модели, так что она не стоит токенов модели, и помечается skip-retry — повторный прогон того же вызова просто снова сработал бы предохранителем. - На
mcpон возвращается как ошибка инструмента, так что модель видит отказ и может остановиться или спросить пользователя, а не упасть.
cap_cost: estimated run cost $5.40 exceeds cap $5.00, так что оператор, читающий
ленту событий, видит ровно, почему
сработал предохранитель.
События никогда не несут буквальный
cap_cost. Вы создаёте вердикт как
cap_cost, но движок разрешает его в конкретный allow или deny до
того, как событие записывается. Лента показывает allow/deny, который агент
реально увидел — потолок стоимости прогона — это причина, а не метка
вердикта. Это отражает то, как
вердикты разрешаются.5. Разверните его безопасно
Поскольку сработавший предохранитель жёстко останавливает прогон, валидируйте его до применения. Включите shadow-режим на политике: правилоcap_cost всё равно вычисляется, а потенциальный deny
понижается до audit, с префиксом [shadow] would …. Наблюдайте за лентой
событий, чтобы подтвердить, что потолок срабатывает там, где вы ожидаете, — и
только там, где ожидаете, — затем выключите shadow-режим, чтобы начать
применять.
Вы также можете прогнать политику вхолостую против образца вызова во
вкладке Test (песочница Developer+),
чтобы увидеть разрешённый вердикт и совпавшее правило до того, как что-либо
начнёт от него зависеть.
6. Как он вписывается в остальной firewall
cap_cost — один вердикт из шести. Он естественно сочетается с другими
контролями на той же политике:
Вердикты
Полный набор — allow, audit, deny, sanitize, pending_approval, и как
cap_cost разрешается.
Блокировать опасные инструменты
Отклонять деструктивный shell, удаления и другие высокорисковые вызовы напрямую.
Справочник правил
Полный язык сопоставления — глобы, клаузы аргументов, последовательности.
Детектирование аномалий
Всплески стоимости, флагируемые против обученного базиса по часу недели.
cap_cost для жёсткой остановки, аномалии для
раннего сигнала.
Квота-лимиты на самом ключе (
credit_limit_usd) ограничивают общие траты по
всем прогонам; cap_cost ограничивает один прогон. Они компонуются —
убегающий цикл срабатывает предохранителем на прогон задолго до того, как
сможет исчерпать пожизненный кредит ключа. См.
область: ключи, политики, рабочие пространства.Куда двигаться дальше
Создать и привязать политику
Создайте политику, выберите default-вердикт, привяжите её к ключу.
Shadow-режим
Измерьте потолок до того, как он изменит трафик.
