Finish-him's picture
Upload app.py with huggingface_hub
e58486a verified
"""
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()