- Краулеры: smart_crawler.py, regional_crawler.py - Аудит: audit_orel_to_excel.py, audit_chukotka_to_excel.py - РКН проверка: check_rkn_registry.py, recheck_unclear_rkn.py - Отчёты: create_orel_horizontal_report.py - Обработка: process_all_hotels_embeddings.py - Документация: README.md, DB_SCHEMA_REFERENCE.md
300 lines
8.2 KiB
Markdown
300 lines
8.2 KiB
Markdown
# 🤖 РУКОВОДСТВО ПО LLM МОДЕЛЯМ
|
||
|
||
## 📋 ВОЗМОЖНОСТИ
|
||
|
||
Система поддерживает **3 провайдера** LLM:
|
||
- **OpenAI** (GPT-4o, GPT-4o-mini) - через прокси ✅
|
||
- **OpenRouter** (Claude, Gemini, и др.) - через прокси
|
||
- **Ollama** (локальные модели) - без прокси
|
||
|
||
Вы можете:
|
||
1. ✅ Легко переключаться между провайдерами
|
||
2. ✅ Менять модель на лету через API
|
||
3. ✅ Тестировать разные модели для чата
|
||
4. ✅ Настраивать temperature и max_tokens
|
||
|
||
---
|
||
|
||
## ⚙️ НАСТРОЙКА
|
||
|
||
### 1. Через конфигурационный файл
|
||
|
||
Откройте `llm_config.py`:
|
||
|
||
```python
|
||
# Выберите провайдера
|
||
ACTIVE_PROVIDER = 'openai' # 'openai', 'openrouter', 'ollama'
|
||
```
|
||
|
||
**Доступные модели OpenAI:**
|
||
- `gpt-4o-mini` - быстрая, дешёвая (по умолчанию)
|
||
- `gpt-4o` - умная, дорогая
|
||
- `gpt-4-turbo` - средняя по скорости/качеству
|
||
|
||
**Доступные модели OpenRouter:**
|
||
- `anthropic/claude-3-haiku` - быстрая
|
||
- `anthropic/claude-3.5-sonnet` - умная
|
||
- `google/gemini-flash-1.5` - дешёвая
|
||
|
||
**Доступные модели Ollama:**
|
||
- `llama3.2` - быстрая (3B параметров)
|
||
- `llama3.1:70b` - умная (70B параметров)
|
||
- `qwen2.5:14b` - хороша для анализа
|
||
- `saiga_llama3` - для русского языка
|
||
|
||
### 2. Через переменные окружения
|
||
|
||
```bash
|
||
# Выбор провайдера
|
||
export LLM_PROVIDER=openai
|
||
|
||
# Выбор модели
|
||
export CHAT_MODEL=gpt-4o-mini
|
||
|
||
# Параметры
|
||
export LLM_TEMPERATURE=0.7 # Креативность (0.0-1.0)
|
||
export LLM_MAX_TOKENS=1000 # Макс. токенов в ответе
|
||
```
|
||
|
||
### 3. Через API на лету
|
||
|
||
```bash
|
||
# Узнать текущую модель
|
||
curl http://localhost:8888/api/llm/info
|
||
|
||
# Получить список моделей
|
||
curl http://localhost:8888/api/llm/models
|
||
|
||
# Переключить модель
|
||
curl -X POST http://localhost:8888/api/llm/switch \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"model":"gpt-4o"}'
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
|
||
|
||
### Пример 1: OpenAI GPT-4o-mini (по умолчанию)
|
||
|
||
```bash
|
||
# Уже настроено! Просто используйте
|
||
curl -X POST http://localhost:8888/api/chat \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"message":"Сколько отелей в Москве?"}'
|
||
```
|
||
|
||
### Пример 2: OpenAI GPT-4o (умная модель)
|
||
|
||
```bash
|
||
# Переключаемся на GPT-4o
|
||
curl -X POST http://localhost:8888/api/llm/switch \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"model":"gpt-4o"}'
|
||
|
||
# Теперь чат использует GPT-4o
|
||
curl -X POST http://localhost:8888/api/chat \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"message":"Проанализируй качество сайтов отелей Чукотки"}'
|
||
```
|
||
|
||
### Пример 3: OpenRouter с Claude
|
||
|
||
```bash
|
||
# 1. Получите API ключ на openrouter.ai
|
||
# 2. Добавьте в llm_config.py:
|
||
# OPENROUTER_CONFIG['api_key'] = 'sk-or-v1-...'
|
||
|
||
# 3. Измените провайдера в llm_config.py:
|
||
# ACTIVE_PROVIDER = 'openrouter'
|
||
|
||
# 4. Перезапустите веб-интерфейс:
|
||
pkill -f web_interface.py
|
||
cd /root/engine/public_oversight/hotels
|
||
source venv/bin/activate
|
||
python web_interface.py &
|
||
|
||
# 5. Проверьте:
|
||
curl http://localhost:8888/api/llm/info
|
||
```
|
||
|
||
### Пример 4: Локальная Ollama
|
||
|
||
```bash
|
||
# 1. Установите Ollama (если ещё нет)
|
||
curl -fsSL https://ollama.com/install.sh | sh
|
||
|
||
# 2. Запустите Ollama
|
||
ollama serve &
|
||
|
||
# 3. Скачайте модель
|
||
ollama pull llama3.2
|
||
|
||
# 4. Измените llm_config.py:
|
||
# ACTIVE_PROVIDER = 'ollama'
|
||
|
||
# 5. Перезапустите веб-интерфейс
|
||
|
||
# 6. Используйте локальную модель:
|
||
curl -X POST http://localhost:8888/api/chat \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"message":"Привет!"}'
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 СРАВНЕНИЕ МОДЕЛЕЙ
|
||
|
||
| Модель | Провайдер | Скорость | Качество | Цена | Через прокси |
|
||
|--------|-----------|----------|----------|------|--------------|
|
||
| **gpt-4o-mini** | OpenAI | ⚡⚡⚡ | ⭐⭐⭐ | 💵 | ✅ |
|
||
| **gpt-4o** | OpenAI | ⚡⚡ | ⭐⭐⭐⭐⭐ | 💵💵💵 | ✅ |
|
||
| **claude-3-haiku** | OpenRouter | ⚡⚡⚡ | ⭐⭐⭐⭐ | 💵 | ✅ |
|
||
| **claude-3.5-sonnet** | OpenRouter | ⚡⚡ | ⭐⭐⭐⭐⭐ | 💵💵💵 | ✅ |
|
||
| **llama3.2** | Ollama | ⚡⚡⚡⚡ | ⭐⭐⭐ | 🆓 | ❌ |
|
||
| **llama3.1:70b** | Ollama | ⚡ | ⭐⭐⭐⭐ | 🆓 | ❌ |
|
||
|
||
**Рекомендации:**
|
||
- **Для чата:** gpt-4o-mini (быстро и дёшево)
|
||
- **Для анализа:** gpt-4o или claude-3.5-sonnet (лучшее качество)
|
||
- **Для экспериментов:** Ollama llama3.2 (бесплатно, офлайн)
|
||
|
||
---
|
||
|
||
## 🔧 ТЕСТИРОВАНИЕ МОДЕЛЕЙ
|
||
|
||
### Скрипт для сравнения
|
||
|
||
Создайте `test_models.sh`:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
|
||
models=("gpt-4o-mini" "gpt-4o")
|
||
question='{"message":"Сколько отелей в Чукотском АО имеют сайты?"}'
|
||
|
||
for model in "${models[@]}"; do
|
||
echo "=== Тестирую $model ==="
|
||
|
||
# Переключаем модель
|
||
curl -s -X POST http://localhost:8888/api/llm/switch \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"model\":\"$model\"}"
|
||
|
||
# Задаём вопрос
|
||
start=$(date +%s%N)
|
||
response=$(curl -s -X POST http://localhost:8888/api/chat \
|
||
-H "Content-Type: application/json" \
|
||
-d "$question")
|
||
end=$(date +%s%N)
|
||
|
||
# Время ответа
|
||
time_ms=$(( (end - start) / 1000000 ))
|
||
|
||
echo "Модель: $model"
|
||
echo "Время: ${time_ms}ms"
|
||
echo "Ответ: $(echo $response | python3 -c 'import sys,json; print(json.load(sys.stdin)["response"][:200])')"
|
||
echo ""
|
||
done
|
||
```
|
||
|
||
Запустите:
|
||
```bash
|
||
chmod +x test_models.sh
|
||
./test_models.sh
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 API ENDPOINTS
|
||
|
||
### GET /api/llm/info
|
||
Информация о текущей модели
|
||
|
||
**Ответ:**
|
||
```json
|
||
{
|
||
"provider": "openai",
|
||
"chat_model": "gpt-4o-mini",
|
||
"temperature": 0.3,
|
||
"max_tokens": 800,
|
||
"uses_proxy": true
|
||
}
|
||
```
|
||
|
||
### GET /api/llm/models
|
||
Список доступных моделей
|
||
|
||
**Ответ:**
|
||
```json
|
||
{
|
||
"current_provider": "openai",
|
||
"current_model": "gpt-4o-mini",
|
||
"models": {
|
||
"fast": "gpt-4o-mini",
|
||
"smart": "gpt-4o",
|
||
"chat": "gpt-4o-mini"
|
||
}
|
||
}
|
||
```
|
||
|
||
### POST /api/llm/switch
|
||
Переключить модель
|
||
|
||
**Запрос:**
|
||
```json
|
||
{
|
||
"model": "gpt-4o"
|
||
}
|
||
```
|
||
|
||
**Ответ:**
|
||
```json
|
||
{
|
||
"status": "switched",
|
||
"new_model": "gpt-4o",
|
||
"provider": "openai"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ ВАЖНЫЕ ЗАМЕЧАНИЯ
|
||
|
||
1. **Прокси:**
|
||
- OpenAI и OpenRouter работают через прокси `195.133.66.13:3128`
|
||
- Ollama работает локально без прокси
|
||
|
||
2. **API ключи:**
|
||
- OpenAI ключ уже настроен в `llm_config.py`
|
||
- Для OpenRouter нужен свой ключ: https://openrouter.ai/keys
|
||
|
||
3. **Стоимость:**
|
||
- GPT-4o-mini: ~$0.15 за 1М токенов (вход) + $0.60 (выход)
|
||
- GPT-4o: ~$5.00 за 1М токенов (вход) + $15.00 (выход)
|
||
- Ollama: бесплатно, но требует мощное железо
|
||
|
||
4. **Переключение модели:**
|
||
- Работает без перезапуска сервера
|
||
- Применяется сразу к следующему запросу
|
||
- Не влияет на конфигурационный файл (изменение временное)
|
||
|
||
---
|
||
|
||
## 🎓 ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ
|
||
|
||
- **OpenAI Models:** https://platform.openai.com/docs/models
|
||
- **OpenRouter:** https://openrouter.ai/models
|
||
- **Ollama:** https://ollama.com/library
|
||
- **Наша документация:** `/root/engine/public_oversight/hotels/QUICK_START.md`
|
||
|
||
---
|
||
|
||
**Создано:** 2025-10-11
|
||
**Версия:** 1.0
|
||
**Статус:** ✅ Работает
|
||
|
||
|
||
|
||
|