NormaHub knowledge base

Подключение n8n

NormaHub как AI-бэкенд для n8n: HTTP Request, авторизация, выражения, обработка ответов и защита бюджета автоматизаций.

1. Архитектура связки

n8n — оркестратор, NormaHub — модельный бэкенд. Типовой workflow: триггер (webhook, расписание, сообщение) → HTTP Request к NormaHub → обработка ответа → действие (ответ пользователю, запись в таблицу, тикет). Ключ живёт в credentials n8n, модель и max_tokens — в теле запроса, лимит трат — на ключе в личном кабинете.

Под автоматизацию заводите отдельный ключ: фоновые workflow работают без присмотра, и зациклившаяся нода с общим ключом — самый быстрый способ обнулить баланс. VPN не нужен ни облачному, ни self-hosted n8n.

2. HTTP Request node

Создайте узел HTTP Request и настройте его так. Тип авторизации — Header Auth с заголовком Authorization: Bearer ВАШ_КЛЮЧ (значение храните в credentials, а не текстом в workflow). Тело — JSON с model, messages и max_tokens; текст из предыдущего узла подставляйте выражением {{ $json.text }}.

Метод:   POST
URL:     https://api.normahub.cc/v1/chat/completions
Auth:    Header Auth → Authorization: Bearer YOUR_API_KEY
Body JSON:
{
  "model": "MODEL_ID",
  "messages": [
    { "role": "system", "content": "Отвечай коротко и по делу." },
    { "role": "user", "content": "={{ $json.text }}" }
  ],
  "max_tokens": 512
}

Model ID берите точным из каталога: для классификации и черновиков — младшие дешёвые модели, для сложных рассуждений — флагманы. System-промпт задаёт формат ответа и экономит токены лучше, чем длинные просьбы в каждом сообщении.

3. Чтение ответа и usage

Ответ лежит в choices[0].message.content, расход — в usage того же JSON. Сохраняйте usage в свою учётную таблицу (Google Sheets, Postgres, файл): это единственный способ увидеть, какой workflow сколько стоит, до счёта, а не после.

// Ответ модели в следующем узле:
{{ $json.choices[0].message.content }}

// Usage для учёта стоимости:
{{ $json.usage.prompt_tokens }} / {{ $json.usage.completion_tokens }}

Для диалогов храните историю снаружи (таблица, Redis, память workflow) и передавайте в messages обрезанный контекст: n8n не сделает это за вас, а полный лог переписки при каждом вызове — главная статья расходов. Формула цены — в гайде по стоимости.

4. Ошибки и надёжность

Включите в настройках HTTP-узла обработку ошибок и повторы только для временных сбоев (429, 5xx): экспоненциальная пауза, максимум 3–4 попытки. Постоянные 400, 401, 402, 403 уводите в отдельную ветку с уведомлением вам, а не в бесконечный retry. Полная таблица кодов — в гайде по ошибкам.

Типовые причины падений: 401 — ключ в credentials протух или отозван; 402 — баланс или spend limit; 413 — в messages улетел огромный лог; 503 — модель временно недоступна, здесь уместен fallback на запасную модель вторым HTTP-узлом.

5. Self-hosted и безопасность

На своём сервере держите ключ в переменных окружения контейнера и ссылайтесь на него выражением — тогда экспорт workflow не унесёт секрет. Ограничьте доступ к редактору n8n (иначе любой редактор видит credentials), включите шифрование credentials ключом из env, бэкапьте workflows в git без секретов.

# Self-hosted n8n: ключ — в credentials n8n, не в код workflow
# Переменные окружения контейнера:
NORMAHUB_API_KEY=ваш_api_ключ
# В HTTP-node используйте Header Auth с выражением:
# Bearer {{ $env.NORMAHUB_API_KEY }}

Итоговый чек-лист перед включением расписания: отдельный ключ с лимитом, max_tokens везде, дедупликация входов, ветка ошибок с алертом, учёт usage. Упавшие запуски разбирайте по коду: 401 — credentials, 402 — деньги или лимит, 413 — раздутый контекст.

Частые вопросы

Какой узел n8n использовать для AI?

Универсальный и версионно-независимый — HTTP Request: POST на https://api.normahub.cc/v1/chat/completions с Header-авторизацией и JSON-телом. Специализированные AI-узлы тоже подойдут, если ваша версия n8n позволяет задать кастомный base URL и ключ.

Где хранить API-ключ в n8n?

В credentials n8n (Header Auth) или переменных окружения self-hosted инстанса. Никогда не вшивайте ключ в тело workflow текстом: экспортированные workflow разлетаются по чатам и репозиториям вместе с секретом.

Workflow упёрся в 402. Что делать?

Закончились деньги владельца ключа или spend limit самого ключа. Проверьте оба в личном кабинете NormaHub. Для фоновых автоматизаций заведите отдельный ключ с лимитом — он же защитит бюджет от зациклившегося workflow.

Как не разориться на цикле n8n?

max_tokens на каждый вызов, системный промпт вместо длинных переписок, дедупликация входов (не отправляйте одно и то же дважды), лимит spend на ключе и алерты на списания. Стоимость операции считайте по usage из ответа.

Нужен ли VPN для n8n-сервера в России?

Нет. И облачный, и self-hosted n8n обращаются к api.normahub.cc напрямую. Оплата — с рублёвого баланса.