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

6.2 KiB
Raw Permalink Blame History

🔧 Виправлення підключення 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

# Було:
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)

# Знайти процес
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

# Якщо потрібно підключитися до НОДА2
export OLLAMA_BASE_URL=http://192.168.1.244:11434

# Якщо потрібно використовувати іншу модель
export MISTRAL_MODEL=mistral:7b

# Перезапустити сервіс

Варіант 3: Перевірити, чи сервіс автоматично перезапустився

Якщо сервіс запущений з --reload, він має автоматично перезапуститися після зміни файлу.

Перевірка

  1. Перевірити health check:

    curl http://localhost:9500/health
    

    Має повернути: {"status":"ok","service":"monitor-agent-service"}

  2. Перевірити підключення до Ollama:

    curl http://localhost:11434/api/tags
    

    Має повернути список доступних моделей

  3. Протестувати чат:

    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
    • Має з'явитися відповідь замість помилки

📝 Налаштування для різних середовищ

Локальна розробка (за замовчуванням)

OLLAMA_BASE_URL=http://localhost:11434
MISTRAL_MODEL=mistral-nemo:12b

Підключення до НОДА2

OLLAMA_BASE_URL=http://192.168.1.244:11434
MISTRAL_MODEL=mistral:7b

Production (якщо Ollama на іншому сервері)

OLLAMA_BASE_URL=http://ollama-server:11434
MISTRAL_MODEL=mistral:latest

🎯 Результат

Після виправлення:

  • Monitor Agent Service підключається до локального Ollama
  • Автоматичний fallback на доступні моделі
  • Чат працює без помилок 500
  • Повідомлення від Monitor Agent з'являються в UI

🔄 Якщо проблема залишається

  1. Перевірте, чи працює Ollama:

    curl http://localhost:11434/api/tags
    
  2. Перевірте логи Monitor Agent Service:

    # Якщо запущений через uvicorn, логи в консолі
    # Або перевірте процес
    ps aux | grep uvicorn
    
  3. Перевірте environment variables:

    echo $OLLAMA_BASE_URL
    echo $MISTRAL_MODEL
    
  4. Перезапустіть сервіс з правильними змінними:

    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 для застосування змін