prompt.ai / app.py
DHEIVER's picture
Update app.py
d86f558 verified
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import logging
# Configuração básica de logging
logging.basicConfig(level=logging.INFO)
# Templates simplificados
TEMPLATES = {
"história": [
"Crie uma história sobre {tema}",
"Escreva um conto sobre {tema}",
"Desenvolva uma narrativa sobre {tema}"
],
"tutorial": [
"Crie um tutorial sobre {tema}",
"Explique como fazer {tema}",
"Desenvolva um guia sobre {tema}"
],
"explicação": [
"Explique {tema} de forma simples",
"Descreva como funciona {tema}",
"Faça uma análise de {tema}"
]
}
class SimplePromptGenerator:
def __init__(self):
self.model_name = "pierreguillou/gpt2-small-portuguese" # Modelo menor em português
self.load_model()
def load_model(self):
try:
logging.info("Carregando modelo...")
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
self.model = AutoModelForCausalLM.from_pretrained(
self.model_name,
torch_dtype=torch.float16,
device_map="auto",
low_cpu_mem_usage=True
)
logging.info("Modelo carregado!")
except Exception as e:
logging.error(f"Erro ao carregar modelo: {e}")
raise
def generate(self, prompt: str, max_length: int = 100) -> str:
try:
inputs = self.tokenizer(prompt, return_tensors="pt").to(self.model.device)
outputs = self.model.generate(
**inputs,
max_new_tokens=max_length,
temperature=0.7,
do_sample=True,
pad_token_id=self.tokenizer.eos_token_id
)
return self.tokenizer.decode(outputs[0], skip_special_tokens=True)
except Exception as e:
logging.error(f"Erro na geração: {e}")
return f"Erro: {str(e)}"
def create_interface():
generator = SimplePromptGenerator()
def gerar_prompt(categoria, tema, comprimento):
if not tema:
return "Por favor, insira um tema."
template = TEMPLATES[categoria][0].format(tema=tema)
prompt = f"Gere um texto em português:\n{template}"
return generator.generate(prompt, max_length=comprimento)
with gr.Blocks(theme=gr.themes.Soft()) as app:
gr.Markdown(
"""
# 🤖 Gerador de Prompts
### Crie textos em português usando IA
"""
)
with gr.Row():
with gr.Column():
categoria = gr.Dropdown(
choices=list(TEMPLATES.keys()),
label="📚 Categoria",
value="história"
)
tema = gr.Textbox(
label="💡 Tema",
placeholder="Digite o tema aqui..."
)
comprimento = gr.Slider(
minimum=50,
maximum=200,
value=100,
step=10,
label="📏 Comprimento (palavras)"
)
gerar_btn = gr.Button("🚀 Gerar", variant="primary")
saida = gr.Textbox(
label="📝 Texto Gerado",
lines=10
)
gerar_btn.click(
gerar_prompt,
inputs=[categoria, tema, comprimento],
outputs=saida
)
return app
if __name__ == "__main__":
app = create_interface()
app.queue()
app.launch(server_name="0.0.0.0", server_port=7860)