От реактивного чатбота к автономному агенту: в чем разница?
Представьте разницу между сотрудником, который только отвечает на вопросы, и тем, кто сам видит проблему, планирует решение и выполняет его. Первый - это ваш типичный RAG-бот (уровень 1-2 автономии). Второй - агент 3-го уровня. И сегодня мы превратим Telegram-бота из первого во второго.
Почему именно 3-й уровень? Потому что 1-й - просто отвечает на вопросы. 2-й - может выполнять простые команды. 3-й - сам определяет, что нужно сделать, планирует последовательность действий и адаптируется к изменениям. Как будто вы наняли нового сотрудника, только он не требует зарплаты и не спит.
Важно: Агент 3-го уровня не просто исполняет команды - он сам решает, какие команды нужны. Если пользователь пишет "Мне нужно увеличить продажи", агент не ответит "Используйте маркетинговые стратегии". Он проанализирует текущие показатели, предложит конкретные действия и даже сможет их выполнить.
Архитектура: что скрывается под капотом
Наша конструкция строится на трех китах:
- Perception (Восприятие): Telegram бот + n8n webhook. Агент видит не только текст сообщения, но и контекст: кто отправил, когда, в каком чате, какие предыдущие сообщения были.
- Reasoning (Рассуждение): OpenRouter с моделями вроде Claude 3.5 Sonnet или GPT-4o. Здесь происходит магия: анализ задачи, планирование, принятие решений.
- Action (Действие): n8n workflow как набор инструментов. Отправка email, работа с Google Sheets, вызов API, создание задач в Trello - все что угодно.
| Компонент | Роль | Технология |
|---|---|---|
| Интерфейс | Взаимодействие с пользователем | Telegram Bot API |
| Мозг | Принятие решений и планирование | OpenRouter (LLM) |
| Руки | Выполнение действий | n8n workflows |
| Память | Контекст и история | PostgreSQL / Redis |
1 Подготовка: собираем инструменты
Сначала разберемся с тем, что нам понадобится. Не пугайтесь списка - половину можно развернуть за 5 минут.
- n8n: Локально или облачно. Я предпочитаю локальную установку через Docker - меньше зависимостей от интернета. Если еще не знакомы с n8n, рекомендую начать с нашего гайда по локальным ассистентам.
- OpenRouter аккаунт: Регистрация занимает минуту. Берите бесплатные $1 для тестов.
- Telegram Bot: Пишите @BotFather, создаете бота, получаете токен. Тривиально.
- База данных: PostgreSQL для хранения истории диалогов. Можно и SQLite, но для продакшена лучше PostgreSQL.
# Установка n8n через Docker
docker run -d \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n:latest
2 Создаем скелет агента: базовый workflow
Открываем n8n и создаем новый workflow. Назовем его "AI Agent Core". Вот как будет выглядеть базовая структура:
// Структура данных для агента
{
"user_input": "Нужно увеличить продажи в этом месяце",
"user_id": "123456789",
"chat_id": "-1001234567890",
"context": {
"previous_messages": [...],
"available_tools": ["send_email", "update_spreadsheet", "create_task"],
"current_state": "idle"
}
}
Первая нода - Telegram Trigger. Настраиваем webhook. Вторая - "Get Chat History" (запрос к PostgreSQL). Третья - "Construct Prompt". Вот здесь начинается интересное.
Ошибка новичков: Не храните всю историю диалога в prompt. Это дорого и неэффективно. Используйте векторный поиск по последним N сообщениям или суммируйте историю. Подробнее в статье про память агентов.
3 Реализуем Perception-Reasoning-Action цикл
Вот где обычные боты ломаются. Они получают сообщение - отправляют в LLM - возвращают ответ. Наш агент работает иначе:
- Perception: Анализируем не только текст, но и метаданные. Пользователь пишет "срочно!"? Помечаем приоритет. Отправляет файл? Извлекаем текст.
- Reasoning: LLM определяет тип задачи, выбирает инструменты, строит план. Ключевой момент - агент должен уметь сказать "я не могу это сделать" или "мне нужна дополнительная информация".
- Action: Выполняем план через n8n workflows. Если действие требует подтверждения - спрашиваем пользователя.
Вот пример prompt для Reasoning этапа:
Ты - автономный бизнес-агент уровня 3. Твоя задача: анализировать запросы пользователей и выполнять действия через доступные инструменты.
Доступные инструменты:
1. send_email - отправить email (требует: адрес, тема, текст)
2. update_spreadsheet - обновить Google Sheets (требует: ID таблицы, данные)
3. create_task - создать задачу в Trello (требует: название, описание, список)
Анализируй запрос пользователя и определи:
1. Какой тип задачи? (информационный, действие, комбинированный)
2. Какие инструменты нужны?
3. Какой план выполнения?
4. Нужно ли уточнение у пользователя?
Верни ответ в формате JSON:
{
"task_type": "...",
"required_tools": ["..."],
"execution_plan": ["шаг 1", "шаг 2"],
"needs_clarification": true/false,
"clarification_question": "..."
}
4 Интеграция OpenRouter: настройка и оптимизация
OpenRouter хорош тем, что дает доступ к десяткам моделей через один API. Но есть нюансы:
// n8n HTTP Request нода к OpenRouter
{
"url": "https://openrouter.ai/api/v1/chat/completions",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_API_KEY",
"HTTP-Referer": "http://localhost:5678",
"X-Title": "AI Agent"
},
"body": {
"model": "anthropic/claude-3.5-sonnet",
"messages": [
{"role": "system", "content": "Ты автономный агент..."},
{"role": "user", "content": "{{user_input}}"}
],
"temperature": 0.7,
"max_tokens": 2000
}
}
Как экономить на токенах? Во-первых, сжимайте историю диалога. Во-вторых, используйте structured outputs - заставляйте модель возвращать JSON вместо свободного текста. В-третьих, кэшируйте похожие запросы.
5 Создаем инструменты (Actions) в n8n
Инструменты - это отдельные workflows в n8n, которые агент может вызывать. Вот пример workflow для отправки email:
Нода 1: HTTP Request (входная точка)
- Ждет POST запрос с параметрами: to, subject, body
Нода 2: Validate Input
- Проверяет, что email валиден
- Проверяет, что subject не пустой
Нода 3: Send Email (SMTP)
- Настройки SMTP сервера
- Формирует письмо
Нода 4: Log Result
- Записывает в базу результат отправки
- Возвращает success/failure
Ключевой момент: каждый инструмент должен возвращать четкий результат (успех/ошибка) и подробности. Агент должен понимать, получилось ли выполнить действие и почему.
Как агент узнает об инструментах? Создайте "Registry" workflow, который возвращает список доступных инструментов и их описаний. Агент запрашивает этот список при инициализации или периодически обновляет.
6 Реализуем State Management (управление состоянием)
Агент 3-го уровня должен помнить не только историю диалога, но и состояние выполнения задачи. Пример:
{
"task_id": "task_123",
"current_step": 2,
"total_steps": 5,
"status": "waiting_for_confirmation",
"data_collected": {
"client_email": "client@example.com",
"project_name": "Новый проект"
},
"next_action": "send_proposal_email",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:35:00Z"
}
Храните это в Redis для быстрого доступа или PostgreSQL для надежности. При каждом взаимодействии агент проверяет состояние задачи и решает, что делать дальше.
Предупреждение: Не делайте состояние слишком сложным. Если агент теряет контекст после 10 шагов - проблема в дизайне, а не в реализации. Читайте про stateful memory в нашей статье.
7 Тестирование и отладка: находим слабые места
Собрали агента? Отлично. Теперь сломайте его. Серьезно. Вот что нужно проверять:
- Неоднозначные запросы: "Сделай что-нибудь" - агент должен спросить уточнение, а не гадать.
- Прерывание задачи: Пользователь говорит "стоп" во время выполнения многошаговой задачи.
- Ошибки инструментов: Что если email не отправляется? Агент должен попробовать альтернативный способ или сообщить об ошибке.
- Контекстное переключение: Пользователь спрашивает про погоду, пока агент составляет отчет.
Создайте тестовый сценарий в n8n с набором входных данных и ожидаемых результатов. Автоматизируйте тестирование.
Реальные кейсы: что может такой агент
Теория теорией, но что на практике? Вот несколько примеров из реальных проектов:
| Задача | Действия агента | Сложность |
|---|---|---|
| Обработка лида | 1. Записать в CRM 2. Отправить welcome email 3. Создать задачу менеджеру 4. Запланировать follow-up |
Средняя |
| Ежедневный отчет | 1. Собрать данные из 3 систем 2. Сгенерировать анализ 3. Отправить в Slack 4. Обновить dashboard |
Высокая |
| Напоминание о встречах | 1. Проверить календарь 2. Отправить напоминание 3. Подготовить материалы 4. Обновить статус |
Низкая |
Ошибки, которые все совершают (и как их избежать)
После десятка внедрений таких агентов, я собрал топ-5 ошибок:
- Слишком много свободы: Давать агенту доступ ко всем инструментам сразу - рецепт катастрофы. Начинайте с 2-3 простых действий.
- Игнорирование ошибок: LLM ошибается. Инструменты ломаются. Добавляйте обработку ошибок на каждом уровне.
- Нет лимитов: Агент может зациклиться в reasoning loop. Ставьте максимальное количество шагов и таймауты.
- Плохие промпты: "Ты полезный ассистент" - это не промпт. Детализируйте роль, ограничения, формат ответов.
- Нет мониторинга: Не знаете, что агент делает? Добавляйте логирование каждого действия и reasoning шага.
Особенно обратите внимание на пункт 3. Без лимитов ваш агент может потратить $100 на API вызовы, пытаясь решить неразрешимую задачу.
Что дальше? Эволюция агента
Вы создали базового агента 3-го уровня. Куда развивать дальше?
- Мультиагентные системы: Разные агенты для разных задач, которые координируются между собой. Об этом мы писали в статье про суб-агентов.
- Обучение на основе обратной связи: Агент улучшает свои промпты и стратегии на основе успешных/неуспешных выполнений.
- Интеграция с RAG: Добавьте векторную базу знаний, чтобы агент мог использовать внутренние документы. Полное руководство здесь.
- Голосовой интерфейс: Добавьте STT/TTS для голосового взаимодействия.
Самый важный совет: начинайте с малого. Не пытайтесь сразу создать универсального супер-агента. Возьмите одну конкретную бизнес-задачу (например, обработка заявок с сайта), реализуйте ее идеально, затем добавляйте следующую.
Через месяц у вас будет не просто "еще один чат-бот", а полноценный автономный сотрудник, который работает 24/7, не устает и постоянно улучшается. И все это на стеке, который стоит копейки по сравнению с корпоративными решениями.
P.S. Если ваш агент начал проявлять признаки самосознания - немедленно отключайте интернет. Шучу. Но мониторить логи все равно нужно.