hackermoon1 commited on
Commit
e8cdb05
·
verified ·
1 Parent(s): 813c6b4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -0
app.py CHANGED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import GPT2LMHeadModel, GPT2Tokenizer
3
+ import torch
4
+ import os
5
+ from model.utils import preprocess_input, save_feedback
6
+ from model.auto_learn import trigger_auto_learning
7
+
8
+ # Carregar modelo e tokenizador
9
+ model_name = "gpt2"
10
+ tokenizer = GPT2Tokenizer.from_pretrained(model_name)
11
+ model = GPT2LMHeadModel.from_pretrained(model_name)
12
+
13
+ # Mover para GPU se disponível
14
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
15
+ model.to(device)
16
+
17
+ # Função principal de inferência
18
+ def generate_text(prompt, max_length=100, temperature=0.7):
19
+ inputs = preprocess_input(prompt, tokenizer)
20
+ input_ids = inputs["input_ids"].to(device)
21
+
22
+ outputs = model.generate(
23
+ input_ids,
24
+ max_length=max_length,
25
+ temperature=temperature,
26
+ num_return_sequences=1,
27
+ do_sample=True,
28
+ pad_token_id=tokenizer.eos_token_id
29
+ )
30
+
31
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
32
+ return generated_text
33
+
34
+ # Função para coletar feedback e disparar autoaprendizado
35
+ def submit_feedback(prompt, generated_text, user_feedback):
36
+ save_feedback(prompt, generated_text, user_feedback)
37
+ trigger_auto_learning() # Dispara fine-tuning se necessário
38
+ return "Feedback salvo com sucesso!"
39
+
40
+ # Interface com Gradio
41
+ def create_interface():
42
+ with gr.Blocks() as demo:
43
+ gr.Markdown("# GPT-2 no Hugging Face")
44
+ with gr.Row():
45
+ with gr.Column():
46
+ prompt = gr.Textbox(label="Digite seu prompt")
47
+ max_length = gr.Slider(50, 500, value=100, label="Comprimento máximo")
48
+ temperature = gr.Slider(0.1, 1.0, value=0.7, label="Temperatura")
49
+ generate_btn = gr.Button("Gerar Texto")
50
+ with gr.Column():
51
+ output = gr.Textbox(label="Texto Gerado")
52
+ feedback = gr.Textbox(label="Feedback (opcional)")
53
+ feedback_btn = gr.Button("Enviar Feedback")
54
+
55
+ generate_btn.click(
56
+ fn=generate_text,
57
+ inputs=[prompt, max_length, temperature],
58
+ outputs=output
59
+ )
60
+ feedback_btn.click(
61
+ fn=submit_feedback,
62
+ inputs=[prompt, output, feedback],
63
+ outputs=gr.Textbox()
64
+ )
65
+
66
+ return demo
67
+
68
+ # Iniciar a interface
69
+ if __name__ == "__main__":
70
+ demo = create_interface()
71
+ demo.launch(server_name="0.0.0.0", server_port=7860)