feat: додано Node Registry, GreenFood, Monitoring та Utils
This commit is contained in:
319
docs/ACTION_PLAN.md
Normal file
319
docs/ACTION_PLAN.md
Normal 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*
|
||||
|
||||
Reference in New Issue
Block a user