Hermes на Go: Шлюз для AI-чатов в мессенджерах
В AgroAI FastAPI-шлюз тормозил AI-чат. Заменили на Hermes на Go: маршрутизация webhook'ов, нормализация событий, zero-dependency. Почему Go лучше Python, грабли с backpressure и как масштабировать чаты в Telegram/WhatsApp. Кейс 2026.
Ключевые выводы
- 1Выносите мессенджеры в отдельный Go-шлюз для предсказуемости и низкого latency.
- 2Go проще в деплое: один бинарь, goroutines для concurrency.
- 3Обрабатывайте backpressure, idempotency и timeouts заранее.
- 4Hermes нормализует события, оставляя LLM чистой.
- 5Разделение шлюза ускоряет масштабирование AI-продуктов.

Если вы делаете AI‑продукт для бизнеса, рано или поздно упираетесь в мессенджеры. Telegram и WhatsApp — это не каналы, а рабочие интерфейсы. В AgroAI мы упёрлись в простую проблему: FastAPI‑шлюз начал тормозить, логика расползалась, а масштабирование превратилось в ад. Так появился Hermes на Go.
Почему вообще отдельный шлюз
Ошибка, которую делают часто: мешают LLM‑логику, интеграции и доставку сообщений. Опыт RAG‑чатов показывает, что чат — это тонкий слой, а вся магия дальше. В кейсе замены BI на AI‑чат через Telegram шлюз был узким местом, а не LLM или SQL генерация ( источник ) .
Hermes мы вынесли в отдельный Go‑сервис: он не думает, он маршрутизирует. Принимает webhook, нормализует сообщение, кладёт trace‑id, отдаёт в LLM‑router и возвращает ответ обратно в мессенджер.
Почему Go, а не Python
Коротко: предсказуемость. Go даёт контроль над памятью, конкурентностью и latency. Для шлюза это важнее, чем DX. Когда WhatsApp шлёт батчи ивентов, goroutine дешевле, чем async‑хаос. Плюс один бинарь, zero‑dependency деплой и нормальная observability.
Минимальный хэндлер
Пример ядра: HTTP вход, валидация, паблиш в очередь. Никаких LLM внутри.
Hermes — это не мозг, а нервная система.
Интеграция с AgroAI
Дальше интереснее. AgroAI использует LLM‑router, RAG и агрегаты, как в классической архитектуре AI‑чата. Но Hermes добавил один критичный слой: контекст канала. Telegram — быстрые диалоги, WhatsApp — длинные цепочки и голос. Шлюз нормализует это в единый event‑формат.
Это позволило LLM‑части остаться чистой, как в кейсе AI‑агентов, где инструменты и роутинг разделены ( см. гайд ) .
Грабли, о которых лучше знать
- Backpressure. Мессенджеры не ждут, LLM — да.
- Idempotency. Webhook может прилететь дважды.
- Timeouts. Лучше ответить «думаю», чем упасть.
Эти проблемы не видны, пока у вас 10 пользователей. При 1000 они убивают продукт.
Вывод
Hermes на Go — это урок про границы. Как и в историях про вайб‑кодинг и AI‑агентов, побеждает не тот, кто пишет больше кода, а тот, кто правильно режет систему ( пример ) .
Если вы строите AI‑чат в 2026, вынесите мессенджеры в отдельный шлюз. Пусть LLM думает. Hermes доставляет. И тогда AgroAI масштабируется спокойно, без магии, но с хорошим вайбом.