✨ Major Features: - Complete RAG system for hotel website analysis - Hybrid audit with BGE-M3 embeddings + Natasha NER - Universal horizontal Excel reports with dashboards - Multi-region processing (SPb, Orel, Chukotka, Kamchatka) 📊 Completed Regions: - Орловская область: 100% (36/36) - Чукотский АО: 100% (4/4) - г. Санкт-Петербург: 93% (893/960) - Камчатский край: 87% (89/102) 🔧 Infrastructure: - PostgreSQL with pgvector extension - BGE-M3 embeddings API - Browserless for web scraping - N8N workflows for automation - S3/Nextcloud file storage 📝 Documentation: - Complete DB schemas - API documentation - Setup guides - Status reports
7.0 KiB
7.0 KiB
🤖 НАСТРОЙКА AI AGENT В n8n ДЛЯ АУДИТА ОТЕЛЕЙ
📋 ФАЙЛЫ ДЛЯ НАСТРОЙКИ:
prompt.txt(21 KB) - Полный системный промптprompt_short.txt(2.1 KB) - Краткий промпт (если не влезет полный)questions_17.txt(3 KB) - 17 вопросов в текстовом форматеquestions_17.json(6.1 KB) - 17 вопросов в JSON формате
🔧 ПОШАГОВАЯ НАСТРОЙКА n8n:
ШАГ 1: Создай AI Agent Node
- Добавь ноду "AI Agent"
- Выбери модель: Ollama (или GPT-4o-mini)
- В поле "System Message" вставь содержимое из
prompt_short.txt
ШАГ 2: Подключи Vector Store
- Добавь ноду "Postgres Vector Store"
- Настрой подключение к БД:
- Host:
147.45.189.234 - Port:
5432 - Database:
default_db - User:
gen_user - Password:
2~~9_^kVsU?2^S
- Host:
- Укажи таблицу:
hotel_website_chunks - Колонка с эмбеддингами:
embedding - Колонка с текстом:
text
ШАГ 3: Создай Loop для 17 вопросов
- Добавь ноду "Code" с содержимым из
questions_17.json - Код для генерации 17 items:
const questions = $input.item.json.questions;
return questions.map(q => ({ json: q }));
- Подключи к "Loop Over Items"
ШАГ 4: Настрой AI Agent в Loop
Для каждого вопроса:
- AI Agent получает вопрос из
{{ $json.question }} - AI Agent ищет в Vector Store
- AI Agent возвращает ответ в формате:
✅ ДА, найдено. 📄 Цитата: "..." 🔗 URL: https://... 📊 Детали: ...
ШАГ 5: Обработка ответов
Добавь ноду "Code" для парсинга ответов:
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(максимум результатов)
🚀 ЗАПУСК:
- Импортируй workflow в n8n
- Укажи
hotel_idв начальной ноде - Запусти workflow
- Получи 17 оценок по критериям
- Сохрани результаты в БД
📈 ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
Для каждого из 17 критериев получишь:
- ✅ Оценка (0.0 - 1.0)
- 📄 Цитата из текста
- 🔗 URL страницы
- 📊 Детали (найденные значения)
⚠️ ВАЖНО:
- Критерий #6 "Роскомнадзор (реестр)" проверяется отдельно (не через AI Agent)
- Всего критериев: 18, но AI Agent проверяет только 17
- Итоговый балл: сумма всех 18 критериев (включая #6)
🔍 ОТЛАДКА:
Если AI Agent не находит информацию:
- Проверь подключение к Vector Store
- Проверь наличие эмбеддингов для отеля в
hotel_website_chunks - Увеличь
Top Kдо 10 - Уменьши
Similarity Thresholdдо 0.5 - Проверь промпт - используй
prompt_short.txt
📞 ПОДДЕРЖКА:
Если что-то не работает:
- Проверь логи n8n
- Проверь что Vector Store подключен
- Проверь что у отеля есть chunks в БД
- Проверь формат ответа AI Agent
Удачи! 🚀