AWS Bedrock
Команды для Python-зависимостей на этой странице рассчитаны на чекаут исходников, подготовленный через PM. После изменения зависимостей заново активируйте чекаут и перезапустите Hermes.
С Amazon Bedrock Hermes Agent работает как с нативным провайдером. За счёт этого вам открывается вся экосистема Bedrock: аутентификация по IAM, Guardrails, межрегиональные профили вывода и любые базовые модели. Удобный путь, если автономный ИИ-агент должен жить в вашем AWS-контуре и брать модель оттуда же, а не ходить за ней во внешний API.
Каждое семейство моделей Hermes отправляет через тот API, который обслуживает его лучше всего:
| Семейство моделей | Маршрут API | Почему |
|---|---|---|
| Anthropic Claude | Anthropic SDK (AnthropicBedrock) | Кэширование промптов, бюджеты на рассуждение, адаптивное рассуждение — всего этого через Converse нет |
OpenAI GPT-6 (Astra, Sol, Luna), GPT-6.1 Sol, GPT-5.6 (Sol, Terra, Luna), GPT-5.5 с «голым» идентификатором openai.* | Эндпоинт OpenAI Responses в Bedrock Mantle (bedrock-mantle.<region>.api.aws/openai/v1) | Bedrock Mantle обслуживает «голый» идентификатор в регионе. bedrock-runtime его не принимает |
Те же модели OpenAI с идентификатором профиля вывода us. или global. | Нативный Converse API (bedrock-runtime) | Межрегиональные профили есть только в bedrock-runtime, и карточки моделей помечают Converse там как поддерживаемый |
| Всё остальное (Nova, DeepSeek, Llama, GPT-OSS, …) | Нативный Converse API (bedrock-runtime) | Полный набор возможностей Bedrock: Guardrails, профили вывода, стриминг |
У всех маршрутов общая цепочка учётных данных AWS и общий механизм выбора региона — отдельно настраивать ничего не нужно. Запросы к эндпоинту Mantle аутентифицируются через AWS_BEARER_TOKEN_BEDROCK, если он задан, иначе подписываются по SigV4 через стандартную цепочку credential chain boto3.
Требования
- Учётные данные AWS — любой источник из цепочки credential chain boto3:
- IAM instance role (EC2, ECS, Lambda — без настройки)
- Переменные окружения
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY AWS_PROFILEдля SSO или именованных профилейaws configureдля локальной разработки
- boto3 — установите командой
cd ~/.hermes/hermes-agent && python -c "import pm; pm.sync_venv(['bedrock'], explicit=True)" - Права IAM — минимально необходимые:
bedrock:InvokeModelиbedrock:InvokeModelWithResponseStream(для вывода)bedrock:ListFoundationModelsиbedrock:ListInferenceProfiles(для обнаружения моделей)bedrock:GetInferenceProfile(только еслиmodel.default— ARN профиля вывода приложения; нужно, чтобы определить размер контекстного окна по обёрнутой модели)
На вычислительных ресурсах AWS достаточно подключить IAM-роль с AmazonBedrockFullAccess — и готово. Никаких API-ключей, никакого .env: роль инстанса Hermes подхватит сам.
Быстрый старт
# Установка с поддержкой Bedrock
cd ~/.hermes/hermes-agent && python -c "import pm; pm.sync_venv(['bedrock'], explicit=True)"
# Выбор Bedrock в качестве провайдера
hermes model
# → Выберите "More providers..." → "AWS Bedrock"
# → Укажите регион и модель
# Начало работы
hermes chat
Конфигурация
После запуска hermes model файл ~/.hermes/config.yaml примет такой вид:
model:
default: us.anthropic.claude-sonnet-4-6
provider: bedrock
base_url: https://bedrock-runtime.us-east-2.amazonaws.com
bedrock:
region: us-east-2
Регион
AWS-регион задаётся одним из способов ниже (приоритет убывает сверху вниз):
bedrock.regionвconfig.yaml- Переменная окружения
AWS_REGION - Переменная окружения
AWS_DEFAULT_REGION - По умолчанию:
us-east-1
Guardrails
Чтобы применить Amazon Bedrock Guardrails ко всем вызовам модели:
bedrock:
region: us-east-2
guardrail:
guardrail_identifier: "abc123def456" # Из консоли Bedrock
guardrail_version: "1" # Номер версии или "DRAFT"
stream_processing_mode: "async" # "sync" или "async"
trace: "disabled" # "enabled", "disabled" или "enabled_full"
Guardrail подключается и на маршруте Converse (guardrailConfig), и на маршруте Claude (заголовки InvokeModel через Anthropic Bedrock SDK — так сохраняются кэширование промптов и thinking). Заблокированный запрос проявляется как отказ контентного фильтра, а не как текст модели. stream_processing_mode действует только для Converse.
AWS не применяет Guardrails к эндпоинту Mantle Responses, которым пользуются «голые» идентификаторы openai.gpt-* (документация AWS). Если guardrail обязателен, берите модель, обслуживаемую через Converse, например профиль вывода OpenAI с префиксом us. или global..
Обнаружение моделей
Доступные модели Hermes находит сам — через control plane Bedrock. Поведение поиска при желании настраивается:
bedrock:
discovery:
enabled: true
provider_filter: ["anthropic", "amazon"] # Показывать только этих провайдеров
refresh_interval: 3600 # Кэш на 1 час
Кэширование промптов (cachePoint)
На пути через Converse API Bedrock Hermes автоматически включает кэширование промптов, вставляя маркеры cachePoint после системного промпта, определений инструментов и последнего сообщения. Поскольку отправка блока cachePoint модели, которая его не поддерживает, вызывает ValidationException, маркеры добавляются только для моделей из проверенного allowlist (ID моделей Anthropic Claude и Amazon Nova); для неизвестных моделей маркеры кэша по умолчанию не добавляются. Модели Claude обычно идут через SDK AnthropicBedrock — у него своё кэширование промптов; путь cachePoint через Converse API покрывает Nova и резервный вариант Claude через bearer-токен. Настройка не требуется — чтения и записи кэша отображаются в учёте использования.
Определение размера контекстного окна
Если размер контекстного окна модели отсутствует в статической таблице Hermes, он может определить реальный лимит сам — отправляя запросы завышенного размера фиксированными уровнями (~1.3M и ~2.2M токенов) и разбирая значение maximum из ошибки валидации длины, которую возвращает Bedrock. Определённые таким образом значения попадают в тот же кэш метаданных, что и статическая таблица; устаревшие записи кэша, занижающие размер окна модели (например, записи, сохранённые до того, как окно 1M у модели вышло в GA), автоматически отбрасываются в пользу большего известного значения.
Если модель неизвестна ни зондированию, ни статической таблице, Hermes берёт запасное значение в 128 000 токенов и пишет в лог WARNING с именем модели. Задайте в config.yaml параметр model.context_length, равный реальному окну модели.
Профили вывода приложений. ARN вида arn:aws:bedrock:us-west-2:123456789012:application-inference-profile/abcdef123456 не содержит имени модели, поэтому ни зондирование, ни статическая таблица размер окна для него не определят. Hermes вызывает bedrock:GetInferenceProfile в регионе из ARN и берёт размер окна у модели, которую оборачивает профиль (1M для профиля поверх Claude Sonnet 4.6). Без этого права действует значение по умолчанию в 128 000 токенов, а в логе появляется WARNING с именем профиля. В любом случае размер можно задать явно через model.context_length.
Доступные модели
Для вызова по запросу Bedrock использует идентификаторы профилей вывода. Меню выбора hermes model показывает их сразу, а рекомендуемые модели поднимает наверх списка:
| Модель | ID | Примечания |
|---|---|---|
| Claude Sonnet 4.6 | us.anthropic.claude-sonnet-4-6 | Рекомендуется — оптимальный баланс скорости и качества |
| Claude Opus 4.6 | us.anthropic.claude-opus-4-6-v1 | Самая способная |
| Claude Haiku 4.5 | us.anthropic.claude-haiku-4-5-20251001-v1:0 | Самый быстрый Claude |
| OpenAI GPT-6 Astra | openai.gpt-6-astra | Самая мощная модель OpenAI, окно 1 050 000 токенов |
| OpenAI GPT-6.1 Sol | openai.gpt-6.1-sol | Окно 1M токенов. Доступ к Mantle в регионе только в us-east-1 |
| OpenAI GPT-6 Sol | openai.gpt-6-sol | Код и агентные задачи, окно 1 050 000 токенов |
| OpenAI GPT-6 Luna | openai.gpt-6-luna | Узкие задачи с большим объёмом, окно 1 050 000 токенов |
| OpenAI GPT-5.6 Sol | openai.gpt-5.6-sol | Окно 1 050 000 токенов |
| OpenAI GPT-5.6 Terra | openai.gpt-5.6-terra | Сбалансированная, окно 1 050 000 токенов |
| OpenAI GPT-5.6 Luna | openai.gpt-5.6-luna | Быстрая и недорогая, окно 1 050 000 токенов |
| OpenAI GPT-5.5 | openai.gpt-5.5 | Только Mantle, без профилей вывода |
| Amazon Nova Pro | us.amazon.nova-pro-v1:0 | Флагман Amazon |
| Amazon Nova Micro | us.amazon.nova-micro-v1:0 | Быстрее и дешевле всех |
| DeepSeek V3.2 | deepseek.v3.2 | Сильная открытая модель |
| Llama 4 Scout 17B | us.meta.llama4-scout-17b-instruct-v1:0 | Последняя разработка Meta |
Модели с префиксом us. используют межрегиональные профили вывода: больше доступной ёмкости и автоматическое переключение между регионами AWS. Модели с префиксом global. маршрутизируются по всем доступным регионам мира.
У моделей OpenAI два вида эндпоинтов. «Голый» идентификатор openai.* относится к региону, и Hermes отправляет его на эндпоинт Responses в Bedrock Mantle в настроенном регионе. Идентификаторы us.openai.* и global.openai.* — межрегиональные профили вывода. Hermes отправляет их в bedrock-runtime через Converse API, тем же путём, что и остальные профили вывода. В карточке каждой модели AWS указано, какие профили она предлагает и в каких регионах её обслуживает Mantle.
Смена модели в ходе сессии
Прямо в разговоре пригодится команда /model:
/model us.amazon.nova-pro-v1:0
/model deepseek.v3.2
/model us.anthropic.claude-opus-4-6-v1
Диагностика
hermes doctor
Команда doctor проверяет:
- Наличие учётных данных AWS (переменные окружения, IAM-роль, SSO)
- Установлен ли
boto3 - Доступен ли Bedrock API (ListFoundationModels)
- Сколько моделей доступно в вашем регионе
Шлюз (мессенджеры)
С Bedrock работают все платформы шлюза Hermes — Telegram, Discord, Slack, Feishu и прочие. Настройте Bedrock как провайдер, дальше запускайте шлюз сообщений как обычно:
hermes gateway setup
hermes gateway start
Шлюз считывает config.yaml и берёт ту же конфигурацию провайдера Bedrock.
Решение проблем
«No API key found» / «No AWS credentials»
Учётные данные Hermes ищет в таком порядке:
AWS_BEARER_TOKEN_BEDROCKAWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEYAWS_PROFILE- Метаданные инстанса EC2 (IMDS)
- Учётные данные контейнера ECS
- Роль выполнения Lambda
Не нашёлся ни один источник? Запустите aws configure либо подключите IAM-роль к вычислительному инстансу.
«Invocation of model ID … with on-demand throughput isn’t supported»
Возьмите идентификатор профиля вывода (с префиксом us. или global.) вместо голого идентификатора базовой модели. Например:
- ❌
anthropic.claude-sonnet-4-6 - ✅
us.anthropic.claude-sonnet-4-6
«ThrottlingException»
Вы упёрлись в лимит запросов к модели в Bedrock. Повторные попытки с нарастающей задержкой Hermes делает сам. Чтобы поднять квоты, подайте заявку в консоли AWS Service Quotas.
Развёртывание в AWS одним кликом
Когда нужно полностью автоматическое развёртывание на EC2 через CloudFormation:
sample-hermes-agent-on-aws-with-bedrock — создаёт VPC, IAM-роль, инстанс EC2 и сам настраивает Bedrock. Разворачивается в любом регионе одним кликом.