# EPICA: EPIC-MGN-019 - AI Agents

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-MGN-019 |
| **Nombre** | AI Agents (RAG + Tools) |
| **Modulo** | ai-agents |
| **Fase** | Fase 4 - SaaS Platform |
| **Prioridad** | P3 |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 26-30 |

---

## Descripcion

Sistema de agentes inteligentes con RAG (Retrieval Augmented Generation) usando pgvector para embeddings. Permite crear agentes configurables por tenant, knowledge bases con documentos, definicion de tools/funciones, conversaciones con historial y ejecucion de tools en tiempo real.

---

## Objetivo de Negocio

Proveer agentes AI que:
- Automaticen atencion al cliente
- Respondan preguntas basadas en documentacion
- Ejecuten acciones en el sistema
- Escalen soporte sin aumentar personal
- Mejoren experiencia del usuario

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-MGN019-001 | Como admin, quiero crear agentes con personalidad y proposito | P0 | 5 | Backlog |
| US-MGN019-002 | Como admin, quiero crear knowledge bases con documentos | P0 | 8 | Backlog |
| US-MGN019-003 | Como admin, quiero subir documentos a una knowledge base | P0 | 5 | Backlog |
| US-MGN019-004 | Como sistema, quiero generar embeddings de documentos | P0 | 8 | Backlog |
| US-MGN019-005 | Como admin, quiero definir tools que el agente puede usar | P0 | 8 | Backlog |
| US-MGN019-006 | Como usuario, quiero chatear con el agente | P0 | 5 | Backlog |
| US-MGN019-007 | Como agente, quiero buscar en knowledge bases (RAG) | P0 | 8 | Backlog |
| US-MGN019-008 | Como agente, quiero ejecutar tools cuando sea necesario | P0 | 8 | Backlog |
| US-MGN019-009 | Como usuario, quiero dar feedback al agente | P1 | 3 | Backlog |
| US-MGN019-010 | Como admin, quiero ver metricas de uso y tokens | P1 | 5 | Backlog |

**Total Story Points:** 63 SP (ajustado a 55)

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Agentes configurables: nombre, avatar, system prompt
- [ ] Knowledge bases con multiples documentos
- [ ] Tipos de docs: PDF, DOCX, TXT, MD, URL
- [ ] Chunking inteligente de documentos
- [ ] Embeddings con OpenAI ada-002 (1536 dims)
- [ ] RAG con pgvector similarity search
- [ ] Tools con JSON Schema para parametros
- [ ] Ejecucion segura de tools (sandboxed)
- [ ] Conversaciones con contexto (ultimos N mensajes)
- [ ] Feedback thumbs up/down

**No Funcionales:**
- [ ] Latencia de respuesta < 5s
- [ ] Limite de tokens configurable por tenant
- [ ] Fallback a respuesta generica si RAG falla

---

## Arquitectura RAG

```
1. Usuario envia pregunta
2. Sistema genera embedding de la pregunta
3. pgvector busca chunks similares (cosine similarity)
4. Top K chunks se incluyen en el prompt
5. LLM genera respuesta considerando contexto
6. Si LLM decide usar tool:
   a. Sistema valida parametros
   b. Ejecuta tool en sandbox
   c. LLM procesa resultado
7. Respuesta se envia al usuario
```

## Tools Disponibles (Ejemplos)

| Tool | Descripcion | Parametros |
|------|-------------|------------|
| get_customer_info | Obtiene info de cliente | customer_id |
| check_inventory | Consulta stock | product_id, warehouse_id |
| create_lead | Crea lead en CRM | name, email, phone |
| get_order_status | Estado de orden | order_number |
| schedule_callback | Agenda llamada | phone, datetime |

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-MGN-004 Tenants | Ready | Si |
| EPIC-MGN-016 Billing (Feature Flag) | Backlog | Si |
| EPIC-MGN-018 WhatsApp (Canal) | Backlog | No |
| PostgreSQL + pgvector | Ready | Si |
| OpenAI API | External | Si |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `ai_agents`
- [ ] Tablas: 12 (agents, knowledge_bases, agent_knowledge_bases, kb_documents, kb_chunks, tool_definitions, agent_tools, conversations, messages, tool_executions, feedback, usage_logs)
- [ ] Extension: pgvector para embeddings
- [ ] Indices: HNSW para busqueda rapida

**Backend:**
- [ ] Modulo: `ai-agents`
- [ ] Services: AgentService, RAGService, ToolExecutor, EmbeddingService
- [ ] Controllers: AgentsController, KnowledgeBasesController, ConversationsController
- [ ] Endpoints: 30+
- [ ] Jobs: DocumentProcessorJob, EmbeddingGeneratorJob
- [ ] Tests: 45+

**Frontend:**
- [ ] Paginas: 7 (Agents, AgentBuilder, KnowledgeBases, Documents, Conversations, Tools, Analytics)
- [ ] Componentes: AgentCard, ChatWindow, DocumentUploader, ToolEditor
- [ ] Stores: 1 (aiAgentsStore)

---

## Estimacion de Costos

| Concepto | Precio | Uso estimado/mes |
|----------|--------|------------------|
| Embeddings (ada-002) | $0.0001/1K tokens | 1M tokens = $0.10 |
| Completions (gpt-4) | $0.03/1K tokens | 500K tokens = $15 |
| pgvector storage | Incluido en DB | - |
| Total estimado | - | ~$15-50/tenant/mes |

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-05
