Глава 5. FinOps & Resilience: затраты, rate limits и высокодоступность
Реальный кейс с продакшена B2B-SaaS (2026): команда включила семантический кэш с порогом сходства 0.88 и глобальным namespace, чтобы экономить на токенах. В один момент кэш вернул сессии клиента Tier-3 закэшированную сводку об отмене подписки клиента Tier-1. Два разных запроса оказались «достаточно похожи» по эмбеддингу — и оптимизация затрат превратилась в утечку между тенантами. Команда откатилась на точное кэширование.
Эта история — про то, что cost/resilience plane нельзя строить в отрыве от гл. 1–2: оптимизация, которая экономит деньги ценой утечки, — это не экономия. Глава про то, как исключить неконтролируемый рост расходов на токены, защититься от вычерпания лимитов API и обеспечить SLA 99.9%+ — не жертвуя приватностью и не создавая новых точек отказа.
Бизнес-цель клиента
Для «Ковчега»: отказ провайдера в рабочий день = простой операционистов; неконтролируемый агент = шестизначный счёт за ночь; вычерпанный rate limit = «ассистент лежит» в час пик. Обещания бизнесу:
- Расходы предсказуемы и ограничены по отделам/пользователям.
- Отказ или троттлинг одного провайдера не роняет систему.
- Оптимизации (кэш) не пересекают границы доступа и качества.
Драйвер: угроза или регулятор
- OWASP LLM: LLM10 (Unbounded Consumption) — стоимость и DoS через дорогие запросы.
- Vendor outage / lock: единственный провайдер — единая точка отказа.
- Rate limits 429: пик вычерпывает квоту.
- Cross-tenant leak через кэш: оптимизация как источник инцидента приватности.
Архитектурный паттерн
Multi-Provider AI Gateway & Semantic Caching — единый шлюз перед всеми провайдерами с семантическим кэшем, бюджетами, fallback и circuit breaker. Тот же слой, что несёт гл. 1 (PII), 3 (guardrails), 4 (трейсинг) — плоскости не плодят отдельные прокси, а живут в одном.
Инженерный стек & провайдеры
- AI Gateway: LiteLLM Proxy (
redis-semantic/qdrant-semanticкэш), Portkey, Kong AI Gateway (semantic cache plugin), Cloudflare AI Gateway, TrueFoundry. - Кэш/лимиты: Redis (semantic cache, rate limit, budget counters); GPTCache как вариант.
- Устойчивость: Envoy (circuit breaking), ретраи с backoff.
- Наблюдаемость: Prometheus + Grafana.
Инженерная реализация
### Шаг 1. Единый gateway
Все вызовы моделей — через один слой. Это же требование гл. 1 (обход = дыра в приватности).
### Шаг 2. Semantic Caching с изоляцией по тенанту
Эмбеддинг промпта → поиск по косинусному сходству в Redis; при попадании выше порога — ответ без вызова LLM. Уроки из кейса вступления, зашитые в конфиг:
semantic_cache:
similarity_threshold: 0.97 # выше типового 0.88 — меньше ложных попаданий
namespace: "{tenant_id}:{model}" # model-level + tenant isolation, не глобальный
skip_if: ["contains_pii", "personalized"] # приватное не кэшируем (гл. 1–2)
per_request_threshold_override: true
Кэшируем только неперсональное и непривилегированное. На проде semantic cache реально покрывает 20–45% трафика — материальная экономия, если не ломает изоляцию.
### Шаг 3. Multi-Tenant Budgeting
Жёсткие лимиты по токенам и стоимости в разрезе отделов и пользователей; soft-alert → hard-stop. Для агентов (гл. 9) — ещё и лимит на шаги/стоимость одной задачи.
### Шаг 4. Fallback & Circuit Breaker
Авто-переключение при росте latency или ошибках 5xx/429; деградация на резервного провайдера или локальную модель; ретраи с backoff. Circuit breaker размыкает цепь к сбойному провайдеру, не долбя его в отказ.
### Шаг 5. Наблюдаемость затрат
Cost per request/tenant/feature в Grafana; аномалия расходов → алерт (ночной агент, съедающий бюджет, ловится здесь).
Где ломается
- Semantic cache отдаёт «почти то же». Близкие по эмбеддингу, но семантически разные запросы → неверный ответ; в регулируемом ответе (ставка, условие) это опасно. Высокий порог + осторожный скоуп; для критичного — только exact cache.
- Кэш и приватность. Закэшированный ответ с чужими данными = утечка (кейс вступления). Namespace по тенанту и skip для персонального — обязательны, не опция.
- Fallback меняет поведение. Другой провайдер = другое качество/формат; guardrails (гл. 3) и evals (гл. 7) должны покрывать всех провайдеров, иначе fallback тихо роняет качество.
- Circuit breaker вслепую. Агрессивный порог рубит легитимный трафик; калибровать на реальных latency-профилях.
- Кэш маскирует дрейф. Если 40% ответов из кэша, деградацию свежих ответов (гл. 7) замечаешь позже.
Стандарты и маппинг
- OWASP LLM: LLM10 (Unbounded Consumption).
- ISO/IEC 42001: управление ресурсами, доступность, непрерывность.
- NIST AI RMF: Manage — resilience.
- EU AI Act: robustness/непрерывность для high-risk (Art. 15).
Лаба и артефакт
Развернуть LiteLLM/Portkey перед «Ковчегом»: semantic cache с namespace по тенанту и порогом 0.97, skip для PII, бюджеты по отделам, fallback на резервного провайдера. Воспроизвести кейс вступления (глобальный namespace + 0.88) и показать утечку, затем починить конфигом. Сымитировать 429 и 5xx — проверить деградацию и circuit breaker. Артефакт: gateway-конфиг + Grafana-дашборд cost/latency + budget-политики + отчёт «cache hit-rate vs cross-tenant safety».
Чеклист зрелости
- L1: единый gateway, базовые лимиты, exact cache.
- L2: semantic cache с изоляцией по тенанту и skip для приватного, бюджеты по tenant, fallback между провайдерами.
- L3: circuit breaker, cost-аномалии в алертах, evals по всем провайдерам, per-request threshold, SLA-мониторинг.
Источники
- [Semantic caching thresholds and why they matter (Portkey)](https://portkey.ai/blog/semantic-caching-thresholds/)
- [Top semantic caching solutions 2026 (Maxim)](https://www.getmaxim.ai/articles/top-semantic-caching-solutions-for-ai-applications-in-2026/)
- [LLM caching strategies (NeuralTrust)](https://neuraltrust.ai/blog/llm-caching-strategies)
- [LLM Gateway guide 2026](https://noqta.tn/en/blog/llm-gateway-multi-model-routing-guide-2026)
Читать дальше
Ставите ИИ в продакшен под регуляторным риском?
Проектирование control plane под вашу систему: приватность, доступ, guardrails, аудит, соответствие EU AI Act / ISO 42001 — как работающая архитектура, а не политика в PDF.
Написать на почтуДвижок перехода
Next Move Engine — система, которая доводит команду до автономного цикла доставки.
Next Move Engine →