aldohenrique's picture
Update app.py
67a5668 verified
raw
history blame
2.38 kB
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
)