Files
microdao-daarion/docs/ACTION_PLAN.md
2026-02-16 03:47:51 -08:00

9.8 KiB
Raw Permalink Blame History

🚀 План дій: Інтеграція всіх сервісів

Дата: 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 може замінити багато сервісів!

# 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

curl http://dagi-crewai:9102/health
curl http://dagi-crewai:9102/crews  # List available crews

Крок 2: Додати CrewAI provider в Router

router-config.yml:

providers:
  crewai:
    type: "crew"
    base_url: "http://dagi-crewai:9102"

Крок 3: Створити workflow для GREENFOOD

# 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

# Browser: http://144.76.224.179:7474
# Username: neo4j
# Password: <перевірити в docker-compose>

Крок 2: Створити Neo4j client

# 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:

# 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:

# Прямий виклик 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 для Coqui TTS
FROM python:3.10
RUN pip install TTS
CMD ["tts-server", "--host", "0.0.0.0", "--port", "5002"]

Варіант B: ElevenLabs API

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:

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:

# 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 год)

  1. Підключити Neo4j (45 хв) - knowledge graphs
  2. Streaming TTS (1 год) - якісний голос
  3. Grafana Alerts (30 хв) - моніторинг

Опційно (якщо потрібно)

  1. ⚠️ Виправити RAG Service (2 год) - АБО використовувати Dify RAG
  2. ⚠️ Виправити Memory Service (1 год) - АБО використовувати Neo4j
  3. ⚠️ Запустити 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