Запускайте Hermes локально с помощью Ollama — нулевая стоимость API
Проблема
API-интерфейсы Cloud LLM взимают плату за токен. Тяжелый сеанс кодирования может стоить 5–20 долларов. Для личных проектов, обучения или работы, требующей конфиденциальности, это суммируется — и вы отправляете каждый разговор третьей стороне.
Что решает это руководство
Вы настроите агент Hermes для работы полностью на вашем собственном оборудовании, используя Ollama в качестве серверной части модели. Никаких ключей API, никаких подписок, никаких данных, покидающих ваш компьютер. После настройки Hermes работает точно так же, как с OpenRouter или Anthropic — команды терминала, редактирование файлов, просмотр веб-страниц, делегирование — но модель работает локально.
К концу у вас будет:
- Оллама обслуживает одну или несколько моделей в открытом весе.
- Гермес подключен к Олламе в качестве пользовательской конечной точки.
- Работающий локальный агент, который может редактировать файлы, запускать команды и просматривать веб-страницы.
- Необязательно: бот Telegram/Discord, полностью работающий на вашем собственном оборудовании.
Что вам нужно
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| ОЗУ | 8 ГБ (для моделей 3B) | 32+ ГБ (для моделей 27B+) |
| Хранение | 5 ГБ бесплатно | 30+ ГБ (для нескольких моделей) |
| ЦП | 4 ядра | 8+ ядер (AMD EPYC, Ryzen, Intel Xeon) |
| ГП | Не требуется | Графический процессор NVIDIA с более чем 8 ГБ видеопамяти значительно ускоряет работу |
Ollama работает на серверах только с ЦП. Модель 9B на современном 8-ядерном процессоре выдаёт ~10 токенов/сек. Модель 31B на CPU медленнее (~2–5 токенов/сек) — каждый ответ занимает 30–120 секунд, но работает. Графический процессор значительно улучшает эту ситуацию. Для настроек только с процессором увеличьте время ожидания API с помощью переменной env (это не ключ config.yaml): |
# ~/.hermes/.env
HERMES_API_TIMEOUT=1800 # 30 minutes — generous for slow local models
```</div>
## Шаг 1: Установите Олламу
```bash
curl -fsSL https://ollama.com/install.sh | sh
Убедитесь, что он работает:
ollama --version
curl http://localhost:11434/api/tags # Should return {"models":[]}
Шаг 2: Извлечение модели
Выбирайте в зависимости от вашего оборудования:
| Модель | Размер на диске | Требуется оперативная память | Вызов инструмента | Лучшее для |
|---|---|---|---|---|
гемма4:31b |
~20 ГБ | 24+ ГБ | Да | Лучшее качество — эффективное использование инструментов и обоснование |
гемма2:27b |
~16 ГБ | 20+ ГБ | Нет | Разговорные задачи без использования инструментов |
джемма2:9b |
~5 ГБ | 8+ ГБ | Нет | Быстрый чат, вопросы и ответы — нельзя вызвать инструменты |
лама3.2:3b |
~2 ГБ | 4+ ГБ | Нет | Только легкие быстрые ответы |
| Hermes — это агентский помощник: он редактирует файлы, выполняет команды и просматривает веб-страницы с помощью вызовов инструментов. Модели без поддержки вызова инструментов могут только общаться в чате; они не могут предпринять действия. Для полноценного использования Hermes используйте модель, поддерживающую инструменты (например, «gemma4:31b»). | ||||
| Вытащите выбранную вами модель: |
ollama pull gemma4:31b
```<div class="admonition admonition-info"><p class="admonition-title">ℹ️ Info</p> Несколько моделей
Вы можете загрузить несколько моделей и переключаться между ними внутри Hermes с помощью `/model`. Оллама загружает активную модель в память по требованию и автоматически выгружает простаивающие.</div>
Убедитесь, что модель работает:
```bash
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4:31b",
"messages": [{"role": "user", "content": "Say hello"}],
"max_tokens": 50
}'
Вы должны увидеть ответ JSON с ответом модели.
Шаг 3: Настройте Гермес
Запустите мастер настройки Hermes:
hermes setup
При запросе поставщика выберите Пользовательская конечная точка и введите:
- Базовый URL:
http://localhost:11434/v1 - Ключ API: Оставьте пустым или введите
no-key(Олламе он не нужен). - Модель:
gemma4:31b(или любую другую модель, которую вы выбрали)
Альтернативно, отредактируйте ~/.hermes/config.yaml напрямую:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"
Шаг 4: Начните использовать Гермес
hermes
Вот и все. Теперь вы используете полностью локальный агент. Попробуйте:
You: List all Python files in this directory and count the lines of code in each
You: Read the README.md and summarize what this project does
You: Create a Python script that fetches the weather for Ho Chi Minh City
Hermes будет использовать инструмент терминала, файловые операции и вашу локальную модель — никаких облачных вызовов.
Шаг 5. Выберите модель, подходящую для вашей задачи
Не для каждой задачи нужна самая большая модель. Вот практическое руководство:
| Задача | Рекомендуемая модель | Почему |
|---|---|---|
| Редактирование файлов, код, команды терминала | гемма4:31b |
Единственная модель с надежным вызовом инструмента |
| Быстрые вопросы и ответы (использование инструментов не требуется) | джемма2:9b |
Быстрые ответы на диалоговые задачи |
| Легкий чат | лама3.2:3b |
Самый быстрый, но очень ограниченные возможности |
Для полной агентской работы (редактирование файлов, запуск команд, просмотр) в настоящее время лучшим локальным вариантом с поддержкой вызова инструментов является gemma4:31b. Проверьте библиотеку моделей Ollama на наличие новых моделей — поддержка вызова инструментов быстро расширяется. |
||
| Переключайте модели на лету внутри сеанса: |
/model gemma2:9b
Шаг 6: Оптимизируйте скорость
Увеличить контекстное окно Олламы
По умолчанию Оллама использует контекст из 2048 токенов. Для агентской работы с инструментами Hermes требуется не менее 64 000 токенов:
# Create a Modelfile that extends context
cat > /tmp/Modelfile << 'EOF'
FROM gemma4:31b
PARAMETER num_ctx 64000
EOF
ollama create gemma4-64k -f /tmp/Modelfile
Затем обновите конфигурацию Hermes, указав в качестве названия модели «gemma4-64k».
Держите модель загруженной
По умолчанию Оллама выгружает модели после 5 минут бездействия. Для постоянного шлюзового бота оставьте его загруженным:
# Set keep-alive to 24 hours
curl http://localhost:11434/api/generate \
-d '{"model": "gemma4:31b", "keep_alive": "24h"}'
Или установите его глобально в среде Олламы:
# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_KEEP_ALIVE=24h"
Использовать разгрузку графического процессора (если доступно)
Если у вас есть графический процессор NVIDIA, Оллама автоматически выгружает на него слои. Проверьте с:
ollama ps # Shows which model is loaded and how many GPU layers
Для модели 31B на графическом процессоре 12 ГБ вы получите частичную разгрузку (~ 40 слоев на графическом процессоре, остальное на процессоре), что все равно дает значительный прирост скорости.
Шаг 7. Запуск в качестве шлюзового бота (необязательно)
Как только Hermes начнет работать локально в CLI, вы сможете представить его как бот Telegram или Discord, при этом полностью работая на вашем оборудовании.
Телеграм
- Создайте бота через @BotFather и получите токен.
- Добавьте в свой
~/.hermes/config.yaml:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"
platforms:
telegram:
enabled: true
token: "YOUR_TELEGRAM_BOT_TOKEN"
- Запустите шлюз:
hermes gateway
Теперь отправьте сообщение своему боту в Telegram — он ответит, используя вашу локальную модель.
Дискорд
- Создайте приложение Discord на странице discord.com/developers.
- Добавьте в конфиг:
platforms:
discord:
enabled: true
token: "YOUR_DISCORD_BOT_TOKEN"
- Начало:
ворота Гермеса
Шаг 8. Настройте резервные варианты (необязательно)
Локальные модели могут сталкиваться со сложными задачами. Настройте запасной вариант облака, который активируется только в случае сбоя локальной модели:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"
fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4
Таким образом, 90% вашего использования является бесплатным (локальным), и только сложные задачи затрагивают платный API.
Устранение неполадок
«Соединение отклонено» при запуске
Оллама не бежит. Запустите это:
sudo systemctl start ollama
# or
ollama serve
Медленные ответы
– Проверьте размер модели по сравнению с оперативной памятью. Если вашей модели требуется больше оперативной памяти, чем доступно, она заменяется на диск. Используйте модель меньшего размера или добавьте ОЗУ.
- Отметьте ollama ps: Если ни один из слоев графического процессора не выгружен, ответы зависят от процессора. Это нормально для серверов, использующих только ЦП.
– Сокращение контекста. Большие разговоры замедляют процесс вывода. Регулярно используйте /compress или установите более низкий порог сжатия в конфигурации.
Медленный первый ответ (предварительное заполнение)
Hermes отправляет фиксированную полезную нагрузку при каждом вызове API — системное приглашение плюс схемы инструментов для всех включенных инструментов — перед любым содержимым вашего разговора. В конфигурациях только с ЦП или с низким объемом видеопамяти обработка этого приглашения (фаза предварительного заполнения) доминирует на первом этапе: модель может молчать в течение нескольких минут, пока обрабатывает приглашение, а затем генерирует в обычном темпе. Это ожидаемое поведение, а не зависание. Руководство Mac local-LLM документирует тот же эффект — во время предварительного заполнения в больших контекстах локальные модели могут не выдавать выходные данные в течение нескольких минут во время обработки запроса — и Hermes автоматически увеличивает время ожидания чтения потока со 120 с до 1800 с для локальных конечных точек («HERMES_STREAM_READ_TIMEOUT»).
Что помогает:
- Держать модель загруженной — Оллама выгружает простаивающие модели через 5 минут, добавляя полную перезагрузку перед следующим предварительным заполнением. Установите
OLLAMA_KEEP_ALIVE=24h(см. Шаг 6). - Увеличьте время ожидания API — установите
HERMES_API_TIMEOUT=1800в~/.hermes/.env(см. Что вам нужно). - Измерьте и обрежьте фиксированное приглашение — запустите
hermes Prompt-sizeдля разбивки по байтам системного приглашения и схем инструментов, затем отключите неиспользуемые наборы инструментов с помощьюhermes Toolsи удалите ненужные вам навыки с помощьюhermesskills. - Использовать разгрузку графического процессора — даже частичная разгрузка дает значительный прирост скорости (см. Шаг 6).
Модель не выполняет вызовы инструментов
Модели без поддержки вызовов инструментов создают простой текст вместо структурированных вызовов функций. Решения:
- Используйте модель с поддержкой вызова инструментов — из перечисленных выше моделей только «gemma4:31b» имеет надежный вызов инструментов.
- У Hermes есть функция автоматического восстановления — она обнаруживает некорректные вызовы инструментов и пытается их автоматически исправить.
- Настройте резервный вариант — если локальная модель дает сбой 3 раза, Hermes обращается к облачному провайдеру.
Если модель печатает в своем ответе необработанный JSON типа {"name": "web_search",...} вместо фактического запуска инструмента, то обычно это сервер, а не модель — вызов инструмента не включен или формат вызова инструмента не анализируется. См. таблицу исправлений для каждого сервера в Вызовы инструментов отображаются в виде текста вместо выполнения (для llama.cpp требуется --jinja, vLLM нужен --enable-auto-tool-choice --tool-call-parser hermes и т. д.).
Ошибки контекстного окна
Контекст Ollama по умолчанию (2048 токенов) слишком мал для агентской работы. См. Шаг 6, чтобы увеличить ее.
Сравнение затрат
Вот что экономит при локальном запуске по сравнению с облачными API, исходя из типичного сеанса кодирования (ввод ~100 000 токенов, выход ~20 000 токенов):
| Провайдер | Стоимость за сеанс | Ежемесячно (ежедневное использование) |
|---|---|---|
| Антропный Сонет Клода | ~$0,80 | ~$24 |
| OpenRouter (GPT-4o) | ~$0,60 | ~$18 |
| Оллама (местный) | 0,00$ | 0,00$ |
Ваши единственные затраты — это электричество — примерно 0,01–0,05 доллара за сеанс в зависимости от оборудования.
Что хорошо работает локально
- Редактирование файлов и генерация кода — модели 9B+ с этим справляются хорошо.
- Команды терминала — Hermes оборачивает команду, запускает ее и считывает выходные данные независимо от модели.
- Просмотр веб-страниц — загрузка данных выполняется с помощью браузера; модель просто интерпретирует результаты
- Задания Cron и запланированные задачи — работают идентично облачным настройкам.
- Мультиплатформенный шлюз — Telegram, Discord, Slack работают с локальными моделями.
Что лучше с облачными моделями
- Очень сложные многоэтапные рассуждения — модели 70B+ или облачные модели, такие как Claude Opus, заметно лучше.
- Длинные контекстные окна — облачные модели предлагают 100–1 млн токенов; локальные среды выполнения часто по умолчанию ниже минимума Hermes в 64 КБ, если вы их не настроите.
- Скорость обработки больших ответов — облачный вывод быстрее, чем локальный только для ЦП для длинных поколений.
Самое приятное: используйте локальную версию для повседневных задач, настройте резервное облако для сложных задач.