# 🤖 НАСТРОЙКА AI AGENT В n8n ДЛЯ АУДИТА ОТЕЛЕЙ ## 📋 **ФАЙЛЫ ДЛЯ НАСТРОЙКИ:** 1. **`prompt.txt`** (21 KB) - Полный системный промпт 2. **`prompt_short.txt`** (2.1 KB) - Краткий промпт (если не влезет полный) 3. **`questions_17.txt`** (3 KB) - 17 вопросов в текстовом формате 4. **`questions_17.json`** (6.1 KB) - 17 вопросов в JSON формате --- ## 🔧 **ПОШАГОВАЯ НАСТРОЙКА n8n:** ### **ШАГ 1: Создай AI Agent Node** 1. Добавь ноду **"AI Agent"** 2. Выбери модель: **Ollama** (или GPT-4o-mini) 3. В поле **"System Message"** вставь содержимое из `prompt_short.txt` ### **ШАГ 2: Подключи Vector Store** 1. Добавь ноду **"Postgres Vector Store"** 2. Настрой подключение к БД: - Host: `147.45.189.234` - Port: `5432` - Database: `default_db` - User: `gen_user` - Password: `2~~9_^kVsU?2^S` 3. Укажи таблицу: `hotel_website_chunks` 4. Колонка с эмбеддингами: `embedding` 5. Колонка с текстом: `text` ### **ШАГ 3: Создай Loop для 17 вопросов** 1. Добавь ноду **"Code"** с содержимым из `questions_17.json` 2. Код для генерации 17 items: ```javascript const questions = $input.item.json.questions; return questions.map(q => ({ json: q })); ``` 3. Подключи к **"Loop Over Items"** ### **ШАГ 4: Настрой AI Agent в Loop** Для каждого вопроса: 1. AI Agent получает вопрос из `{{ $json.question }}` 2. AI Agent ищет в Vector Store 3. AI Agent возвращает ответ в формате: ``` ✅ ДА, найдено. 📄 Цитата: "..." 🔗 URL: https://... 📊 Детали: ... ``` ### **ШАГ 5: Обработка ответов** Добавь ноду **"Code"** для парсинга ответов: ```javascript const answer = $input.item.json.output; // Проверка на наличие информации const isFound = answer.includes('✅ ДА') || answer.includes('найдено'); const isNotFound = answer.includes('❌ НЕТ') || answer.includes('не найдено'); // Извлечение цитаты const quoteMatch = answer.match(/📄 Цитата: "(.+?)"/s); const quote = quoteMatch ? quoteMatch[1] : ''; // Извлечение URL const urlMatch = answer.match(/🔗 URL: (.+)/); const url = urlMatch ? urlMatch[1].trim() : ''; // Оценка let score = 0.0; if (isFound && quote && url) { score = 1.0; } else if (isFound && quote) { score = 0.5; } else if (isNotFound) { score = 0.0; } else { score = 0.2; } return { json: { criterion_id: $input.item.json.id, criterion_name: $input.item.json.name, question: $input.item.json.question, ai_answer: answer, score: score, quote: quote, url: url, is_found: isFound } }; ``` --- ## 📊 **СТРУКТУРА WORKFLOW:** ``` ┌─────────────────┐ │ Start │ └────────┬────────┘ │ ▼ ┌─────────────────────────────┐ │ Code: Load 17 Questions │ │ (из questions_17.json) │ └────────┬────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Loop Over Items │ │ (17 вопросов) │ └────────┬────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ AI Agent │ │ + Postgres Vector Store │ │ (ищет ответ в chunks) │ └────────┬────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Code: Parse Answer │ │ (извлекает цитату, URL) │ └────────┬────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Aggregate Results │ │ (собирает все 17 ответов) │ └────────┬────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ PostgreSQL: Save Results │ │ (сохраняет в БД) │ └─────────────────────────────┘ ``` --- ## 🎯 **КЛЮЧЕВЫЕ ПАРАМЕТРЫ:** ### **AI Agent:** - **Temperature:** `0.1` (низкая, для точности) - **Max Tokens:** `500` (достаточно для ответа) - **Top K:** `5` (количество релевантных chunks) ### **Vector Store:** - **Similarity Threshold:** `0.7` (порог релевантности) - **Max Results:** `5` (максимум результатов) --- ## 🚀 **ЗАПУСК:** 1. Импортируй workflow в n8n 2. Укажи `hotel_id` в начальной ноде 3. Запусти workflow 4. Получи 17 оценок по критериям 5. Сохрани результаты в БД --- ## 📈 **ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:** Для каждого из 17 критериев получишь: - ✅ Оценка (0.0 - 1.0) - 📄 Цитата из текста - 🔗 URL страницы - 📊 Детали (найденные значения) --- ## ⚠️ **ВАЖНО:** - Критерий #6 "Роскомнадзор (реестр)" проверяется **отдельно** (не через AI Agent) - Всего критериев: **18**, но AI Agent проверяет только **17** - Итоговый балл: сумма всех 18 критериев (включая #6) --- ## 🔍 **ОТЛАДКА:** Если AI Agent не находит информацию: 1. Проверь подключение к Vector Store 2. Проверь наличие эмбеддингов для отеля в `hotel_website_chunks` 3. Увеличь `Top K` до 10 4. Уменьши `Similarity Threshold` до 0.5 5. Проверь промпт - используй `prompt_short.txt` --- ## 📞 **ПОДДЕРЖКА:** Если что-то не работает: 1. Проверь логи n8n 2. Проверь что Vector Store подключен 3. Проверь что у отеля есть chunks в БД 4. Проверь формат ответа AI Agent **Удачи! 🚀**