Files
microdao-daarion/MONITOR-AGENT-CONNECTION-FIX.md
Apple 3de3c8cb36 feat: Add presence heartbeat for Matrix online status
- 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
2025-11-27 00:19:40 -08:00

177 lines
6.2 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.
# 🔧 Виправлення підключення 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 для застосування змін