{
  "name": "Скелет ИИ-агента в Telegram (гайд ii-v-dele.ru)",
  "nodes": [
    {
      "id": "agent-000",
      "name": "Инструкция",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-780, 60],
      "parameters": {
        "content": "## Скелет ИИ-агента из гайда\n\nСборка из шага 3: триггер → агент с памятью → ответ.\nРазбор по шагам: https://ii-v-dele.ru/blog/ii-agent-na-n8n/\n\n### Что подставить\n\n1. **Telegram.** Бот у @BotFather → одни credentials на оба Telegram-узла.\n2. **Модель.** В узле «Модель» создайте credentials типа OpenAI:\n   • Base URL: `https://llm.api.cloud.yandex.net/v1`\n   • API Key: ключ сервисного аккаунта Yandex Cloud\n   Подойдёт любой OpenAI-совместимый эндпоинт — GigaChat, свой сервер.\n3. **Model** в том же узле: замените `ЗАМЕНИТЕ_FOLDER_ID` на идентификатор\n   каталога Yandex Cloud. Список моделей в выпадающем списке не загрузится —\n   это нормально, впишите значение строкой.\n4. **Промпт** в узле «Агент»: подставьте название компании и базу знаний.\n   Расширенный шаблон промпта:\n   https://ii-v-dele.ru/static/files/promt-shablon-ii-agenta.txt\n\nТребуется n8n 1.60 или новее (узлы AI Agent и Simple Memory).",
        "width": 460,
        "height": 460
      }
    },
    {
      "id": "agent-001",
      "name": "Сообщение в Telegram",
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1.1,
      "position": [-280, 260],
      "parameters": {
        "updates": ["message"],
        "additionalFields": {}
      }
    },
    {
      "id": "agent-002",
      "name": "Агент",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.6,
      "position": [-40, 260],
      "parameters": {
        "agent": "toolsAgent",
        "promptType": "define",
        "text": "={{ $json.message.text }}",
        "options": {
          "systemMessage": "РОЛЬ: Ты — ассистент компании ЗАМЕНИТЕ_НАЗВАНИЕ. Отвечаешь клиентам в Telegram.\n\nГРАНИЦЫ: Отвечай только по базе знаний ниже. Никогда не выдумывай факты, цены и сроки — если ответа в базе нет, скажи об этом прямо и предложи позвать менеджера. Не давай юридических, налоговых и медицинских консультаций.\n\nТОН: Дружелюбно, коротко, без канцелярита. На «вы». Ответ — 2–5 предложений.\n\nДАННЫЕ: Цены и сроки бери из базы дословно, не пересчитывай и не округляй.\n\nДЕЙСТВИЯ: Если клиент готов оставить заявку — собери имя, телефон и суть запроса и подтверди, что с ним свяжутся.\n\nЗАДАЧА: Если клиент недоволен, вопрос нестандартный или ты не уверен — скажи, что передаёшь менеджеру.\n\nБАЗА ЗНАНИЙ:\nЗАМЕНИТЕ: услуги, цены, сроки, график, адрес, типовые вопросы и правильные ответы."
        }
      }
    },
    {
      "id": "agent-003",
      "name": "Модель",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1,
      "position": [-100, 480],
      "parameters": {
        "model": "gpt://ЗАМЕНИТЕ_FOLDER_ID/deepseek-v4-flash/latest",
        "options": {
          "temperature": 0.3
        }
      }
    },
    {
      "id": "agent-004",
      "name": "Память диалога",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.2,
      "position": [60, 480],
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Сообщение в Telegram').item.json.message.chat.id }}",
        "contextWindowLength": 15
      }
    },
    {
      "id": "agent-005",
      "name": "Ответ клиенту",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [220, 260],
      "parameters": {
        "resource": "message",
        "operation": "sendMessage",
        "chatId": "={{ $('Сообщение в Telegram').item.json.message.chat.id }}",
        "text": "={{ $json.output }}",
        "additionalFields": {}
      }
    },
    {
      "id": "agent-006",
      "name": "Шаг 4: инструменты",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [420, 420],
      "parameters": {
        "content": "## Дальше — инструменты (шаг 4 гайда)\n\nК узлу «Агент» снизу подключаются инструменты. Порядок подключения:\n\n1. **Поиск по базе знаний** — начните с узла, читающего один структурированный документ; следующий уровень — векторная база.\n2. **HTTP-запрос в CRM** — «создать сделку». Один сервисный пользователь с минимальными правами, одно действие.\n3. **Задача менеджеру** — сообщение в рабочий чат, когда агент не уверен или клиент недоволен. Обязательный инструмент, а не опция.\n\nПеред живыми клиентами — прогон на 20–30 реальных вопросах и Error Workflow на случай, когда модель или CRM недоступны.",
        "width": 420,
        "height": 300
      }
    }
  ],
  "connections": {
    "Сообщение в Telegram": {
      "main": [[{ "node": "Агент", "type": "main", "index": 0 }]]
    },
    "Агент": {
      "main": [[{ "node": "Ответ клиенту", "type": "main", "index": 0 }]]
    },
    "Модель": {
      "ai_languageModel": [[{ "node": "Агент", "type": "ai_languageModel", "index": 0 }]]
    },
    "Память диалога": {
      "ai_memory": [[{ "node": "Агент", "type": "ai_memory", "index": 0 }]]
    }
  },
  "settings": { "executionOrder": "v1" },
  "pinData": {}
}
