Files
hotels/N8N_SETUP.md
Фёдор 684fada337 🚀 Full project sync: Hotels RAG & Audit System
 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
2025-10-27 22:49:42 +03:00

220 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🤖 НАСТРОЙКА 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
**Удачи! 🚀**