Когда OpenAI становится роскошью
Вы платите тысячи долларов в месяц за GPT-4o, а агент всё равно галлюцинирует на ровном месте. Claude дорогой и капризный. Gemini последней версии требует тщательной настройки. Знакомая картина? Хочется открытых моделей, которые не сжирают бюджет, дают контроль над данными и не привязывают к одному вендору. Hermes Agent от Nous Research и DeepSeek R1 — два кандидата, которые в 2026 году реально тянут роль мозга для агента. Но переезд — это не просто смена URL в конфиге. Это череда граблей, на которые я наступил лично и которые разберу под микроскопом.
Hermes Agent: дерзкий кандидат на роль мозга
Hermes Agent — это не одна модель, а целый framework для построения агентов, построенный поверх Nous Hermes 3. Актуальная на июнь 2026 версия работает с Hermes 3 405B (инференс через vLLM или OpenRouter) и поддерживает: вызов инструментов, потоковый вывод, иерархические планы, мультиагентные сценарии. Ключевое преимущество — он из коробки понимает OpenAI-совместимый формат function calling. Если вы уже писали агента под OpenAI, переключить backend на Hermes — задача на 10 минут. Но есть нюанс (спойлер: DeepSeek не так дружелюбен).
Для тех, кто только знакомится с платформой — рекомендую прочитать наш гайд по переезду с OpenClaw на Hermes Agent. Там детально разобрана установка и первые шаги.
DeepSeek: китаец, который умеет кодить
DeepSeek R1 (версия февраля 2025) и недавно вышедший DeepSeek-V3.2 (апрель 2026) — мощные open-weight модели с контекстным окном 128K токенов. Они показывают выдающиеся результаты в генерации кода, рассуждениях (chain-of-thought) и следуют инструкциям. Цена через OpenRouter — копейки по сравнению с OpenAI. Но есть подвох: DeepSeek плохо понимает стандартный JSON-формат function calling без дополнительной настройки system prompt. Вы будете получать поток текста вместо structured output. И это главная боль.
Предупреждение: Если вы просто вставите эндпоинт DeepSeek в код, который работал с GPT-4, — агент сломается. Скорее всего, он начнёт писать рассуждения вслух, игнорируя вызовы функций. Не делайте так.
OpenRouter: дипломат между мирами
OpenRouter — это прокси-сервис, который предоставляет единый API для сотен моделей. Вы пишете код один раз, а OpenRouter транслирует запросы в формат нужного провайдера. Это наш спаситель. Он умеет автоматически парсить ответ DeepSeek и преобразовывать его в корректный JSON function call. Но не всё так гладко — есть тонкости с streaming и rate limits.
Настройка OpenRouter занимает пару минут: получаете API-ключ, указываете base_url = https://openrouter.ai/api/v1 и выбираете модель из списка. Для DeepSeek я использую deepseek/deepseek-r1 или deepseek/deepseek-v3.2.
Первый грабли: формат ответа не совпадает
Когда я впервые переключил агента с GPT-4 на DeepSeek через OpenRouter, ответы приходили в виде обычного текста, а не JSON. OpenRouter не всегда справляется с трансформацией. Решение: в system prompt нужно явно указать формат. Вот рабочий шаблон:
You are an AI assistant. Always respond in JSON format with the following structure:
{
"tool_call": {
"name": "function_name",
"arguments": {
"arg1": "value1"
}
},
"content": "Your analysis here"
}
Do NOT include any text outside this JSON.
Если же вы используете Hermes Agent, он из коробки шлёт правильные function calls. Поэтому для DeepSeek лучше добавить дополнительный слой — Hermes Agent в качестве router (я расскажу ниже).
Второй грабли: контекстное окно и его последствия
DeepSeek R1 держит 128K токенов, Hermes 3 — 32K (в старших версиях до 128K). Проблема: если вы привыкли слать весь репозиторий в контекст, DeepSeek прожуёт, но Hermes может отвалиться по длине. Настройте max_tokens и используйте чанкинг. В OpenRouter есть параметр max_tokens — ставьте 4096 для начала, потом увеличивайте.
Ещё один нюанс: DeepSeek R1 генерирует chain-of-thought перед ответом. Агент может принять этот внутренний монолог за часть ответа. В OpenRouter есть флаг provider: { order: ["DeepSeek"], allow_fallbacks: false } и параметр structured_outputs: true — он отключает CoT и возвращает чистый JSON. У меня сработало.
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + OPENROUTER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'deepseek/deepseek-r1',
messages: [{ role: 'system', content: systemPrompt }, ...userMessages],
max_tokens: 4096,
structured_outputs: true
})
});
Codex в связке: как подружить раннер с альтернативными моделями
Codex CLI — мощный раннер для ИИ-агентов, который по умолчанию заточен под OpenAI. Но в 2026 году его можно переключить на любую модель через OpenRouter. Как это сделать: установите Codex (последняя версия описана в полном гиде по Codex CLI), а затем создайте файл codex.config.json в корне проекта:
{
"provider": "openrouter",
"model": "deepseek/deepseek-v3.2",
"apiKey": "$OPENROUTER_KEY",
"baseUrl": "https://openrouter.ai/api/v1",
"maxTokens": 8192
}
Но есть засада: Codex ожидает определённый формат стриминга, и DeepSeek может отдавать чанки с задержкой. Решение: используйте Hermes Agent как прослойку. Установите Hermes Agent на VPS (подробно описано в этом руководстве), а в конфиге Codex пропишите base_url на ваш локальный Hermes. Hermes будет транслировать запросы в DeepSeek через OpenRouter, нормализуя ответы. Звучит как оверкилл, но на практике стабильность вырастает в разы.
Пошагово: меняем OpenAI на Hermes+DeepSeek за 15 минут
1 Настройка OpenRouter и получение ключа
Регистрируетесь на OpenRouter, пополняете баланс (минимально $5). Создаёте API-ключ. Всё.
2 Конфигурация Hermes Agent для использования OpenRouter
В файле config.yaml вашего Hermes Agent пропишите:
llm:
provider: openai
base_url: https://openrouter.ai/api/v1
api_key: ${OPENROUTER_KEY}
model: hermes/hermes-3-405b
max_tokens: 4096
temperature: 0.3
Модель выберите hermes/hermes-3-405b (доступна через OpenRouter). Теперь Hermes будет работать как мозг агента.
3 Добавление DeepSeek как вторичной модели для код-генерации
В системе умных агентов часто используют разные модели для разных задач. Hermes отлично подходит для планирования, а DeepSeek — для генерации кода. В Hermes Agent есть механизм роутинга: можно указать fallback или параллельный вызов. Пример конфига для task-specific модели:
tools:
code_generator:
llm:
provider: openai
base_url: https://openrouter.ai/api/v1
api_key: ${OPENROUTER_KEY}
model: deepseek/deepseek-v3.2
structured_outputs: true
max_tokens: 8192
Теперь, когда агенту нужно написать код, он вызывает инструмент code_generator, который использует DeepSeek. Hermes при этом остаётся диспетчером.
4 Интеграция Codex с Hermes Agent
Codex может запускать команды через MCP-серверы. У Hermes есть MCP-совместимый интерфейс. Пропишите в codex.config.json внешний раннер:
{
"runner": {
"type": "mcp",
"command": "hermes",
"args": ["mcp", "--port", "8080"]
}
}
После этого Codex будет делегировать выполнение агенту Hermes. Подробнее про MCP и плагины читайте в статье про локальную память для Codex на SQLite — там описан процесс создания кастомного плагина для хранения правил проекта.
Трюки с промптами: почему system prompt решает всё
Если вы просто скопируете промпт от GPT-4 к DeepSeek, модель начнёт многословно рассуждать. Рецепт: добавьте в system prompt фразу "Respond only with the required JSON. Do not include any chain-of-thought." Для Hermes это не нужно, он и так обучен на разметку tool calling. Для DeepSeek — обязательно. Экспериментально вывел такие настройки:
| Модель | System Prompt | Structured Outputs |
|---|---|---|
| Hermes 3 405B | Стандартный, можно оставить как для GPT | Не нужен (нативный function call) |
| DeepSeek V3.2 | Явный JSON-формат + запрет CoT | Включить в OpenRouter |
| DeepSeek R1 | То же, но с дополнительной инструкцией убирать размышления | Включить + max_tokens 4096 |
А что с памятью? Интеграция Hermes Memory и SQLite
Агенту необходимо помнить историю. В Hermes есть встроенный модуль памяти, который можно подключить к SQLite. Мы подробно описали эту связку в статье про локальную память на SQLite. Для мультиагентных сценариев лучше использовать Neo4j (как в унифицированной памяти для AI-агентов).
Если что-то пошло не так: диагностика и исправление
Вывод сломался? Проверьте логи OpenRouter (у них есть дашборд). Самая частая ошибка — 403 rate limit от DeepSeek. OpenRouter делает fallback на другого провайдера, но это увеличивает задержку. Решение: поставьте allow_fallbacks: false и увеличьте время ожидания. Если JSON не парсится — включите structured_outputs, но помните, что DeepSeek R1 его поддерживает нестабильно. Для надёжности используйте Hermes Agent как транслятор.
Ещё одна проблема: агент зацикливается. DeepSeek может начать бесконечно рассуждать, если не ограничить max_tokens. Я ставлю жёсткий лимит 2048 на каждый вызов, а для сложных задач делаю итеративный подход с чекпоинтами.
Финальный совет: не выбирай одну модель, выбери оркестр
Гнаться за самой большой моделью — тупик. Hermes 3 405B отлично планирует, но медленный. DeepSeek V3.2 быстр в коде, но плохо держит контекст большой истории. Используйте Codex как раннер, Hermes как оркестратор, а DeepSeek как исполнителя для конкретных задач. И да, не забудьте про локальную память — без неё агент остаётся глупым. А если захотите попробовать мультимодальные сценарии — взгляните на DeepSeek TUI и альтернативы.
В 2026 году открытые модели уже не уступают проприетарным в 90% сценариев. Переезд на Hermes и DeepSeek — это не экономия ради экономии, это контроль, скорость и возможность зашить в агента свои данные без утечек. Пробуйте, ломайте, чините — и ваш агент станет по-настоящему вашим.