feat: додано Node Registry, GreenFood, Monitoring та Utils

This commit is contained in:
Apple
2025-11-21 00:35:41 -08:00
parent 31f3602047
commit e018b9ab68
74 changed files with 13948 additions and 0 deletions

319
docs/ACTION_PLAN.md Normal file
View File

@@ -0,0 +1,319 @@
# 🚀 План дій: Інтеграція всіх сервісів
**Дата**: 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*