DHEIVER commited on
Commit
9728982
1 Parent(s): 27a7410

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -55
app.py CHANGED
@@ -1,88 +1,104 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
- import torch
4
 
5
  def setup_models():
6
- # Usando modelos públicos que não requerem autenticação
7
  print("Inicializando modelos...")
8
 
9
- # Modelo para geração de texto - usando GPT2 pequeno em português
10
- question_generator = pipeline(
11
  "text-generation",
12
  model="pierreguillou/gpt2-small-portuguese",
13
  max_length=100
14
  )
15
 
16
- # Modelo para análise de sentimento/reflexão
17
- reflection_generator = pipeline(
18
  "text-generation",
19
- model="microsoft/DialoGPT-small",
20
  max_length=200
21
  )
22
 
23
- return question_generator, reflection_generator
24
 
25
- # Lista predefinida de perguntas sobre liderança
26
- LEADERSHIP_QUESTIONS = [
27
- "Como você lida com conflitos entre membros da sua equipe?",
28
- "Qual foi a decisão mais difícil que você tomou como líder?",
29
- "Como você mantém sua equipe motivada em períodos desafiadores?",
30
- "De que forma você promove o desenvolvimento profissional da sua equipe?",
31
- "Como você equilibra as necessidades individuais com os objetivos organizacionais?",
32
- "Como você lida com resistência a mudanças na sua equipe?",
33
- "Qual é sua abordagem para dar feedback negativo?",
34
- "Como você desenvolve a autonomia dos membros da sua equipe?"
35
  ]
36
 
37
  class LeadershipMentor:
38
- def __init__(self, question_gen, reflection_gen):
39
- self.question_generator = question_gen
40
- self.reflection_generator = reflection_gen
41
- self.current_question = 0
42
-
43
- def get_next_question(self):
44
- """Retorna a próxima pergunta da lista"""
45
- if self.current_question < len(LEADERSHIP_QUESTIONS):
46
- question = LEADERSHIP_QUESTIONS[self.current_question]
 
 
 
 
 
 
 
 
 
 
 
47
  return question
48
  return None
49
 
50
- def generate_reflection(self, question, answer):
51
  """Gera uma reflexão sobre a resposta do usuário"""
52
- prompt = f"""
53
- Analisando a resposta sobre liderança:
54
- Pergunta: {question}
 
55
  Resposta: {answer}
56
 
57
- Reflexão construtiva:"""
 
 
 
58
 
59
- reflection = self.reflection_generator(prompt, max_length=200)[0]['generated_text']
60
- # Limpar e formatar a reflexão
61
- reflection = reflection.split("Reflexão construtiva:")[-1].strip()
62
- return reflection
 
 
 
 
 
63
 
64
  def process_interaction(self, answer, history):
65
- """Processa a interação do usuário"""
66
  if not answer:
67
  return "", history
68
 
69
- current_question = LEADERSHIP_QUESTIONS[self.current_question]
70
-
71
- # Gerar reflexão
72
- reflection = self.generate_reflection(current_question, answer)
73
 
74
  # Atualizar histórico
75
  new_history = history + [
76
- (current_question, answer),
77
  ("🤔 Reflexão:", reflection)
78
  ]
79
 
80
- # Avançar para próxima pergunta
81
- self.current_question += 1
82
 
83
- # Verificar se ainda perguntas
84
- if self.current_question < len(LEADERSHIP_QUESTIONS):
85
- next_question = LEADERSHIP_QUESTIONS[self.current_question]
86
  new_history.append(("📝 Próxima pergunta:", next_question))
87
  else:
88
  new_history.append(("✨ Sessão concluída!", "Obrigado por participar!"))
@@ -90,18 +106,25 @@ class LeadershipMentor:
90
  return "", new_history
91
 
92
  def create_interface():
93
- question_gen, reflection_gen = setup_models()
94
- mentor = LeadershipMentor(question_gen, reflection_gen)
 
95
 
96
  with gr.Blocks(title="Mentor de Liderança AI") as demo:
97
  gr.Markdown("""
98
  # 🎯 Mentor de Liderança AI
99
 
100
- Desenvolva suas habilidades de liderança através de perguntas reflexivas
101
- e feedback personalizado.
 
 
102
  """)
103
 
104
- chatbot = gr.Chatbot(height=600, label="Sessão de Mentoria")
 
 
 
 
105
  msg = gr.Textbox(
106
  label="Sua Resposta",
107
  placeholder="Digite sua resposta aqui...",
@@ -113,7 +136,8 @@ def create_interface():
113
  clear = gr.Button("Reiniciar Sessão")
114
 
115
  # Iniciar com primeira pergunta
116
- chatbot.value = [("📝 Primeira pergunta:", LEADERSHIP_QUESTIONS[0])]
 
117
 
118
  submit.click(
119
  mentor.process_interaction,
@@ -122,8 +146,9 @@ def create_interface():
122
  )
123
 
124
  def reset_session():
125
- mentor.current_question = 0
126
- return "", [(f"📝 Primeira pergunta:", LEADERSHIP_QUESTIONS[0])]
 
127
 
128
  clear.click(
129
  reset_session,
 
1
  import gradio as gr
2
  from transformers import pipeline
 
3
 
4
  def setup_models():
 
5
  print("Inicializando modelos...")
6
 
7
+ # Modelo 1: Geração de perguntas sobre liderança
8
+ question_model = pipeline(
9
  "text-generation",
10
  model="pierreguillou/gpt2-small-portuguese",
11
  max_length=100
12
  )
13
 
14
+ # Modelo 2: Análise e reflexão sobre respostas
15
+ reflection_model = pipeline(
16
  "text-generation",
17
+ model="pierreguillou/gpt2-small-portuguese",
18
  max_length=200
19
  )
20
 
21
+ return question_model, reflection_model
22
 
23
+ # Prompts para geração de diferentes tipos de perguntas sobre liderança
24
+ QUESTION_PROMPTS = [
25
+ "Gere uma pergunta sobre como um líder deve gerenciar conflitos na equipe:",
26
+ "Crie uma pergunta sobre como motivar equipes em momentos difíceis:",
27
+ "Elabore uma pergunta sobre desenvolvimento de pessoas na liderança:",
28
+ "Formule uma pergunta sobre tomada de decisão em situações críticas:",
29
+ "Gere uma pergunta sobre comunicação efetiva na liderança:",
30
+ "Crie uma pergunta sobre gestão de mudanças organizacionais:",
31
+ "Elabore uma pergunta sobre feedback e avaliação de desempenho:",
32
+ "Formule uma pergunta sobre delegação e empoderamento da equipe:"
33
  ]
34
 
35
  class LeadershipMentor:
36
+ def __init__(self, question_model, reflection_model):
37
+ self.question_model = question_model
38
+ self.reflection_model = reflection_model
39
+ self.current_prompt_index = 0
40
+ self.current_question = None
41
+
42
+ def generate_question(self):
43
+ """Gera uma nova pergunta usando o prompt atual"""
44
+ if self.current_prompt_index < len(QUESTION_PROMPTS):
45
+ prompt = QUESTION_PROMPTS[self.current_prompt_index]
46
+
47
+ # Gerar pergunta usando o modelo
48
+ response = self.question_model(prompt, max_length=100, num_return_sequences=1)
49
+ question = response[0]['generated_text'].split(":")[-1].strip()
50
+
51
+ # Garantir que a pergunta termine com ?
52
+ if not question.endswith("?"):
53
+ question += "?"
54
+
55
+ self.current_question = question
56
  return question
57
  return None
58
 
59
+ def generate_reflection(self, answer):
60
  """Gera uma reflexão sobre a resposta do usuário"""
61
+ reflection_prompt = f"""
62
+ Analise esta resposta de liderança e forneça uma reflexão construtiva:
63
+
64
+ Pergunta: {self.current_question}
65
  Resposta: {answer}
66
 
67
+ Considere:
68
+ 1. Pontos fortes demonstrados
69
+ 2. Áreas para desenvolvimento
70
+ 3. Sugestões práticas
71
 
72
+ Reflexão:"""
73
+
74
+ reflection = self.reflection_model(
75
+ reflection_prompt,
76
+ max_length=200,
77
+ num_return_sequences=1
78
+ )[0]['generated_text']
79
+
80
+ return reflection.split("Reflexão:")[-1].strip()
81
 
82
  def process_interaction(self, answer, history):
83
+ """Processa a interação do usuário e gera a próxima etapa"""
84
  if not answer:
85
  return "", history
86
 
87
+ # Gerar reflexão sobre a resposta atual
88
+ reflection = self.generate_reflection(answer)
 
 
89
 
90
  # Atualizar histórico
91
  new_history = history + [
92
+ (self.current_question, answer),
93
  ("🤔 Reflexão:", reflection)
94
  ]
95
 
96
+ # Avançar para próximo prompt
97
+ self.current_prompt_index += 1
98
 
99
+ # Gerar próxima pergunta se houver
100
+ next_question = self.generate_question()
101
+ if next_question:
102
  new_history.append(("📝 Próxima pergunta:", next_question))
103
  else:
104
  new_history.append(("✨ Sessão concluída!", "Obrigado por participar!"))
 
106
  return "", new_history
107
 
108
  def create_interface():
109
+ # Configurar modelos
110
+ question_model, reflection_model = setup_models()
111
+ mentor = LeadershipMentor(question_model, reflection_model)
112
 
113
  with gr.Blocks(title="Mentor de Liderança AI") as demo:
114
  gr.Markdown("""
115
  # 🎯 Mentor de Liderança AI
116
 
117
+ Sistema interativo de desenvolvimento de liderança que:
118
+ - Gera perguntas personalizadas sobre diferentes aspectos da liderança
119
+ - Analisa suas respostas
120
+ - Fornece reflexões construtivas para seu desenvolvimento
121
  """)
122
 
123
+ chatbot = gr.Chatbot(
124
+ height=600,
125
+ label="Sessão de Mentoria"
126
+ )
127
+
128
  msg = gr.Textbox(
129
  label="Sua Resposta",
130
  placeholder="Digite sua resposta aqui...",
 
136
  clear = gr.Button("Reiniciar Sessão")
137
 
138
  # Iniciar com primeira pergunta
139
+ first_question = mentor.generate_question()
140
+ chatbot.value = [("📝 Primeira pergunta:", first_question)]
141
 
142
  submit.click(
143
  mentor.process_interaction,
 
146
  )
147
 
148
  def reset_session():
149
+ mentor.current_prompt_index = 0
150
+ first_question = mentor.generate_question()
151
+ return "", [(f"📝 Primeira pergunta:", first_question)]
152
 
153
  clear.click(
154
  reset_session,