Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,49 +1,54 @@
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline
|
3 |
|
4 |
-
#
|
5 |
-
|
6 |
-
|
7 |
-
except RuntimeError as e:
|
8 |
-
print("Erro ao carregar o modelo:", e)
|
9 |
-
model_a = pipeline("text-generation", model="gpt2") # Fallback para GPT-2
|
10 |
-
|
11 |
-
# Usar um modelo menor ou alternativo para o modelo B
|
12 |
-
try:
|
13 |
-
model_b = pipeline("text-generation", model="EleutherAI/gpt-neo-125M") # Modelo alternativo
|
14 |
-
except RuntimeError as e:
|
15 |
-
print("Erro ao carregar o modelo B:", e)
|
16 |
-
model_b = pipeline("text-generation", model="gpt2") # Fallback para GPT-2
|
17 |
|
18 |
# Modelo juiz
|
19 |
-
arbiter = pipeline("text-classification", model="neuralmind/bert-base-portuguese-cased")
|
20 |
|
21 |
# Julgamento por batch
|
22 |
def judge_response(response_a, response_b):
|
23 |
results = arbiter([response_a, response_b])
|
24 |
score_a = results[0]['score']
|
25 |
score_b = results[1]['score']
|
|
|
|
|
26 |
return ("Modelo A", response_a) if score_a > score_b else ("Modelo B", response_b)
|
27 |
|
28 |
# Função principal
|
29 |
def chatbot(prompt):
|
|
|
30 |
response_a = model_a(prompt, max_new_tokens=40)[0]['generated_text'].strip()
|
31 |
response_b = model_b(prompt, max_new_tokens=40)[0]['generated_text'].strip()
|
|
|
|
|
32 |
winner, final_response = judge_response(response_a, response_b)
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
# Interface
|
36 |
iface = gr.Interface(
|
37 |
fn=chatbot,
|
38 |
inputs=gr.Textbox(label="Digite sua pergunta:"),
|
39 |
outputs=[
|
40 |
-
gr.
|
41 |
-
gr.Textbox(label="Resposta do Modelo A (DistilGPT-2)"),
|
42 |
-
gr.Textbox(label="Resposta do Modelo B (GPT-Neo-125M)"),
|
43 |
-
gr.Textbox(label="Modelo Vencedor"),
|
44 |
-
gr.Textbox(label="Resposta Escolhida"),
|
45 |
],
|
46 |
-
title="
|
47 |
description="Compara respostas de dois modelos e usa um árbitro para escolher a melhor com base no sentimento positivo."
|
48 |
)
|
49 |
|
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline
|
3 |
|
4 |
+
# Modelos geradores otimizados
|
5 |
+
model_a = pipeline("text-generation", model="distilgpt2") # Modelo A
|
6 |
+
model_b = pipeline("text-generation", model="EleutherAI/gpt-neo-125M") # Modelo B
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
# Modelo juiz
|
9 |
+
arbiter = pipeline("text-classification", model="neuralmind/bert-base-portuguese-cased") # Modelo Árbitro
|
10 |
|
11 |
# Julgamento por batch
|
12 |
def judge_response(response_a, response_b):
|
13 |
results = arbiter([response_a, response_b])
|
14 |
score_a = results[0]['score']
|
15 |
score_b = results[1]['score']
|
16 |
+
|
17 |
+
# Critério de julgamento: maior pontuação é melhor
|
18 |
return ("Modelo A", response_a) if score_a > score_b else ("Modelo B", response_b)
|
19 |
|
20 |
# Função principal
|
21 |
def chatbot(prompt):
|
22 |
+
# Gera respostas para ambos os modelos
|
23 |
response_a = model_a(prompt, max_new_tokens=40)[0]['generated_text'].strip()
|
24 |
response_b = model_b(prompt, max_new_tokens=40)[0]['generated_text'].strip()
|
25 |
+
|
26 |
+
# Julga as respostas
|
27 |
winner, final_response = judge_response(response_a, response_b)
|
28 |
+
|
29 |
+
# Retorna as informações
|
30 |
+
return {
|
31 |
+
"prompt": prompt,
|
32 |
+
"resposta_modelo_a": response_a,
|
33 |
+
"resposta_modelo_b": response_b,
|
34 |
+
"modelo_vencedor": winner,
|
35 |
+
"resposta_escolhida": final_response,
|
36 |
+
"informacoes_modelos": {
|
37 |
+
"modelo_a": "distilgpt2 - Modelo de geração de texto leve.",
|
38 |
+
"modelo_b": "EleutherAI/gpt-neo-125M - Modelo de geração de texto maior.",
|
39 |
+
"modelo_juiz": "neuralmind/bert-base-portuguese-cased - Modelo de classificação para julgar as respostas."
|
40 |
+
},
|
41 |
+
"criterio_julgamento": "O modelo juiz classifica as respostas com base em uma pontuação de sentimento positivo."
|
42 |
+
}
|
43 |
|
44 |
# Interface
|
45 |
iface = gr.Interface(
|
46 |
fn=chatbot,
|
47 |
inputs=gr.Textbox(label="Digite sua pergunta:"),
|
48 |
outputs=[
|
49 |
+
gr.JSON(label="Resultados"),
|
|
|
|
|
|
|
|
|
50 |
],
|
51 |
+
title="Chatbot com Julgamento",
|
52 |
description="Compara respostas de dois modelos e usa um árbitro para escolher a melhor com base no sentimento positivo."
|
53 |
)
|
54 |
|