import gradio as gr from sentence_transformers import SentenceTransformer from sklearn.metrics.pairwise import cosine_similarity import numpy as np # Carregar o modelo model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2') # Definir perfis DISC base para comparação disc_profiles = { 'D (Dominância)': ''' - Direto e decisivo - Focado em resultados - Assume riscos - Gosta de desafios - Toma iniciativa ''', 'I (Influência)': ''' - Otimista e entusiasta - Comunicativo - Sociável - Persuasivo - Expressivo ''', 'S (Estabilidade)': ''' - Paciente e cooperativo - Leal e confiável - Calmo e consistente - Bom ouvinte - Trabalha bem em equipe ''', 'C (Conformidade)': ''' - Analítico e preciso - Sistemático - Focado em qualidade - Atento aos detalhes - Segue regras e procedimentos ''' } def analyze_disc(user_text): # Gerar embeddings para o texto do usuário user_embedding = model.encode([user_text])[0] # Gerar embeddings para cada perfil DISC results = {} for profile_name, profile_desc in disc_profiles.items(): profile_embedding = model.encode([profile_desc])[0] # Calcular similaridade similarity = cosine_similarity([user_embedding], [profile_embedding])[0][0] results[profile_name] = float(similarity) # Normalizar resultados para soma = 100% total = sum(results.values()) normalized_results = {k: (v/total) * 100 for k, v in results.items()} # Ordenar resultados sorted_results = dict(sorted(normalized_results.items(), key=lambda x: x[1], reverse=True)) # Formatar resultado output = "Análise do Perfil DISC:\n\n" for profile, score in sorted_results.items(): output += f"{profile}: {score:.1f}%\n" return output # Interface Gradio iface = gr.Interface( fn=analyze_disc, inputs=gr.Textbox( lines=5, placeholder="Digite uma descrição do comportamento da pessoa..." ), outputs=gr.Textbox(), title="Analisador de Perfil DISC", description="Analise o perfil DISC baseado em uma descrição comportamental usando IA", examples=[ ["Pessoa focada em resultados, toma decisões rápidas e gosta de desafios"], ["Muito comunicativo, alegre e gosta de trabalhar com pessoas"], ["Calmo, paciente e trabalha bem em equipe"], ["Detalhista, analítico e segue procedimentos com precisão"] ] ) # Iniciar a interface iface.launch()