Spaces:
Runtime error
Runtime error
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from transformers import pipeline
|
3 |
+
|
4 |
+
# Configuração dos modelos
|
5 |
+
modelo_rapido = pipeline("text-generation", model="facebook/bart-large-mnli")
|
6 |
+
modelo_detalhado = pipeline("text-generation", model="microsoft/DialoGPT-medium")
|
7 |
+
arbitro = pipeline("text2text-generation", model="google/flan-t5-large")
|
8 |
+
|
9 |
+
|
10 |
+
def avaliar_respostas(prompt, resposta1, resposta2):
|
11 |
+
instrucao = f"""
|
12 |
+
Avalie qual resposta é melhor para: '{prompt}':
|
13 |
+
- Resposta 1: {resposta1}
|
14 |
+
- Resposta 2: {resposta2}
|
15 |
+
Critique com base em: clareza, precisão e relevância. Retorne apenas '1' ou '2'.
|
16 |
+
"""
|
17 |
+
veredito = arbitro(instrucao, max_length=10)[0]['generated_text']
|
18 |
+
return resposta1 if '1' in veredito else resposta2
|
19 |
+
|
20 |
+
|
21 |
+
def chatbot(prompt):
|
22 |
+
# Gera respostas
|
23 |
+
resposta_rapida = modelo_rapido(prompt, max_length=50)[0]['generated_text']
|
24 |
+
resposta_detalhada = modelo_detalhado(prompt, max_length=100)[0]['generated_text']
|
25 |
+
|
26 |
+
# Escolhe a melhor
|
27 |
+
melhor_resposta = avaliar_respostas(prompt, resposta_rapida, resposta_detalhada)
|
28 |
+
|
29 |
+
return melhor_resposta
|
30 |
+
|
31 |
+
|
32 |
+
# Interface do Gradio
|
33 |
+
with gr.Blocks() as interface:
|
34 |
+
gr.Markdown("## 🤖 Chatbot Acadêmico (Funcionamento em Cascata)")
|
35 |
+
with gr.Tab("Chat"):
|
36 |
+
input_text = gr.Textbox(label="Digite sua pergunta")
|
37 |
+
output_text = gr.Textbox(label="Resposta")
|
38 |
+
btn = gr.Button("Enviar")
|
39 |
+
btn.click(fn=chatbot, inputs=input_text, outputs=output_text)
|
40 |
+
|
41 |
+
with gr.Tab("Sobre"):
|
42 |
+
gr.Markdown("""
|
43 |
+
**Modelos Utilizados**:
|
44 |
+
- Resposta Rápida: `facebook/bart-large-mnli`
|
45 |
+
- Resposta Detalhada: `microsoft/DialoGPT-medium`
|
46 |
+
- Árbitro: `google/flan-t5-large`
|
47 |
+
|
48 |
+
**Critérios de Avaliação**: Clareza, Precisão e Relevância.
|
49 |
+
""")
|
50 |
+
|
51 |
+
interface.launch()
|