DHEIVER commited on
Commit
6ed5258
·
verified ·
1 Parent(s): ebaa754

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -166
app.py CHANGED
@@ -1,157 +1,5 @@
1
  import gradio as gr
2
- from gradio_client import Client
3
- import pandas as pd
4
- import json
5
- from typing import Dict, List, Union
6
- import time
7
-
8
- class TemperamentAnalyzer:
9
- def __init__(self):
10
- # Inicializa o cliente Llama
11
- self.client = Client("DHEIVER/chat-Llama-3.3-70B")
12
-
13
- # Define o questionário completo
14
- self.questionnaire = {
15
- 'SANGUÍNEO': {
16
- 'strengths': [
17
- 'Cordial', 'Alegre', 'Contagiante', 'Bem humorado', 'Extrovertido',
18
- 'Estimulante', 'Bondoso', 'Emotivo', 'Espontâneo', 'Ingênuo',
19
- 'Faz amizade com facilidade', 'Tem relacionamento profundo com as pessoas',
20
- 'Mais coração do que razão', 'Relaciona-se bem', 'Gosta de crianças',
21
- 'Esquece as coisas desagradáveis facilmente', 'Sincero', 'Anima as pessoas',
22
- 'Participa com entusiasmo de novos planos', 'Barulhento',
23
- 'Espalhafatoso', 'Curiosidade Infantil', 'Sensível com as necessidades do próximo',
24
- 'Desperta de bom humor', 'Otimista', 'Vive para o presente',
25
- 'Não se sente temeroso pelo futuro', 'Não gosta de estar só',
26
- 'Fala antes de pensar', 'Terno e compassivo'
27
- ],
28
- 'weaknesses': [
29
- 'Pouco prático e desorganizado', 'Age sem pensar', 'Tendência a lascívia',
30
- 'Dificuldade para concentrar-se', 'Pouca produtividade', 'Indisciplinado',
31
- 'Começa e não termina seus planos', 'Responde e se compromete sem pensar',
32
- 'Turbulento', 'Não conhece suas limitações', 'Não cumpre horários',
33
- 'Pode alterar seus princípios morais', 'Não é leal', 'Egoísta',
34
- 'Dominador da conversa', 'Instável emocionalmente', 'Desanima facilmente',
35
- 'Tem explosões de ira', 'Se arrepende várias vezes', 'Vontade fraca'
36
- ]
37
- },
38
- 'COLÉRICO': {
39
- 'strengths': [
40
- 'Temperamento ardente', 'Ativo', 'Prático', 'Voluntarioso',
41
- 'Auto suficiente', 'Independente', 'Decidido', 'Facilidade de tomar decisões',
42
- 'Vibra com muitas atividades', 'Pouco influenciado pelo meio',
43
- 'Influenciador do meio', 'Não se amedronta nas adversidades',
44
- 'Não é dado a detalhes', 'Cérebro perspicaz', 'Não vacila sob pressão',
45
- 'Determinado e persistente', 'Objetivo', 'Apresenta sugestões',
46
- 'Líder nato', 'Insistente', 'Intuitivo', 'Não liga muito para artes',
47
- 'Mais razão do que coração', 'Extrovertido', 'Firme',
48
- 'Não se abala com críticas', 'Auto disciplinado', 'Geralmente otimista',
49
- 'Gosta do desafio', 'Interesse pelo aspecto prático'
50
- ],
51
- 'weaknesses': [
52
- 'Insensível', 'Irado', 'Impetuosidade danosa', 'Infringe direitos dos outros',
53
- 'Sem compaixão', 'Indiferente aos anseios', 'Agressivo', 'Guarda rancor',
54
- 'Vingativo', 'Tende a ter úlcera', 'Cruel', 'Mete-se em apuros',
55
- 'Dificilmente pede desculpas', 'Declarações cruéis', 'Age tiranicamente',
56
- 'Orgulhoso', 'Arrogante', 'Dificuldade para orar', 'Frusta os outros',
57
- 'Prepotente'
58
- ]
59
- },
60
- 'MELANCÓLICO': {
61
- 'strengths': [
62
- 'Analítico', 'Abnegado', 'Perfeccionista', 'Apreciador de Artes',
63
- 'Introvertido', 'É todo coração', 'Não desaponta dependentes',
64
- 'Não faz amigos facilmente', 'Amigo fiel', 'Bom diagnosticador',
65
- 'Pessoa de confiança', 'Não procura as pessoas', 'Prevê obstáculos',
66
- 'Confiança em sua capacidade', 'Sensibilidade artística', 'Varia disposição',
67
- 'Correto na profissão', 'Se sacrifica pessoalmente', 'Evita conflitos',
68
- 'Não ocioso', 'Criativo', 'Sensível emocionalmente', 'Pensador',
69
- 'Revive acontecimentos', 'Cumpridor', 'Evita evidência',
70
- 'Reservado', 'Fala pouco mas preciso', 'Não se compromete além',
71
- 'Introspectivo'
72
- ],
73
- 'weaknesses': [
74
- 'Egocêntrico', 'Auto-análise complacente', 'Interesse excessivo físico',
75
- 'Alimenta vingança', 'Hipocondríaco', 'Ofende-se facilmente',
76
- 'Desconfiado', 'Suposições desfavoráveis', 'Dificilmente perdoa',
77
- 'Autocomiseração', 'Pessimista', 'Inseguro', 'Temeroso',
78
- 'Crítico inflexível', 'Depressivo', 'Foge da realidade',
79
- 'Mau humorado', 'Condições mentais mórbidas', 'Conspiração contra si',
80
- 'Tudo é capital'
81
- ]
82
- },
83
- 'FLEUMÁTICO': {
84
- 'strengths': [
85
- 'Calmo', 'Frio', 'Bem equilibrado', 'É todo razão',
86
- 'Controla emoções', 'Racional', 'Raramente explode',
87
- 'Aprecia artes', 'Fino gosto', 'Controlado',
88
- 'Gosta do convívio social', 'Despreocupado', 'Sente mais que demonstra',
89
- 'Prático e eficiente', 'Senso de humor mordaz', 'Provoca gargalhadas',
90
- 'Cérebro organizado', 'Trabalha bem sob tensão', 'Pouco se envolve',
91
- 'Vida regrada', 'Tende à rotina', 'Mais espectador',
92
- 'Metódico', 'Bom coração discreto', 'Capaz',
93
- 'Cumpridor', 'Conciliador', 'Pacificador nato',
94
- 'Sabe ouvir', 'Bom conselheiro'
95
- ],
96
- 'weaknesses': [
97
- 'Moroso', 'Indolente', 'Sem motivação', 'Provocador',
98
- 'Distante e gélido', 'Obstinado', 'Egoísta', 'Indeciso',
99
- 'Resistente', 'Avarento', 'Descompromissado', 'Torna-se mais vagaroso',
100
- 'Espectador sem envolvimento', 'Acomodado', 'Humor contra outros',
101
- 'Conservador por comodismo', 'Disfarça obstinação', 'Não se envolve',
102
- 'Vacila entre desejos', 'Procrastinador'
103
- ]
104
- }
105
- }
106
-
107
- def analyze_responses(self, responses: Dict[str, Dict[str, List[str]]]) -> Dict:
108
- """Analisa as respostas e calcula pontuações"""
109
- scores = {}
110
- for temp, categories in self.questionnaire.items():
111
- marked_strengths = len(responses.get(temp, {}).get('strengths', []))
112
- marked_weaknesses = len(responses.get(temp, {}).get('weaknesses', []))
113
- total_possible = len(categories['strengths']) + len(categories['weaknesses'])
114
- total_marked = marked_strengths + marked_weaknesses
115
- scores[temp] = (total_marked / total_possible) * 100
116
-
117
- return scores
118
-
119
- def get_llama_interpretation(self, scores: Dict[str, float], dominant: str) -> str:
120
- """Obtém interpretação do modelo Llama"""
121
- prompt = f"""
122
- Análise espiritual baseada nos seguintes resultados do teste de temperamento:
123
-
124
- Pontuações:
125
- {json.dumps(scores, indent=2)}
126
-
127
- Temperamento Dominante: {dominant}
128
-
129
- Por favor forneça:
130
- 1. Análise detalhada do perfil temperamental
131
- 2. Necessidades espirituais específicas
132
- 3. Recomendações práticas para desenvolvimento espiritual
133
- 4. Dons espirituais potenciais
134
- 5. Áreas de ministério recomendadas
135
- 6. Desafios espirituais a superar
136
- 7. Estratégias de crescimento espiritual
137
- """
138
-
139
- try:
140
- result = self.client.predict(
141
- message=prompt,
142
- chat_history=[],
143
- system_message="""Você é um especialista em análise espiritual e temperamentos,
144
- com profundo conhecimento da interação entre personalidade e desenvolvimento espiritual.
145
- Forneça análises detalhadas e práticas.""",
146
- max_tokens=2048,
147
- temperature=0.7,
148
- top_p=0.95,
149
- language="pt",
150
- api_name="/respond"
151
- )
152
- return result
153
- except Exception as e:
154
- return f"Erro na análise: {str(e)}"
155
 
156
  def create_interface():
157
  analyzer = TemperamentAnalyzer()
@@ -162,7 +10,7 @@ def create_interface():
162
  mel_strengths, mel_weaknesses,
163
  fleu_strengths, fleu_weaknesses
164
  ):
165
- # Organiza respostas
166
  responses = {
167
  'SANGUÍNEO': {
168
  'strengths': sang_strengths,
@@ -182,18 +30,15 @@ def create_interface():
182
  }
183
  }
184
 
185
- # Calcula pontuações
186
  scores = analyzer.analyze_responses(responses)
187
 
188
- # Identifica temperamento dominante
189
  dominant = max(scores.items(), key=lambda x: x[1])[0]
190
 
191
- # Obtém interpretação do Llama
192
- interpretation = analyzer.get_llama_interpretation(scores, dominant)
193
-
194
- # Formata resultado
195
  result = f"""
196
- # Análise de Temperamento e Necessidades Espirituais
197
 
198
  ## Pontuações
199
  {'-' * 50}
@@ -202,15 +47,11 @@ def create_interface():
202
  ## Temperamento Dominante
203
  {'-' * 50}
204
  **{dominant}**
205
-
206
- ## Análise Detalhada
207
- {'-' * 50}
208
- {interpretation}
209
  """
210
 
211
  return result
212
 
213
- # Interface Gradio
214
  with gr.Blocks(theme=gr.themes.Soft()) as iface:
215
  gr.Markdown("# Análise de Temperamento e Necessidades Espirituais")
216
 
 
1
  import gradio as gr
2
+ from temperament_analyzer import TemperamentAnalyzer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  def create_interface():
5
  analyzer = TemperamentAnalyzer()
 
10
  mel_strengths, mel_weaknesses,
11
  fleu_strengths, fleu_weaknesses
12
  ):
13
+ # Organize responses
14
  responses = {
15
  'SANGUÍNEO': {
16
  'strengths': sang_strengths,
 
30
  }
31
  }
32
 
33
+ # Calculate scores
34
  scores = analyzer.analyze_responses(responses)
35
 
36
+ # Identify dominant temperament
37
  dominant = max(scores.items(), key=lambda x: x[1])[0]
38
 
39
+ # Format result
 
 
 
40
  result = f"""
41
+ # Análise de Temperamento
42
 
43
  ## Pontuações
44
  {'-' * 50}
 
47
  ## Temperamento Dominante
48
  {'-' * 50}
49
  **{dominant}**
 
 
 
 
50
  """
51
 
52
  return result
53
 
54
+ # Gradio Interface
55
  with gr.Blocks(theme=gr.themes.Soft()) as iface:
56
  gr.Markdown("# Análise de Temperamento e Necessidades Espirituais")
57