Spaces:
Running
Running
import gradio as gr | |
from datetime import datetime | |
import numpy as np | |
from typing import Dict, List, Tuple | |
import matplotlib.pyplot as plt | |
from wordcloud import WordCloud | |
import seaborn as sns | |
import pandas as pd | |
from collections import Counter | |
# Define questions with categories and context | |
PERGUNTAS = [ | |
{ | |
"categoria": "autoconhecimento", | |
"pergunta": "Qual foi seu maior desafio como líder e como você o superou?", | |
"contexto": "desafios liderança superação aprendizado desenvolvimento", | |
}, | |
{ | |
"categoria": "comunicacao", | |
"pergunta": "Como você adapta seu estilo de comunicação para diferentes membros da equipe?", | |
"contexto": "comunicação adaptação equipe feedback clareza", | |
}, | |
{ | |
"categoria": "decisao", | |
"pergunta": "Descreva uma decisão difícil recente e como você a tomou.", | |
"contexto": "decisão análise processo resultado impacto", | |
}, | |
{ | |
"categoria": "autoconhecimento", | |
"pergunta": "Como você identificou e desenvolveu seus pontos fortes como líder?", | |
"contexto": "fortalezas desenvolvimento crescimento reconhecimento", | |
}, | |
{ | |
"categoria": "comunicacao", | |
"pergunta": "Descreva uma situação em que você precisou dar feedback difícil. Como conduziu?", | |
"contexto": "feedback difícil comunicação empatia resolução", | |
} | |
] | |
# Response templates | |
RESPOSTAS_COACH = { | |
"autoconhecimento": { | |
"positive": [ | |
{ | |
"context": "superacao_clara", | |
"response": "Sua capacidade de superar esse desafio demonstra resiliência. Especialmente interessante foi como você {specific_action}. Como você pode usar essa experiência para orientar outros líderes em situações similares?", | |
"keywords": ["superei", "consegui", "aprendi", "mudei", "cresci"] | |
}, | |
{ | |
"context": "aprendizado_continuo", | |
"response": "Sua jornada de autodesenvolvimento é notável. O fato de você {specific_action} mostra maturidade. Que outros aspectos de liderança essa experiência te motivou a explorar?", | |
"keywords": ["desenvolvimento", "estudo", "aprendo", "busco", "evoluo"] | |
} | |
], | |
"neutral": [ | |
{ | |
"context": "em_processo", | |
"response": "Você está no caminho certo ao identificar esse desafio. Considerando que você {specific_action}, que recursos ou apoio adicional seriam úteis nesse momento?", | |
"keywords": ["tentando", "buscando", "desenvolvendo", "praticando"] | |
} | |
], | |
"improvement": [ | |
{ | |
"context": "dificuldade_identificada", | |
"response": "É importante reconhecer áreas de desenvolvimento. Sua menção sobre {specific_action} sugere autoconsciência. Vamos explorar estratégias específicas para fortalecer esse aspecto?", | |
"keywords": ["difícil", "complicado", "desafiador", "preciso melhorar"] | |
} | |
] | |
}, | |
"comunicacao": { | |
"positive": [ | |
{ | |
"context": "adaptacao_efetiva", | |
"response": "Sua abordagem adaptativa é exemplar. O exemplo de como você {specific_action} demonstra sensibilidade às diferentes necessidades. Como você avalia a efetividade dessas adaptações?", | |
"keywords": ["adapto", "personalizo", "ajusto", "observo"] | |
} | |
], | |
"neutral": [ | |
{ | |
"context": "desenvolvendo_estilo", | |
"response": "Você está desenvolvendo um repertório interessante de estilos de comunicação. Sua estratégia de {specific_action} tem potencial. Que outros métodos você gostaria de experimentar?", | |
"keywords": ["testando", "experimentando", "tentando diferentes"] | |
} | |
], | |
"improvement": [ | |
{ | |
"context": "desafios_comunicacao", | |
"response": "Reconhecer desafios na comunicação é o primeiro passo. Considerando sua experiência com {specific_action}, que aspectos específicos você gostaria de desenvolver primeiro?", | |
"keywords": ["difícil comunicar", "não consegui", "preciso melhorar"] | |
} | |
] | |
}, | |
"decisao": { | |
"positive": [ | |
{ | |
"context": "processo_estruturado", | |
"response": "Seu processo decisório é bem estruturado. A forma como você {specific_action} demonstra pensamento sistêmico. Como você poderia documentar essas práticas para futuras referências?", | |
"keywords": ["analisei", "considerei", "planejei", "estruturei"] | |
} | |
], | |
"neutral": [ | |
{ | |
"context": "balanceando_fatores", | |
"response": "Você está equilibrando diferentes fatores em suas decisões. Sua menção sobre {specific_action} mostra consciência. Que frameworks de decisão você conhece que poderiam complementar sua abordagem?", | |
"keywords": ["pesando", "considerando", "avaliando"] | |
} | |
], | |
"improvement": [ | |
{ | |
"context": "decisao_desafiadora", | |
"response": "Decisões complexas exigem coragem. Sua experiência com {specific_action} oferece aprendizados valiosos. Que apoio ou recursos adicionais teriam sido úteis nesse momento?", | |
"keywords": ["hesitei", "demorei", "incerto"] | |
} | |
] | |
} | |
} | |
class EnhancedCoach: | |
def __init__(self): | |
self.pergunta_atual = 0 | |
self.inicio = datetime.now() | |
self.historico_respostas = [] | |
self.tempo_ultima_resposta = datetime.now() | |
def analisar_sentimento(self, texto: str) -> str: | |
"""Analisa o sentimento geral da resposta.""" | |
positive_words = ["consegui", "superei", "aprendi", "melhorei", "efetivo"] | |
negative_words = ["difícil", "desafiador", "complicado", "problema", "falha"] | |
texto_lower = texto.lower() | |
positive_count = sum(1 for word in positive_words if word in texto_lower) | |
negative_count = sum(1 for word in negative_words if word in texto_lower) | |
if positive_count > negative_count: | |
return "positive" | |
elif negative_count > positive_count: | |
return "improvement" | |
return "neutral" | |
def extrair_acao_especifica(self, texto: str) -> str: | |
"""Extrai uma ação específica mencionada na resposta.""" | |
sentences = texto.split('.') | |
for sentence in sentences: | |
if any(action in sentence.lower() for action in ["eu", "minha", "realizei", "fiz"]): | |
return sentence.strip() | |
return texto.split('.')[0].strip() | |
def gerar_resposta(self, texto_usuario: str) -> str: | |
self.tempo_ultima_resposta = datetime.now() | |
pergunta_atual = PERGUNTAS[self.pergunta_atual] | |
self.historico_respostas.append(texto_usuario) | |
# Analisa sentimento e extrai ação | |
sentimento = self.analisar_sentimento(texto_usuario) | |
acao_especifica = self.extrair_acao_especifica(texto_usuario) | |
# Seleciona resposta apropriada | |
respostas_categoria = RESPOSTAS_COACH[pergunta_atual["categoria"]][sentimento] | |
resposta = respostas_categoria[0]["response"].format(specific_action=acao_especifica.lower()) | |
# Analisa padrões nas respostas anteriores | |
padrao_identificado = "" | |
if len(self.historico_respostas) > 1: | |
sentimento_atual = self.analisar_sentimento(texto_usuario) | |
sentimento_anterior = self.analisar_sentimento(self.historico_respostas[-2]) | |
if sentimento_atual == sentimento_anterior == "positive": | |
padrao_identificado = "\n\n💡 Observo um padrão consistente de confiança em suas respostas. Continue desenvolvendo esses pontos fortes!" | |
elif sentimento_atual == sentimento_anterior == "improvement": | |
padrao_identificado = "\n\n💡 Percebo que você está identificando áreas de desenvolvimento. Vamos focar em estratégias práticas para esses desafios." | |
resposta_completa = f"""### Feedback Personalizado 💭 | |
{resposta}{padrao_identificado} | |
#### Pontos para Aprofundamento: | |
1. Como essa experiência se conecta com seus valores de liderança? | |
2. Que recursos específicos você identificou como necessários? | |
3. Qual seria o próximo marco de desenvolvimento nessa área?""" | |
self.pergunta_atual += 1 | |
if self.pergunta_atual < len(PERGUNTAS): | |
proxima = PERGUNTAS[self.pergunta_atual] | |
resposta_completa += f""" | |
### Próxima Reflexão: {proxima['categoria'].title()} 🎯 | |
{proxima['pergunta']} | |
Tome um momento para refletir e conectar com suas experiências...""" | |
else: | |
tempo = (datetime.now() - self.inicio).seconds // 60 | |
resposta_completa += self.gerar_sumario_final(tempo) | |
return { | |
"role": "assistant", | |
"content": resposta_completa | |
} | |
def gerar_sumario_final(self, tempo: int) -> str: | |
# Analisa padrões gerais | |
sentimentos = [self.analisar_sentimento(resp) for resp in self.historico_respostas] | |
predominante = max(set(sentimentos), key=sentimentos.count) | |
if predominante == "positive": | |
perfil = "Você demonstra forte autoconhecimento e confiança em sua liderança." | |
elif predominante == "improvement": | |
perfil = "Você demonstra excelente capacidade de identificar oportunidades de desenvolvimento." | |
else: | |
perfil = "Você demonstra uma abordagem equilibrada entre conquistas e desafios." | |
return f""" | |
### 🎉 Jornada de Desenvolvimento Concluída! | |
⏱️ Tempo de reflexão: {tempo} minutos | |
📝 Temas explorados: {len(PERGUNTAS)} | |
#### Perfil de Liderança Observado: | |
{perfil} | |
#### Recomendações Personalizadas: | |
1. Implemente uma ação específica mencionada em suas reflexões esta semana | |
2. Mantenha um diário de liderança focado nos temas discutidos | |
3. Estabeleça checkpoints mensais para revisar seu progresso | |
Deseja iniciar uma nova jornada de desenvolvimento com outros temas?""" | |
def primeira_pergunta(self): | |
return { | |
"role": "assistant", | |
"content": f"""### 👋 Bem-vindo à sua Jornada de Desenvolvimento! | |
Vamos explorar aspectos importantes da sua liderança através de reflexões guiadas. | |
{PERGUNTAS[0]['pergunta']} | |
Tome um momento para conectar com suas experiências e compartilhe sua perspectiva...""" | |
} |