vsazevedo/teste
0
1import os2import gradio as gr3from transformers import pipeline4 5# Ajuste aqui (ou use a variável de ambiente SYSTEM_PROMPT no Space)6SYSTEM_PROMPT = os.getenv(7 "SYSTEM_PROMPT",8 "Você é uma persona de IA educada, útil e objetiva. Responda sempre em português do Brasil, com clareza e exemplos quando fizer sentido."9)10 11# Modelo leve que roda no CPU free do HF Spaces12MODEL_ID = os.getenv("MODEL_ID", "google/flan-t5-base")13 14generator = pipeline(15 task="text2text-generation",16 model=MODEL_ID17)18 19def build_prompt(user_msg, history):20 # Constrói um prompt simples que “lembra” do histórico21 history_txt = ""22 for u, a in history:23 history_txt += f"Usuário: {u}\nAssistente: {a}\n"24 prompt = (25 f"{SYSTEM_PROMPT}\n\n"26 f"Histórico da conversa:\n{history_txt}\n"27 f"Usuário: {user_msg}\n"28 f"Assistente:"29 )30 return prompt31 32def respond(user_msg, history):33 if history is None:34 history = []35 36 prompt = build_prompt(user_msg, history)37 output = generator(prompt, max_new_tokens=256, do_sample=True, temperature=0.7)[0]["generated_text"]38 39 # Pega somente o que vem depois de "Assistente:" (caso o modelo replique o prompt)40 if "Assistente:" in output:41 bot_msg = output.split("Assistente:", 1)[-1].strip()42 else:43 bot_msg = output.strip()44 45 history.append((user_msg, bot_msg))46 return "", history47 48with gr.Blocks(title="Minha Persona IA") as demo:49 gr.Markdown("# 🤖 Minha Persona IA (gratuita)\nConverse com a persona definida no prompt do sistema.")50 51 chatbot = gr.Chatbot(height=450)52 txt = gr.Textbox(placeholder="Digite sua mensagem e pressione Enter...", label="Mensagem")53 state = gr.State([])54 55 txt.submit(respond, [txt, state], [txt, chatbot])56 57 with gr.Row():58 clear_btn = gr.Button("Limpar conversa")59 60 def clear():61 return "", []62 63 clear_btn.click(clear, outputs=[txt, chatbot], queue=False)64 65demo.launch()