Конспект 2: LLM модели и параметры в N8N
Оглавление
- Введение в LLM
- Основные LLM модели
- Архитектура LLM
- Основные параметры LLM
- Temperature (Температура)
- Top-P и Top-K семплирование
- Max Tokens (Максимум токенов)
- Frequency Penalty и Presence Penalty
- System Prompt и Context
- LLM интеграции в N8N
- Подключение OpenAI к N8N
- Практические примеры использования
- Оптимизация параметров
- Дебаг и лучшие практики
Введение в LLM
Что такое Large Language Model (LLM)?
Определение: Большие языковые модели — это нейросетевые модели, обученные на огромных объемах текстовых данных (сотни миллиардов токенов), способные понимать и генерировать текст.
Основной принцип работы:
Входной текст (промпт)
↓
Токенизация
↓
Трансформация в векторное представление
↓
Прохождение через слои нейросети
↓
Предсказание следующего токена
↓
Повторение до достижения условия стопа
↓
Декодирование → Выходной текст
История развития LLM
| Модель | Год | Размер | Контекст | Особенности |
|---|---|---|---|---|
| GPT-3 | 2020 | 175B | 2,048 | Первая массовая LLM |
| GPT-3.5 | 2022 | 175B+ | 4,096 | Основа ChatGPT |
| GPT-4 | 2023 | ~1.7T | 128,000 | Лучшая точность |
| Claude 3 | 2024 | 400B+ | 200,000 | Долгий контекст |
| LLaMA 3 | 2024 | 8B-70B | 64,000 | Open-source |
| DeepSeek | 2024 | 236B | 32,000-128,000 | Эффективность |
| Gemini 2.0 | 2025 | ~10T | 1,000,000 | Экспериментально |
Основные LLM модели
OpenAI GPT Models
GPT-4
- Размер контекста: 128,000 токенов
- Стоимость: Самая дорогая (~$0.03-0.06 за 1K токенов)
- Качество: Лучшее на рынке
- Скорость: Медленнее чем 3.5-turbo
- Применение: Сложные задачи, точность важна
Варианты:
- gpt-4-turbo — 128K контекст, быстрее
- gpt-4-vision — обработка изображений
- gpt-4o (omni) — мультимодальная, быстрая, дешевле
GPT-3.5-Turbo
- Размер контекста: 4,096-16,384 токенов
- Стоимость: Дешевая (~$0.0005-0.002 за 1K токенов)
- Качество: Хорошее
- Скорость: Очень быстрая
- Применение: Простые задачи, большие объемы
GPT-4o mini
- Размер контекста: 128,000 токенов
- Стоимость: Экономичная (~$0.00015 за 1K токенов)
- Качество: Хорошее
- Скорость: Быстрая
- Применение: Оптимальное соотношение цена-качество
GPT-4 Turbo with Vision
- Возможности: Анализ изображений, диаграмм, скриншотов
- Стоимость: Выше чем текстовая версия
- Применение: Обработка визуального контента
Anthropic Claude
Claude 3 Series
Claude 3 Opus (самый мощный) - Размер контекста: 200,000 токенов - Стоимость: ~$0.015-0.075 за 1K токенов - Качество: Отличное - Специальность: Анализ, рассуждения
Claude 3 Sonnet (баланс) - Размер контекста: 200,000 токенов - Стоимость: ~$0.003-0.015 за 1K токенов - Качество: Хорошее - Скорость: Быстрая
Claude 3 Haiku (быстрая) - Размер контекста: 200,000 токенов - Стоимость: ~$0.00025-0.00125 за 1K токенов - Качество: Приличное - Скорость: Очень быстрая
Особенности Claude: - Длинный контекст (200K) - Хорошо работает с инструкциями - Конституционный AI (менее галлюцинации) - Может работать с документами
Meta LLaMA
LLaMA 3
- Размеры: 8B, 70B параметров
- Контекст: 8,000-128,000 токенов
- Тип: Open-source (можно использовать локально)
- Стоимость: Бесплатная (если локально) или дешевая через API
- Применение: Разработка, локальное развертывание
Подмодели:
- Meta-Llama-3-8B — легковесная
- Meta-Llama-3-70B — мощная
- Meta-Llama-3.1-405B — очень мощная (экспериментально)
DeepSeek
DeepSeek-V3
- Размер контекста: 32,000-128,000 токенов
- Стоимость: Низкая (~$0.27 за 1M входных токенов)
- Качество: Сравнима с GPT-4 в тестах
- Особенность: Очень эффективная (MoE архитектура)
- Применение: Cost-effective решение
DeepSeek-R1
- Размер контекста: 32,000-128,000 токенов
- Стоимость: Низкая
- Особенность: Глубокое рассуждение (reasoning)
- Применение: Сложные логические задачи, код
Особенность DeepSeek: Mixture of Experts (MoE) — активируется только часть сети для каждого запроса, экономя ресурсы
Google Gemini
Gemini 2.0
- Размер контекста: 1,000,000 токенов (экспериментально)
- Стоимость: Конкурентная
- Мультимодальность: Текст, изображения, видео, аудио
- Применение: Сложные мультимодальные задачи
Альтернативные модели
| Модель | Разработчик | Контекст | Стоимость | Применение |
|---|---|---|---|---|
| Mistral Large | Mistral AI | 32K | Низкая | Общее назначение |
| Mixtral 8x7B | Mistral AI | 32K | Низкая | Open-source |
| Yi-Large | 01.AI | 200K | Низкая | Долгий контекст |
| Command-R+ | Cohere | 128K | Средняя | Поиск и RAG |
| Llama 2 | Meta | 4K | Free | Open-source |
Архитектура LLM
Трансформеры (Transformer Architecture)
Основные компоненты:
┌─────────────────────────────────────┐
│ Input: Text Prompt │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ Tokenization │
│ "N8N" → [15234, 1234] │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ Embedding Layer │
│ Преобразование в векторы │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ Attention Layers (×96 для GPT-4) │
│ Каждый слой: │
│ - Query-Key-Value attention │
│ - Multi-head attention │
│ - Feed-forward network │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ Output Layer │
│ Вероятности для каждого токена │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ Sampling (согласно параметрам) │
│ Выбор следующего токена │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ Output Token │
│ Повторение пока не будет [END] │
└─────────────────────────────────────┘
Attention Mechanism (Механизм внимания)
Принцип работы: - Модель смотрит на все предыдущие токены - Определяет какие токены наиболее важны для следующего токена - Присваивает веса (attention weights) каждому токену
Пример:
Текст: "Банк находится рядом с рекой"
При генерации слова "деньги" модель обратит внимание:
- На слово "банк" (высокий вес = финансовое учреждение)
- Меньше на "река"
Tokenization (Токенизация)
Процесс разбиения текста на токены:
Текст: "N8N помогает автоматизировать процессы"
GPT (BPE токенизация):
["N", "8", "N", " помогает ", "автоматиз", "ировать", " процессы"]
Числовое представление:
[77, 23, 77, 1234, 5678, 9012, 3456]
Важно: - Разные модели используют разные токенизаторы - 1 токен ≈ 4 символа на английском - 1 токен ≈ 1-2 символа на русском - Пунктуация = отдельные токены
Context Window (Контекстное окно)
Определение: Максимальное количество токенов, которые модель может обработать одновременно.
Ограничения:
Контекст = история (система + история сообщений) + новый промпт
Если контекст переполнен:
- Ошибка 400 Bad Request (некоторые модели)
- Обрезка старых сообщений (система делает автоматически)
- Снижение качества (если было слишком сжимать)
Пример расчета:
Модель: GPT-4 (128K контекст)
Общее использование:
- System prompt: 500 токенов
- История (10 сообщений): 3000 токенов
- Новый запрос: 200 токенов
- Max response: оставить 5000 на ответ
Итого: 500 + 3000 + 200 + 5000 = 8700 токенов (в норме)
Основные параметры LLM
Полный список параметров
| Параметр | Тип | Диапазон | Значение по умолчанию | Использование |
|---|---|---|---|---|
| temperature | float | 0.0 - 2.0 | 1.0 | Креативность/детерминированность |
| top_p | float | 0.0 - 1.0 | 1.0 | Nucleus sampling |
| top_k | integer | 1 - ∞ | 0 | K-sampling |
| max_tokens | integer | 1 - context | Auto | Длина ответа |
| frequency_penalty | float | -2.0 - 2.0 | 0.0 | Штраф за повторения |
| presence_penalty | float | -2.0 - 2.0 | 0.0 | Штраф за повторяемые темы |
| seed | integer | 0 - 2^31 | null | Reproducibility |
| best_of | integer | 1 - 20 | 1 | Попыток генерации |
| stop | string[] | - | ["\n\n"] | Сигнал стопа |
| n | integer | 1 - 128 | 1 | Количество ответов |
Temperature (Температура)
Что такое Temperature?
Определение: Параметр, который контролирует случайность выбора следующего токена. Влияет на баланс между логичностью и креативностью.
Как работает:
Логиты (сырые оценки из модели):
- "деньги": 10.0
- "банк": 8.5
- "ривер": 3.2
Temperature = 1.0 (нормально):
Вероятности: [0.73, 0.20, 0.07]
Temperature = 0.0 (детерминированно):
Вероятности: [1.0, 0.0, 0.0] → выбираем "деньги"
Temperature = 2.0 (творчески):
Вероятности: [0.55, 0.30, 0.15] → может выбрать "ривер"!
Значения Temperature
Temperature = 0.0
Поведение: Всегда выбирает самый вероятный токен (детерминированно)
Применение: - ✅ Классификация - ✅ Извлечение фактов - ✅ Анализ тональности - ✅ Когда нужна точность - ✅ Один запрос — один ответ
Пример ввода-вывода:
Входной запрос: "Какая столица России?"
Ответ 1: "Москва"
Ответ 2 (тот же запрос): "Москва" (идентичный)
Temperature = 0.3 - 0.7 (Сбалансированно)
Поведение: Выбирает вероятные токены с легкой случайностью
Применение: - ✅ Генерация текста - ✅ Переписывание - ✅ Дружеский тон - ✅ Умеренная креативность
Пример:
Входной запрос: "Напиши мне рассказ про N8N"
Ответ 1: "N8N - это платформа для автоматизации..."
Ответ 2: "N8N представляет собой мощный инструмент..."
Ответ 3: "Давайте поговорим о N8N - платформе..."
Temperature = 1.0 (Стандартно)
Поведение: Стандартное распределение вероятностей
Применение: - ✅ Общее назначение - ✅ Когда не уверены
Temperature = 1.5 - 2.0 (Творчески)
Поведение: Часто выбирает менее вероятные токены
Применение: - ✅ Стихи, творчество - ✅ Генерация идей - ✅ Когда нужно разнообразие - ✅ Браinstorming
Пример:
Входной запрос: "Придумай новый вид транспорта"
Ответ 1: "Летающий автомобиль на антигравитации"
Ответ 2: "Подземный магле-поезд со спортивным дизайном"
Ответ 3: "Индивидуальная капсула, путешествующая через портали"
Предупреждение: - ⚠️ Высокая temperature → больше галлюцинаций - ⚠️ Может генерировать бессмыслицу - ⚠️ Не рекомендуется использовать для фактических ответов
Temperature в N8N
Где задавать:
OpenAI Node → Parameters → Temperature
Типичные значения:
- Классификация/Извлечение: 0.0
- Чат: 0.7
- Генерация: 1.0
- Творчество: 1.5
Top-P и Top-K семплирование
Top-P (Nucleus Sampling)
Определение: Параметр, который ограничивает выбор токенов только теми, чья кумулятивная (суммарная) вероятность не превышает P.
Как работает:
Токены отсортированы по вероятности:
- "деньги": 0.50 (кумулятивно: 0.50)
- "банк": 0.30 (кумулятивно: 0.80) ← top_p=0.8
- "ривер": 0.15 (кумулятивно: 0.95)
- "ручей": 0.05 (кумулятивно: 1.00)
Если top_p=0.8:
Выбираем из: ["деньги", "банк"]
Исключаем: ["ривер", "ручей"]
Параметры:
| Значение | Поведение | Применение |
|---|---|---|
| 0.0 | Очень консервативно (ошибка - обычно) | - |
| 0.5 | Выбирает из половины вероятностей | Точность |
| 0.7 | Рекомендуемое значение | Баланс |
| 0.9 | Более разнообразно | Генерация |
| 1.0 | Все токены доступны | Максимальное разнообразие |
Top-K (K-Sampling)
Определение: Параметр, который ограничивает выбор только K наиболее вероятных токенов, остальные исключаются.
Как работает:
Токены отсортированы по вероятности:
- "деньги": 0.50 ← выбираем
- "банк": 0.30 ← выбираем (top_k=2)
- "ривер": 0.15 ← исключаем
- "ручей": 0.05 ← исключаем
Если top_k=2:
Выбираем только из: ["деньги", "банк"]
Параметры:
| Значение | Поведение |
|---|---|
| 1 | Очень консервативно (= temperature 0) |
| 10 | Баланс |
| 50 | Творчески |
| 0 | Отключено (используется вся палитра) |
Top-P vs Top-K
Сравнение:
| Параметр | Преимущества | Недостатки |
|---|---|---|
| Top-P | Адаптируется к контексту | Сложнее для понимания |
| Top-K | Простой, понятный | Не адаптируется к контексту |
Рекомендация: Использовать Top-P, он более гибкий
Правило: Измените только Top-P ИЛИ temperature, но не оба сразу!
Top-P + Temperature
Комбинирование:
# Для точности
temperature: 0.0
top_p: 1.0 (не влияет при temp=0)
# Для баланса
temperature: 0.7
top_p: 0.9
# Для творчества
temperature: 1.5
top_p: 0.95
Max Tokens (Максимум токенов)
Определение
Max Tokens: Максимальное количество токенов, которое модель может сгенерировать в ответе.
Как работает
Исходный контекст: 500 токенов
max_tokens: 2000
Лимит для ответа: 2000 токенов
Если модель закончила раньше (встретила [END]):
- Вернется 300 токенов (например)
Если модель не закончила к 2000:
- Обрезается на 2000 токенов (может быть неполное предложение)
Значения Max Tokens
max_tokens = null или не установлен
Поведение: Модель использует весь оставшийся контекст
Используется: Когда нужна полная автономия
max_tokens = 100-500
Поведение: Короткие ответы
Применение: - Классификация - Да/нет вопросы - Извлечение сущностей
max_tokens = 1000-2000
Поведение: Средние ответы
Применение: - Стандартные запросы - Объяснения - Аналитика
max_tokens = 4000+
Поведение: Длинные ответы
Применение: - Написание статей - Генерация кода - Комплексный анализ
Расчет cost (стоимости)
OpenAI:
Стоимость = (input_tokens * price_in) + (output_tokens * price_out)
Пример GPT-4:
- Входящие: $0.03 за 1K токенов
- Исходящие: $0.06 за 1K токенов
Запрос: 1000 входящих, 500 исходящих токенов
Стоимость = (1000 * 0.03 / 1000) + (500 * 0.06 / 1000)
= 0.03 + 0.03 = $0.06
Экономия токенов: - Установить разумный max_tokens - Использовать GPT-3.5-turbo вместо GPT-4 где возможно - Кэшировать повторяющиеся запросы - Сжимать историю сообщений
Max Tokens в N8N
OpenAI Node → Parameters → Max Tokens
Примеры для N8N workflows:
- Чат-бот: 500-1000
- Анализ текста: 200-500
- Генерация: 2000-4000
- Код: 4000-8000
Frequency Penalty и Presence Penalty
Frequency Penalty (Штраф за частоту)
Определение: Штраф за использование токенов, которые уже появились в тексте.
Как работает:
Исходный текст: "N8N помогает N8N помогает"
Если frequency_penalty = 0.0:
Модель может продолжить: "N8N помогает N8N помогает N8N..."
(повторения разрешены)
Если frequency_penalty = 2.0:
Модель попытается: "N8N помогает автоматизировать процессы"
(повторения штрафуются сильно)
Значения:
| Значение | Эффект |
|---|---|
| 0.0 | Нет штрафа (может повторяться) |
| 0.5 - 1.0 | Умеренный штраф |
| 1.5 - 2.0 | Сильный штраф |
Presence Penalty (Штраф за присутствие)
Определение: Штраф за использование токенов, которые уже есть в тексте, независимо от частоты.
Как работает:
Исходный текст: "N8N помогает автоматизировать"
Если presence_penalty = 0.0:
Модель может повторить любое слово свободно
Если presence_penalty = 2.0:
Модель активно избегает повторений любых слов,
даже если они появились один раз
Frequency vs Presence
Различие:
Текст: "кот кот кот"
Frequency Penalty:
- Первое "кот": штраф 0
- Второе "кот": штраф 1 × 2.0 = 2.0
- Третье "кот": штраф 2 × 2.0 = 4.0
Presence Penalty:
- Первое "кот": штраф 0
- Второе "кот": штраф 1 × 2.0 = 2.0
- Третье "кот": штраф 1 × 2.0 = 2.0 (одинаковый штраф)
Когда использовать
Frequency Penalty: - Списки разных предметов - Когда хотим избежать повторяющейся структуры
Presence Penalty: - Генерация разных идей - Brainstorming - Когда нужна максимальная вариативность
Рекомендация: Изменяйте только один из параметров!
Значения в N8N
OpenAI Node → Parameters
Типичные значения:
- Для точности: оба = 0.0
- Для разнообразия: frequency = 1.0, presence = 0.0
- Для максимума вариативности: frequency = 2.0, presence = 1.0
System Prompt и Context
System Prompt (Системный промпт)
Определение: Инструкция, которая определяет поведение модели для всего разговора.
Структура:
{
"messages": [
{
"role": "system",
"content": "Ты опытный Python разработчик. Отвечай кратко, приводи примеры кода."
},
{
"role": "user",
"content": "Как использовать N8N с OpenAI?"
}
]
}
Эффект System Prompt
Пример 1: Без system prompt
Вопрос: "Что такое N8N?"
Ответ:
N8N (n8n) — это платформа для автоматизации рабочих процессов...
[обычный формат]
Пример 2: С system prompt (помощник)
System: "Ты веселый помощник"
Вопрос: "Что такое N8N?"
Ответ:
N8N? О, это просто супер! 🚀 Представляешь, платформа для автоматизации...
[веселый тон]
Пример 3: С system prompt (эксперт)
System: "Ты эксперт по архитектуре ПО"
Вопрос: "Что такое N8N?"
Ответ:
N8N — это low-code платформа, основанная на DAG архитектуре...
[технический тон]
Хорошие practices System Prompt
✅ ХОРОШО:
"Ты опытный Python разработчик.
Объясняй сложные концепции простыми словами.
Всегда приводи примеры кода.
Если не знаешь, говори честно."
❌ПЛОХО:
"Будь умным"
System Prompt в N8N
OpenAI Node → Messages → System Message
{
"system": "Ты помощник по N8N. Отвечай кратко и точно."
}
Role-Based Prompting
Техника назначения ролей:
System: "Ты СЕО компании N8N.
Твоя задача — привлечь инвесторов.
Используй убеждающий тон и приводи метрики."
User: "Расскажи о нашем продукте"
Context Management (Управление контекстом)
Сохранение истории:
Сообщение 1:
System: "Помни, что пользователя зовут Иван"
User: "Привет, как дела?"
Assistant: "Привет, Иван!"
Сообщение 2:
User: "Как меня зовут?"
Assistant: "Тебя зовут Иван!" (помнит из истории)
Очистка контекста:
Если контекст слишком большой:
- Суммировать историю
- Сохранить только релевантные сообщения
- Создать новую сессию
LLM интеграции в N8N
Встроенные LLM узлы
Доступные узлы в N8N:
| Узел | Поддерживаемые модели | Тип |
|---|---|---|
| OpenAI | GPT-4, GPT-3.5, DALL-E | Встроен |
| Anthropic Claude | Claude 3 series | Встроен |
| Hugging Face | 100+ моделей | Встроен |
| Azure OpenAI | GPT-4, GPT-3.5 (в Azure) | Встроен |
| Ollama | LLaMA, Mistral, Phi и т.д. | HTTP |
| LM Studio | Локальные модели | HTTP |
| Replicate | 50000+ моделей | Встроен |
| Cohere | Command-R и др. | Встроен |
| Groq | Быстрые open-source модели | HTTP |
OpenAI Integration (Основной)
Типы узлов OpenAI: 1. Chat Completion — текстовый чат 2. Text-to-Speech — преобразование текста в речь 3. Speech-to-Text — транскрипция аудио 4. Image Generation — DALL-E
Параметры Chat Completion:
- Model: gpt-4, gpt-3.5-turbo, gpt-4o
- Messages: система промпта + история
- Temperature: 0.0 - 2.0
- Top P: 0.0 - 1.0
- Max Tokens: количество
- Stop: критерий завершения
- Frequency Penalty: -2.0 - 2.0
- Presence Penalty: -2.0 - 2.0
Claude Integration
Особенности: - Длинный контекст (200K) - Хорошее понимание инструкций - Меньше галлюцинаций
Узел Claude в N8N:
- Model: claude-3-opus, claude-3-sonnet, claude-3-haiku
- System: системный промпт
- Messages: история
- Max Tokens: обычно 2000-4000
- Temperature: 0.0 - 1.0
Hugging Face Integration
Возможности: - Доступ к 100000+ моделей - Inference API - Собственные модели
Параметры:
- Model: любая модель с huggingface.co
- Inputs: текст или структурированные данные
- Parameters: зависит от модели
Azure OpenAI
Отличия от OpenAI: - Находится в Azure облаке - Точка входа: Azure endpoint - Аутентификация: API key + deployment name
Настройка в N8N:
- Azure Endpoint: https://your-resource.openai.azure.com/
- Deployment Name: ваше развертывание
- API Key: ключ Azure
Локальные модели через HTTP
Ollama (локально):
Запуск: ollama run llama2
Endpoint: http://localhost:11434
N8N:
HTTP Request → POST http://localhost:11434/api/generate
LM Studio:
Запуск: LM Studio app
Endpoint: http://localhost:1234/v1
N8N:
HTTP Request → совместимо с OpenAI API
Подключение OpenAI к N8N
Шаг 1: Получение API Key
- Перейти на https://platform.openai.com
- Войти или зарегистрироваться
- Меню → API Keys
- Create New Secret Key
- Скопировать и сохранить в безопасном месте
Шаг 2: Создание Credential в N8N
- N8N → Credentials (в левом меню)
- Create New
- Выбрать "OpenAI API"
- Вставить API Key
- Save
Шаг 3: Добавление узла OpenAI
- Create New Workflow
- Добавить триггер (например, Webhook)
- Добавить узел OpenAI
- Выбрать credential (только что создали)
- Выбрать операцию:
- Chat Completion
- Image Generation
- Embeddings
Пример: Chat Completion
Параметры узла:
{
"authentication": "openAI",
"resource": "chat",
"operation": "message",
"messages": [
{
"role": "system",
"content": "Ты помощник по N8N"
},
{
"role": "user",
"content": "Объясни что такое N8N"
}
],
"model": "gpt-4-turbo",
"temperature": 0.7,
"maxTokens": 2000
}
Пример: Image Generation
{
"resource": "image",
"operation": "generate",
"prompt": "N8N платформа автоматизации, цифровое искусство",
"number": 1,
"size": "1024x1024",
"responseFormat": "url"
}
Обработка ошибок
Ошибка: 401 Unauthorized
Причина: неправильный API Key
Решение: проверить и переввести ключ
Ошибка: 400 Bad Request
Причина: неверные параметры или размер контекста
Решение: проверить параметры, уменьшить max_tokens
Ошибка: 429 Rate Limited
Причина: слишком много запросов
Решение: добавить задержку между запросами, или upgrade план
Ошибка: 503 Service Unavailable
Причина: сервер OpenAI недоступен
Решение: повторить попытку через некоторое время
Практические примеры использования
Пример 1: Анализ тональности
Цель: Определить, позитивный ли отзыв о N8N
Конфигурация:
{
"model": "gpt-3.5-turbo",
"temperature": 0.0,
"maxTokens": 100,
"messages": [
{
"role": "system",
"content": "Проанализируй тональность следующего текста. Ответь только: POSITIVE, NEGATIVE или NEUTRAL"
},
{
"role": "user",
"content": "N8N отличная платформа для автоматизации!"
}
]
}
Почему эти параметры: - ✅ temperature: 0.0 — нужна точность, не креативность - ✅ max_tokens: 100 — ответ будет короткий - ✅ model: 3.5-turbo — дешево, достаточно для классификации
Пример 2: Генерация идей (Brainstorming)
Цель: Придумать 5 идей использования N8N
Конфигурация:
{
"model": "gpt-4",
"temperature": 1.8,
"maxTokens": 2000,
"topP": 0.95,
"messages": [
{
"role": "system",
"content": "Ты креативный дизайнер. Предложи нестандартные идеи."
},
{
"role": "user",
"content": "Придумай 5 необычных способов использовать N8N в бизнесе"
}
]
}
Почему эти параметры: - ✅ temperature: 1.8 — максимум креативности - ✅ topP: 0.95 — выбор из более широкого спектра - ✅ max_tokens: 2000 — нужно место для развернутого ответа
Пример 3: Обработка документов (RAG)
Цель: Ответить на вопрос по содержимому документа
N8N Workflow:
[Webhook с document_id]
↓
[Read file с диска]
↓
[OpenAI - Chat (с контекстом документа)]
↓
[HTTP Response]
OpenAI параметры:
{
"model": "gpt-4-turbo",
"temperature": 0.3,
"maxTokens": 1000,
"messages": [
{
"role": "system",
"content": "Ты помощник. Ответь на вопрос основываясь ТОЛЬКО на предоставленном документе. Если ответ не найден, скажи 'не найдено'"
},
{
"role": "user",
"content": "Документ:\n${document_content}\n\nВопрос: ${user_question}"
}
]
}
Пример 4: Многошаговый агент
Цель: Сложный workflow с несколькими вызовами LLM
Структура:
[Input]
↓
[LLM 1: Анализ (temperature: 0.2)]
↓
[Условие: Нужны ли дополнительные данные?]
↓ (да)
[LLM 2: Генерация уточняющего вопроса (temperature: 0.8)]
↓
[LLM 3: Синтез результата (temperature: 0.3)]
↓
[Output]
Пример 5: Обработка множества документов
Цель: Обработать 1000 документов через OpenAI
Оптимизация:
// Батчинг для экономии стоимости
const documents = [...]; // 1000 документов
for (let batch of getBatches(documents, 10)) {
// Обрабатываем по 10 одновременно
// Добавляем задержку 1 сек между батчами (не превышаем лимит)
await sleep(1000);
// Используем GPT-3.5-turbo (дешевле, чем GPT-4)
// temperature: 0.0 (консистентность)
// max_tokens: 500 (экономия)
}
Оптимизация параметров
Выбор модели
Таблица решений:
| Задача | Модель | Причина |
|---|---|---|
| Классификация | GPT-3.5-turbo | Дешево, достаточно быстро |
| Анализ текста | GPT-4 | Лучше понимает контекст |
| Генерация кода | GPT-4-turbo | Быстрее, все еще точнее |
| Embeddings | text-embedding-3-small | Специализирована, быстро |
| Image Gen | DALL-E 3 | Лучше качество |
| Локально | LLaMA 3 70B | Мощная, бесплатно |
| RAG | Claude 3 Sonnet | 200K контекст |
| Budget | DeepSeek-V3 | $0.27 за 1M токенов |
Оптимизация параметров
Шаг 1: Определить требования
□ Нужна точность → temperature: 0.0-0.3
□ Нужна креативность → temperature: 1.5+
□ Нужен короткий ответ → max_tokens: 100-500
□ Нужен длинный ответ → max_tokens: 2000+
Шаг 2: Выбрать моторту для эконмии
Низкая стоимость:
- GPT-3.5-turbo (простые задачи)
- DeepSeek (любые задачи)
- LLaMA локально (любые задачи)
Когда нужна мощность:
- GPT-4 (точность)
- Claude (контекст)
Шаг 3: Батчинг и кэширование
// Кэширование результатов
const cache = {};
function queryLLM(prompt) {
if (cache[prompt]) return cache[prompt];
const result = await openai.chat.create({...});
cache[prompt] = result;
return result;
}
// Батчинг запросов
async function processBatch(items) {
const promises = items.map(item => queryLLM(item));
return Promise.all(promises);
}
Мониторинг стоимости
В N8N:
// Добавить в каждый OpenAI узел
const tokens = {
inputTokens: $input.json.usage.prompt_tokens,
outputTokens: $input.json.usage.completion_tokens,
totalTokens: $input.json.usage.total_tokens
};
// Логировать стоимость
console.log(`Запрос стоил: $${calculateCost(tokens)}`);
Дебаг и лучшие практики
Проблемы и решения
Проблема: Модель возвращает одинаковые ответы
Решение:
- Если нужны разные ответы → увеличить temperature
- Если нужен один хороший ответ → это нормально (keep temperature: 0.0)
- Добавить top_p: 0.9
Проблема: Модель генерирует галлюцинации
Решение:
- Понизить temperature
- Убрать или понизить frequency_penalty
- Сделать system prompt более конкретным
- Добавить примеры (few-shot learning)
Проблема: Слишком дорого
Решение:
- Использовать GPT-3.5-turbo вместо GPT-4
- Уменьшить max_tokens
- Батчинг вместо одиночных запросов
- Кэширование результатов
- Использовать локальные модели (LLaMA)
Проблема: Медленно
Решение:
- Использовать более быструю модель (4-turbo, 3.5-turbo)
- Параллельные запросы
- Уменьшить max_tokens
- Использовать локальные модели
Лучшие практики
1. Структурируйте System Prompt
✅ ХОРОШО:
"Ты эксперт по N8N.
Правила:
1. Отвечай кратко (макс 500 слов)
2. Приводи примеры кода
3. Если не уверен, скажи честно
4. Используй русский язык"
❌ ПЛОХО:
"Помоги мне"
2. Используйте few-shot examples
"Вот примеры правильных ответов:
Q: Что такое N8N?
A: N8N - это платформа для автоматизации
Q: Как подключить OpenAI?
A: 1. Получить API key, 2. Создать credential...
Теперь твой вопрос:
Q: ..."
3. Проверяйте качество
// Добавить валидацию
if (response.length < 10) {
// Ответ слишком короткий
console.warn("Invalid response");
}
4. Логируйте все запросы
// Сохранять для анализа
const log = {
timestamp: new Date(),
model: "gpt-4",
prompt: userInput,
response: modelOutput,
tokens: usage,
cost: calculateCost(usage)
};
database.logs.insert(log);
5. Используйте правильные temperature значения
Temperature Map:
0.0 → точность, факты
0.3 → аналитика, классификация
0.7 → обычный чат
1.0 → нейтральный
1.5 → творчество
2.0 → максимум разнообразия
6. Обработка ошибок
try {
const response = await openai.chat.create({...});
return response;
} catch (error) {
if (error.status === 429) {
// Rate limit - подождать и повторить
await sleep(5000);
return retryRequest();
} else if (error.status === 400) {
// Bad request - логировать и сообщить
console.error("Invalid parameters:", error.message);
} else {
// Другая ошибка - лог и fallback
console.error("Unexpected error:", error);
return getFallbackResponse();
}
}
Шпаргалка: Быстрые настройки
Для Классификации:
model: gpt-3.5-turbo
temperature: 0.0
max_tokens: 50
Для Чат-бота:
model: gpt-3.5-turbo
temperature: 0.7
max_tokens: 500
Для Анализа:
model: gpt-4
temperature: 0.3
max_tokens: 1000
Для Генерации:
model: gpt-4
temperature: 1.0
max_tokens: 2000
top_p: 0.9
Для RAG (вопросы по документам):
model: gpt-4-turbo или claude-3-sonnet
temperature: 0.3
max_tokens: 1000
system: "Отвечай только на основе документа"
Для Кодирования:
model: gpt-4-turbo
temperature: 0.2
max_tokens: 4000
Заключение
Ключевые моменты
- Выбор модели — правильная модель экономит 10х стоимость
- Temperature — главный параметр для точности/креативности
- Max tokens — контролирует длину и стоимость ответа
- System Prompt — определяет поведение модели
- Параметры — меньше меняется, лучше результаты
Типичная ошибка
❌ ЧАСТО ДЕЛАЮТ:
- Используют GPT-4 для всего (дорого)
- Ставят temperature: 1.0 везде
- Не валидируют результаты
- Игнорируют стоимость запросов
✅ ПРАВИЛЬНО:
- Используют GPT-3.5 для 80% задач
- Подбирают temperature под задачу
- Добавляют проверки
- Мониторят стоимость
Дальнейшее обучение
- OpenAI Docs: https://platform.openai.com/docs
- N8N Docs: https://docs.n8n.io
- Prompt Engineering Guide: https://www.promptingguide.ai/ru
- DeepLearning.AI Courses: https://www.deeplearning.ai
Дата создания: November 2025
Версия: 1.0
Язык: Русский
Для кого: Разработчики N8N, автоматизаторы, AI энтузиасты