Тихий ужас compliance-офицера: LLM не может объяснить, почему она права
Представьте: вы запускаете в production AI-агента для банковского скоринга. Модель возвращает отказ клиенту. Аудитор спрашивает: «На каком основании?». LLM отвечает: «Потому что вероятность дефолта высокая». Но это не ответ. Это — чёрный ящик, который не поддаётся формальной проверке. В 2026 году, когда EU AI Act уже вовсю штрафует компании за отсутствие explainability, такой подход равен финансовому самоубийству.
Обычные guardrails (вроде фильтрации токсичности) тут бессильны. Они блокируют явно опасный контент, но не могут доказать, что числовой расчёт верен. На помощь приходит Automated Reasoning for Amazon Bedrock — сервис, который подменяет вероятностное «мне кажется» на математическое «я доказал».
⚠️ На момент публикации (апрель 2026) Automated Reasoning for Bedrock — GA. AWS позиционирует его как единственный способ формально верифицировать ответы LLM в regulated industries. Без него — только вероятностные гарантии.
Что такое Automated Reasoning и почему это не очередной фильтр
Большинство инженеров путают Automated Reasoning с обычными guardrails. Разница фундаментальна:
- Guardrails — эвристики и ML-модели, которые блокируют «похожие на плохие» ответы. Они вероятностны. False negative неизбежны.
- Automated Reasoning — набор формальных методов (проверка моделей, SMT-решатели, верификация на основе типов), которые дают гарантию корректности. Если утверждение прошло проверку — ошибки нет.
В Bedrock это реализовано через Reasoning Policies — формальные спецификации, записанные на декларативном языке. Вы описываете правила вроде «сумма скидки не может превышать 30% от цены» или «концентрация вещества в рецепте не должна превышать X мг/мл», а сервис математически проверяет, что каждый сгенерированный ответ удовлетворяет этим правилам.
Звучит как магия? Нет, это чистая математика. AWS использует Amazon Q, который вызывает внешние решатели (Z3, CVC5) и доказывает утверждения. Подробнее о том, как это работает на уровне алгоритмов, я разбирал в статье «Математика против галлюцинаций».
Compliance не терпит «вроде бы»
Регуляторы (EU AI Act, HIPAA, SOX) требуют доказуемой корректности. Простой лог «модель сказала X» не подходит. Нужно показать: «на этапе 2 проверки Automated Reasoning верифицировано условие X < Y». И это уже юридически принятый аргумент.
Например, Flo Health (см. кейс «Когда AI проверяет AI») использует Automated Reasoning для проверки дозировок лекарств. LLM генерирует текст рекомендации, а Reasoning Policy гарантирует, что числовые значения вписываются в безопасный диапазон. Аудиторы принимают такую верификацию как доказательство.
Другой пример — скоринг в финтехе. Если модель отказала в кредите, Automated Reasoning может доказать, что «доход клиента (30k) меньше порога (50k), поэтому условие отказа выполнено». Это не объяснение модели, а формальное доказательство — и его можно предъявить регулятору.
Архитектура: как Automated Reasoning встраивается в Bedrock
Схема работы:
- Вы создаёте Reasoning Policy в консоли Bedrock или через SDK. Политика состоит из предикатов (условий) на языке, похожем на Datalog.
- При вызове модели вы указываете Guardrail, который ссылается на эту политику. Guardrail перехватывает ответ до отправки пользователю.
- Automated Reasoning сервис берёт ответ + контекст (переменные из запроса) и запускает формальную проверку. Если условие ложно — ответ блокируется и возвращается fallback (например, «Я не могу обработать запрос»).
Важный нюанс: проверка происходит на стороне ответа, а не запроса. Вы не сможете предотвратить генерацию опасного контента до её начала, но гарантируете, что пользователь его не увидит. Для real-time задач это приемлемая задержка (обычно < 200 мс).
Как интегрировать это с централизованной защитой AI-агентов? Правильно: вы создаёте одну политику для всего агента, а Guardrails автоматически применяют её к каждому вызову. Это снижает вероятность ошибки «забыли проверить».
Пошаговый гайд: от политики до production
Перед тем как писать код — разберёмся с ошибками. Самая частая: пытаться формально верифицировать всё подряд. Не делайте так. Automated Reasoning — дорогой (время и стоимость). Верификация должна быть точечной.
1Создайте Reasoning Policy
Зайдите в AWS Console → Amazon Bedrock → Automated Reasoning → Create policy. Пример политики для финансового сервиса:
{
"policyName": "LoanScoringPolicy",
"version": "2026-04",
"rules": [
{
"id": "credit-limit",
"condition": "${loanAmount} <= ${annualIncome} * 0.3",
"message": "Сумма кредита превышает 30% годового дохода"
},
{
"id": "age-check",
"condition": "${borrowerAge} >= 18",
"message": "Заёмщик несовершеннолетний"
}
]
}Переменные (${...}) подставляются из контекста запроса. Важно: политика не должна содержать неоднозначностей — все переменные должны быть строго типизированы (int, float, string).
2Привяжите политику к Guardrail
Если у вас ещё нет guardrail — создайте (исходите из этого руководства). В разделе Automated Reasoning добавьте ссылку на созданную политику.
import boto3
bedrock = boto3.client('bedrock', region_name='us-east-1')
guardrail_id = bedrock.create_guardrail(
name='credit-scoring-guard',
description='Проверка кредитных условий',
automatedReasoningPolicyArn='arn:aws:bedrock:us-east-1:123456789012:reasoning-policy/LoanScoringPolicy',
blockedInputMessaging='Я не могу обработать этот запрос',
blockedOutputsMessaging='Ответ отклонён из-за нарушения политики'
)['guardrailId']
print(f"Guardrail ID: {guardrail_id}")3Вызовите модель с включённым guardrail
response = bedrock.invoke_model(
modelId='anthropic.claude-4-sonnet-20260426', # актуальная версия на апрель 2026
guardrailIdentifier=guardrail_id,
guardrailVersion='DRAFT',
body=json.dumps({
"messages": [{"role": "user", "content": "Одобрить кредит 50 000$ при доходе 60 000$"}],
"context": {
"loanAmount": 50000,
"annualIncome": 60000,
"borrowerAge": 25
}
})
)
result = json.loads(response['body'].read())
print(result)В context вы передаёте переменные, которые использует политика. Если проверка не пройдена — в ответе будет поле guardrailAction со значением INTERVENED и соответствующим сообщением.
4Соберите доказательства для аудита
Каждый вызов Automated Reasoning генерирует Proof Record — JSON-документ с результатами проверки каждого правила. Его можно сохранять в S3 и использовать при аудите. Подробнее о том, как автоматизировать сбор таких логов — в гайде «Автоматизация сбора доказательств для аудита».
Пример proof record:
{
"policyId": "LoanScoringPolicy",
"timestamp": "2026-04-26T12:00:00Z",
"ruleResults": [
{
"ruleId": "credit-limit",
"status": "PASS",
"reason": "50000 <= 18000 (60k*0.3) -> FALSE"
},
{
"ruleId": "age-check",
"status": "PASS",
"reason": "25 >= 18"
}
],
"overall": "FAIL"
}В данном случае кредит 50k при доходе 60k не проходит — 50k > 18k. Отлично, система блокирует рискованный кредит. Аудитор видит точную причину.
Нюансы, о которых молчит документация
Automated Reasoning — мощный, но не панацея. Вот что нужно знать:
- Политики — не динамические. Вы не можете на лету менять условие в зависимости от модели. Только статические правила с переменными из контекста.
- Производительность. Чем сложнее условие (вложенные кванторы, арифметика с плавающей точкой), тем дольше проверка. Для типовых правил (
if-then-else) задержка < 50 мс. Для сложных — до 1 секунды. Тестируйте. - False positive. Automated Reasoning может заблокировать корректный ответ, если в контексте переданы неверные переменные. Всегда проверяйте, что контекст валидирован перед отправкой.
- EU AI Act требует рекурсивного аудита. Сам факт использования Automated Reasoning — уже мера compliance, но вы должны доказать, что политики корректны. Используйте фреймворк оценки AI-агентов от Amazon для регулярного пересмотра политик.
- Не смешивайте Automated Reasoning с обычными guardrails. Они решают разные задачи. Guardrails — для контента, Reasoning — для фактов.
Когда использовать (а когда — нет)
| Сценарий | Automated Reasoning | Обычные Guardrails |
|---|---|---|
| Проверка числовых расчётов | ✅ | ❌ |
| Фильтрация ненормативной лексики | ❌ | ✅ |
| Проверка возраста/лимитов | ✅ | Частично |
| Доказательство для регулятора | ✅ | ❌ |
Главная ловушка: доверие к верификации без верификации самой политики
Звучит парадоксально, но Automated Reasoning проверяет только соответствие ответа политике. Он не проверяет, что сама политика отражает реальные требования бизнеса или регулятора. Если ваша политика «loanAmount <= annualIncome * 0.3» устарела и регулятор требует 0.25 — вы в провале, хотя формально верификация пройдена.
Поэтому внедрение Automated Reasoning — это не «поставил и забыл». Это часть цикла: аудит политик → обновление → повторная верификация. Используйте AWS Agent Registry для версионирования политик и отслеживания изменений. Каждое обновление должно проходить ревью (человеком!) перед деплоем.
Будущее: от проверки правил к доказательству целей
AWS уже анонсировала (в конце 2025) интеграцию Automated Reasoning с Reinforcement Fine-Tuning (об этом я писал в гайде по RFT). Идея: reward-функция может включать формальные проверки, чтобы модель училась генерировать ответы, которые гарантированно удовлетворяют политике. Это снижает число срабатываний guardrails и улучшает UX.
Кроме того, в разработке — предикативная верификация запросов: не ждать ответа, а проверять намерение пользователя до генерации. Но пока это в бета.
Один неочевидный совет, который я даю всем командам: не пытайтесь верифицировать всё через Automated Reasoning. Выделите 5-10 критических правил, которые реально влияют на compliance (безопасность, финансы, здоровье). Всё остальное — фильтруйте через guardrails и human review. Так вы получите максимальный ROI без перегрузки инфраструктуры.
И помните: Automated Reasoning — не замена ответственной разработке AI. Это инструмент, который делает вашу систему доказуемо безопасной. А доказуемость — единственная валюта, которую принимают регуляторы. Начните с одного правила и расширяйте по мере зрелости.