Провайдеры ИИ
На этой странице описана настройка провайдеров инференса для Hermes Agent: от облачных API вроде OpenRouter и Anthropic до локально размещённых точек доступа вроде Ollama и vLLM, а также более сложные схемы маршрутизации и fallback. Для работы Hermes нужен как минимум один настроенный провайдер.
Провайдеры инференса
Заголовок раздела «Провайдеры инференса»Вам нужен как минимум один способ подключения к LLM. Используйте hermes model, чтобы интерактивно переключать провайдеров и модели, или настройте напрямую:
| Провайдер | Настройка |
|---|---|
| Nous Portal | hermes model (OAuth, по подписке) |
| OpenAI Codex | hermes model (OAuth ChatGPT, использует модели Codex) |
| GitHub Copilot | hermes model (поток OAuth device code, COPILOT_GITHUB_TOKEN, GH_TOKEN, или gh auth token) |
| GitHub Copilot ACP | hermes model (запускает локальный copilot --acp --stdio) |
| Anthropic | hermes model (Claude Max + дополнительные кредиты использования через OAuth; также поддерживает ключ Anthropic API или ручной setup-token — см. примечание ниже) |
| OpenRouter | OPENROUTER_API_KEY в ~/.hermes/.env |
| AI Gateway | AI_GATEWAY_API_KEY в ~/.hermes/.env (провайдер: ai-gateway) |
| z.ai / GLM | GLM_API_KEY в ~/.hermes/.env (провайдер: zai) |
| Kimi / Moonshot | KIMI_API_KEY в ~/.hermes/.env (провайдер: kimi-coding) |
| Kimi / Moonshot (China) | KIMI_CN_API_KEY в ~/.hermes/.env (провайдер: kimi-coding-cn; алиасы: kimi-cn, moonshot-cn) |
| Arcee AI | ARCEEAI_API_KEY в ~/.hermes/.env (провайдер: arcee; алиасы: arcee-ai, arceeai) |
| GMI Cloud | GMI_API_KEY в ~/.hermes/.env (провайдер: gmi; алиасы: gmi-cloud, gmicloud) |
| MiniMax | MINIMAX_API_KEY в ~/.hermes/.env (провайдер: minimax) |
| MiniMax China | MINIMAX_CN_API_KEY в ~/.hermes/.env (провайдер: minimax-cn) |
| Alibaba Cloud | DASHSCOPE_API_KEY в ~/.hermes/.env (провайдер: alibaba) |
| Alibaba Coding Plan | DASHSCOPE_API_KEY (провайдер: alibaba-coding-plan, алиас: alibaba_coding) — отдельный биллинг SKU, другой endpoint |
| Kilo Code | KILOCODE_API_KEY в ~/.hermes/.env (провайдер: kilocode) |
| Xiaomi MiMo | XIAOMI_API_KEY в ~/.hermes/.env (провайдер: xiaomi, алиасы: mimo, xiaomi-mimo) |
| Tencent TokenHub | TOKENHUB_API_KEY в ~/.hermes/.env (провайдер: tencent-tokenhub, алиасы: tencent, tokenhub, tencentmaas) |
| OpenCode Zen | OPENCODE_ZEN_API_KEY в ~/.hermes/.env (провайдер: opencode-zen) |
| OpenCode Go | OPENCODE_GO_API_KEY в ~/.hermes/.env (провайдер: opencode-go) |
| DeepSeek | DEEPSEEK_API_KEY в ~/.hermes/.env (провайдер: deepseek) |
| Hugging Face | HF_TOKEN в ~/.hermes/.env (провайдер: huggingface, алиас: hf) |
| Google / Gemini | GOOGLE_API_KEY или GEMINI_API_KEY в ~/.hermes/.env (провайдер: gemini) |
| Google Gemini (OAuth) | hermes model → “Google Gemini (OAuth)” (провайдер: google-gemini-cli, поддерживается бесплатный уровень, вход через браузерный PKCE) |
| LM Studio | hermes model → “LM Studio” (провайдер: lmstudio, необязателен LM_API_KEY) |
| Custom Endpoint | hermes model → выбрать “Custom endpoint” (сохраняется в config.yaml) |
Официальный путь настройки через API key описан в отдельном руководстве по Google Gemini.
:::tip Алиас ключа модели
В разделе конфигурации model: вы можете использовать либо default:, либо model: в качестве имени ключа для ID вашей модели. И model: { default: my-model }, и model: { model: my-model } работают одинаково.
:::
Google Gemini через OAuth (google-gemini-cli)
Заголовок раздела «Google Gemini через OAuth (google-gemini-cli)»Провайдер 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-processfcntllock) - Автоматическое обновление за 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 платный endpointv1beta/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-SC | Hermes определяет 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.comHERMES_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, завершите настройку провайдера, затем начните новую сессию.
Anthropic (нативно)
Заголовок раздела «Anthropic (нативно)»Используйте модели 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 availablehermes model
# Manual override with a setup-token (fallback / legacy)export ANTHROPIC_TOKEN=***
# setup-token or manual OAuth tokenhermes 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.
:::
GitHub Copilot
Заголовок раздела «GitHub Copilot»Hermes поддерживает GitHub Copilot как провайдер первого класса с двумя режимами:
copilot — Прямой Copilot API (рекомендуется). Использует вашу подписку GitHub Copilot для доступа к GPT-5.x, Claude, Gemini и другим моделям через Copilot API.
hermes chat --provider copilot --model gpt-5.4Варианты аутентификации проверяются в таком порядке:
- Переменная окружения
COPILOT_GITHUB_TOKEN - Переменная окружения
GH_TOKEN - Переменная окружения
GITHUB_TOKEN - fallback
gh auth tokenCLI
Если токен не найден, hermes model предлагает вход OAuth device code — тот же процесс, который используется в Copilot CLI и opencode.
:::warning Типы токенов
Copilot API не поддерживает классические Personal Access Tokens (ghp_*). Поддерживаемые типы токенов:
| Тип | Префикс | Как получить |
|---|---|---|
| OAuth token | gho_ | hermes model → GitHub Copilot → Login with GitHub |
| Fine-grained PAT | github_pat_ | GitHub Settings → Developer settings → Fine-grained tokens (требуется разрешение Copilot Requests) |
| GitHub App token | ghu_ | Через установку 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:
- Повторно определяет токен через обычную цепочку приоритетов (
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN→gh auth token) - Пересобирает общий клиент OpenAI с обновленными заголовками
- Повторяет запрос один раз
Некоторые старые 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```**Постоянная конфигурация:**
```yamlmodel: provider: "copilot" default: "gpt-5.4"| Переменная окружения | Описание |
|---|---|
COPILOT_GITHUB_TOKEN | GitHub-токен для Copilot API (первый приоритет) |
HERMES_COPILOT_ACP_COMMAND | Переопределить путь к бинарному файлу Copilot CLI (по умолчанию: copilot) |
HERMES_COPILOT_ACP_ARGS | Переопределить аргументы ACP (по умолчанию: --acp --stdio) |
Провайдеры первого класса с API-ключом
Заголовок раздела «Провайдеры первого класса с API-ключом»У этих провайдеров есть встроенная поддержка с выделенными ID провайдеров. Установите ключ API и используйте --provider для выбора:
# z.ai / ZhipuAI GLMhermes 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 MiMohermes 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 автоматически обнаружит доступные модели.
```bashhermes 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`:
```yamlmodel: 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 для приватности или офлайн-работы.
:::
AWS Bedrock
Заголовок раздела «AWS Bedrock»Anthropic Claude, Amazon Nova, DeepSeek v3.2, Meta Llama 4 и другие модели через AWS Bedrock. Использует цепочку учетных данных AWS SDK (boto3) — без ключа API, только стандартная аутентификация AWS.
# Simplest — named profile in ~/.aws/credentialshermes chat --provider bedrock --model us.anthropic.claude-sonnet-4-6
# Or with explicit env varsAWS_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 (OAuth)
Заголовок раздела «Qwen Portal (OAuth)»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.
:::
Alibaba Coding Plan
Заголовок раздела «Alibaba Coding Plan»Если у вас оформлена подписка на 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-plusalibaba_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.
:::
NVIDIA NIM
Заголовок раздела «NVIDIA NIM»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 URLNVIDIA_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 в одной строке.
:::
GMI Cloud
Заголовок раздела «GMI Cloud»Открытые модели и reasoning-модели через GMI Cloud — OpenAI-compatible API, аутентификация по ключу API.
# GMI Cloudhermes 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).
StepFun
Заголовок раздела «StepFun»Модели серии Step через StepFun — OpenAI-совместимый API, аутентификация по ключу API.
# StepFunhermes 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
Заголовок раздела «Hugging Face Inference Providers»Hugging Face Inference Providers направляет запросы к более чем 20 открытым моделям через унифицированный OpenAI-совместимый endpoint (router.huggingface.co/v1). Запросы автоматически направляются в самый быстрый доступный backend (Groq, Together, SambaNova и т. д.) с автоматическим переключением при сбое.
# Use any available modelhermes chat --provider huggingface --model Qwen/Qwen3-235B-A22B-Thinking-2507# Requires: HF_TOKEN in ~/.hermes/.env
# Short aliashermes 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.yamlmodel: 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.
Переключение моделей с помощью /model
Заголовок раздела «Переключение моделей с помощью /model»:::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 modelollama pull qwen2.5-coder:32bollama serve
# Starts on port 11434Затем настройте Hermes:
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 GB | 4,096 токенов |
| 24–48 GB | 32,768 токенов |
| 48+ GB | 256,000 токенов |
Как увеличить его (выберите один вариант):
# Option 1: Set server-wide via environment variable (recommended)OLLAMA_CONTEXT_LENGTH=32768 ollama serve
# Option 2: For systemd-managed Ollamasudo 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" > Modelfileollama 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 valuevLLM — высокопроизводительный вывод GPU
Заголовок раздела «vLLM — высокопроизводительный вывод GPU»vLLM — стандарт для промышленного обслуживания LLM. Лучше всего подходит для: максимальной пропускной способности на оборудовании GPU, обслуживания больших моделей, непрерывного батчинга.
pip install vllmvllm 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:
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`. Без этих флагов вызовы инструментов не будут работать — модель будет выводить вызовы инструментов как текст.
:::tipvLLM поддерживает человекочитаемые размеры: `--max-model-len 64k` (строчная k = 1000, заглавная K = 1024).:::
---
### SGLang — быстрая подача с RadixAttention
[SGLang](https://github.com/sgl-project/sglang) — это альтернатива vLLM с RadixAttention для повторного использования KV cache. Лучше всего подходит для: многоходовых разговоров (кэширование префикса), constrained decoding, структурированного вывода.
```bashpip 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:
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 / llama-server — CPU и вывод через Metal
Заголовок раздела «llama.cpp / llama-server — CPU и вывод через Metal»llama.cpp запускает квантизованные модели на CPU, Apple Silicon (Metal) и потребительских GPU. Лучше всего подходит для: запуска моделей без дата-центрового GPU, пользователей Mac, edge-развертывания.
# Build and start llama-servercmake -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 так, чтобы он указывал на него:
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 1234lms load qwen2.5-coder --context-length 32768Затем настройте Hermes:
hermes model# Select "LM Studio"# Pick one of the discovered models# If LM Studio server auth is enabled, enter LM_API_KEY when promptedHermes автоматически загрузит модель LM Studio с длиной контекста 64K
Чтобы изменить длину контекста в LM Studio:
- Нажмите значок шестерёнки рядом с выбором модели
- Установите “Context Length” как минимум на 64000 для комфортной работы
- Перезагрузите модель, чтобы изменения вступили в силу
- Если ваша машина не справляется с 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) определяются автоматически и отображаются со значком инструмента. Для других моделей используется универсальный запасной вариант, который может быть менее надежным.
WSL2 Сеть (для пользователей Windows)
Заголовок раздела «WSL2 Сеть (для пользователей Windows)»Поскольку 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 — это самое простое решение.
- Создайте или отредактируйте
%USERPROFILE%\.wslconfig(например,C:\Users\YourName\.wslconfig):
[wsl2] networkingMode=mirrored- Перезапустите WSL из PowerShell:
wsl --shutdown- Снова откройте терминал 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-mdnscurl 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 работает нормально.
| Сервер | Привязка по умолчанию | Как исправить |
|---|---|---|
| Ollama | 127.0.0.1 | Установите переменную окружения OLLAMA_HOST=0.0.0.0 перед запуском Ollama (System Settings → Environment Variables в Windows или отредактируйте службу Ollama) |
| LM Studio | 127.0.0.1 | Включите “Serve on Network” во вкладке Developer → Server settings |
| llama-server | 127.0.0.1 | Добавьте --host 0.0.0.0 в команду запуска |
| vLLM | 0.0.0.0 | Уже по умолчанию привязывается ко всем интерфейсам |
| SGLang | 127.0.0.1 | Добавьте --host 0.0.0.0 в команду запуска |
Ollama в Windows (подробно): Ollama работает как служба Windows. Чтобы задать OLLAMA_HOST:
- Откройте System Properties → Environment Variables
- Добавьте новую System variable:
OLLAMA_HOST=0.0.0.0 - Перезапустите службу Ollama (или перезагрузите компьютер)
Брандмауэр Windows
Заголовок раздела «Брандмауэр Windows»Брандмауэр Windows рассматривает WSL2 как отдельную сеть (и в NAT, и в mirrored mode). Если после описанных выше шагов подключения по-прежнему не работают, добавьте правило брандмауэра для порта вашего сервера модели:
# Run in Admin PowerShell — replace PORT with your server's portNew-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 portcurl http://localhost:11434/v1/models
# Mirrored modecurl 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Ответы обрываются на середине предложения
Заголовок раздела «Ответы обрываются на середине предложения»Возможные причины:
- Низкий предел вывода (
max_tokens) на сервере — SGLang по умолчанию использует 128 токенов на ответ. Установите--default-max-tokensна сервере или настройте Hermes сmodel.max_tokensв config.yaml. Примечание:max_tokensуправляет только длиной ответа — это не связано с тем, насколько длинной может быть история вашего разговора (этоcontext_length). - Исчерпание контекста — Модель заполнила своё окно контекста. Увеличьте
model.context_lengthили включите сжатие контекста в Hermes.
LiteLLM Proxy — Мультипровайдерный gateway
Заголовок раздела «LiteLLM Proxy — Мультипровайдерный gateway»LiteLLM — это OpenAI-совместимый proxy, который объединяет 100+ LLM провайдеров за единым API. Лучше всего подходит для: переключения между провайдерами без изменения конфигурации, балансировки нагрузки, цепочек fallback, контроля бюджета.
# Install and startpip 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 startnpx @blockrun/clawrouter
# Starts on port 8402Затем настройте Hermes с помощью hermes model → Custom endpoint → http://localhost:8402/v1 → имя модели blockrun/auto.
Профили маршрутизации:
| Профиль | Стратегия | Экономия |
|---|---|---|
blockrun/auto | Сбалансированный quality/cost | 74-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 использует цепочку разрешения из нескольких источников, чтобы определить правильное окно контекста для вашей модели и провайдера:
- Переопределение в конфиге —
model.context_lengthв config.yaml (наивысший приоритет) - Пользовательский провайдер для конкретной модели —
custom_providers[].models.<id>.context_length - Постоянный кэш — ранее обнаруженные значения (сохраняются после перезапуска)
- Endpoint
/models— запрашивает API вашего сервера (эндпоинты local/custom) - Anthropic
/v1/models— запрашивает API Anthropic дляmax_input_tokens(только для пользователей с API-key) - OpenRouter API — метаданные модели в реальном времени из OpenRouter
- Nous Portal — сопоставляет по суффиксу ID моделей Nous с метаданными OpenRouter
- models.dev — поддерживаемый сообществом реестр с зависящими от провайдера длинами контекста для более чем 3800 моделей у более чем 100 провайдеров
- Резервные значения по умолчанию — широкие шаблоны семейств моделей (по умолчанию 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: 65536hermes 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.
Кулинарная книга: Together AI, Groq, Perplexity
Заголовок раздела «Кулинарная книга: Together AI, Groq, Perplexity»Облачные провайдеры, перечисленные в Другие совместимые провайдеры, все используют диалект REST от OpenAI, поэтому в custom_providers: они подключаются одинаково. Ниже приведены три готовых рецепта. Каждый добавляется в ~/.hermes/config.yaml, а соответствующий ключ API помещается в ~/.hermes/.env.
Together AI
Заголовок раздела «Together AI»Размещает модели с открытыми весами (Llama, MiniMax, Gemma, DeepSeek, Qwen) по ценам значительно ниже, чем у API от первых лиц. Хороший вариант по умолчанию для мульти-модельных наборов.
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:togetherTOGETHER_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). Небольшой каталог, но хорошо подходит для интерактивного использования, чувствительного к задержкам.
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:groqGROQ_API_KEY=your-groq-keyPerplexity
Заголовок раздела «Perplexity»Полезно, когда нужна модель, которая автоматически выполняет веб-поиск в реальном времени и цитирование. Строго ограничивает список доступных моделей — проверьте perplexity.ai/settings/api](https://www.perplexity.ai/settings/api) для текущего списка.
custom_providers:
- name: perplexity base_url: https://api.perplexity.ai key_env: PERPLEXITY_API_KEY
model: default: sonar provider: custom:perplexityPERPLEXITY_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 (провайдеры первого класса) |
Необязательные ключи API
Заголовок раздела «Необязательные ключи API»| Функция | Провайдер | Переменная окружения |
|---|---|---|
| Веб-скрапинг | Firecrawl | FIRECRAWL_API_KEY, FIRECRAWL_API_URL |
| Автоматизация браузера | Browserbase | BROWSERBASE_API_KEY, BROWSERBASE_PROJECT_ID |
| Генерация изображений | FAL | FAL_KEY |
| Премиальные голоса TTS | ElevenLabs | ELEVENLABS_API_KEY |
| OpenAI TTS + транскрибация голоса | OpenAI | VOICE_TOOLS_OPENAI_KEY |
| Mistral TTS + транскрибация голоса | Mistral | MISTRAL_API_KEY |
| RL-обучение | Tinker + WandB | TINKER_API_KEY, WANDB_API_KEY |
| Пользовательское моделирование между сессиями | Honcho | HONCHO_API_KEY |
| Семантическая долгосрочная память | Supermemory | SUPERMEMORY_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.
Настройка:
- Клонируйте и запустите 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- Направьте Hermes на ваш экземпляр (ключ API не нужен):
hermes config set FIRECRAWL_API_URL http://localhost:3002Вы также можете задать и FIRECRAWL_API_KEY, и FIRECRAWL_API_URL, если на вашем self-hosted экземпляре включена аутентификация.
Маршрутизация провайдера OpenRouter
Заголовок раздела «Маршрутизация провайдера OpenRouter»При использовании 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`.
:::tipFallback настраивается исключительно через `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) — Полный справочник по всем переменным окружения