""" Prometheus - Academy Builder AI Assistant ========================================= Assistente híbrido de vendas + educacional para academias corporativas gamificadas. """ import gradio as gr import json from pathlib import Path # ============================================================================ # BASE DE CONHECIMENTO # ============================================================================ class KnowledgeBase: def __init__(self): self.chunks = [] self.loaded = False self.load_data() def load_data(self): try: chunks_path = Path("data/chunks.json") if chunks_path.exists(): with open(chunks_path, "r", encoding="utf-8") as f: self.chunks = json.load(f) self.loaded = True print(f"✅ Carregados {len(self.chunks)} chunks") except Exception as e: print(f"⚠️ Erro ao carregar dados: {e}") self.loaded = False def search(self, query, top_k=3): if not self.chunks: return [] query_lower = query.lower() query_words = set(query_lower.split()) scored = [] for chunk in self.chunks: text_lower = chunk.get("text", "").lower() score = sum(1 for word in query_words if word in text_lower) if score > 0: scored.append((score, chunk)) scored.sort(key=lambda x: x[0], reverse=True) return [c for _, c in scored[:top_k]] kb = KnowledgeBase() # ============================================================================ # RESPOSTAS PRÉ-DEFINIDAS # ============================================================================ RESPONSES = { "saudacao": """Olá! 👋 Sou o **Prometheus**, assistente de IA da Academy Builder. Posso ajudá-lo com: - 📊 **Informações sobre nossa plataforma** de academias corporativas gamificadas - 💰 **Preços e planos** disponíveis - 🎓 **Conceitos educacionais** como gamificação, andragogia e design instrucional - 🔧 **Suporte técnico** sobre integrações e funcionalidades Como posso ajudá-lo hoje?""", "precos": """## 💰 Planos Academy Builder | Plano | Preço | Usuários | Recursos | |-------|-------|----------|----------| | **Starter** | $5/usuário/mês | Mín. 50 | Gamificação básica, 20 cursos, analytics básico | | **Professional** | $12/usuário/mês | Mín. 100 | Gamificação avançada, cursos ilimitados, SSO | | **Enterprise** | Personalizado | 500+ | Tudo + branding, API, gerente dedicado | ### Descontos por Volume - 500-999 usuários: **10% off** - 1000-4999 usuários: **20% off** - 5000+ usuários: **Negociação especial** Gostaria de agendar uma demonstração personalizada? 🎯""", "gamificacao": """## 🎮 Gamificação na Academy Builder A gamificação é o coração da nossa plataforma! Transformamos treinamentos em experiências envolventes usando: ### Elementos Principais - **Sistema de XP e Níveis**: Colaboradores ganham pontos ao completar módulos - **Badges e Conquistas**: Reconhecimento visual por marcos alcançados - **Leaderboards**: Rankings que estimulam competição saudável - **Missões Diárias**: Microlearning gamificado para engajamento constante ### Resultados Comprovados - **60%** aumento nas taxas de conclusão - **40%** redução no tempo de treinamento - **34%** maior retenção de colaboradores Quer entender como a gamificação pode transformar seus treinamentos?""", "roi": """## 📈 ROI da Academy Builder O ROI típico de uma academia corporativa gamificada varia de **200% a 500%**. ### Economia Direta - ⏱️ **40-60%** redução no tempo de treinamento - 👥 **34%** menor turnover de colaboradores - 📉 **40%** menos erros de compliance ### Exemplo (500 colaboradores) | Item | Valor | |------|-------| | Treinamento tradicional | $250,000/ano | | Academy Builder | $75,000/ano | | Ganho de produtividade | $500,000 | | **ROI Líquido** | **380%** | Quer uma análise de ROI personalizada para sua empresa?""", "integracao": """## 🔧 Integrações Academy Builder ### SSO/Identidade - SAML 2.0 e OAuth 2.0 - Azure AD, Okta, OneLogin, Google Workspace ### HRIS - Workday, SAP SuccessFactors, BambooHR - ADP, Paylocity, UKG ### LMS/LXP - SCORM 1.2 e 2004 - xAPI (Tin Can) - LTI para embedding Implementação típica: **2-4 semanas**. Qual sistema você utiliza atualmente?""", "andragogia": """## 📚 Andragogia - A Ciência de Ensinar Adultos **Andragogia** reconhece que adultos aprendem diferentemente de crianças. ### Os 6 Princípios da Andragogia 1. **Autodirigidos**: Adultos querem controle sobre seu aprendizado 2. **Experiência como recurso**: Trazem bagagem que deve ser valorizada 3. **Orientação para problemas**: Preferem aprender resolvendo problemas reais 4. **Motivação interna**: Buscam crescimento pessoal e profissional 5. **Necessidade de saber 'por quê'**: Precisam entender a relevância 6. **Prontos para aprender**: Quando percebem necessidade imediata Na Academy Builder, aplicamos esses princípios em cada módulo!""", "sobre": """## 🏢 Sobre a Academy Builder A **Academy Builder** é uma plataforma completa para criação e gestão de academias corporativas gamificadas. ### Nossa Missão Transformar treinamento corporativo em experiências envolventes e mensuráveis através da gamificação. ### Principais Diferenciais - **Gamificação Nativa**: XP, badges, leaderboards integrados - **Analytics Avançado**: Métricas de engajamento e retenção - **CRM Integrado**: Lead scoring automático - **Integrações Enterprise**: SSO, HRIS, SCORM/xAPI Quer saber mais sobre como podemos ajudar sua empresa?""", "default": """Obrigado pela sua pergunta! Sou o **Prometheus**, assistente da Academy Builder. Posso ajudar com: - 📊 Informações sobre nossa plataforma de academias corporativas - 🎮 Conceitos de gamificação e aprendizagem - 💰 Preços e planos - 🔧 Integrações técnicas - 📈 ROI e métricas de sucesso **Sugestões:** - "Quais são os preços?" - "Como funciona a gamificação?" - "Qual o ROI esperado?" """ } # ============================================================================ # DETECÇÃO DE INTENÇÃO # ============================================================================ def detect_intent(message): msg = message.lower() if any(w in msg for w in ["olá", "oi", "hello", "hi", "bom dia", "boa tarde", "boa noite", "hey"]): return "saudacao" if any(w in msg for w in ["preço", "custo", "valor", "price", "quanto custa", "plano"]): return "precos" if any(w in msg for w in ["gamificação", "gamification", "xp", "badge", "leaderboard", "pontos"]): return "gamificacao" if any(w in msg for w in ["roi", "retorno", "investimento", "return", "resultado"]): return "roi" if any(w in msg for w in ["integração", "integration", "sso", "api", "hris", "scorm"]): return "integracao" if any(w in msg for w in ["andragogia", "pedagogia", "aprendizagem", "adulto", "ensino"]): return "andragogia" if any(w in msg for w in ["sobre", "about", "empresa", "academy builder", "quem"]): return "sobre" return "default" # ============================================================================ # FUNÇÃO DE RESPOSTA # ============================================================================ def respond(message, history): """Gera resposta para o chatbot.""" if not message or not message.strip(): return "Por favor, digite uma mensagem para que eu possa ajudá-lo." intent = detect_intent(message) response = RESPONSES.get(intent, RESPONSES["default"]) # Se for default, tentar buscar na base de conhecimento if intent == "default" and kb.loaded: chunks = kb.search(message) if chunks: context = "\n\n".join([c.get("text", "")[:500] for c in chunks[:2]]) if context: response = f"""Com base na sua pergunta, encontrei informações relevantes: {context} --- Posso detalhar algum ponto específico?""" return response # ============================================================================ # INTERFACE GRADIO # ============================================================================ demo = gr.ChatInterface( fn=respond, title="🎓 Prometheus - Academy Builder AI Assistant", description="Assistente híbrido de **vendas + educacional** para academias corporativas gamificadas.\n\nPosso ajudar com informações sobre produtos, preços, conceitos de gamificação, design instrucional e muito mais!", examples=[ "Olá!", "Quais são os preços?", "Como funciona a gamificação?", "Qual o ROI esperado?", "Quais integrações estão disponíveis?", "O que é andragogia?", "Fale sobre a Academy Builder" ], theme=gr.themes.Soft( primary_hue="blue", secondary_hue="yellow", ), retry_btn=None, undo_btn=None, ) if __name__ == "__main__": demo.launch()