Files
hotels/N8N_SETUP.md

219 lines
7.0 KiB
Markdown
Raw Normal View History

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