sidebar_position: 15 title: "Azure AI Foundry" description: "Use Hermes Agent with Azure AI Foundry — OpenAI-style and Anthropic-style endpoints, auto-detection of transport and deployed models" lang: ru
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 и большинства моделей с открытым весом. - Антропный стиль —
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
# → Select "Azure Foundry"
# → Enter your endpoint URL
# → Enter your API key
# Hermes probes the endpoint and auto-detects transport + models
# → Pick a model from the list (or type a deployment name manually)
Мастер:
- Проанализируйте путь URL-адреса — URL-адреса, заканчивающиеся на
/anthropic, распознаются как маршруты Azure Foundry Claude. - Пробка
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 # or "anthropic_messages"
default: gpt-5.4-mini # your deployment / model name
context_length: 400000 # auto-detected
И в ~/.hermes/.env:
AZURE_FOUNDRY_API_KEY=<your-azure-key>
Конечные точки в стиле OpenAI (GPT, Llama и т. д.)
Конечная точка Azure OpenAI v1 GA принимает стандартный клиент Python 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-series автоматически перенаправляются к API Responses. Azure Foundry развертывает модели GPT-5/codex/o1/o3/o4 только для Responses-API — вызов
/chat/completionsдля них возвращает400 "The requested operation is unsupported.". 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-series и gpt-5.x. Hermes отправляет правильный параметр в зависимости от конечной точки.- Конечные точки версии Pre-v1, которым требуется
api-version. Если у вас есть устаревший базовый URL-адрес, напримерhttps://<resource>.openai.azure.com/openai?api-version=2025-04-01-preview, Hermes извлекает строку запроса и пересылает ее черезdefault_queryпри каждом запросе (в противном случае OpenAI SDK удаляет ее при соединении путей).
Конечные точки в антропном стиле (Клод через Azure Foundry)
Для развертываний Claude используйте маршрут в стиле 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, чтобы предотвратить перезапись токена 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. Hermes обнаруживает azure.com в базовом URL-адресе и замыкает цепочку токенов OAuth Claude Code, поэтому ключ Azure используется напрямую с аутентификацией x-api-key.
key_env — каноническое имя поля Snake_case; api_key_env (и верблюжий регистр keyEnv / apiKeyEnv) принимаются в качестве псевдонимов. Если установлены оба key_env и AZURE_ANTHROPIC_KEY/ANTHROPIC_API_KEY, то побеждает переменная env var с именем key_env.
Обнаружение модели
Azure не предоставляет конечную точку с чистым ключом API для вывода списка развертываний развернутой модели. Для перечисления развертывания требуется проверка подлинности Azure Resource Manager (az cognitiveservices account deployment list) с использованием субъекта Azure AD, а не ключа API вывода.
Что может Гермес:
- Конечные точки Azure OpenAI v1 (
<resource>.openai.azure.com/openai/v1) предоставляютGET /modelsдоступный каталог моделей ресурса. Hermes использует этот список для предварительного заполнения средства выбора модели. - Маршруты Azure Foundry
/anthropic: обнаружены по URL-адресу, имя модели введено вручную. - Частные конечные точки/конечные точки с брандмауэром: ввод вручную с дружественным сообщением «не удалось проверить».
Вы всегда можете ввести имя развертывания напрямую — Hermes не проверяет возвращаемый список.
Переменные среды
| Переменная | Цель |
|---|---|
AZURE_FOUNDRY_API_KEY |
Первичный ключ API для Azure AI Foundry/Azure OpenAI |
AZURE_FOUNDRY_BASE_URL |
URL-адрес конечной точки (устанавливается через hermes model; переменная env используется как запасной вариант) |
AZURE_ANTHROPIC_KEY |
Используется provider: anthropic + базовый URL-адрес Azure (альтернатива ANTHROPIC_API_KEY) |
Устранение неполадок
401 Несанкционировано при развертывании gpt-5.x.
Azure обслуживает gpt-5.x на /chat/completions, а не на /responses. Hermes обрабатывает это автоматически, если URL-адрес содержит openai.azure.com, но если вы видите 401 с телом Invalid API key, убедитесь, что 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, так и проверку антропных сообщений. Это нормально для частных конечных точек, находящихся за брандмауэром или со списком разрешенных IP-адресов. Вернитесь к выбору режима API вручную и введите имя развертывания — все по-прежнему работает, Hermes просто не может предварительно заполнить окно выбора.
Выбран неправильный транспорт.
Запустите hermes model еще раз, и мастер выполнит повторную проверку. Если зонд по-прежнему выбирает неправильный режим, вы можете напрямую отредактировать config.yaml:
model:
provider: azure-foundry
api_mode: anthropic_messages # or chat_completions
Похожие
- Переменные среды
- Конфигурация
- AWS Bedrock — интеграция другого крупного поставщика облачных услуг.