- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
177 lines
6.2 KiB
Markdown
177 lines
6.2 KiB
Markdown
# 🔧 Виправлення підключення Monitor Agent
|
||
|
||
**Дата:** 2025-11-23
|
||
**Проблема:** Monitor Agent Service повертає 500 Internal Server Error при спробі надіслати повідомлення
|
||
|
||
## 🔍 Діагностика проблеми
|
||
|
||
### Виявлені проблеми:
|
||
|
||
1. ✅ **Monitor Agent Service працює** на порту 9500
|
||
- Health check: `http://localhost:9500/health` → `{"status":"ok"}`
|
||
- Процес: Python (PID: 17336)
|
||
|
||
2. ❌ **Ollama на НОДА2 недоступний**
|
||
- URL: `http://192.168.1.244:11434`
|
||
- Помилка: Connection refused / Timeout
|
||
|
||
3. ✅ **Ollama локально працює**
|
||
- URL: `http://localhost:11434`
|
||
- Доступні моделі: `mistral-nemo:12b`, `gpt-oss:latest`, `gemma2:27b`, тощо
|
||
|
||
### Причина помилки:
|
||
|
||
Monitor Agent Service налаштований на підключення до Ollama на НОДА2 (`192.168.1.244:11434`), але:
|
||
- НОДА2 недоступний з локальної машини
|
||
- Ollama працює локально на `localhost:11434`
|
||
|
||
Коли Monitor Agent Service намагається зробити запит до Ollama на НОДА2, він отримує помилку з'єднання, що призводить до 500 Internal Server Error.
|
||
|
||
## ✅ Виправлення
|
||
|
||
### 1. Змінено конфігурацію за замовчуванням
|
||
|
||
**Файл:** `services/monitor-agent-service/app/main.py`
|
||
|
||
```python
|
||
# Було:
|
||
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://192.168.1.244:11434") # НОДА2
|
||
MISTRAL_MODEL = os.getenv("MISTRAL_MODEL", "mistral:7b")
|
||
|
||
# Стало:
|
||
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") # Локальний Ollama
|
||
MISTRAL_MODEL = os.getenv("MISTRAL_MODEL", "mistral-nemo:12b") # Доступна модель
|
||
```
|
||
|
||
### 2. Додано fallback на доступні моделі
|
||
|
||
Якщо вказана модель недоступна, сервіс автоматично пробує інші:
|
||
1. `mistral-nemo:12b` (за замовчуванням)
|
||
2. `gpt-oss:latest`
|
||
3. `mistral:7b`
|
||
4. `mistral:latest`
|
||
|
||
### 3. Покращена обробка помилок
|
||
|
||
- Детальні повідомлення про помилки
|
||
- Автоматичний fallback на доступні моделі
|
||
- Логування використаної моделі
|
||
|
||
## 🚀 Як застосувати виправлення
|
||
|
||
### Варіант 1: Перезапустити сервіс (якщо запущений через uvicorn)
|
||
|
||
```bash
|
||
# Знайти процес
|
||
ps aux | grep "uvicorn.*monitor-agent"
|
||
|
||
# Перезапустити сервіс
|
||
cd services/monitor-agent-service
|
||
source venv/bin/activate # Якщо використовується venv
|
||
python -m uvicorn app.main:app --host 0.0.0.0 --port 9500 --reload
|
||
```
|
||
|
||
### Варіант 2: Налаштувати через environment variables
|
||
|
||
```bash
|
||
# Якщо потрібно підключитися до НОДА2
|
||
export OLLAMA_BASE_URL=http://192.168.1.244:11434
|
||
|
||
# Якщо потрібно використовувати іншу модель
|
||
export MISTRAL_MODEL=mistral:7b
|
||
|
||
# Перезапустити сервіс
|
||
```
|
||
|
||
### Варіант 3: Перевірити, чи сервіс автоматично перезапустився
|
||
|
||
Якщо сервіс запущений з `--reload`, він має автоматично перезапуститися після зміни файлу.
|
||
|
||
## ✅ Перевірка
|
||
|
||
1. **Перевірити health check:**
|
||
```bash
|
||
curl http://localhost:9500/health
|
||
```
|
||
Має повернути: `{"status":"ok","service":"monitor-agent-service"}`
|
||
|
||
2. **Перевірити підключення до Ollama:**
|
||
```bash
|
||
curl http://localhost:11434/api/tags
|
||
```
|
||
Має повернути список доступних моделей
|
||
|
||
3. **Протестувати чат:**
|
||
```bash
|
||
curl -X POST http://localhost:9500/api/agent/monitor/chat \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"agent_id":"monitor","message":"Привіт!","node_id":null}'
|
||
```
|
||
Має повернути відповідь від Monitor Agent
|
||
|
||
4. **Перевірити в UI:**
|
||
- Відкрити `http://localhost:8899/dagi-monitor`
|
||
- Надіслати повідомлення в Monitor Agent Chat
|
||
- Має з'явитися відповідь замість помилки
|
||
|
||
## 📝 Налаштування для різних середовищ
|
||
|
||
### Локальна розробка (за замовчуванням)
|
||
```bash
|
||
OLLAMA_BASE_URL=http://localhost:11434
|
||
MISTRAL_MODEL=mistral-nemo:12b
|
||
```
|
||
|
||
### Підключення до НОДА2
|
||
```bash
|
||
OLLAMA_BASE_URL=http://192.168.1.244:11434
|
||
MISTRAL_MODEL=mistral:7b
|
||
```
|
||
|
||
### Production (якщо Ollama на іншому сервері)
|
||
```bash
|
||
OLLAMA_BASE_URL=http://ollama-server:11434
|
||
MISTRAL_MODEL=mistral:latest
|
||
```
|
||
|
||
## 🎯 Результат
|
||
|
||
Після виправлення:
|
||
- ✅ Monitor Agent Service підключається до локального Ollama
|
||
- ✅ Автоматичний fallback на доступні моделі
|
||
- ✅ Чат працює без помилок 500
|
||
- ✅ Повідомлення від Monitor Agent з'являються в UI
|
||
|
||
## 🔄 Якщо проблема залишається
|
||
|
||
1. Перевірте, чи працює Ollama:
|
||
```bash
|
||
curl http://localhost:11434/api/tags
|
||
```
|
||
|
||
2. Перевірте логи Monitor Agent Service:
|
||
```bash
|
||
# Якщо запущений через uvicorn, логи в консолі
|
||
# Або перевірте процес
|
||
ps aux | grep uvicorn
|
||
```
|
||
|
||
3. Перевірте environment variables:
|
||
```bash
|
||
echo $OLLAMA_BASE_URL
|
||
echo $MISTRAL_MODEL
|
||
```
|
||
|
||
4. Перезапустіть сервіс з правильними змінними:
|
||
```bash
|
||
export OLLAMA_BASE_URL=http://localhost:11434
|
||
export MISTRAL_MODEL=mistral-nemo:12b
|
||
python -m uvicorn app.main:app --host 0.0.0.0 --port 9500 --reload
|
||
```
|
||
|
||
---
|
||
|
||
**Статус:** ✅ Виправлено
|
||
**Наступні кроки:** Перезапустити Monitor Agent Service для застосування змін
|
||
|