File size: 3,751 Bytes
ea865d5 b974190 d86f558 b974190 d86f558 2cf26e9 d86f558 ea865d5 d86f558 ea865d5 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 b974190 d86f558 2cf26e9 d86f558 b974190 d86f558 ea865d5 d86f558 eeed458 d86f558 eeed458 ea865d5 d86f558 ea865d5 d86f558 2cf26e9 ea865d5 d86f558 2cf26e9 ea865d5 eeed458 b974190 d86f558 |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
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) |