# 🚀 План дій: Інтеграція всіх сервісів **Дата**: 2025-11-18 **На основі**: SERVER_AUDIT_REPORT.md --- ## ✅ Що вже працює (готово до використання) ### 1. **CrewAI** 🤖 - **Статус**: ✅ Працює (`dagi-crewai:9102`) - **Що робити**: Додати workflows для GREENFOOD та інших агентів - **Час**: 30 хв - **Пріоритет**: 🔴 ВИСОКИЙ ### 2. **Neo4j** 📊 - **Статус**: ✅ Працює (ports 7474, 7687) - **Що робити**: Підключити до Router для knowledge graphs - **UI**: http://144.76.224.179:7474 - **Час**: 45 хв - **Пріоритет**: 🟡 СЕРЕДНІЙ ### 3. **Dify AI Platform** 🎯 - **Статус**: ✅ Повний стек працює! - **Компоненти**: API, Web, Workers, Weaviate, Plugins - **Можливості**: - LLM orchestration - RAG workflows (через Weaviate) - **МОЖЕ МАТИ GPT-4V/Claude Vision!** - **Що робити**: Дослідити API та можливості - **Час**: 1 год - **Пріоритет**: 🔴 ВИСОКИЙ ### 4. **Weaviate** 🔍 - **Статус**: ✅ Працює (port 8080) - **Використання**: Vector DB для Dify - **Інтеграція**: Через Dify RAG --- ## ❌ Що потребує фіксу ### 5. **Memory Service** 🧠 - **Проблема**: PostgreSQL не має `pgvector` extension - **Рішення**: 1. Встановити pgvector в PostgreSQL container 2. АБО використовувати Memory з Dify/Neo4j - **Час**: 1 год - **Пріоритет**: 🟢 НИЗЬКИЙ (не критично) ### 6. **RAG Service** 📚 - **Проблема**: Haystack 2.x API changes - **Рішення**: 1. Виправити imports 2. АБО використовувати Dify RAG (через Weaviate) - **Час**: 1-2 год - **Пріоритет**: 🟡 СЕРЕДНІЙ ### 7. **Milvus** 🔍 - **Проблема**: Зупинено 2 дні тому - **Рішення**: Запустити, ЯКЩО потрібна альтернатива Qdrant - **Час**: 15 хв - **Пріоритет**: 🟢 НИЗЬКИЙ (є Qdrant і Weaviate) --- ## 🎯 Рекомендований план (пріоритезовано) ### **Phase 1: Дослідити Dify** (1 год) 🔴 **Чому**: Dify може замінити багато сервісів! ```bash # 1. Перевірити Dify API curl http://localhost/v1/models # 2. Перевірити чи підключено GPT-4V/Claude curl http://localhost/v1/chat/completions \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-4-vision-preview", "messages": [...]}' # 3. Перевірити RAG capabilities # Через Dify Web UI: http://localhost/ ``` **Результат**: Якщо Dify має GPT-4V - ГОТОВО! Якщо ні - знаємо що додати. --- ### **Phase 2: Інтегрувати CrewAI** (30 хв) 🔴 **Що**: Додати CrewAI workflows для агентів #### Крок 1: Перевірити CrewAI API ```bash curl http://dagi-crewai:9102/health curl http://dagi-crewai:9102/crews # List available crews ``` #### Крок 2: Додати CrewAI provider в Router `router-config.yml`: ```yaml providers: crewai: type: "crew" base_url: "http://dagi-crewai:9102" ``` #### Крок 3: Створити workflow для GREENFOOD ```python # services/greenfood/crew/workflows.py async def web_search_workflow(query: str): """Пошук в інтернеті через CrewAI""" response = await httpx.post( "http://dagi-crewai:9102/crews/research/run", json={"query": query} ) return response.json() ``` **Результат**: GREENFOOD може шукати в інтернеті! --- ### **Phase 3: Підключити Neo4j** (45 хв) 🟡 **Що**: Knowledge graph для зв'язків #### Крок 1: Перевірити Neo4j ```bash # Browser: http://144.76.224.179:7474 # Username: neo4j # Password: <перевірити в docker-compose> ``` #### Крок 2: Створити Neo4j client ```python # utils/neo4j_client.py from neo4j import GraphDatabase class Neo4jClient: def __init__(self): self.driver = GraphDatabase.driver( "bolt://neo4j:7687", auth=("neo4j", "password") ) async def save_interaction(self, user_id, agent_id, message, response): """Зберегти взаємодію""" with self.driver.session() as session: session.run(""" MERGE (u:User {id: $user_id}) MERGE (a:Agent {id: $agent_id}) CREATE (u)-[:ASKED]->(m:Message {text: $message, timestamp: datetime()}) CREATE (a)-[:RESPONDED]->(r:Response {text: $response, timestamp: datetime()}) CREATE (m)-[:GOT_RESPONSE]->(r) """, user_id=user_id, agent_id=agent_id, message=message, response=response) ``` **Результат**: Візуалізація зв'язків користувач ↔ агент ↔ документи! --- ### **Phase 4: Vision через Dify або API** (30 хв) 🟡 **Варіант A**: Якщо Dify має GPT-4V: ```python # Use Dify API for vision async def analyze_image_dify(image_url: str, prompt: str): response = await httpx.post( "http://localhost/v1/chat/completions", json={ "model": "gpt-4-vision", "messages": [{ "role": "user", "content": [ {"type": "text", "text": prompt}, {"type": "image_url", "image_url": {"url": image_url}} ] }] } ) return response.json() ``` **Варіант B**: Якщо немає - додати OpenAI API key: ```python # Прямий виклик OpenAI import openai openai.api_key = "sk-..." response = openai.ChatCompletion.create( model="gpt-4-vision-preview", messages=[...] ) ``` **Результат**: Боти описують зображення! --- ### **Phase 5: Streaming TTS** (1 год) 🟢 **Що**: Замінити gTTS на Coqui TTS або ElevenLabs #### Варіант A: Coqui TTS (локальний) ```dockerfile # Dockerfile для Coqui TTS FROM python:3.10 RUN pip install TTS CMD ["tts-server", "--host", "0.0.0.0", "--port", "5002"] ``` #### Варіант B: ElevenLabs API ```python import elevenlabs async def text_to_speech_elevenlabs(text: str): audio = elevenlabs.generate( text=text, voice="Bella", # Ukrainian voice model="eleven_multilingual_v2" ) return audio ``` **Результат**: Якісніший голос, підтримка довших текстів! --- ### **Phase 6: Grafana Alerts** (30 хв) 🟢 **Що**: Налаштувати alerting rules `monitoring/prometheus/alerts/daarion_alerts.yml`: ```yaml groups: - name: critical_alerts rules: - alert: ServiceDown expr: up{job=~"dagi-.*|telegram-gateway"} == 0 for: 1m labels: severity: critical annotations: summary: "Service {{ $labels.job }} is down" - alert: HighErrorRate expr: rate(http_requests_total{status_code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05 for: 5m labels: severity: warning ``` **Налаштувати Telegram notifications**: ```yaml # monitoring/prometheus/alertmanager.yml receivers: - name: 'telegram' telegram_configs: - bot_token: 'YOUR_BOT_TOKEN' chat_id: YOUR_CHAT_ID ``` **Результат**: Автоматичні алерти в Telegram! --- ## 📊 Пріоритизований Timeline ### Сьогодні (3-4 год): 1. ✅ Дослідити Dify (1 год) - може має все що треба! 2. ✅ Інтегрувати CrewAI (30 хв) - web search для агентів 3. ✅ Vision через Dify або OpenAI (30 хв) - описи зображень ### Завтра (2-3 год): 4. ✅ Підключити Neo4j (45 хв) - knowledge graphs 5. ✅ Streaming TTS (1 год) - якісний голос 6. ✅ Grafana Alerts (30 хв) - моніторинг ### Опційно (якщо потрібно): 7. ⚠️ Виправити RAG Service (2 год) - АБО використовувати Dify RAG 8. ⚠️ Виправити Memory Service (1 год) - АБО використовувати Neo4j 9. ⚠️ Запустити Milvus (15 хв) - тільки якщо Qdrant недостатньо --- ## 💡 Ключові висновки ### Що маємо: - ✅ **35 Docker контейнерів** - величезна інфраструктура! - ✅ **Dify AI Platform** - може замінити багато сервісів - ✅ **CrewAI** - готовий до використання - ✅ **Neo4j** - готовий до використання - ✅ **3 Vector DBs** - Qdrant, Weaviate, (Milvus) ### Що можна зробити швидко: 1. **Dify exploration** - може вже все є! 2. **CrewAI integration** - web search для агентів 3. **Neo4j integration** - knowledge graphs ### Що не критично: - Memory Service (є альтернативи) - RAG Service (є Dify RAG) - Milvus (є Qdrant і Weaviate) --- ## 🚀 Готовий почати? **Рекомендую порядок**: 1. **Dify** - дослідити можливості (може GPT-4V вже там!) 2. **CrewAI** - додати до GREENFOOD 3. **Vision** - через Dify або OpenAI API 4. **Neo4j** - knowledge graphs 5. **Інше** - за потребою **З чого почнемо?** 🎯 --- *Створено: 2025-11-18* *Базується на: SERVER_AUDIT_REPORT.md*