Azure AI Foundry
Агент Hermes поддерживает Azure AI Foundry (а также Azure OpenAI) в качестве провайдера первого класса. Один ресурс Azure может размещать модели, используя две разные формы маршрутизации:
- Стиль OpenAI — использует
POST /v1/chat/completionsна конечных точках видаhttps://<resource>.openai.azure.com/openai/v1. Адаптер для GPT-4.x, GPT-5.x, Llama, Mistral и многих моделей с открытыми весами. - Стиль Anthropic — использует
POST /v1/messagesна конечных точках видаhttps://<resource>.services.ai.azure.com/anthropic. Используется, когда Azure Foundry предоставляет модели Claude через формат API Anthropic Messages.
Мастер настроил вчера вашу конечную точку и автоматически определил, какой транспорт используется, какие доступные развёртки и контекстный размер каждой модели.
Предварительные требования
- Ресурс Azure AI Foundry или Azure OpenAI с хотя бы одним развёртыванием
- Ключ API для этого ресурса (доступен на портале Azure в разделе «Ключи и конечные точки»)
- URL конечной точки развёртывания
Быстрый старт
hermes model
# → Выберите "Azure Foundry"
# → Введите URL вашей конечной точки
# → Введите ваш ключ API
# Hermes проверяет конечную точку и автоматически определяет транспорт + модели
# → Выберите модель из списка (или введите имя развёртывания вручную)
Мастер выполнит следующие действия:
- Анализ пути URL — URL-адреса, оканчивающиеся на
/anthropic, распознаются как маршрут Claude в Azure Foundry. - Проверка
GET <base>/models— если конечная точка получает список моделей в формате OpenAI, Hermes переключается наchat_completionsи предзаполняет селектор идентификаторов развёртывания. - Проверка формирования антропных сообщений — запасной вариант для конечных точек, который не обеспечивает
/models, но принимает формат антропных сообщений. - Ручной ввод как запасной вариант — частные/ограниченные конечные точки, отвергающие все проверки, всё равно работают; Вы можете вручную выбрать режим API и ввести имя развёртывания.
Контекстная длина выбранной модели стандарта через определенную цепочку метаданных Hermes (models.dev, метаданные провайдера и жёстко заданные базы) и сохраняется вconfig.yaml, чтобы модель правильно установила размер контекста окна.
Конфигурация (записывается в config.yaml)
После запуска мастера вы увидите примерно следующее:
model:
provider: azure-foundry
base_url: https://my-resource.openai.azure.com/openai/v1
api_mode: chat_completions # или "anthropic_messages"
default: gpt-5.4-mini # ваше развёртывание / имя модели
context_length: 400000 # автоматически определено
В ~/.hermes/.env:
AZURE_FOUNDRY_API_KEY=<your-azure-key>
Конечные точки в стиле OpenAI (GPT, Llama и др.)
Конечные точки Azure OpenAI v1 GA принимают стандартный клиентский openai с небольшими изменениями:
model:
provider: azure-foundry
base_url: https://my-resource.openai.azure.com/openai/v1
api_mode: chat_completions
default: gpt-5.4
Важное поведение:
- GPT-5.x, codex и o-серии автоматически маршрутизируются через эти ответы API. Azure Foundry развёртывает модели GPT-5 / codex / o1 / o3 / o4 как поддерживающие только ответы API — вызов
/chat/completionsдля моделей загрузки400 «Запрошенная операция не вызывается». Hermes устанавливает эти модели по имени и повышает уровеньapi_modeдоcodex_responses, даже если вconfig.yamlвсё ещё указаноapi_mode:chat_completions. GPT-4, GPT-4o, Llama, Mistral и другие развёртывания продолжают использовать/chat/completions`. - Автоматическое использование
max_completion_tokens. Azure OpenAI (как и прямой OpenAI) требуетmax_completion_tokensдля моделей gpt-4o, o-серии и gpt-5.x. Гермес отправляет необходимые условия в зависимости от конкретных точек зрения. - Конечные точки до v1 с
api-version. Если у вас старый базовый URL-адрес видаhttps://<resource>.openai.azure.com/openai?api-version=2025-04-01-preview, Hermes извлекает запрос запроса и передаёт его черезdefault_queryв каждом запросе (иначе OpenAI SDK отбрасывает его при склейке путей).
Конечные точки в стиле Anthropic (Claude через Azure Foundry)
Для развёртывания Клода воспользуйтесь маршрутом в стиле Anthropic:
model:
provider: azure-foundry
base_url: https://my-resource.services.ai.azure.com/anthropic
api_mode: anthropic_messages
default: claude-sonnet-4-6
Важное поведение:
- Удаление
/v1из базового URL-адреса. Anthropic SDK добавляет/v1/messagesдля запроса каждого URL-адреса — Hermes сохраняет любой конечный/v1перед передачей URL-адреса в SDK, чтобы избежать двойного пути/v1. —api-versionпередаётся черезdefault_queryи не добавляется к URL-адресу. Azure Anthropic требует запросаapi-version. Чёткое кодирование её в базовом URL-адресе приводит к неправильному указанию/anthropic?api-version=.../v1/messagesи получает 404. Вместо этого Hermes передаётapi-version=2025-04-15черезdefault_queryAnthropic SDK. - Обновление OAuth-токенов отключено. Развёртывания Azure используют статические ключи API. Цикл обновления токенов OAuth из
~/.claude/.credentials.json, предназначенных для консоли Anthropic, явно пропускается для конечных точек Azure, чтобы предотвратить перезапись вашего ключа Azure токенами OAuth Claude Code.
Альтернатива: provider: anthropic + базовый URL-адрес Azure
Если у вас уже настроен provider: anthropic и вы хотите просто отредактировать его в Azure AI Foundry для использования Claude, вы можете полностью запустить провайдера azure-foundry:
model:
provider: anthropic
base_url: https://my-resource.services.ai.azure.com/anthropic
key_env: AZURE_ANTHROPIC_KEY
default: claude-sonnet-4-6
и установите AZURE_ANTHROPIC_KEY в ~/.hermes/.env. Гермес обнаруживает, что базовый URL-адрес содержит azure.com, и обходит цепочку OAuth-токенов Claude Code, используя ключ Azure напрямую для аутентификации через x-api-key.
key_env — это каноническое имя поля в Snake_case; api_key_env (а также варианты CamelCase keyEnv / apiKeyEnv) принимаются как псевдонимы. Если установлены и key_env, и AZURE_ANTHROPIC_KEY/ANTHROPIC_API_KEY, то переменная окружения, указанная в key_env, имеет приоритет.
Обнаружение моделей
Azure не предоставляет конечную точку только с ключом API для перечисления ваших развёрнутых моделей. Перечисление развёртывания требует аутентификации через Azure Resource Manager («список развертывания учетных записей когнитивных служб») и субъектов Azure AD, а не ключа API для вывода.
Гермес может сделать следующее:
— Конечные точки Azure OpenAI v1 (<resource>.openai.azure.com/openai/v1) предоставляют GET /models, который содержит каталог доступных моделей ресурсов. Компания Hermes использует этот список для предварительного выбора модели.
- Маршрут Azure Foundry /anthropic: определяется по URL-адресу пути, имя модели вводится вручную.
- Частные/защищённые конечные точки: ручной ввод с использованием дружественных сообщений «не удалось проверить».
Вы всегда можете напрямую ввести имя развёртывания — Гермес не успел его по возвращённому списку.
Переменные окружения
| Переменная | Назначение |
|---|---|
AZURE_FOUNDRY_API_KEY |
Основной ключ API для Azure AI Foundry/Azure OpenAI |
AZURE_FOUNDRY_BASE_URL |
URL конечной точки (устанавливается через модель Гермеса; переменное окружение используется как запасной вариант) |
AZURE_ANTHROPIC_KEY |
Используется provider: anthropic + базовый URL Azure (заменяет ANTHROPIC_API_KEY) |
Устранение неполадок
Ошибка 401 Несанкционировано для развёртывания gpt-5.x.
Azure предоставляет gpt-5.x через /chat/completions, а не через /responses. Когда URL-адрес содержит openai.azure.com, Hermes обрабатывает его автоматически, но если вы видите 401 с телом «Неверный ключ API», проверьте, что api_mode в config.yaml установлен в chat_completions.
Ошибка 404 для /v1/messages?api-version=.../v1/messages.
Это ошибка формирования URL-адреса в предыдущих версиях Azure Anthropic. Обновите Hermes — параметр api-version теперь передаётся через default_query, который не жёстко закодирован в базовом URL-адресе, поэтому SDK не блокирует его присклейку URL-адреса.
Мастер показывает «Автоматическое обнаружение дефекта».
Конечная точка отклонила проверку /models и проверку Anthropic Messages. Это нормально для последних рубежей за брандмауэром или с IP-белым списком. Вернитесь к ручному выбору режима API и введите имя вашего развёртывания — всё будет работать, просто Гермес не сможет предзаполнить селектор.
Выбран неправильный транспорт.
Запустите модель Гермеса ещё раз, мастер выполнит повторную проверку. Если проверка всё равно выбирает неправильный режим, вы можете отредактировать config.yaml напрямую:
model:
provider: azure-foundry
api_mode: anthropic_messages # или chat_completions
Связанные темы
- Переменные окружения
- Конфигурация
- AWS Bedrock — ещё одна интеграция с основным облачным провайдером