Spaces:
Running
Running
File size: 2,377 Bytes
7983148 67a5668 8823c04 67a5668 45d0a11 67a5668 8823c04 45d0a11 67a5668 8823c04 67a5668 8823c04 67a5668 7983148 67a5668 b26ce6a 7983148 45d0a11 67a5668 45d0a11 67a5668 7983148 67a5668 45d0a11 67a5668 b12fb1b 7983148 67a5668 b12fb1b 67a5668 b12fb1b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
import torch
# === Modelos leves recomendados ===
MODEL_OPTIONS = {
"DistilGPT2": "distilgpt2", # muito rápido e leve (~80MB)
"TinyLLaMA": "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
}
# === Escolha o modelo padrão mais leve ===
MODEL_NAME = MODEL_OPTIONS["DistilGPT2"]
# === Carrega modelo e tokenizer uma vez ===
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)
gerador = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device=0 if torch.cuda.is_available() else -1,
max_new_tokens=200,
temperature=0.7,
top_p=0.9,
do_sample=True
)
# === Função principal ===
def responder_como_aldo(pergunta):
prompt = f"""Você é o professor Dr. Aldo Henrique, especialista em C, Java, Web e IA. Responda de forma clara, acadêmica e precisa.
Pergunta: {pergunta}
Resposta:"""
try:
resposta = gerador(prompt, max_new_tokens=200)[0]["generated_text"]
resposta_limpa = resposta.replace(prompt, "").strip()
return resposta_limpa if resposta_limpa else "Desculpe, não consegui gerar uma resposta adequada."
except Exception as e:
return f"Erro: {str(e)}"
# === Interface Gradio ===
with gr.Blocks(title="Pergunte ao Dr. Aldo Henrique") as interface:
gr.Markdown("## 🤖 Pergunte ao Dr. Aldo Henrique")
gr.Markdown(f"**Modelo carregado:** `{MODEL_NAME}`")
entrada = gr.Textbox(label="Pergunta", placeholder="Ex: Como usar ponteiros em C?", lines=4)
saida = gr.Textbox(label="Resposta do Dr. Aldo", lines=8, interactive=False)
botao = gr.Button("Responder")
exemplos = gr.Examples(
examples=[
["Como implementar uma lista ligada em C?"],
["Qual a diferença entre == e equals() em Java?"],
["Como funciona o machine learning?"],
["Explique os conceitos de HTML, CSS e JavaScript"],
["O que são algoritmos de ordenação?"]
],
inputs=entrada
)
botao.click(fn=responder_como_aldo, inputs=entrada, outputs=saida)
# === Lançamento com configurações otimizadas para HuggingFace ===
if __name__ == "__main__":
interface.launch(
server_name="0.0.0.0",
server_port=7860,
share=False
) |