Перейти к содержимому

Провайдеры ИИ

На этой странице описана настройка провайдеров инференса для Hermes Agent: от облачных API вроде OpenRouter и Anthropic до локально размещённых точек доступа вроде Ollama и vLLM, а также более сложные схемы маршрутизации и fallback. Для работы Hermes нужен как минимум один настроенный провайдер.

Вам нужен как минимум один способ подключения к LLM. Используйте hermes model, чтобы интерактивно переключать провайдеров и модели, или настройте напрямую:

ПровайдерНастройка
Nous Portalhermes model (OAuth, по подписке)
OpenAI Codexhermes model (OAuth ChatGPT, использует модели Codex)
GitHub Copilothermes model (поток OAuth device code, COPILOT_GITHUB_TOKEN, GH_TOKEN, или gh auth token)
GitHub Copilot ACPhermes model (запускает локальный copilot --acp --stdio)
Anthropichermes model (Claude Max + дополнительные кредиты использования через OAuth; также поддерживает ключ Anthropic API или ручной setup-token — см. примечание ниже)
OpenRouterOPENROUTER_API_KEY в ~/.hermes/.env
AI GatewayAI_GATEWAY_API_KEY в ~/.hermes/.env (провайдер: ai-gateway)
z.ai / GLMGLM_API_KEY в ~/.hermes/.env (провайдер: zai)
Kimi / MoonshotKIMI_API_KEY в ~/.hermes/.env (провайдер: kimi-coding)
Kimi / Moonshot (China)KIMI_CN_API_KEY в ~/.hermes/.env (провайдер: kimi-coding-cn; алиасы: kimi-cn, moonshot-cn)
Arcee AIARCEEAI_API_KEY в ~/.hermes/.env (провайдер: arcee; алиасы: arcee-ai, arceeai)
GMI CloudGMI_API_KEY в ~/.hermes/.env (провайдер: gmi; алиасы: gmi-cloud, gmicloud)
MiniMaxMINIMAX_API_KEY в ~/.hermes/.env (провайдер: minimax)
MiniMax ChinaMINIMAX_CN_API_KEY в ~/.hermes/.env (провайдер: minimax-cn)
Alibaba CloudDASHSCOPE_API_KEY в ~/.hermes/.env (провайдер: alibaba)
Alibaba Coding PlanDASHSCOPE_API_KEY (провайдер: alibaba-coding-plan, алиас: alibaba_coding) — отдельный биллинг SKU, другой endpoint
Kilo CodeKILOCODE_API_KEY в ~/.hermes/.env (провайдер: kilocode)
Xiaomi MiMoXIAOMI_API_KEY в ~/.hermes/.env (провайдер: xiaomi, алиасы: mimo, xiaomi-mimo)
Tencent TokenHubTOKENHUB_API_KEY в ~/.hermes/.env (провайдер: tencent-tokenhub, алиасы: tencent, tokenhub, tencentmaas)
OpenCode ZenOPENCODE_ZEN_API_KEY в ~/.hermes/.env (провайдер: opencode-zen)
OpenCode GoOPENCODE_GO_API_KEY в ~/.hermes/.env (провайдер: opencode-go)
DeepSeekDEEPSEEK_API_KEY в ~/.hermes/.env (провайдер: deepseek)
Hugging FaceHF_TOKEN в ~/.hermes/.env (провайдер: huggingface, алиас: hf)
Google / GeminiGOOGLE_API_KEY или GEMINI_API_KEY в ~/.hermes/.env (провайдер: gemini)
Google Gemini (OAuth)hermes model → “Google Gemini (OAuth)” (провайдер: google-gemini-cli, поддерживается бесплатный уровень, вход через браузерный PKCE)
LM Studiohermes model → “LM Studio” (провайдер: lmstudio, необязателен LM_API_KEY)
Custom Endpointhermes model → выбрать “Custom endpoint” (сохраняется в config.yaml)

Официальный путь настройки через API key описан в отдельном руководстве по Google Gemini.

:::tip Алиас ключа модели В разделе конфигурации model: вы можете использовать либо default:, либо model: в качестве имени ключа для ID вашей модели. И model: { default: my-model }, и model: { model: my-model } работают одинаково. :::

Провайдер google-gemini-cli использует backend Cloud Code Assist от Google — тот же API, который использует собственный инструмент gemini-cli от Google. Это поддерживает как бесплатный уровень (щедрая дневная квота для личных аккаунтов), так и платные уровни (Standard/Enterprise через проект GCP).

Быстрый старт:

Окно терминала
hermes model
# → выберите "Google Gemini (OAuth)"
# → подтвердите предупреждение о политике
# → браузер откроет accounts.google.com, выполните вход
# → готово: Hermes автоматически подготовит free tier при первом запросе

Hermes по умолчанию поставляется с публичным desktop OAuth client gemini-cli от Google — теми же учётными данными, которые Google включает в свой open-source gemini-cli. Desktop OAuth clients не являются конфиденциальными (PKCE обеспечивает безопасность). Вам не нужно устанавливать gemini-cli или регистрировать собственный GCP OAuth client.

Как работает аутентификация:

  • PKCE Authorization Code flow для accounts.google.com
  • Browser callback на http://127.0.0.1:8085/oauth2callback (с резервным вариантом на ephemeral-port, если занят)
  • Токены хранятся в ~/.hermes/auth/google_oauth.json (chmod 0600, atomic write, cross-process fcntl lock)
  • Автоматическое обновление за 60 с до истечения срока действия
  • Среды без headless (SSH, HERMES_HEADLESS=1) → резервный режим paste-mode
  • Дедупликация inflight refresh — два параллельных запроса не вызовут двойное обновление
  • invalid_grant (отозван refresh) → файл учётных данных очищается, пользователю предлагается войти снова

Как работает inference:

  • Трафик идет в https://cloudcode-pa.googleapis.com/v1internal:generateContent (или в :streamGenerateContent?alt=sse для streaming), NOT платный endpoint v1beta/openai
  • Тело запроса оборачивается в {project, model, user_prompt_id, request}
  • messages[], tools[], tool_choice в формате OpenAI переводятся в нативный для Gemini формат contents[], tools[].functionDeclarations, toolConfig
  • Ответы переводятся обратно в формат OpenAI, поэтому остальная часть Hermes работает без изменений

Уровни и ID проектов:

Ваша ситуацияЧто делать
Личный аккаунт Google, нужен бесплатный уровеньНичего — войдите и начните чат
Аккаунт Workspace / Standard / EnterpriseУстановите HERMES_GEMINI_PROJECT_ID или GOOGLE_CLOUD_PROJECT в ID вашего проекта GCP
Организация, защищенная VPC-SCHermes определяет SECURITY_POLICY_VIOLATED и автоматически принудительно включает standard-tier

Бесплатный уровень автоматически выделяет проект под управлением Google при первом использовании. Настройка GCP не требуется.

Мониторинг квот:

/gquota

Показывает оставшуюся квоту Code Assist по моделям с индикаторами прогресса:

Gemini Code Assist quota (project: 123-abc)
gemini-2.5-pro ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ 85%
gemini-2.5-flash [input] ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 92%

:::warning Риск, связанный с политикой Google считает использование OAuth-клиента Gemini CLI со сторонним ПО нарушением политики. Некоторые пользователи сообщали об ограничениях аккаунта. Для варианта с наименьшим риском используйте собственный ключ API через провайдер gemini. Hermes показывает предварительное предупреждение и требует явного подтверждения перед началом OAuth. :::

Собственный OAuth-клиент (необязательно):

Если вы предпочитаете зарегистрировать собственный OAuth-клиент Google — например, чтобы квота и область согласия были привязаны к вашему собственному проекту GCP — установите:

Окно терминала
HERMES_GEMINI_CLIENT_ID=your-client.apps.googleusercontent.com
HERMES_GEMINI_CLIENT_SECRET=...
# optional for Desktop clients

Зарегистрируйте OAuth-клиент Desktop app в console.cloud.google.com/apis/credentials с включенным API Generative Language.

:::info Примечание о Codex Провайдер OpenAI Codex выполняет аутентификацию через код устройства (откройте URL, введите код). Hermes хранит полученные учетные данные в собственном хранилище аутентификации в ~/.hermes/auth.json и может импортировать существующие учетные данные Codex CLI из ~/.codex/auth.json, если они есть. Установка Codex CLI не требуется. :::

Даже при использовании Nous Portal, Codex или пользовательского endpoint некоторые инструменты (vision, web summarization, MoA) используют отдельную «вспомогательную» модель. По умолчанию (auxiliary.*.provider: "auto") Hermes направляет эти задачи в вашу основную модель чата — ту же модель, которую вы выбрали в hermes model. Вы можете переопределить каждую задачу отдельно, чтобы направить её в модель cheaper/faster (например, Gemini Flash в OpenRouter) — см. Вспомогательные модели.

:::tip Nous Tool Gateway Платные подписчики Nous Portal также получают доступ к Tool Gateway — web search, генерации изображений, TTS и автоматизации браузера через вашу подписку. Дополнительные ключи API не нужны. Он автоматически предлагается при настройке hermes model или его можно включить позже с помощью hermes tools. :::

У Hermes есть две команды для моделей, которые служат разным целям:

КомандаГде запускатьЧто делает
hermes modelВ вашем терминале (вне любой сессии)Полный мастер настройки — добавить провайдеры, выполнить OAuth, ввести ключи API, настроить endpoints
/modelВнутри чат-сессии HermesБыстрое переключение между уже настроенными провайдерами и моделями

Если вы пытаетесь переключиться на провайдер, который ещё не настроили (например, у вас настроен только OpenRouter, а вы хотите использовать Anthropic), вам нужен hermes model, а не /model. Сначала выйдите из сессии (Ctrl+C или /quit), выполните hermes model, завершите настройку провайдера, затем начните новую сессию.

Используйте модели Claude напрямую через Anthropic API — прокси OpenRouter не нужен. Поддерживаются три метода аутентификации:

:::caution Требуются кредиты Claude Max “extra usage” Когда вы проходите аутентификацию через hermes model → Anthropic OAuth (или через hermes auth add anthropic --type oauth), Hermes маршрутизирует запросы как Claude Code через ваш аккаунт Anthropic. Это работает, только если у вас тариф Claude Max и вы приобрели дополнительные кредиты usage. Базовый лимит тарифа Max (использование, по умолчанию включённое в Claude Code) Hermes не расходует — расходуются только кредиты extra/overage, которые вы добавили сверх него. Подписчики Claude Pro не могут использовать этот путь.

Если у вас нет Max + дополнительных кредитов, используйте вместо этого ANTHROPIC_API_KEY — запросы тарифицируются по pay-per-token для организации этого ключа (стандартные цены API, независимо от любой подписки Claude). :::

Окно терминала
# With an API key (pay-per-token)
export ANTHROPIC_API_KEY=***
hermes chat --provider anthropic --model claude-sonnet-4-6
# Preferred: authenticate through `hermes model`
# Hermes will use Claude Code's credential store directly when available
hermes model
# Manual override with a setup-token (fallback / legacy)
export ANTHROPIC_TOKEN=***
# setup-token or manual OAuth token
hermes chat --provider anthropic
# Auto-detect Claude Code credentials (if you already use Claude Code)
hermes chat --provider anthropic
# reads Claude Code credential files automatically

Когда вы выбираете Anthropic OAuth через hermes model, Hermes предпочитает собственное хранилище учётных данных Claude Code, а не копирование токена в ~/.hermes/.env. Это позволяет обновляемым учётным данным Claude оставаться обновляемыми.

Или задайте это постоянно:

model:
provider: "anthropic"
default: "claude-sonnet-4-6"

:::tip Алиасы --provider claude и --provider claude-code также работают как сокращение для --provider anthropic. :::

Hermes поддерживает GitHub Copilot как провайдер первого класса с двумя режимами:

copilot — Прямой Copilot API (рекомендуется). Использует вашу подписку GitHub Copilot для доступа к GPT-5.x, Claude, Gemini и другим моделям через Copilot API.

Окно терминала
hermes chat --provider copilot --model gpt-5.4

Варианты аутентификации проверяются в таком порядке:

  1. Переменная окружения COPILOT_GITHUB_TOKEN
  2. Переменная окружения GH_TOKEN
  3. Переменная окружения GITHUB_TOKEN
  4. fallback gh auth token CLI

Если токен не найден, hermes model предлагает вход OAuth device code — тот же процесс, который используется в Copilot CLI и opencode.

:::warning Типы токенов Copilot API не поддерживает классические Personal Access Tokens (ghp_*). Поддерживаемые типы токенов:

ТипПрефиксКак получить
OAuth tokengho_hermes model → GitHub Copilot → Login with GitHub
Fine-grained PATgithub_pat_GitHub Settings → Developer settings → Fine-grained tokens (требуется разрешение Copilot Requests)
GitHub App tokenghu_Через установку GitHub App

Если ваш gh auth token возвращает токен ghp_*, вместо этого используйте hermes model для аутентификации через OAuth. :::

:::info Поведение аутентификации Copilot в Hermes Hermes напрямую отправляет поддерживаемый GitHub token (gho_*, github_pat_* или ghu_*) в api.githubcopilot.com и включает специфичные для Copilot заголовки (Editor-Version, Copilot-Integration-Id, Openai-Intent, x-initiator).

При HTTP 401 Hermes теперь выполняет одноразовое восстановление учетных данных перед fallback:

  1. Повторно определяет токен через обычную цепочку приоритетов (COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKENgh auth token)
  2. Пересобирает общий клиент OpenAI с обновленными заголовками
  3. Повторяет запрос один раз

Некоторые старые community proxy используют процессы обмена api.github.com/copilot_internal/v2/token. Этот endpoint может быть недоступен для некоторых типов учетных записей (возвращает 404). Поэтому Hermes сохраняет аутентификацию с прямым токеном как основной путь и полагается на обновление учетных данных во время выполнения + повтор для устойчивости. :::

Маршрутизация API: модели GPT-5+ (кроме gpt-5-mini) автоматически используют Responses API. Все остальные модели (GPT-4o, Claude, Gemini и т. д.) используют Chat Completions. Модели автоматически определяются из живого каталога Copilot.

copilot-acp — backend агента Copilot ACP. Запускает локальный Copilot CLI как подпроцесс:

Окно терминала
hermes chat --provider copilot-acp --model copilot-acp
# Requires the GitHub Copilot CLI in PATH and an existing `copilot login` session
```**Постоянная конфигурация:**
```yaml
model:
provider: "copilot"
default: "gpt-5.4"
Переменная окруженияОписание
COPILOT_GITHUB_TOKENGitHub-токен для Copilot API (первый приоритет)
HERMES_COPILOT_ACP_COMMANDПереопределить путь к бинарному файлу Copilot CLI (по умолчанию: copilot)
HERMES_COPILOT_ACP_ARGSПереопределить аргументы ACP (по умолчанию: --acp --stdio)

У этих провайдеров есть встроенная поддержка с выделенными ID провайдеров. Установите ключ API и используйте --provider для выбора:

Окно терминала
# z.ai / ZhipuAI GLM
hermes chat --provider zai --model glm-5
# Requires: GLM_API_KEY in ~/.hermes/.env
# Kimi / Moonshot AI (international: api.moonshot.ai)
hermes chat --provider kimi-coding --model kimi-for-coding
# Requires: KIMI_API_KEY in ~/.hermes/.env
# Kimi / Moonshot AI (China: api.moonshot.cn)
hermes chat --provider kimi-coding-cn --model kimi-k2.5
# Requires: KIMI_CN_API_KEY in ~/.hermes/.env
# MiniMax (global endpoint)
hermes chat --provider minimax --model MiniMax-M2.7
# Requires: MINIMAX_API_KEY in ~/.hermes/.env
# MiniMax (China endpoint)
hermes chat --provider minimax-cn --model MiniMax-M2.7
# Requires: MINIMAX_CN_API_KEY in ~/.hermes/.env
# Alibaba Cloud / DashScope (Qwen models)
hermes chat --provider alibaba --model qwen3.5-plus
# Requires: DASHSCOPE_API_KEY in ~/.hermes/.env
# Xiaomi MiMo
hermes chat --provider xiaomi --model mimo-v2-pro
# Requires: XIAOMI_API_KEY in ~/.hermes/.env
# Tencent TokenHub (Hy3 Preview)
hermes chat --provider tencent-tokenhub --model hy3-preview
# Requires: TOKENHUB_API_KEY in ~/.hermes/.env
# Arcee AI (Trinity models)
hermes chat --provider arcee --model trinity-large-thinking
# Requires: ARCEEAI_API_KEY in ~/.hermes/.env
# GMI Cloud
# Use the exact model ID returned by GMI's /v1/models endpoint.
hermes chat --provider gmi --model zai-org/GLM-5.1-FP8
# Requires: GMI_API_KEY in ~/.hermes/.env

Или задайте провайдер постоянно в config.yaml:

model:
provider: "gmi"
default: "zai-org/GLM-5.1-FP8"
```Базовые URL можно переопределить с помощью переменных окружения `GLM_BASE_URL`, `KIMI_BASE_URL`, `MINIMAX_BASE_URL`, `MINIMAX_CN_BASE_URL`, `DASHSCOPE_BASE_URL`, `XIAOMI_BASE_URL`, `GMI_BASE_URL` или `TOKENHUB_BASE_URL`.
:::note Автообнаружение endpoint для Z.AI
При использовании провайдера Z.AI / GLM Hermes автоматически проверяет несколько endpoint (глобальный, China, варианты для coding), чтобы найти тот, который принимает ваш ключ API. Вам не нужно вручную задавать `GLM_BASE_URL` — рабочий endpoint определяется и кэшируется автоматически.
:::
### xAI (Grok) — Responses API + кэширование prompt
xAI подключён через Responses API (транспорт `codex_responses`) для автоматической поддержки reasoning на моделях Grok 4 — параметр `reasoning_effort` не нужен, сервер по умолчанию выполняет reasoning. Установите `XAI_API_KEY` в `~/.hermes/.env` и выберите xAI в `hermes model`, либо используйте `grok` как shortcut в `/model grok-4-1-fast-reasoning`.
При использовании xAI как провайдера (любой базовый URL, содержащий `x.ai`) Hermes автоматически включает кэширование prompt, отправляя заголовок `x-grok-conv-id` с каждым запросом API. Это направляет запросы на один и тот же сервер в рамках сессии разговора, позволяя инфраструктуре xAI повторно использовать кэшированные системные prompt и историю разговора.
Настройка не требуется — кэширование активируется автоматически, когда обнаружен endpoint xAI и доступен идентификатор сессии. Это уменьшает задержку и стоимость для многоходовых разговоров.
xAI также предоставляет выделенный endpoint TTS (`/v1/tts`). Выберите **xAI TTS** в `hermes tools` → Voice & TTS, или см. страницу [Voice & TTS](/docs/en/user-guide/features/tts#text-to-speech) для настройки.
### Ollama Cloud — управляемые модели Ollama, OAuth + ключ API
[Ollama Cloud](https://ollama.com/cloud) размещает тот же каталог open-weight, что и локальный Ollama, но без требования GPU. Выберите его в `hermes model` как **Ollama Cloud**, вставьте ваш ключ API из [ollama.com/settings/keys](https://ollama.com/settings/keys), и Hermes автоматически обнаружит доступные модели.
```bash
hermes model
# → pick "Ollama Cloud"
# → paste your OLLAMA_API_KEY
# → select from discovered models (gpt-oss:120b, glm-4.6:cloud, qwen3-coder:480b-cloud, etc.)
```Или напрямую через `config.yaml`:
```yaml
model:
provider: "ollama-cloud"
default: "gpt-oss:120b"

Каталог моделей загружается динамически из ollama.com/v1/models и кэшируется на один час. Нотация model:tag (например, qwen3-coder:480b-cloud) сохраняется при нормализации — не используйте дефисы.

:::tip Ollama Cloud vs local Ollama Оба используют один и тот же OpenAI-совместимый API. Cloud — провайдер первого класса (--provider ollama-cloud, OLLAMA_API_KEY); доступ к локальному Ollama осуществляется через поток Custom Endpoint (base URL http://localhost:11434/v1, без ключа). Используйте cloud для больших моделей, которые вы не можете запускать локально; используйте local для приватности или офлайн-работы. :::

Anthropic Claude, Amazon Nova, DeepSeek v3.2, Meta Llama 4 и другие модели через AWS Bedrock. Использует цепочку учетных данных AWS SDK (boto3) — без ключа API, только стандартная аутентификация AWS.

Окно терминала
# Simplest — named profile in ~/.aws/credentials
hermes chat --provider bedrock --model us.anthropic.claude-sonnet-4-6
# Or with explicit env vars
AWS_PROFILE=myprofile AWS_REGION=us-east-1 hermes chat --provider bedrock --model us.anthropic.claude-sonnet-4-6

Или постоянно в config.yaml:

model:
provider: "bedrock"
default: "us.anthropic.claude-sonnet-4-6"
bedrock:
region: "us-east-1"
# or set AWS_REGION
# profile: "myprofile"
# or set AWS_PROFILE
# discovery: true
# auto-discover region from IAM
# guardrail:
# optional Bedrock Guardrails
# guardrail_identifier: "your-guardrail-id"
# guardrail_version: "DRAFT"

Аутентификация использует стандартную цепочку boto3: явные AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, AWS_PROFILE из ~/.aws/credentials, роль IAM на EC2/ECS/Lambda, IMDS, или SSO. Переменная окружения не требуется, если вы уже аутентифицированы с помощью AWS CLI.

Bedrock под капотом использует Converse API — запросы преобразуются в не зависящую от модели форму Bedrock, поэтому одна и та же конфигурация работает для моделей Claude, Nova, DeepSeek и Llama. Указывайте BEDROCK_BASE_URL только если вы обращаетесь к нестандартному региональному endpoint.См. руководство по AWS Bedrock с пошаговым описанием настройки IAM, выбора региона и межрегионального инференса.

Qwen Portal от Alibaba с входом OAuth через браузер. Выберите Qwen OAuth (Portal) в hermes model, войдите через браузер, и Hermes сохранит refresh token.

Окно терминала
hermes model
# → pick "Qwen OAuth (Portal)"
# → browser opens; sign in with your Alibaba account
# → confirm — credentials are saved to ~/.hermes/auth.json
hermes chat
# uses portal.qwen.ai/v1 endpoint

Или настройте config.yaml:

model:
provider: "qwen-oauth"
default: "qwen3-coder-plus"

Задавайте HERMES_QWEN_BASE_URL только если endpoint портала будет перенесён (по умолчанию: https://portal.qwen.ai/v1).

:::tip Qwen OAuth vs DashScope (Alibaba) qwen-oauth использует ориентированный на конечных пользователей Qwen Portal с входом OAuth — идеально для индивидуальных пользователей. Провайдер alibaba использует корпоративный API DashScope с DASHSCOPE_API_KEY — идеально для программных / production-нагрузок. Оба направляют запросы к моделям семейства Qwen, но работают на разных endpoints. :::

Если у вас оформлена подписка на Coding Plan от Alibaba (тарифный SKU, отдельный от стандартного доступа DashScope API), Hermes предоставляет его как отдельный полноценный провайдер: alibaba-coding-plan. Endpoint: https://coding-intl.dashscope.aliyuncs.com/v1. Он совместим с OpenAI, как и обычный провайдер alibaba, но имеет другой базовый URL и отдельную поверхность биллинга.

model:
provider: alibaba_coding
# alias for alibaba-coding-plan
model: qwen3-coder-plus

Или из CLI:

Окно терминала
hermes chat --provider alibaba_coding --model qwen3-coder-plus

alibaba_coding использует тот же DASHSCOPE_API_KEY, который уже использует ваша запись alibaba — отдельный ключ не нужен, только другая цель маршрутизации. До регистрации этого провайдера пользователи, задававшие provider: alibaba_coding в config.yaml, незаметно перенаправлялись на маршрутизацию OpenRouter.

MiniMax (OAuth)MiniMax-M2.7 через OAuth-вход в браузере — ключ API не нужен. Выберите MiniMax (OAuth) в hermes model, войдите через браузер, и Hermes сохранит токены доступа и обновления. Внутри использует совместимый с Anthropic Messages endpoint (/anthropic).

Заголовок раздела «MiniMax (OAuth)MiniMax-M2.7 через OAuth-вход в браузере — ключ API не нужен. Выберите MiniMax (OAuth) в hermes model, войдите через браузер, и Hermes сохранит токены доступа и обновления. Внутри использует совместимый с Anthropic Messages endpoint (/anthropic).»
Окно терминала
hermes model
# → pick "MiniMax (OAuth)"
# → browser opens; sign in with your MiniMax account (global or CN region)
# → confirm — credentials are saved to ~/.hermes/auth.json
hermes chat
# uses api.minimax.io/anthropic endpoint

Или настройте config.yaml:

model:
provider: "minimax-oauth"
default: "MiniMax-M2.7"

Поддерживаемые модели: MiniMax-M2.7 (основная) и MiniMax-M2.7-highspeed (подключена как вспомогательная модель по умолчанию). Путь OAuth игнорирует MINIMAX_API_KEY / MINIMAX_BASE_URL.

:::tip MiniMax OAuth vs ключ API minimax-oauth использует ориентированный на потребителей портал MiniMax с OAuth-входом — настройка биллинга не требуется. Провайдеры minimax и minimax-cn используют MINIMAX_API_KEY / MINIMAX_CN_API_KEY — для программного доступа. Полное пошаговое руководство см. в руководстве по MiniMax OAuth. :::

Nemotron и другие open source модели через build.nvidia.com (бесплатный ключ API) или локальный endpoint NIM.

Окно терминала
# Cloud (build.nvidia.com)
hermes chat --provider nvidia --model nvidia/nemotron-3-super-120b-a12b
# Requires: NVIDIA_API_KEY in ~/.hermes/.env
# Local NIM endpoint — override base URL
NVIDIA_BASE_URL=http://localhost:8000/v1 hermes chat --provider nvidia --model nvidia/nemotron-3-super-120b-a12b

Или задайте это постоянно в config.yaml:

model:
provider: "nvidia"
default: "nvidia/nemotron-3-super-120b-a12b"

:::tip Локальный NIM Для локальных развертываний (DGX Spark, локальный GPU) задайте NVIDIA_BASE_URL=http://localhost:8000/v1. NIM предоставляет тот же OpenAI-compatible chat completions API, что и build.nvidia.com, поэтому переключение между облаком и локальной средой — это изменение env-var в одной строке. :::

Открытые модели и reasoning-модели через GMI Cloud — OpenAI-compatible API, аутентификация по ключу API.

Окно терминала
# GMI Cloud
hermes chat --provider gmi --model deepseek-ai/DeepSeek-R1
# Requires: GMI_API_KEY in ~/.hermes/.env

Или задайте это постоянно в config.yaml:

model:
provider: "gmi"
default: "deepseek-ai/DeepSeek-R1"

Базовый URL можно переопределить с помощью GMI_BASE_URL (по умолчанию: https://api.gmi-serving.com/v1).

Модели серии Step через StepFun — OpenAI-совместимый API, аутентификация по ключу API.

Окно терминала
# StepFun
hermes chat --provider stepfun --model step-3-mini
# Requires: STEPFUN_API_KEY in ~/.hermes/.env

Или задайте это постоянно в config.yaml:

model:
provider: "stepfun"
default: "step-3-mini"

Базовый URL можно переопределить с помощью STEPFUN_BASE_URL (по умолчанию: https://api.stepfun.com/v1).

Hugging Face Inference Providers направляет запросы к более чем 20 открытым моделям через унифицированный OpenAI-совместимый endpoint (router.huggingface.co/v1). Запросы автоматически направляются в самый быстрый доступный backend (Groq, Together, SambaNova и т. д.) с автоматическим переключением при сбое.

Окно терминала
# Use any available model
hermes chat --provider huggingface --model Qwen/Qwen3-235B-A22B-Thinking-2507
# Requires: HF_TOKEN in ~/.hermes/.env
# Short alias
hermes chat --provider hf --model deepseek-ai/DeepSeek-V3.2

Или задайте это постоянно в config.yaml:

model:
provider: "huggingface"
default: "Qwen/Qwen3-235B-A22B-Thinking-2507"

Получите свой токен на huggingface.co/settings/tokens — обязательно включите разрешение “Make calls to Inference Providers”. Включён бесплатный тариф ($0.10/month кредита, без наценки на тарифы провайдера).

Вы можете добавлять суффиксы маршрутизации к именам моделей: :fastest (по умолчанию), :cheapest или :provider_name, чтобы принудительно выбрать конкретный backend.

Базовый URL можно переопределить с помощью HF_BASE_URL.

Пользовательские и self-hosted LLM провайдерыHermes Agent работает с любой OpenAI-compatible API endpoint. Если сервер реализует /v1/chat/completions, вы можете направить Hermes на него. Это означает, что вы можете использовать локальные модели, серверы инференса GPU, multi-provider routers или любой сторонний API.

Заголовок раздела «Пользовательские и self-hosted LLM провайдерыHermes Agent работает с любой OpenAI-compatible API endpoint. Если сервер реализует /v1/chat/completions, вы можете направить Hermes на него. Это означает, что вы можете использовать локальные модели, серверы инференса GPU, multi-provider routers или любой сторонний API.»

Три способа настроить custom endpoint:

Интерактивная настройка (рекомендуется):

Окно терминала
hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Enter: API base URL, API key, Model name

Ручная конфигурация (config.yaml):

# In ~/.hermes/config.yaml
model:
default: your-model-name
provider: custom
base_url: http://localhost:8000/v1
api_key: your-key-or-leave-empty-for-local

:::warning Устаревшие env vars OPENAI_BASE_URL и LLM_MODEL в .env удалены. Ни одна из них не читается никакой частью Hermes — config.yaml является единственным источником истины для конфигурации модели и endpoint. Если в вашем .env есть устаревшие записи, они автоматически очищаются при следующем hermes setup или миграции конфигурации. Используйте hermes model или редактируйте config.yaml напрямую. :::

Оба подхода сохраняются в config.yaml, который является источником истины для модели, провайдера и базового URL.

:::warning hermes model vs /model hermes model (запускается из вашего терминала, вне любой chat session) — это полный мастер настройки провайдера. Используйте его, чтобы добавлять новых провайдеров, запускать OAuth flows, вводить ключи API и настраивать custom endpoints.

/model (вводится внутри активной chat session Hermes) может только переключаться между провайдерами и моделями, которые вы уже настроили. Она не может добавлять новых провайдеров, запускать OAuth или запрашивать ключи API. Если у вас настроен только один провайдер (например, OpenRouter), /model покажет только модели для этого провайдера.

Чтобы добавить нового провайдера: Выйдите из своей сессии (Ctrl+C или /quit), запустите hermes model, настройте нового провайдера, затем начните новую сессию. :::

Как только у вас будет настроен хотя бы один custom endpoint, вы сможете переключать модели в середине сессии:

/model custom:qwen-2.5
# Switch to a model on your custom endpoint
/model custom
# Auto-detect the model from the endpoint
/model openrouter:claude-sonnet-4
# Switch back to a cloud provider

Если у вас настроены именованные пользовательские провайдеры (см. ниже), используйте тройной синтаксис:

/model custom:local:qwen-2.5
# Use the "local" custom provider with model qwen-2.5
/model custom:work:llama3
# Use the "work" custom provider with llama3

При переключении провайдеров Hermes сохраняет базовый URL и провайдера в config, чтобы изменения сохранялись после перезапуска. При переключении с пользовательского endpoint на встроенный провайдер устаревший базовый URL автоматически очищается.

Все ниже следует той же схеме — просто измените URL, ключ и имя модели.


Ollama — локальные модели, нулевая настройка

Заголовок раздела «Ollama — локальные модели, нулевая настройка»

Ollama запускает open-weight модели локально одной командой. Лучше всего подходит для: быстрого локального экспериментирования, работы с повышенными требованиями к конфиденциальности, использования офлайн. Поддерживает вызов инструментов через OpenAI-совместимый API.

Окно терминала
# Install and run a model
ollama pull qwen2.5-coder:32b
ollama serve
# Starts on port 11434

Затем настройте Hermes:

11434/v1
hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Skip API key (Ollama doesn't need one)
# Enter model name (e.g. qwen2.5-coder:32b)

Или настройте config.yaml напрямую:

model:
default: qwen2.5-coder:32b
provider: custom
base_url: http://localhost:11434/v1
context_length: 32768
# See warning below

:::caution По умолчанию в Ollama очень малая длина контекста Ollama не использует полное окно контекста вашей модели по умолчанию. В зависимости от вашего VRAM, значение по умолчанию такое:

Доступный VRAMКонтекст по умолчанию
Менее 24 GB4,096 токенов
24–48 GB32,768 токенов
48+ GB256,000 токенов

Как увеличить его (выберите один вариант):

Окно терминала
# Option 1: Set server-wide via environment variable (recommended)
OLLAMA_CONTEXT_LENGTH=32768 ollama serve
# Option 2: For systemd-managed Ollama
sudo systemctl edit ollama.service
# Add: Environment="OLLAMA_CONTEXT_LENGTH=32768"
# Then: sudo systemctl daemon-reload && sudo systemctl restart ollama
# Option 3: Bake it into a custom model (persistent per-model)
echo -e "FROM qwen2.5-coder:32b\nPARAMETER num_ctx 32768" > Modelfile
ollama create qwen2.5-coder-32k -f Modelfile

Вы не можете задать длину контекста через OpenAI-совместимый API (/v1/chat/completions). Его нужно настраивать на стороне сервера или через Modelfile. Это главный источник путаницы при интеграции Ollama с инструментами вроде Hermes. :::

Проверьте, что ваш контекст задан правильно:

Окно терминала
ollama ps
# Look at the CONTEXT column — it should show your configured value

vLLM — стандарт для промышленного обслуживания LLM. Лучше всего подходит для: максимальной пропускной способности на оборудовании GPU, обслуживания больших моделей, непрерывного батчинга.

Окно терминала
pip install vllm
vllm serve meta-llama/Llama-3.1-70B-Instruct \
--port 8000 \
--max-model-len 65536 \
--tensor-parallel-size 2 \
--enable-auto-tool-choice \
--tool-call-parser hermes

Затем настройте Hermes:

8000/v1
hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Skip API key (or enter one if you configured vLLM with --api-key)
# Enter model name: meta-llama/Llama-3.1-70B-Instruct
```**Длина контекста:** vLLM по умолчанию считывает `max_position_embeddings` модели. Если это превышает память вашего GPU, возникнет ошибка, и вам будет предложено установить для `--max-model-len` меньшее значение. Также можно использовать `--max-model-len auto`, чтобы автоматически найти максимальное подходящее значение. Установите `--gpu-memory-utilization 0.95` (по умолчанию 0.9), чтобы уместить больше контекста в VRAM.
**Для вызова инструментов требуются явные флаги:**
| Флаг | Назначение |
|------|---------|
| `--enable-auto-tool-choice` | Обязательно для `tool_choice: "auto"` (по умолчанию в Hermes) |
| `--tool-call-parser <name>` | Парсер для формата вызова инструментов модели |
Поддерживаемые парсеры: `hermes` (Qwen 2.5, Hermes 2/3), `llama3_json` (Llama 3.x), `mistral`, `deepseek_v3`, `deepseek_v31`, `xlam`, `pythonic`. Без этих флагов вызовы инструментов не будут работать — модель будет выводить вызовы инструментов как текст.
:::tip
vLLM поддерживает человекочитаемые размеры: `--max-model-len 64k` (строчная k = 1000, заглавная K = 1024).
:::
---
### SGLang — быстрая подача с RadixAttention
[SGLang](https://github.com/sgl-project/sglang) — это альтернатива vLLM с RadixAttention для повторного использования KV cache. Лучше всего подходит для: многоходовых разговоров (кэширование префикса), constrained decoding, структурированного вывода.
```bash
pip install "sglang[all]"
python -m sglang.launch_server \
--model meta-llama/Llama-3.1-70B-Instruct \
--port 30000 \
--context-length 65536 \
--tp 2 \
--tool-call-parser qwen

Затем настройте Hermes:

30000/v1
hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Enter model name: meta-llama/Llama-3.1-70B-Instruct

Длина контекста: SGLang по умолчанию считывает значение из config модели. Используйте --context-length, чтобы переопределить его. Если вам нужно превысить объявленный моделью максимум, установите SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1.

Вызов инструментов: Используйте --tool-call-parser с подходящим парсером для семейства вашей модели: qwen (Qwen 2.5), llama3, llama4, deepseekv3, mistral, glm. Без этого флага вызовы инструментов будут возвращаться как обычный текст.

:::caution По умолчанию SGLang использует максимум 128 выходных токенов Если ответы кажутся обрезанными, добавьте max_tokens к вашим запросам или задайте --default-max-tokens на сервере. По умолчанию SGLang использует только 128 токенов на ответ, если это не указано в запросе. :::


llama.cpp запускает квантизованные модели на CPU, Apple Silicon (Metal) и потребительских GPU. Лучше всего подходит для: запуска моделей без дата-центрового GPU, пользователей Mac, edge-развертывания.

Окно терминала
# Build and start llama-server
cmake -B build && cmake --build build --config Release
./build/bin/llama-server \
--jinja -fa \
-c 32768 \
-ngl 99 \
-m models/qwen2.5-coder-32b-instruct-Q4_K_M.gguf \
--port 8080 --host 0.0.0.0

Длина контекста (-c): В недавних сборках по умолчанию используется 0, который считывает обучающий контекст модели из метаданных GGUF. Для моделей с обучающим контекстом 128k+ это может OOM при попытке выделить полный KV-кэш. Явно задайте -c в соответствии с вашими потребностями (32k–64k — хороший диапазон для использования агентом). Если используются параллельные слоты (-np), общий контекст делится между слотами — при -c 32768 -np 4 каждый слот получает только 8k.

Затем настройте Hermes так, чтобы он указывал на него:

8080/v1
hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Skip API key (local servers don't need one)
# Enter model name — or leave blank to auto-detect if only one model is loaded

Это сохраняет endpoint в config.yaml и он сохраняется между сессиями.

:::caution Для вызова инструментов требуется --jinja Без --jinja llama-server полностью игнорирует параметр tools. Модель попытается вызывать инструменты, записывая JSON в текст ответа, но Hermes не распознает это как вызов инструмента — вы увидите необработанный JSON вроде {"name": "web_search", ...}, напечатанный как сообщение вместо реального поиска.Нативная поддержка вызова инструментов (лучшая производительность): Llama 3.x, Qwen 2.5 (включая Coder), Hermes 2/3, Mistral, DeepSeek, Functionary. Все остальные модели используют универсальный обработчик, который работает, но может быть менее эффективным. Полный список см. в документации llama.cpp по вызову функций.

Вы можете проверить, что поддержка инструментов активна, посмотрев http://localhost:8080/props — поле chat_template должно присутствовать. :::


LM Studio — десктопное приложение с локальными моделями

Заголовок раздела «LM Studio — десктопное приложение с локальными моделями»

LM Studio — это десктопное приложение для запуска локальных моделей с GUI. Лучше всего подходит для: пользователей, предпочитающих визуальный интерфейс, быстрого тестирования моделей, разработчиков на macOS/Windows/Linux.

Запустите сервер из приложения LM Studio (вкладка Developer → Start Server) или используйте CLI:

Окно терминала
lms server start
# Starts on port 1234
lms load qwen2.5-coder --context-length 32768

Затем настройте Hermes:

1234/v1
hermes model
# Select "LM Studio"
# Pick one of the discovered models
# If LM Studio server auth is enabled, enter LM_API_KEY when prompted

Hermes автоматически загрузит модель LM Studio с длиной контекста 64K

Чтобы изменить длину контекста в LM Studio:

  1. Нажмите значок шестерёнки рядом с выбором модели
  2. Установите “Context Length” как минимум на 64000 для комфортной работы
  3. Перезагрузите модель, чтобы изменения вступили в силу
  4. Если ваша машина не справляется с 64000, рассмотрите использование меньшей модели с большей длиной контекста.

Либо используйте CLI: lms load model-name --context-length 64000

Вы можете использовать CLI для оценки, поместится ли модель: lms load model-name --context-length 64000 --estimate-only

Чтобы задать постоянные значения по умолчанию для каждой модели: вкладка My Models → значок шестерёнки на модели → задайте размер контекста. :::Вызов инструментов: Поддерживается начиная с LM Studio 0.3.6. Модели с нативным обучением вызову инструментов (Qwen 2.5, Llama 3.x, Mistral, Hermes) определяются автоматически и отображаются со значком инструмента. Для других моделей используется универсальный запасной вариант, который может быть менее надежным.


Поскольку Hermes Agent требует Unix-окружение, пользователи Windows запускают его внутри WSL2. Если ваш сервер модели (Ollama, LM Studio и т. д.) работает на хосте Windows, вам нужно устранить разрыв сети — WSL2 использует виртуальный сетевой адаптер с собственной подсетью, поэтому localhost внутри WSL2 указывает на Linux VM, а не на хост Windows.

:::tip Оба в WSL2? Не проблема. Если ваш сервер модели тоже работает внутри WSL2 (что обычно для vLLM, SGLang и llama-server), localhost работает как ожидается — они используют одно и то же сетевое пространство имен. Пропустите этот раздел. :::

Вариант 1: Режим зеркальной сети (рекомендуется)

Заголовок раздела «Вариант 1: Режим зеркальной сети (рекомендуется)»

Доступный в Windows 11 22H2+, зеркальный режим позволяет localhost работать двунаправленно между Windows и WSL2 — это самое простое решение.

  1. Создайте или отредактируйте %USERPROFILE%\.wslconfig (например, C:\Users\YourName\.wslconfig):
[wsl2]
networkingMode=mirrored
  1. Перезапустите WSL из PowerShell:
Окно терминала
wsl --shutdown
  1. Снова откройте терминал WSL2. localhost теперь обращается к сервисам Windows:
Окно терминала
curl http://localhost:11434/v1/models
# Ollama on Windows — works

:::note Брандмауэр Hyper-V В некоторых сборках Windows 11 брандмауэр Hyper-V по умолчанию блокирует зеркальные подключения. Если localhost по-прежнему не работает после включения зеркального режима, выполните это в PowerShell с правами администратора:

Окно терминала
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow

:::

Вариант 2: Использовать IP-адрес хоста Windows (Windows 10 / более старые сборки)

Заголовок раздела «Вариант 2: Использовать IP-адрес хоста Windows (Windows 10 / более старые сборки)»

Если вы не можете использовать зеркальный режим, найдите IP-адрес хоста Windows изнутри WSL2 и используйте его вместо localhost:

Окно терминала
# Get the Windows host IP (the default gateway of WSL2's virtual network)
ip route show | grep -i default | awk '{ print $3 }'
# Example output: 172.29.192.1

Используйте этот IP в конфигурации Hermes:

model:
default: qwen2.5-coder:32b
provider: custom
base_url: http://172.29.192.1:11434/v1
# Windows host IP, not localhost

:::tip Динамический helper IP-адрес хоста может меняться при перезапуске WSL2. Вы можете получать его динамически в своей оболочке:

Окно терминала
export WSL_HOST=$(ip route show | grep -i default | awk '{ print $3 }')
echo "Windows host at: $WSL_HOST"
curl http://$WSL_HOST:11434/v1/models
# Test Ollama

Или используйте mDNS-имя вашей машины (требуется libnss-mdns в WSL2):

Окно терминала
sudo apt install libnss-mdns
curl http://$(hostname).local:11434/v1/models

:::

Адрес привязки сервера (обязательно для режима NAT)

Заголовок раздела «Адрес привязки сервера (обязательно для режима NAT)»

Если вы используете Option 2 (режим NAT с IP-адресом хоста), сервер модели на Windows должен принимать подключения извне 127.0.0.1. По умолчанию большинство серверов слушают только localhost — подключения WSL2 в режиме NAT приходят из другой виртуальной подсети и будут отклонены. В mirrored mode localhost сопоставляется напрямую, поэтому привязка по умолчанию к 127.0.0.1 работает нормально.

СерверПривязка по умолчаниюКак исправить
Ollama127.0.0.1Установите переменную окружения OLLAMA_HOST=0.0.0.0 перед запуском Ollama (System Settings → Environment Variables в Windows или отредактируйте службу Ollama)
LM Studio127.0.0.1Включите “Serve on Network” во вкладке Developer → Server settings
llama-server127.0.0.1Добавьте --host 0.0.0.0 в команду запуска
vLLM0.0.0.0Уже по умолчанию привязывается ко всем интерфейсам
SGLang127.0.0.1Добавьте --host 0.0.0.0 в команду запуска

Ollama в Windows (подробно): Ollama работает как служба Windows. Чтобы задать OLLAMA_HOST:

  1. Откройте System PropertiesEnvironment Variables
  2. Добавьте новую System variable: OLLAMA_HOST = 0.0.0.0
  3. Перезапустите службу Ollama (или перезагрузите компьютер)

Брандмауэр Windows рассматривает WSL2 как отдельную сеть (и в NAT, и в mirrored mode). Если после описанных выше шагов подключения по-прежнему не работают, добавьте правило брандмауэра для порта вашего сервера модели:

Окно терминала
# Run in Admin PowerShell — replace PORT with your server's port
New-NetFirewallRule -DisplayName "Allow WSL2 to Model Server" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 11434

Обычные порты: Ollama 11434, vLLM 8000, SGLang 30000, llama-server 8080, LM Studio 1234.

Изнутри WSL2 проверьте, что вы можете подключиться к своему серверу модели:

Окно терминала
# Replace URL with your server's address and port
curl http://localhost:11434/v1/models
# Mirrored mode
curl http://172.29.192.1:11434/v1/models
# NAT mode (use your actual host IP)

Если вы получаете ответ JSON со списком ваших моделей, всё в порядке. Используйте тот же URL как base_url в конфигурации Hermes.


Эти проблемы затрагивают все локальные серверы инференса при использовании с Hermes.

«Connection refused» от WSL2 к серверу модели, размещённому на Windows

Заголовок раздела ««Connection refused» от WSL2 к серверу модели, размещённому на Windows»

Если вы запускаете Hermes внутри WSL2, а сервер модели — на хосте Windows, http://localhost:<port> не будет работать в режиме сети NAT по умолчанию у WSL2. Исправление см. выше в разделе [Сеть WSL2].

Вызовы инструментов отображаются как текст вместо выполнения

Заголовок раздела «Вызовы инструментов отображаются как текст вместо выполнения»

Модель выводит что-то вроде {"name": "web_search", "arguments": {...}} как сообщение вместо фактического вызова инструмента.

Причина: На вашем сервере не включён вызов инструментов, либо модель не поддерживает его через реализацию вызова инструментов на сервере.

СерверИсправление
llama.cppДобавьте --jinja в команду запуска
vLLMДобавьте --enable-auto-tool-choice --tool-call-parser hermes
SGLangДобавьте --tool-call-parser qwen (или подходящий parser)
OllamaВызов инструментов включён по умолчанию — убедитесь, что ваша модель это поддерживает (проверьте с помощью ollama show model-name)
LM StudioОбновитесь до 0.3.6+ и используйте модель с нативной поддержкой инструментов

Кажется, что модель забывает контекст или даёт несвязные ответы

Заголовок раздела «Кажется, что модель забывает контекст или даёт несвязные ответы»

Причина: Слишком маленькое окно контекста. Когда разговор превышает лимит контекста, большинство серверов молча отбрасывают старые сообщения. Только системный prompt Hermes и схемы инструментов могут занимать 4k–8k токенов.

Диагностика:

Окно терминала
# Check what Hermes thinks the context is
# Look at startup line: "Context limit: X tokens"
# Check your server's actual context
# Ollama: ollama ps (CONTEXT column)
# llama.cpp: curl http://localhost:8080/props | jq '.default_generation_settings.n_ctx'
# vLLM: check --max-model-len in startup args

Исправление: Установите контекст как минимум 32,768 токенов для использования с агентом. Конкретный флаг см. в разделе каждого сервера выше.

«Предел контекста: 2048 токенов» при запуске

Заголовок раздела ««Предел контекста: 2048 токенов» при запуске»

Hermes автоматически определяет длину контекста из endpoint /v1/models вашего сервера. Если сервер сообщает низкое значение (или вообще его не сообщает), Hermes использует заявленный предел модели, который может быть неверным.

Исправление: Явно задайте его в config.yaml:

model:
default: your-model
provider: custom
base_url: http://localhost:11434/v1
context_length: 32768

Ответы обрываются на середине предложения

Заголовок раздела «Ответы обрываются на середине предложения»

Возможные причины:

  1. Низкий предел вывода (max_tokens) на сервере — SGLang по умолчанию использует 128 токенов на ответ. Установите --default-max-tokens на сервере или настройте Hermes с model.max_tokens в config.yaml. Примечание: max_tokens управляет только длиной ответа — это не связано с тем, насколько длинной может быть история вашего разговора (это context_length).
  2. Исчерпание контекста — Модель заполнила своё окно контекста. Увеличьте model.context_length или включите сжатие контекста в Hermes.

LiteLLM — это OpenAI-совместимый proxy, который объединяет 100+ LLM провайдеров за единым API. Лучше всего подходит для: переключения между провайдерами без изменения конфигурации, балансировки нагрузки, цепочек fallback, контроля бюджета.

Окно терминала
# Install and start
pip install "litellm[proxy]"
litellm --model anthropic/claude-sonnet-4 --port 4000
# Or with a config file for multiple models:
litellm --config litellm_config.yaml --port 4000

Затем настройте Hermes с помощью hermes model → Custom endpoint → http://localhost:4000/v1.Пример litellm_config.yaml с fallback:

model_list:
- model_name: "best"
litellm_params:
model: anthropic/claude-sonnet-4
api_key: sk-ant-...
- model_name: "best"
litellm_params:
model: openai/gpt-4o
api_key: sk-...
router_settings:
routing_strategy: "latency-based-routing"

ClawRouter — Маршрутизация с оптимизацией стоимости

Заголовок раздела «ClawRouter — Маршрутизация с оптимизацией стоимости»

ClawRouter от BlockRunAI — это локальный routing proxy, который автоматически выбирает модели на основе сложности запроса. Он классифицирует запросы по 14 параметрам и направляет их к самой дешёвой модели, способной справиться с задачей. Оплата выполняется через криптовалюту USDC (без ключей API).

Окно терминала
# Install and start
npx @blockrun/clawrouter
# Starts on port 8402

Затем настройте Hermes с помощью hermes model → Custom endpoint → http://localhost:8402/v1 → имя модели blockrun/auto.

Профили маршрутизации:

ПрофильСтратегияЭкономия
blockrun/autoСбалансированный quality/cost74-100%
blockrun/ecoМаксимально дёшево95-100%
blockrun/premiumМодели наилучшего качества0%
blockrun/freeТолько бесплатные модели100%
blockrun/agenticОптимизировано для использования инструментовзависит

Подойдёт любой сервис с OpenAI-compatible API. Некоторые популярные варианты:| Провайдер | Base URL | Примечания | |----------|----------|-------| | Together AI | https://api.together.xyz/v1 | Облачные открытые модели | | Groq | https://api.groq.com/openai/v1 | Сверхбыстрый инференс | | DeepSeek | https://api.deepseek.com/v1 | Модели DeepSeek | | Fireworks AI | https://api.fireworks.ai/inference/v1 | Быстрый хостинг открытых моделей | | GMI Cloud | https://api.gmi-serving.com/v1 | Управляемый OpenAI-совместимый инференс | | Cerebras | https://api.cerebras.ai/v1 | Инференс на чипах wafer-scale | | Mistral AI | https://api.mistral.ai/v1 | Модели Mistral | | OpenAI | https://api.openai.com/v1 | Прямой доступ к OpenAI | | Azure OpenAI | https://YOUR.openai.azure.com/ | Корпоративный OpenAI | | LocalAI | http://localhost:8080/v1 | Самостоятельный хостинг, несколько моделей | | Jan | http://localhost:1337/v1 | Десктопное приложение с локальными моделями |

Настройте любой из них через hermes model → Custom endpoint или в config.yaml:

model:
default: meta-llama/Llama-3.1-70B-Instruct-Turbo
provider: custom
base_url: https://api.together.xyz/v1
api_key: your-together-key

:::note Две настройки, которые легко перепутать context_length — это общее окно контекста: суммарный бюджет для входных и выходных токенов (например, 200 000 для Claude Opus 4.6). Hermes использует это, чтобы решать, когда сжимать историю, и для проверки запросов API.

model.max_tokens — это лимит вывода: максимальное число токенов, которое модель может сгенерировать в одном ответе. Это никак не связано с длиной истории вашей переписки. Стандартное в индустрии название max_tokens — частый источник путаницы; в нативном API от Anthropic его позже переименовали в max_output_tokens для ясности.

Укажите context_length, если автоопределение неправильно определяет размер окна. Указывайте model.max_tokens только если нужно ограничить длину отдельных ответов. :::Hermes использует цепочку разрешения из нескольких источников, чтобы определить правильное окно контекста для вашей модели и провайдера:

  1. Переопределение в конфигеmodel.context_length в config.yaml (наивысший приоритет)
  2. Пользовательский провайдер для конкретной моделиcustom_providers[].models.<id>.context_length
  3. Постоянный кэш — ранее обнаруженные значения (сохраняются после перезапуска)
  4. Endpoint /models — запрашивает API вашего сервера (эндпоинты local/custom)
  5. Anthropic /v1/models — запрашивает API Anthropic для max_input_tokens (только для пользователей с API-key)
  6. OpenRouter API — метаданные модели в реальном времени из OpenRouter
  7. Nous Portal — сопоставляет по суффиксу ID моделей Nous с метаданными OpenRouter
  8. models.dev — поддерживаемый сообществом реестр с зависящими от провайдера длинами контекста для более чем 3800 моделей у более чем 100 провайдеров
  9. Резервные значения по умолчанию — широкие шаблоны семейств моделей (по умолчанию 128K)

Для большинства конфигураций это работает из коробки. Система учитывает провайдера — одна и та же модель может иметь разные ограничения контекста в зависимости от того, кто её обслуживает (например, claude-opus-4.6 — 1M при прямом использовании Anthropic, но 128K в GitHub Copilot).

Чтобы явно задать длину контекста, добавьте context_length в конфиг вашей модели:

model:
default: "qwen3.5:9b"
base_url: "http://localhost:8080/v1"
context_length: 131072
# tokens

Для пользовательских endpoint вы также можете задать длину контекста для каждой модели:

custom_providers:
- name: "My Local LLM"
base_url: "http://localhost:11434/v1"
models:
qwen3.5:27b:
context_length: 32768
deepseek-r1:70b:
context_length: 65536

hermes model предложит указать длину контекста при настройке пользовательского endpoint. Оставьте поле пустым для автоопределения.

:::tip Когда задавать это вручную

  • Вы используете Ollama с пользовательским num_ctx, который меньше максимума модели
  • Вы хотите ограничить контекст ниже максимума модели (например, 8k для модели 128k, чтобы сэкономить VRAM)
  • Вы работаете через proxy, который не раскрывает /v1/models :::

Именованные пользовательские провайдеры

Заголовок раздела «Именованные пользовательские провайдеры»

Если вы работаете с несколькими пользовательскими endpoint (например, локальным dev-сервером и удалённым сервером GPU), вы можете определить их как именованные пользовательские провайдеры в config.yaml:

custom_providers:
- name: local
base_url: http://localhost:8080/v1
# api_key omitted — Hermes uses "no-key-required" for keyless local servers
- name: work
base_url: https://gpu-server.internal.corp/v1
key_env: CORP_API_KEY
api_mode: chat_completions
# optional, auto-detected from URL
- name: anthropic-proxy
base_url: https://proxy.example.com/anthropic
key_env: ANTHROPIC_PROXY_KEY
api_mode: anthropic_messages
# for Anthropic-compatible proxies

Переключайтесь между ними в середине сессии с помощью тройного синтаксиса:

/model custom:local:qwen-2.5
# Use the "local" endpoint with qwen-2.5
/model custom:work:llama3-70b
# Use the "work" endpoint with llama3-70b
/model custom:anthropic-proxy:claude-sonnet-4
# Use the proxy

Вы также можете выбирать именованные пользовательские провайдеры в интерактивном меню hermes model.


Облачные провайдеры, перечисленные в Другие совместимые провайдеры, все используют диалект REST от OpenAI, поэтому в custom_providers: они подключаются одинаково. Ниже приведены три готовых рецепта. Каждый добавляется в ~/.hermes/config.yaml, а соответствующий ключ API помещается в ~/.hermes/.env.

Размещает модели с открытыми весами (Llama, MiniMax, Gemma, DeepSeek, Qwen) по ценам значительно ниже, чем у API от первых лиц. Хороший вариант по умолчанию для мульти-модельных наборов.

~/.hermes/config.yaml
custom_providers:
- name: together
base_url: https://api.together.xyz/v1
key_env: TOGETHER_API_KEY
# api_mode: chat_completions
# default — no need to set
model:
default: MiniMaxAI/MiniMax-M2.7
# or any model from together.ai/models
provider: custom:together
~/.hermes/.env
TOGETHER_API_KEY=your-together-key

Переключение моделей в середине сессии:

/model custom:together:meta-llama/Llama-3.3-70B-Instruct-Turbo
/model custom:together:google/gemma-4-31b-it
/model custom:together:deepseek-ai/DeepSeek-V3

Эндпоинт /v1/models от Together работает, поэтому hermes model может автоматически обнаруживать доступные модели.

Сверхбыстрый инференс (~500 tok/s на Llama-3.3-70B). Небольшой каталог, но хорошо подходит для интерактивного использования, чувствительного к задержкам.

~/.hermes/config.yaml
custom_providers:
- name: groq
base_url: https://api.groq.com/openai/v1
key_env: GROQ_API_KEY
model:
default: llama-3.3-70b-versatile
provider: custom:groq
~/.hermes/.env
GROQ_API_KEY=your-groq-key

Полезно, когда нужна модель, которая автоматически выполняет веб-поиск в реальном времени и цитирование. Строго ограничивает список доступных моделей — проверьте perplexity.ai/settings/api](https://www.perplexity.ai/settings/api) для текущего списка.

~/.hermes/config.yaml
custom_providers:
- name: perplexity
base_url: https://api.perplexity.ai
key_env: PERPLEXITY_API_KEY
model:
default: sonar
provider: custom:perplexity
~/.hermes/.env
PERPLEXITY_API_KEY=your-perplexity-key

Несколько провайдеров в одной конфигурации

Заголовок раздела «Несколько провайдеров в одной конфигурации»

Эти три рецепта можно комбинировать — используйте их все вместе и переключайтесь на каждом ходе с помощью /model custom:<name>:<model>:

custom_providers:
- name: together
base_url: https://api.together.xyz/v1
key_env: TOGETHER_API_KEY
- name: groq
base_url: https://api.groq.com/openai/v1
key_env: GROQ_API_KEY
- name: perplexity
base_url: https://api.perplexity.ai
key_env: PERPLEXITY_API_KEY
model:
default: MiniMaxAI/MiniMax-M2.7
provider: custom:together
# boot to Together; switch freely after

:::tip Устранение неполадок

  • hermes doctor не должен выводить предупреждения Unknown provider ни для одного из этих имён после исправлений валидатора CLI в #15083.
  • Если endpoint /v1/models у провайдера недоступен (Perplexity — самый частый случай), hermes model сохранит модель с предупреждением, а не будет жёстко отклонять — см. #15136.
  • Чтобы полностью пропустить custom_providers: и использовать чистый provider: custom с переменной окружения CUSTOM_BASE_URL, см. #15103. :::

Выбор подходящей настройки| Сценарий использования | Рекомендуется |

Заголовок раздела «Выбор подходящей настройки| Сценарий использования | Рекомендуется |»

|----------|-------------| | Просто хотите, чтобы всё работало | OpenRouter (по умолчанию) или Nous Portal | | Локальные модели, простая настройка | Ollama | | Продакшен-serving GPU | vLLM или SGLang | | Mac / без GPU | Ollama или llama.cpp | | Маршрутизация между несколькими провайдерами | LiteLLM Proxy или OpenRouter | | Оптимизация затрат | ClawRouter или OpenRouter с sort: "price" | | Максимальная приватность | Ollama, vLLM или llama.cpp (полностью локально) | | Enterprise / Azure | Azure OpenAI с пользовательским endpoint | | Китайские AI-модели | z.ai (GLM), Kimi/Moonshot (kimi-coding или kimi-coding-cn), MiniMax, Xiaomi MiMo или Tencent TokenHub (провайдеры первого класса) |

ФункцияПровайдерПеременная окружения
Веб-скрапингFirecrawlFIRECRAWL_API_KEY, FIRECRAWL_API_URL
Автоматизация браузераBrowserbaseBROWSERBASE_API_KEY, BROWSERBASE_PROJECT_ID
Генерация изображенийFALFAL_KEY
Премиальные голоса TTSElevenLabsELEVENLABS_API_KEY
OpenAI TTS + транскрибация голосаOpenAIVOICE_TOOLS_OPENAI_KEY
Mistral TTS + транскрибация голосаMistralMISTRAL_API_KEY
RL-обучениеTinker + WandBTINKER_API_KEY, WANDB_API_KEY
Пользовательское моделирование между сессиямиHonchoHONCHO_API_KEY
Семантическая долгосрочная памятьSupermemorySUPERMEMORY_API_KEY

Самостоятельный хостинг FirecrawlПо умолчанию Hermes использует Firecrawl cloud API для веб-поиска и скрапинга. Если вы предпочитаете запускать Firecrawl локально, вместо этого можно направить Hermes на self-hosted экземпляр. Полные инструкции по настройке см. в SELF_HOST.md Firecrawl.

Заголовок раздела «Самостоятельный хостинг FirecrawlПо умолчанию Hermes использует Firecrawl cloud API для веб-поиска и скрапинга. Если вы предпочитаете запускать Firecrawl локально, вместо этого можно направить Hermes на self-hosted экземпляр. Полные инструкции по настройке см. в SELF_HOST.md Firecrawl.»

Что вы получаете: ключ API не требуется, нет ограничений по rate limits, нет затрат за страницу, полный суверенитет над данными.

Что вы теряете: облачная версия использует проприетарный “Fire-engine” Firecrawl для продвинутого обхода антибот-защиты (Cloudflare, CAPTCHA, ротация IP). Self-hosted использует базовый fetch + Playwright, поэтому некоторые защищённые сайты могут не работать. Поиск использует DuckDuckGo вместо Google.

Настройка:

  1. Клонируйте и запустите Docker-стек Firecrawl (5 контейнеров: API, Playwright, Redis, RabbitMQ, PostgreSQL — требуется ~4-8 GB RAM):
Окно терминала
git clone https://github.com/firecrawl/firecrawl
cd firecrawl
# In .env, set: USE_DB_AUTHENTICATION=false, HOST=0.0.0.0, PORT=3002
docker compose up -d
  1. Направьте Hermes на ваш экземпляр (ключ API не нужен):
Окно терминала
hermes config set FIRECRAWL_API_URL http://localhost:3002

Вы также можете задать и FIRECRAWL_API_KEY, и FIRECRAWL_API_URL, если на вашем self-hosted экземпляре включена аутентификация.

При использовании OpenRouter вы можете управлять тем, как запросы маршрутизируются между провайдерами. Добавьте секцию provider_routing в ~/.hermes/config.yaml:

provider_routing:
sort: "throughput"
# "price" (default), "throughput", or "latency"
# only: ["anthropic"]
# Only use these providers
# ignore: ["deepinfra"]
# Skip these providers
# order: ["anthropic", "google"]
# Try providers in this order
# require_parameters: true
# Only use providers that support all request params
# data_collection: "deny"
# Exclude providers that may store/train on data

Сокращения: добавьте :nitro к любому имени модели для сортировки по пропускной способности (например, anthropic/claude-sonnet-4:nitro), или :floor для сортировки по цене.

Маршрутизатор кода OpenRouter ParetoOpenRouter поставляет экспериментальный router coding-model по адресу openrouter/pareto-code, который автоматически направляет запросы к самой дешёвой модели, соответствующей порогу качества кодирования (ранжировано Artificial Analysis). Выберите эту модель и настройте параметр min_coding_score в ~/.hermes/config.yaml:

Заголовок раздела «Маршрутизатор кода OpenRouter ParetoOpenRouter поставляет экспериментальный router coding-model по адресу openrouter/pareto-code, который автоматически направляет запросы к самой дешёвой модели, соответствующей порогу качества кодирования (ранжировано Artificial Analysis). Выберите эту модель и настройте параметр min_coding_score в ~/.hermes/config.yaml:»
model:
provider: openrouter
model: openrouter/pareto-code
openrouter:
min_coding_score: 0.65
# 0.0–1.0; higher = stronger (more expensive) coders. Default 0.65.

Примечания:

  • min_coding_score отправляется только когда model.model имеет значение openrouter/pareto-code. Для любой другой модели это значение не оказывает эффекта.
  • Установите пустую строку (или удалите строку), чтобы OpenRouter выбрал самого сильного доступного coder — это его документированное поведение, когда блок plugins опущен.
  • Выбор детерминирован для данного значения score в конкретный день, но фактически выбранная модель может меняться по мере сдвига фронта Парето (новые модели, обновления бенчмарков).
  • Полное описание поведения router см. в документации OpenRouter Pareto Router.
  • Чтобы использовать router Pareto Code для конкретной вспомогательной задачи (compression, vision и т. д.) вместо основного агента, задайте extra_body.plugins для этой задачи — см. Auxiliary Models → маршрутизация OpenRouter и Pareto Code для вспомогательных задач.

Настройте цепочку резервных провайдеров, которые Hermes будет пробовать по порядку, если основной model завершается с ошибкой (rate limit, ошибки сервера, сбои аутентификации). Канонический формат — список fallback_providers: верхнего уровня:

fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4
- provider: anthropic
model: claude-sonnet-4
# base_url: http://localhost:8000/v1
# optional, for custom endpoints
# api_mode: chat_completions
# optional override

Устаревший dict с одной парой fallback_model: по-прежнему принимается для обратной совместимости:

fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4
```При активации fallback переключает модель и провайдера в середине сессии без потери вашего разговора. Цепочка пробуется запись за записью; активация выполняется однократно для каждой сессии.
Поддерживаемые провайдеры: `openrouter`, `nous`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `gemini`, `google-gemini-cli`, `qwen-oauth`, `huggingface`, `zai`, `kimi-coding`, `kimi-coding-cn`, `minimax`, `minimax-cn`, `minimax-oauth`, `deepseek`, `nvidia`, `xai`, `ollama-cloud`, `bedrock`, `ai-gateway`, `azure-foundry`, `opencode-zen`, `opencode-go`, `kilocode`, `xiaomi`, `arcee`, `gmi`, `stepfun`, `lmstudio`, `alibaba`, `alibaba-coding-plan`, `tencent-tokenhub`, `custom`.
:::tip
Fallback настраивается исключительно через `config.yaml` — или интерактивно через `hermes fallback`. Полные сведения о том, когда он срабатывает, как продвигается цепочка и как он взаимодействует со вспомогательными задачами и делегированием, см. в разделе [Fallback Providers](/docs/en/user-guide/features/fallback-providers).
:::
---
## См. также
- [Конфигурация](/docs/en/user-guide/configuration) — Общая конфигурация (структура каталогов, приоритет конфигурации, terminal backends, память, сжатие и другое)
- [Переменные окружения](/docs/ru/reference/environment-variables) — Полный справочник по всем переменным окружения