Открыть список гайдов

AfterAI Guides / Hermes

Hermes Agent: запуск self-hosted агента за 30 минут

NousResearch Hermes — мощная open-source альтернатива GPT-4 для агентных задач. Разворачиваем локально через Ollama и подключаем к агентному пайплайну.

HermesСредний25 мая 2026 г.
hermesollamaself-hostedopen-sourceагентtool-use

Что такое Hermes Agent

NousResearch — независимая исследовательская организация, которая специализируется на fine-tuning открытых языковых моделей. Их серия Hermes — это набор моделей поверх Llama 3, Mistral и других базовых весов, дообученных специально под агентные сценарии: tool use, function calling, структурированный вывод, следование многоступенчатым инструкциям.

Hermes — не просто чат-бот. Это рабочая лошадка для агентных пайплайнов, которая понимает JSON-схемы инструментов, умеет вызывать их в правильном формате и держать контекст задачи на протяжении многих шагов.

Зачем self-hosted агент, если есть OpenAI API?

Три причины, которые часто перевешивают:

Приватность. Все данные остаются на вашем сервере. Никакие запросы не уходят в облако OpenAI. Для задач с чувствительными данными — документами клиентов, внутренней аналитикой, кодом — это принципиально.

Стоимость. GPT-4o при интенсивной агентной работе (тысячи вызовов в день) быстро превращается в существенную статью расходов. Hermes на VPS за $20–40/месяц или на своём железе работает бесплатно после первоначальной настройки.

Контроль. Вы сами управляете версией модели, системным промптом, параметрами инференса. Никаких неожиданных обновлений API, никаких rate limits от OpenAI, никакой зависимости от внешних сервисов.

Hermes 3 (8B параметров) на практике сопоставим с GPT-3.5-turbo для большинства агентных задач, а Hermes 3 (70B) уже конкурирует с GPT-4 в ряде бенчмарков по следованию инструкциям.


Что нужно

  • Ollama — установлен и запущен (инструкция ниже, если ещё нет)
  • RAM: минимум 8 GB для Hermes 3 8B; 16 GB рекомендуется для комфортной работы
  • GPU (опционально): CUDA или Metal ускоряет инференс в 5–10 раз, но CPU тоже работает
  • Python 3.10+ — для агентного пайплайна
  • Диск: ~5 GB свободного места для модели

Шаг 1: Установить Ollama и скачать модель

bash
# Установка Ollama (Linux/macOS)
curl -fsSL https://ollama.com/install.sh | sh

# На Windows — скачайте инсталлятор с https://ollama.com/download

# Скачать Hermes 3 (8B — оптимально для агентных пайплайнов)
ollama pull nous-hermes3:8b

# Для более мощного варианта (требует 40+ GB RAM или GPU)
# ollama pull nous-hermes3:70b

# Проверка — модель должна ответить на русском
ollama run nous-hermes3:8b "Привет! Опиши себя в одном предложении."

После этой команды Ollama запустит локальный API-сервер на http://localhost:11434. Этот эндпоинт совместим с OpenAI API — многие библиотеки работают с ним без изменений.


Шаг 2: Базовый агентный пайплайн на Python

Устанавливаем зависимости:

bash
pip install ollama

Простой агентный цикл с поддержкой инструментов:

python
import ollama
import json

# Определяем инструменты в формате JSON Schema
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "Возвращает текущее время в указанном городе",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "Название города, например 'Москва'"
                    }
                },
                "required": ["city"]
            }
        }
    }
]

# Системный промпт для агентного режима
SYSTEM_PROMPT = """You are a helpful AI assistant with access to tools.
When you need to use a tool, respond with a JSON object in this format:
{"tool": "tool_name", "arguments": {"arg1": "value1"}}
After receiving tool results, provide a helpful response to the user."""

def run_agent(user_message: str):
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": user_message}
    ]

    response = ollama.chat(
        model="nous-hermes3:8b",
        messages=messages,
        tools=tools
    )

    message = response["message"]

    # Проверяем, вызвала ли модель инструмент
    if message.get("tool_calls"):
        for tool_call in message["tool_calls"]:
            tool_name = tool_call["function"]["name"]
            tool_args = tool_call["function"]["arguments"]
            print(f"[Агент вызывает инструмент]: {tool_name}({tool_args})")

            # Здесь выполняем реальную логику инструмента
            tool_result = execute_tool(tool_name, tool_args)

            # Добавляем результат в контекст
            messages.append(message)
            messages.append({
                "role": "tool",
                "content": str(tool_result)
            })

            # Получаем финальный ответ с учётом результата инструмента
            final_response = ollama.chat(
                model="nous-hermes3:8b",
                messages=messages
            )
            return final_response["message"]["content"]

    return message["content"]


def execute_tool(name: str, args: dict) -> str:
    """Диспетчер инструментов — добавляйте свои функции сюда."""
    if name == "get_current_time":
        # Заглушка — в реальном агенте подключите API
        return f"В городе {args['city']} сейчас 14:30 по местному времени."
    return "Инструмент не найден."


if __name__ == "__main__":
    result = run_agent("Который сейчас час в Москве?")
    print(f"\n[Финальный ответ]: {result}")

Шаг 3: Добавить инструменты (tool use)

Пример более практичного инструмента — поиск файлов:

python
import os
import glob

def search_files_tool(pattern: str, directory: str = ".") -> list[str]:
    """Ищет файлы по маске в указанной директории."""
    matches = glob.glob(os.path.join(directory, "**", pattern), recursive=True)
    return matches[:10]  # Ограничиваем вывод

# Добавьте в список tools:
file_search_tool = {
    "type": "function",
    "function": {
        "name": "search_files",
        "description": "Ищет файлы по шаблону имени в файловой системе",
        "parameters": {
            "type": "object",
            "properties": {
                "pattern": {
                    "type": "string",
                    "description": "Шаблон имени файла, например '*.py' или 'config.*'"
                },
                "directory": {
                    "type": "string",
                    "description": "Директория для поиска (по умолчанию текущая)"
                }
            },
            "required": ["pattern"]
        }
    }
}

Главное правило для инструментов Hermes: описание должно быть точным и однозначным. Модель принимает решение о вызове инструмента исключительно на основе поля description. Чем конкретнее описание, тем надёжнее работает tool use.


System prompt для агентных задач

Hermes использует формат ChatML для структурирования диалога. Для агентного режима рекомендуется следующий системный промпт:

code
<|im_start|>system
You are a function-calling AI assistant. You have access to the following tools:

AVAILABLE TOOLS:
{tools_json}

RULES:
1. Analyze the user request and determine if a tool call is needed.
2. If yes, respond ONLY with a valid JSON object:
   {"name": "tool_name", "arguments": {"param": "value"}}
3. If no tool is needed, respond directly in natural language.
4. After receiving a tool result, synthesize it into a helpful response.
5. Never fabricate tool results — always wait for actual execution.
<|im_end|>

Детальный разбор этого промпта и примеры с несколькими инструментами — в скилле System prompt для Hermes в режиме tool use.


Сравнение с OpenAI API

ПараметрHermes 3 8BGPT-3.5-turboGPT-4o
СтоимостьБесплатно (своё железо)~$0.5/1M токенов~$5/1M токенов
ПриватностьПолная (локально)Данные в облакеДанные в облаке
Скорость15–40 tok/s (CPU/GPU)~80 tok/s~60 tok/s
Tool useХорошоХорошоОтлично
Следование инструкциямХорошоХорошоОтлично
Контекст8K–128K (зависит от версии)16K128K
Зависимость от APIНетДаДа
Лучший сценарийSelf-hosted, приватные данныеБыстрые прототипыСложные агенты

Вывод: Hermes 3 8B — прагматичный выбор для большинства агентных задач, где важна приватность или бюджет. Для задач, критичных к качеству reasoning, стоит смотреть на Hermes 3 70B или оставить GPT-4o.


Что дальше

  • n8n + Hermes — подключите Hermes как кастомный LLM-нод в ваши n8n автоматизации через Ollama API (совместим с OpenAI endpoint)
  • OpenClaw — оберните Hermes-агента в OpenClaw для работы с браузером и файловой системой
  • MCP — Hermes работает с Model Context Protocol через любой MCP-клиент, поддерживающий OpenAI-совместимый API
  • Скилл: System prompt для tool useдетальный разбор промпта и примеры взаимодействий

Если железо ограничено — попробуйте Hermes 3 3B (quantized). Качество tool use немного ниже, но модель запускается даже на 4 GB RAM.

Понравился гайд?

Новые гайды, скиллы и разборы кейсов — каждую неделю в Telegram

@afterintelligence →