Complete guide for DAARWIZZ AI agent: - Personality and behavior guidelines - Technical implementation details - Message flow diagrams - Example interactions (Ukrainian) - Testing instructions - Customization guide - Future enhancements roadmap Includes curl examples, Docker config, and monitoring metrics.
343 lines
8.0 KiB
Markdown
343 lines
8.0 KiB
Markdown
# DAARWIZZ - AI Agent for DAARION.city
|
||
|
||
**DAARWIZZ** is the official AI agent for the DAARION.city ecosystem, designed to help community members navigate microDAO processes, understand roles, and interact with the DAGI Stack.
|
||
|
||
---
|
||
|
||
## 🎯 What is DAARWIZZ?
|
||
|
||
DAARWIZZ is an intelligent agent that:
|
||
- **Guides users** through microDAO operations
|
||
- **Explains roles** and permissions (RBAC)
|
||
- **Answers questions** about DAO processes
|
||
- **Provides onboarding** for new members
|
||
- **Enforces security** by respecting user entitlements
|
||
|
||
---
|
||
|
||
## 🧠 Personality & Behavior
|
||
|
||
### Core Traits
|
||
- **Helpful**: Provides practical, actionable guidance
|
||
- **Concise**: Avoids unnecessary explanations
|
||
- **Security-aware**: Respects RBAC permissions
|
||
- **Honest**: Admits when it doesn't know something
|
||
- **Professional yet friendly**: Approachable but not casual
|
||
|
||
### Style Guidelines
|
||
- Short paragraphs, no fluff
|
||
- Step-by-step instructions when needed
|
||
- Uses numbered lists for procedures
|
||
- Always considers user's role and permissions
|
||
|
||
---
|
||
|
||
## 📋 System Prompt
|
||
|
||
DAARWIZZ's behavior is defined by its system prompt located at:
|
||
```
|
||
gateway-bot/daarwizz_prompt.txt
|
||
```
|
||
|
||
**Key elements:**
|
||
1. Identity: Official DAARION.city AI agent
|
||
2. Role: Help with microDAO, roles, processes
|
||
3. Context awareness: Uses dao_id, user_id, RBAC data
|
||
4. Limitations: No legal/financial/medical advice
|
||
5. Knowledge boundaries: Only DAARION/microDAO topics
|
||
|
||
---
|
||
|
||
## 🔄 How DAARWIZZ Works
|
||
|
||
### Message Flow
|
||
|
||
```
|
||
User (Telegram)
|
||
↓ "Привіт! Що це за DAO?"
|
||
Gateway (:9300)
|
||
↓ Load daarwizz_prompt.txt
|
||
↓ Build request with agent="daarwizz"
|
||
Router (:9102)
|
||
↓ Fetch RBAC context
|
||
RBAC (:9200)
|
||
↓ role: member, entitlements: [chat, vote, comment]
|
||
Router
|
||
↓ Inject RBAC + system_prompt
|
||
LLM Provider (Ollama/OpenAI)
|
||
↓ Generate response with full context
|
||
Gateway
|
||
↓ Send to Telegram
|
||
User receives answer
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠️ Technical Implementation
|
||
|
||
### Gateway Integration
|
||
|
||
**File**: `gateway-bot/http_api.py`
|
||
|
||
```python
|
||
# Load DAARWIZZ prompt on startup
|
||
DAARWIZZ_SYSTEM_PROMPT = load_daarwizz_prompt()
|
||
|
||
# Build request to Router
|
||
router_request = {
|
||
"prompt": text,
|
||
"mode": "chat",
|
||
"agent": "daarwizz", # Agent identifier
|
||
"metadata": {
|
||
"dao_id": "greenfood-dao",
|
||
"user_id": "tg:12345",
|
||
...
|
||
},
|
||
"context": {
|
||
"agent_name": "DAARWIZZ",
|
||
"system_prompt": DAARWIZZ_SYSTEM_PROMPT,
|
||
# RBAC injected by Router
|
||
},
|
||
}
|
||
```
|
||
|
||
### LLM Provider Support
|
||
|
||
**File**: `providers/llm_provider.py`
|
||
|
||
```python
|
||
def _get_system_prompt(self, req: RouterRequest) -> Optional[str]:
|
||
# 1. Check context.system_prompt (from Gateway)
|
||
context = req.payload.get("context") or {}
|
||
if "system_prompt" in context:
|
||
return context["system_prompt"]
|
||
|
||
# 2. Agent-specific fallback
|
||
if req.agent == "daarwizz":
|
||
return "Ти — DAARWIZZ, AI-агент DAARION.city..."
|
||
|
||
return None
|
||
```
|
||
|
||
### Docker Configuration
|
||
|
||
**File**: `gateway-bot/Dockerfile`
|
||
|
||
```dockerfile
|
||
# Copy DAARWIZZ prompt
|
||
COPY gateway-bot/daarwizz_prompt.txt /app/gateway-bot/daarwizz_prompt.txt
|
||
|
||
ENV DAARWIZZ_NAME=DAARWIZZ
|
||
ENV DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
|
||
```
|
||
|
||
---
|
||
|
||
## 📖 Example Interactions
|
||
|
||
### Basic Greeting
|
||
|
||
**User**: `Привіт! Хто ти?`
|
||
|
||
**DAARWIZZ**:
|
||
```
|
||
Привіт! Я — DAARWIZZ, AI-агент екосистеми DAARION.city.
|
||
|
||
Я допомагаю учасникам розібратися з:
|
||
• microDAO та їх структурою
|
||
• Ролями і правами доступу (RBAC)
|
||
• Процесами голосування та пропозиціями
|
||
• Завданнями та винагородами
|
||
|
||
Чим можу допомогти?
|
||
```
|
||
|
||
### Role Information
|
||
|
||
**User**: `Які у мене права в цьому DAO?`
|
||
|
||
**DAARWIZZ** (with RBAC context):
|
||
```
|
||
У greenfood-dao ти маєш роль: member
|
||
|
||
Твої права (entitlements):
|
||
1. chat_access - писати в чат
|
||
2. read_proposals - читати пропозиції
|
||
3. vote - голосувати за пропозиції
|
||
4. comment - коментувати
|
||
|
||
Для більших прав (наприклад, створення пропозицій) потрібна роль contributor або вища.
|
||
```
|
||
|
||
### Onboarding
|
||
|
||
**User**: `Як розпочати роботу в DAO?`
|
||
|
||
**DAARWIZZ**:
|
||
```
|
||
Ласкаво просимо! Ось кроки для старту:
|
||
|
||
1. Ознайомся з документацією DAO (команда /docs)
|
||
2. Переглянь активні пропозиції (/proposals)
|
||
3. Познайомся з командою в чаті
|
||
4. Виконай перше завдання (/tasks)
|
||
5. Накопичуй репутацію для підвищення ролі
|
||
|
||
Твоя поточна роль: guest
|
||
Наступна роль: member (після 1 виконаного завдання)
|
||
|
||
Є питання? Запитуй!
|
||
```
|
||
|
||
---
|
||
|
||
## 🎛️ Customization
|
||
|
||
### Updating System Prompt
|
||
|
||
1. **Edit prompt file**:
|
||
```bash
|
||
nano gateway-bot/daarwizz_prompt.txt
|
||
```
|
||
|
||
2. **Rebuild Gateway**:
|
||
```bash
|
||
docker-compose build gateway
|
||
docker-compose restart gateway
|
||
```
|
||
|
||
3. **Verify loading**:
|
||
```bash
|
||
docker-compose logs gateway | grep "DAARWIZZ system prompt loaded"
|
||
```
|
||
|
||
### Environment Variables
|
||
|
||
```bash
|
||
# .env
|
||
DAARWIZZ_NAME=DAARWIZZ
|
||
DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 Testing DAARWIZZ
|
||
|
||
### Local Test (curl)
|
||
|
||
```bash
|
||
curl -X POST http://localhost:9300/telegram/webhook \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"message": {
|
||
"message_id": 1,
|
||
"from": {"id": 12345, "username": "testuser"},
|
||
"chat": {"id": 12345, "type": "private"},
|
||
"text": "Привіт! Хто ти?"
|
||
}
|
||
}'
|
||
```
|
||
|
||
### Telegram Bot
|
||
|
||
1. **Set up webhook**:
|
||
```bash
|
||
curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook" \
|
||
-d "url=https://your-domain.com/telegram/webhook"
|
||
```
|
||
|
||
2. **Send message** to bot in Telegram
|
||
|
||
3. **Check logs**:
|
||
```bash
|
||
docker-compose logs -f gateway router
|
||
```
|
||
|
||
### Expected Log Output
|
||
|
||
```
|
||
gateway | INFO: DAARWIZZ system prompt loaded (1243 chars)
|
||
gateway | INFO: Telegram message from testuser (tg:12345): Привіт! Хто ти?
|
||
gateway | INFO: Sending to Router: agent=daarwizz, dao=greenfood-dao
|
||
router | INFO: Received request: mode=chat, agent=daarwizz
|
||
router | INFO: RBAC context: role=member, entitlements=4
|
||
router | INFO: Routing to llm_local_qwen3_8b
|
||
router | INFO: Response generated (345 chars, 2.3s)
|
||
gateway | INFO: Telegram message sent to chat 12345
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Metrics & Monitoring
|
||
|
||
### Health Check
|
||
|
||
```bash
|
||
curl http://localhost:9300/health
|
||
```
|
||
|
||
**Response**:
|
||
```json
|
||
{
|
||
"status": "healthy",
|
||
"agent": "DAARWIZZ",
|
||
"system_prompt_loaded": true,
|
||
"timestamp": "2024-11-15T14:30:00Z"
|
||
}
|
||
```
|
||
|
||
### Performance Targets
|
||
|
||
| Metric | Target | Notes |
|
||
|--------|--------|-------|
|
||
| Prompt loading | < 100ms | On startup |
|
||
| Request enrichment | < 50ms | Gateway processing |
|
||
| End-to-end response | < 5s | Including LLM generation |
|
||
| RBAC lookup | < 100ms | From RBAC service |
|
||
|
||
---
|
||
|
||
## 🚀 Future Enhancements
|
||
|
||
### Phase 4 Roadmap
|
||
|
||
1. **Knowledge Base Integration**
|
||
- Connect to microdao-daarion docs
|
||
- RAG (Retrieval-Augmented Generation)
|
||
- Contextual answers from official docs
|
||
|
||
2. **Multi-language Support**
|
||
- Ukrainian (default)
|
||
- English
|
||
- Auto-detect user language
|
||
|
||
3. **Workflow Triggers**
|
||
- User: "Onboard me" → triggers CrewAI workflow
|
||
- User: "Review proposal #123" → triggers multi-agent review
|
||
|
||
4. **Analytics**
|
||
- Track common questions
|
||
- Identify knowledge gaps
|
||
- Improve prompt iteratively
|
||
|
||
5. **Personalization**
|
||
- Remember user context across sessions
|
||
- Adapt responses based on user role
|
||
- Suggest relevant actions
|
||
|
||
---
|
||
|
||
## 🔗 Related Documentation
|
||
|
||
- [Gateway Bot](../gateway-bot/README.md)
|
||
- [RBAC Service](../microdao/README.md)
|
||
- [LLM Providers](../providers/README.md)
|
||
- [Router Configuration](../router-config.yml)
|
||
|
||
---
|
||
|
||
**Version**: 0.2.0
|
||
**Agent**: DAARWIZZ
|
||
**Status**: Production-ready ✅
|
||
**Last Updated**: 2024-11-15
|