AWS Bedrock

Команды для Python-зависимостей на этой странице рассчитаны на чекаут исходников, подготовленный через PM. После изменения зависимостей заново активируйте чекаут и перезапустите Hermes.

С Amazon Bedrock Hermes Agent работает как с нативным провайдером. За счёт этого вам открывается вся экосистема Bedrock: аутентификация по IAM, Guardrails, межрегиональные профили вывода и любые базовые модели. Удобный путь, если автономный ИИ-агент должен жить в вашем AWS-контуре и брать модель оттуда же, а не ходить за ней во внешний API.

Каждое семейство моделей Hermes отправляет через тот API, который обслуживает его лучше всего:

Семейство моделейМаршрут APIПочему
Anthropic ClaudeAnthropic 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 профиля вывода приложения; нужно, чтобы определить размер контекстного окна по обёрнутой модели)
совет
EC2 / ECS / Lambda

На вычислительных ресурсах 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-регион задаётся одним из способов ниже (приоритет убывает сверху вниз):

  1. bedrock.region в config.yaml
  2. Переменная окружения AWS_REGION
  3. Переменная окружения AWS_DEFAULT_REGION
  4. По умолчанию: 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.6us.anthropic.claude-sonnet-4-6Рекомендуется — оптимальный баланс скорости и качества
Claude Opus 4.6us.anthropic.claude-opus-4-6-v1Самая способная
Claude Haiku 4.5us.anthropic.claude-haiku-4-5-20251001-v1:0Самый быстрый Claude
OpenAI GPT-6 Astraopenai.gpt-6-astraСамая мощная модель OpenAI, окно 1 050 000 токенов
OpenAI GPT-6.1 Solopenai.gpt-6.1-solОкно 1M токенов. Доступ к Mantle в регионе только в us-east-1
OpenAI GPT-6 Solopenai.gpt-6-solКод и агентные задачи, окно 1 050 000 токенов
OpenAI GPT-6 Lunaopenai.gpt-6-lunaУзкие задачи с большим объёмом, окно 1 050 000 токенов
OpenAI GPT-5.6 Solopenai.gpt-5.6-solОкно 1 050 000 токенов
OpenAI GPT-5.6 Terraopenai.gpt-5.6-terraСбалансированная, окно 1 050 000 токенов
OpenAI GPT-5.6 Lunaopenai.gpt-5.6-lunaБыстрая и недорогая, окно 1 050 000 токенов
OpenAI GPT-5.5openai.gpt-5.5Только Mantle, без профилей вывода
Amazon Nova Prous.amazon.nova-pro-v1:0Флагман Amazon
Amazon Nova Microus.amazon.nova-micro-v1:0Быстрее и дешевле всех
DeepSeek V3.2deepseek.v3.2Сильная открытая модель
Llama 4 Scout 17Bus.meta.llama4-scout-17b-instruct-v1:0Последняя разработка Meta
инфо
Cross-Region Inference

Модели с префиксом 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 ищет в таком порядке:

  1. AWS_BEARER_TOKEN_BEDROCK
  2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY
  3. AWS_PROFILE
  4. Метаданные инстанса EC2 (IMDS)
  5. Учётные данные контейнера ECS
  6. Роль выполнения 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. Разворачивается в любом регионе одним кликом.

перевод и редактура:

обновлено

⌕ ESC