AWS Bedrock як LLM-провайдер: від OpenAI fallback до Claude + Nova Pro
Один SDK замість двох бібліотек. IAM замість API-ключів. Дані в ЄС замість США. Єдиний білінг замість двох інвойсів. Ось як ми перевели весь fallback-шар на AWS Bedrock — і чому це змінило більше, ніж ми очікували.
AWS Bedrock як LLM-провайдер: від OpenAI fallback до Claude + Nova Pro
Як один PR змінив архітектуру fallback-шару і чому API-ключі — це вчорашній день
Проблема: два API-ключі, два білінги, нуль гарантій
LEX AI обробляє тисячі юридичних запитів щодня. Кожен запит — це виклик LLM: класифікація наміру, пошук по базі, аналіз рішення суду, генерація відповіді. Коли OpenAI лягає (а це трапляється частіше, ніж хотілося б), платформа має продовжувати працювати.
Раніше ми використовували Anthropic API як fallback-провайдер. Це працювало, але створювало низку проблем:
| Проблема | Наслідок |
|---|---|
| Два окремі API-ключі | Ротація секретів x 2, ризик витоку x 2 |
| Два білінги | Щомісячна звірка двох інвойсів, неможливість Reserved Capacity |
| Дані летять у США | Anthropic API не гарантує EU-резидентність |
| Rate limits на рівні ключа | При сплеску навантаження fallback теж обмежений |
| Round-robin провалився | Ми вже писали про це — різні формати відповідей ламали парсинг |
Нам потрібен був єдиний fallback-провайдер, який дає доступ до кількох моделей через один SDK, з IAM-авторизацією і даними в межах ЄС.
Рішення: AWS Bedrock
AWS Bedrock — це managed-сервіс, який надає доступ до моделей різних вендорів через єдиний API. Один SDK, одна авторизація (IAM), один білінг, вибір регіону.
Через Bedrock ми отримали доступ одразу до двох сімейств моделей:
- Claude (Anthropic) — через Bedrock, без окремого API-ключа
- Amazon Nova — власні моделі AWS, оптимізовані під ціну
Budget-aware модельні тіри
Наш ModelSelector вже підтримував три тіри продуктивності. Ми просто замінили fallback-моделі:
| Тір | Призначення | Primary (OpenAI) | Fallback (Bedrock) |
|---|---|---|---|
quick |
Класифікація, роутинг | gpt-5-nano | Amazon Nova Micro |
standard |
Виконання тулів, сумаризація | gpt-5-mini | Amazon Nova Lite |
deep |
Юридичний аналіз, патерни | gpt-5.1 | Amazon Nova Pro |
Nova Micro і Nova Lite закривають дешеві задачі, а Nova Pro — повноцінна альтернатива для складного аналізу. Claude через Bedrock залишається доступним для випадків, де потрібна саме його якість reasoning.
Міграція: що змінилось у коді
До: два клієнти, два формати
// Було: пряме підключення до Anthropic API
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY, // ще один секрет
});
Після: єдиний AWS SDK
// Стало: Bedrock через AWS SDK
import {
BedrockRuntimeClient,
ConverseCommand,
} from '@aws-sdk/client-bedrock-runtime';
const bedrock = new BedrockRuntimeClient({
region: 'eu-central-1', // дані залишаються в ЄС
// IAM авторизація — ніяких API-ключів
});
Ключова зміна — Converse API. Це уніфікований інтерфейс Bedrock, який приймає однаковий формат повідомлень незалежно від моделі. Той самий код працює і для Nova Pro, і для Claude через Bedrock. Ніякого парсингу різних форматів — проблема, яка вбила наш round-robin.
Авторизація: IAM замість API-ключів
Це, мабуть, найбільший виграш. Замість зберігання ANTHROPIC_API_KEY у .env-файлах на кожному сервері, ми використовуємо IAM-роль EC2-інстансу:
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "arn:aws:bedrock:eu-central-1::foundation-model/*"
}
Ніяких секретів у змінних оточення. Ніякої ротації ключів. Credentials беруться автоматично з Instance Metadata Service. Одним вектором атаки менше.
Результати
| Метрика | До (Anthropic API) | Після (Bedrock) | Зміна |
|---|---|---|---|
| Fallback latency (p50) | 1.8s | 1.2s | -33% |
| Fallback latency (p99) | 8.4s | 4.1s | -51% |
| Вартість fallback-запитів | $0.018/запит | $0.011/запит | -39% |
| Секретів у .env | 4 (2 OpenAI + 2 Anthropic) | 2 (тільки OpenAI) | -50% |
| Дані в EU | Не гарантовано | eu-central-1 | Гарантовано |
Зниження latency пояснюється двома факторами: EC2 -> Bedrock — це трафік всередині AWS-регіону (без виходу в інтернет), а Nova Pro просто швидша за Claude для типових юридичних задач.
Provisioned Throughput: наступний крок
Bedrock дозволяє купити Provisioned Throughput — гарантовану пропускну здатність для конкретної моделі. Для нас це означає:
- Передбачувана вартість: фіксована ціна замість pay-per-token
- Гарантований SLA: жодних 429 (rate limit) при сплеску навантаження
- Планування бюджету: щомісячна сума відома заздалегідь
Ми плануємо активувати Provisioned Throughput для Nova Pro на deep-тірі, де передбачуваність найважливіша — юридичний аналіз не може чекати в черзі.
Висновки
Один PR, але архітектурна зміна відчутна:
- IAM замість API-ключів — менше секретів, менше ризику
- EU data residency — дані не покидають eu-central-1
- Єдиний білінг — AWS Cost Explorer замість двох інвойсів
- Converse API — один формат для всіх моделей
- Nova Pro — дешевший і швидший fallback для юридичного аналізу
Якщо ваша платформа використовує кілька LLM-провайдерів і ви втомились від зоопарку API-ключів — подивіться на Bedrock. Це не срібна куля, але для fallback-сценарію це найелегантніше рішення, яке ми знайшли.