- TTS: xtts-v2 integration with voice cloning support
- Document: docling integration for PDF/DOCX/PPTX processing
- Memory Service: added /facts/upsert, /facts/{key}, /facts endpoints
- Added required dependencies (TTS, docling)
9.6 KiB
9.6 KiB
🏗️ Аналіз архітектури НОДА2 (MacBook Pro M4 Max)
Дата: 2026-01-12
Статус: ✅ Повний аналіз архітектури
📊 Поточний стан сервісів
Основні сервіси (Healthy)
| Сервіс | Контейнер | Статус | Порт | Uptime | Призначення |
|---|---|---|---|---|---|
| Router | dagi-router |
✅ Healthy | 9102 | 37+ годин | Маршрутизація запитів |
| Swapper | swapper-service |
✅ Healthy | 8890 | 19+ годин | Динамічне завантаження моделей |
| DevTools | dagi-devtools |
✅ Healthy | 8008 | 37+ годин | Інструменти розробки |
| Gateway | dagi-gateway |
✅ Healthy | 9300 | 37+ годин | Telegram/Discord боти |
| RBAC | dagi-rbac |
✅ Healthy | 9200 | 37+ годин | Контроль доступу |
| CrewAI | dagi-crewai |
✅ Healthy | 9010 | 37+ годин | Оркестрація агентів |
| PostgreSQL | dagi-postgres |
✅ Healthy | 5432 | 37+ годин | База даних |
| Prometheus | dagi-prometheus |
✅ Healthy | 9091 | 37+ годин | Метрики |
| Jupyter | jupyter-lab |
✅ Healthy | 8888 | 37+ годин | Нотатки |
Сервіси з проблемами (Unhealthy)
| Сервіс | Контейнер | Статус | Порт | Проблема |
|---|---|---|---|---|
| NATS | dagi-nats |
⚠️ Unhealthy | 4222 | Health check не проходить |
| Memory | memory-service |
⚠️ Unhealthy | 8001 | Health check не проходить |
| RAG | dagi-rag-service |
🔄 Restarting | 9500 | Постійні перезапуски |
| Image Gen | dagi-image-gen |
⚠️ Unhealthy | 9600 | Health check не проходить |
| TTS | dagi-tts-service |
⚠️ Unhealthy | 9800 | Health check не проходить |
| STT | dagi-stt-service |
⚠️ Unhealthy | 9401 | Health check не проходить |
| OCR | ocr-service |
⚠️ Unhealthy | 8896 | Health check не проходить |
| Web Search | dagi-web-search-service |
⚠️ Unhealthy | 8897 | Health check не проходить |
| Qdrant | qdrant-vector-db |
⚠️ Unhealthy | 6333-6335 | Health check не проходить |
🔄 Архітектура Router
Конфігурація Router
- Файл:
services/router/router_config.yaml - Мінімальна конфігурація: Тільки messaging inbound
- Провайдери: 17 провайдерів зареєстровано
Провайдери Router (17 штук)
llm_local_qwen3_8b- LLMProviderllm_cloud_deepseek- LLMProviderllm_qwen3_vl- LLMProviderllm_specialist_vision_8b- LLMProviderllm_specialist_math_7b- LLMProviderllm_specialist_reasoning_3b- LLMProviderllm_specialist_rag_4b- LLMProvider- ... (ще 10 провайдерів)
Змінні середовища Router
DAGI_ROUTER_CONFIG=/app/router-config.ymlRBAC_BASE_URL=http://rbac:9200DEVTOOLS_BASE_URL=http://devtools:8008CREWAI_BASE_URL=http://crewai:9010RAG_SERVICE_URL=http://rag-service:9500MEMORY_SERVICE_URL=http://memory-service:8000
Залежності Router
- Залежить від:
devtools,crewai,rbac - Підключений до: NATS (для messaging)
🔄 Архітектура Swapper Service
Конфігурація Swapper
- Файл:
services/swapper-service/config/swapper_config_node2.yaml - Режим:
single-active(одна модель за раз) - GPU: Увімкнено (Apple Silicon Metal acceleration)
- Default модель:
gpt-oss-latest(автоматично завантажується)
Моделі в Swapper (8 моделей)
| Модель | Тип | Розмір | Пріоритет | Статус |
|---|---|---|---|---|
| gpt-oss-latest | LLM | 13.0 GB | High | ✅ Loaded (19.36 год uptime) |
| phi3-latest | LLM | 2.2 GB | High | Unloaded |
| starcoder2-3b | Code | 1.7 GB | Medium | Unloaded |
| mistral-nemo-12b | LLM | 7.1 GB | High | Unloaded |
| gemma2-27b | LLM | 15.0 GB | Medium | Unloaded |
| deepseek-coder-33b | Code | 18.0 GB | High | Unloaded |
| qwen2.5-coder-32b | Code | 19.0 GB | High | Unloaded |
| deepseek-r1-70b | LLM | 42.0 GB | High | Unloaded |
Змінні середовища Swapper
OLLAMA_BASE_URL=http://host.docker.internal:11434SWAPPER_CONFIG_PATH=/app/config/swapper_config.yamlSWAPPER_MODE=single-activeMAX_CONCURRENT_MODELS=1MODEL_SWAP_TIMEOUT=30
Доступ до Ollama
- Через:
host.docker.internal:11434(MacBook Docker Desktop) - Механізм:
extra_hosts: host.docker.internal:host-gateway - Ollama: Працює на хості (не в контейнері)
🔗 Інтеграція Router ↔ Swapper
Поточна ситуація
- ✅ Router має 17 провайдерів
- ✅ Swapper працює незалежно
- ⚠️ Потрібна перевірка: Чи Router використовує Swapper як провайдер?
Можливі інтеграції
- Пряма інтеграція: Router викликає Swapper API для завантаження моделей
- Через провайдери: Router має провайдер, який використовує Swapper
- Через NATS: Повідомлення між Router та Swapper через NATS
📦 Моделі в Ollama (на хості)
Доступні моделі
llava:13b- Vision model (8GB)gpt-oss:latest- Активна в Swapper (13GB)- Інші моделі (потрібна детальна перевірка)
🔍 Детальний аналіз
1. Swapper Service Metrics
Активна модель:
- Назва:
gpt-oss-latest - Uptime: 19.36 годин
- Request count: 0 (не використовується активно)
- Loaded at: 2026-01-11T14:40:18
Загальна статистика:
- Total models: 8
- Loaded models: 1 (gpt-oss-latest)
- Available models: 8
- Mode: single-active
2. Router Configuration
Messaging:
- Inbound enabled: ✅
- Source subject:
agent.filter.decision - Target subject:
router.invoke.agent
Провайдери:
- 17 провайдерів зареєстровано
- Типи: LLMProvider, VisionProvider, тощо
3. Docker Network
Network: dagi-network
- Всі сервіси підключені до однієї мережі
- Можуть спілкуватися через внутрішні імена контейнерів
🔧 Як працює НОДА2
Потік запиту (припущення)
- Вхідний запит → Router (порт 9102)
- Router аналізує запит та визначає провайдера
- Якщо потрібен LLM:
- Router викликає Swapper API
- Swapper перевіряє чи модель завантажена
- Якщо ні - завантажує з Ollama
- Swapper викликає Ollama для генерації
- Результат повертається через Swapper → Router → Клієнт
Комунікація між сервісами
Client → Router (9102) → Swapper (8890) → Ollama (host:11434)
↓
NATS (4222) → Інші сервіси
⚠️ Відомі проблеми
1. NATS Unhealthy
- Проблема: Health check не проходить
- Вплив: Можливі проблеми з messaging
- Рішення: Перевірити конфігурацію health check
2. RAG Service Restarting
- Проблема: Постійні перезапуски
- Вплив: RAG функціональність недоступна
- Рішення: Перевірити логи та залежності
3. Багато Unhealthy сервісів
- Проблема: 9 сервісів unhealthy
- Вплив: Часткова функціональність
- Рішення: Систематична перевірка кожного сервісу
📝 Рекомендації
Пріоритет 1: Виправити критичні сервіси
- NATS - критичний для messaging
- RAG Service - важливий для пошуку
- Memory Service - важливий для агентів
Пріоритет 2: Оптимізація
- Перевірити чи Router використовує Swapper
- Налаштувати автоматичне завантаження моделей за потреби
- Оптимізувати використання пам'яті
Пріоритет 3: Моніторинг
- Налаштувати алерти для unhealthy сервісів
- Додати метрики використання моделей
- Логування інтеграцій
🔍 Наступні кроки для детального аналізу
- Перевірити чи Router викликає Swapper
- Протестувати маршрутизацію запитів
- Перевірити логи інтеграції
- Налаштувати моніторинг
Оновлено: 2026-01-12
Статус: ✅ Аналіз завершено