# MGN-018: AI Agents & Chatbots ## Descripción del Módulo El módulo de AI Agents permite a los tenants crear, configurar y desplegar agentes de inteligencia artificial que pueden: - Responder consultas de clientes automáticamente - Integrarse con canales de comunicación (WhatsApp, Web Chat, Email) - Utilizar bases de conocimiento propias del tenant - Ejecutar acciones en el sistema (crear leads, consultar pedidos, etc.) ## Requerimientos Funcionales | ID | Nombre | Prioridad | Story Points | Estado | |----|--------|-----------|--------------|--------| | [RF-MGN-018-001](./RF-MGN-018-001-configuracion-agentes.md) | Configuración de Agentes | P1 | 13 | Definido | | [RF-MGN-018-002](./RF-MGN-018-002-bases-conocimiento.md) | Bases de Conocimiento | P1 | 13 | Definido | | [RF-MGN-018-003](./RF-MGN-018-003-procesamiento-mensajes.md) | Procesamiento de Mensajes | P1 | 8 | Definido | | [RF-MGN-018-004](./RF-MGN-018-004-acciones-herramientas.md) | Acciones y Herramientas | P2 | 13 | Definido | | [RF-MGN-018-005](./RF-MGN-018-005-entrenamiento-feedback.md) | Entrenamiento y Feedback | P2 | 8 | Definido | | [RF-MGN-018-006](./RF-MGN-018-006-analytics-metricas.md) | Analytics y Métricas | P2 | 8 | Definido | **Total Story Points:** 63 ## Arquitectura ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ TENANT │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │ │ AI Agents │ │ Knowledge │ │ Actions │ │ │ │ Config │ │ Bases │ │ Tools │ │ │ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ │ │ │ │ │ │ └──────────┼────────────────────┼─────────────────────┼────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────────┐ │ AI Processing Layer │ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │ │ LLM Router │ │ Embeddings │ │ Tool Executor │ │ │ │ (Multi-model) │ │ Generator │ │ │ │ │ └────────────────┘ └────────────────┘ └────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────────┐ │ External Services │ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │ │ OpenAI API │ │ Claude API │ │ Vector Store │ │ │ │ GPT-4, etc │ │ Anthropic │ │ (Pinecone) │ │ │ └────────────────┘ └────────────────┘ └────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ ``` ## Dependencias ### Dependencias Internas - **MGN-001 (Multi-Tenant):** Aislamiento de datos por tenant (corrección: es MGN-001, no MGN-004) - **MGN-007 (Sales):** Tools para consultas de pedidos - **MGN-009 (CRM):** Tools para acciones sobre leads y contactos - **MGN-014 (Mensajería):** Auditoría de conversaciones y feedback - **MGN-015 (Billing):** Control de consumo de tokens/créditos de IA ### Dependencias Opcionales (Canales) - **MGN-017 (WhatsApp):** Canal de comunicación para agentes ### Dependencias Externas - OpenAI API (GPT-4, GPT-4o, embeddings) - Anthropic API (Claude 3.5, Claude 3) - Vector Database (pgvector en PostgreSQL, o Pinecone para escala) - Cloud Storage (para documentos de KB) ### Integraciones Requeridas - **MGN-015:** Implementar control de tokens con `billing.get_feature_limit(tenant_id, 'ai_monthly_token_limit')` - **MGN-015:** Alertas automáticas al 80% y 100% de consumo - **MGN-007:** Tool `check_order_status` para consultar estado de pedidos - **MGN-009:** Tool `create_lead` para crear leads desde conversaciones ### Nota sobre Canales MGN-018 es agnóstico al canal de comunicación. Puede recibir mensajes de: - WhatsApp (via MGN-017) - Web Chat (frontend directo) - Email (via integración futura) - API directa (para integraciones custom) Esto evita dependencia circular con MGN-017. MGN-018 es la capa de inteligencia, MGN-017 es la capa de transporte. ## Actores del Módulo | Actor | Descripción | RFs Relacionados | |-------|-------------|------------------| | Tenant Admin | Configura agentes y bases de conocimiento | RF-001, RF-002 | | Sistema | Procesa mensajes y ejecuta acciones | RF-003, RF-004 | | AI Agent | Genera respuestas y decide acciones | RF-003, RF-004 | | Cliente Final | Interactúa con el agente | RF-003 | | Supervisor | Revisa y entrena agente | RF-005 | ## Entidades Principales ```sql -- Schema: ai_agents ai_agents.agents -- Configuración de agentes ai_agents.knowledge_bases -- Bases de conocimiento ai_agents.kb_documents -- Documentos en KB ai_agents.kb_chunks -- Chunks con embeddings ai_agents.conversations -- Conversaciones con agente ai_agents.messages -- Mensajes de conversación ai_agents.tool_definitions -- Herramientas disponibles ai_agents.tool_executions -- Historial de ejecuciones ai_agents.feedback -- Feedback de usuarios/supervisores ai_agents.usage_logs -- Consumo de tokens ``` ## Modelos de IA Soportados | Proveedor | Modelo | Uso Principal | Costo/1K tokens | |-----------|--------|---------------|-----------------| | OpenAI | gpt-4o | Conversación avanzada | $0.005 input, $0.015 output | | OpenAI | gpt-4o-mini | Conversación económica | $0.00015 input, $0.0006 output | | OpenAI | text-embedding-3-small | Embeddings KB | $0.00002 | | Anthropic | claude-3-5-sonnet | Conversación avanzada | $0.003 input, $0.015 output | | Anthropic | claude-3-haiku | Conversación económica | $0.00025 input, $0.00125 output | ## Tipos de Agentes ### 1. Agente de Atención al Cliente - Responde FAQs - Consulta estado de pedidos - Escala a humanos cuando necesario ### 2. Agente de Ventas - Califica leads - Responde sobre productos - Agenda citas/demos ### 3. Agente de Soporte Técnico - Resuelve problemas comunes - Guía paso a paso - Crea tickets de soporte ### 4. Agente Personalizado - Configuración libre - Instrucciones específicas del tenant - Herramientas personalizadas ## Flujo de Procesamiento ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Mensaje │────▶│ Router │────▶│ Contexto │ │ Entrante │ │ Canal │ │ Builder │ └─────────────┘ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Respuesta │◀────│ LLM │◀────│ RAG │ │ al Usuario │ │ Provider │ │ Search │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ ▼ │ ┌─────────────┐ │ │ Tools │ │ │ Executor │ │ └─────────────┘ │ │ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ Log de │ │ Acciones │ │ Consumo │ │ Sistema │ └─────────────┘ └─────────────┘ ``` ## Seguridad 1. **Aislamiento de Datos:** Cada tenant solo accede a sus KBs y agentes 2. **API Keys:** Encriptadas, tenant puede usar propias o del sistema 3. **Rate Limiting:** Límites por tenant según plan 4. **Content Filtering:** Detección de contenido inapropiado 5. **PII Protection:** No almacenar datos sensibles en logs 6. **Audit Trail:** Historial completo de conversaciones ## Feature Flags ```json { "ai_agents_enabled": true, "ai_max_agents": 3, "ai_kb_max_documents": 100, "ai_kb_max_size_mb": 500, "ai_custom_tools": false, "ai_model_selection": ["gpt-4o-mini", "claude-3-haiku"], "ai_monthly_token_limit": 1000000 } ``` ## Pricing / Consumo ### Modelo de Créditos - Cada tenant tiene créditos de IA mensuales según plan - Créditos = tokens consumidos (input + output) - Overage: se cobra extra o se limita servicio ### Ejemplo de Planes | Plan | Créditos/mes | Agentes | KBs | Documentos KB | |------|--------------|---------|-----|---------------| | Starter | 100K tokens | 1 | 1 | 20 | | Professional | 500K tokens | 3 | 3 | 100 | | Enterprise | 5M tokens | Ilimitado | 10 | 500 | ## Métricas Clave ```typescript interface AIAgentMetrics { conversations: { total: number; resolved_by_ai: number; escalated: number; resolution_rate: number; }; messages: { processed: number; avg_response_time_ms: number; tokens_consumed: number; }; satisfaction: { positive_feedback: number; negative_feedback: number; nps_score: number; }; costs: { tokens_this_month: number; estimated_cost_usd: number; cost_per_conversation: number; }; } ``` ## Notas de Implementación 1. **Vector Store:** Usar pgvector para simplicidad, Pinecone para escala 2. **Streaming:** Soportar respuestas en streaming para mejor UX 3. **Caching:** Cachear respuestas comunes para reducir costos 4. **Fallbacks:** Siempre tener opción de escalar a humano 5. **Timeouts:** Límites de tiempo para respuestas de LLM 6. **Retry Logic:** Reintentos con backoff para APIs externas