DHEIVER commited on
Commit
27a7410
·
verified ·
1 Parent(s): f22733a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +108 -91
app.py CHANGED
@@ -1,121 +1,138 @@
1
  import gradio as gr
2
- from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
 
5
- # Configurando os modelos
6
  def setup_models():
7
- # Modelo para geração de perguntas (TinyLlama)
8
- question_tokenizer = AutoTokenizer.from_pretrained("TinyLlama/TinyLlama-1.1B-Chat")
9
- question_model = AutoModelForCausalLM.from_pretrained("TinyLlama/TinyLlama-1.1B-Chat")
10
-
11
- # Modelo para reflexões (BLOOM)
12
- reflection_tokenizer = AutoTokenizer.from_pretrained("bigscience/bloom-560m")
13
- reflection_model = AutoModelForCausalLM.from_pretrained("bigscience/bloom-560m")
14
-
15
- return (question_tokenizer, question_model), (reflection_tokenizer, reflection_model)
16
-
17
- # Geração de perguntas usando TinyLlama
18
- def generate_question(question_pipeline):
19
- prompt = """Generate one thought-provoking leadership question in Portuguese.
20
- Focus on topics like: team management, decision making, conflict resolution, or motivation.
21
- Question:"""
22
 
23
- input_ids = question_pipeline[0](prompt, return_tensors="pt").input_ids
 
 
 
 
 
24
 
25
- outputs = question_pipeline[1].generate(
26
- input_ids,
27
- max_length=100,
28
- num_return_sequences=1,
29
- temperature=0.7,
30
- top_p=0.9,
31
- do_sample=True
32
  )
33
 
34
- question = question_pipeline[0].decode(outputs[0], skip_special_tokens=True)
35
- return question.split("Question:")[-1].strip()
36
 
37
- # Geração de reflexões usando BLOOM
38
- def generate_reflection(reflection_pipeline, question, answer):
39
- prompt = f"""Com base na pergunta: "{question}"
40
- E na resposta: "{answer}"
41
-
42
- Gere uma reflexão construtiva sobre a resposta, considerando:
43
- - Pontos fortes demonstrados
44
- - Áreas para desenvolvimento
45
- - Sugestões práticas
46
-
47
- Reflexão:"""
48
-
49
- input_ids = reflection_pipeline[0](prompt, return_tensors="pt").input_ids
 
 
 
 
 
 
 
 
 
 
 
50
 
51
- outputs = reflection_pipeline[1].generate(
52
- input_ids,
53
- max_length=200,
54
- num_return_sequences=1,
55
- temperature=0.7,
56
- top_p=0.9,
57
- do_sample=True
58
- )
 
 
 
 
 
59
 
60
- reflection = reflection_pipeline[0].decode(outputs[0], skip_special_tokens=True)
61
- return reflection.split("Reflexão:")[-1].strip()
62
-
63
- # Interface Gradio
64
- def create_interface(question_pipeline, reflection_pipeline):
65
- def process_interaction(answer, history):
66
- if not history:
67
- # Primeira interação - gerar pergunta
68
- question = generate_question(question_pipeline)
69
- return "", history + [(question, None)]
70
- else:
71
- # Gerar reflexão para resposta anterior
72
- last_question = history[-1][0]
73
- reflection = generate_reflection(reflection_pipeline, last_question, answer)
74
-
75
- # Gerar nova pergunta
76
- new_question = generate_question(question_pipeline)
77
 
78
- return "", history + [(last_question, answer), (reflection, None), (new_question, None)]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
- with gr.Blocks(title="Mentor de Liderança - Powered by Open Source LLMs") as demo:
 
 
 
 
81
  gr.Markdown("""
82
  # 🎯 Mentor de Liderança AI
83
- Desenvolva suas habilidades de liderança através de perguntas reflexivas e feedback personalizado.
84
 
85
- Powered by:
86
- - TinyLlama (Geração de Perguntas)
87
- - BLOOM (Análise e Reflexões)
88
  """)
89
 
90
- chatbot = gr.Chatbot(height=400)
91
- msg = gr.Textbox(label="Sua Resposta", placeholder="Digite sua resposta aqui...")
 
 
 
 
92
 
93
  with gr.Row():
94
- submit = gr.Button("Enviar")
95
- clear = gr.Button("Limpar Conversa")
 
 
 
96
 
97
  submit.click(
98
- process_interaction,
99
  inputs=[msg, chatbot],
100
  outputs=[msg, chatbot]
101
  )
102
 
103
- clear.click(lambda: ("", None), outputs=[msg, chatbot])
 
 
 
 
 
 
 
104
 
105
  return demo
106
 
107
- def main():
108
- # Configuração dos modelos
109
- print("Inicializando modelos...")
110
- question_pipeline, reflection_pipeline = setup_models()
111
-
112
- # Criação e lançamento da interface
113
- print("Criando interface...")
114
- demo = create_interface(question_pipeline, reflection_pipeline)
115
-
116
- # Lançamento do app
117
- print("Lançando aplicação...")
118
- demo.launch(share=True)
119
-
120
  if __name__ == "__main__":
121
- main()
 
 
 
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ê já 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 há 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!"))
89
+
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...",
108
+ lines=3
109
+ )
110
 
111
  with gr.Row():
112
+ submit = gr.Button("Enviar Resposta")
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,
120
  inputs=[msg, chatbot],
121
  outputs=[msg, chatbot]
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,
130
+ outputs=[msg, chatbot]
131
+ )
132
 
133
  return demo
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  if __name__ == "__main__":
136
+ print("Iniciando sistema de mentoria...")
137
+ demo = create_interface()
138
+ demo.launch(share=True)