Spaces:
Runtime error
Runtime error
File size: 2,599 Bytes
99668c4 46d8eae 7cc7b40 46d8eae d38f804 7cc7b40 46d8eae 99668c4 7cc7b40 99668c4 7cc7b40 46d8eae 7cc7b40 ab805e6 f1e41b5 7cc7b40 46d8eae 7cc7b40 2bc0299 ab805e6 7cc7b40 2bc0299 46d8eae 7cc7b40 46d8eae ab805e6 99668c4 7cc7b40 46d8eae 7cc7b40 46d8eae 7cc7b40 ab805e6 7cc7b40 b13ff53 7cc7b40 46d8eae ab805e6 7cc7b40 46d8eae 7cc7b40 ab805e6 46d8eae 7cc7b40 b13ff53 7cc7b40 ab805e6 d38f804 46d8eae ab805e6 |
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 |
import re
from langdetect import detect, DetectorFactory
from transformers import pipeline
import gradio as gr
# Garante consistência nos resultados do langdetect
DetectorFactory.seed = 0
# Carrega modelo de texto em português
generator = pipeline(
"text2text-generation",
model="unicamp-dl/ptt5-base-portuguese-vocab",
tokenizer="unicamp-dl/ptt5-base-portuguese-vocab"
)
# Mapeamento de comandos (em português)
COMMANDS = {
"resumo": ["resuma", "resumo", "resumir"],
"reescrever": ["reescreva", "reformule", "reformular"],
"expandir": ["expanda", "expansão", "expandir", "detalhe"],
"corrigir": ["corrija", "corrigir", "melhore", "revise"]
}
PROMPTS = {
"resumo": "Resuma o texto a seguir:\n\n",
"reescrever": "Reescreva com mais clareza e estilo:\n\n",
"expandir": "Expanda este texto, adicionando detalhes e explicações:\n\n",
"corrigir": "Corrija a gramática, ortografia e estilo do seguinte texto:\n\n",
"gerar": ""
}
def detect_language(text):
try:
lang = detect(text)
return lang if lang in ["pt", "en", "fr"] else "pt"
except:
return "pt"
def find_command(text, lang):
text_lower = text.lower()
for cmd, keywords in COMMANDS.items():
for kw in keywords:
if kw in text_lower:
return cmd
return "gerar"
def clean_text(text):
text = re.sub(r"\s+", " ", text).strip()
for keywords in COMMANDS.values():
for kw in keywords:
text = re.sub(rf"\b{kw}\b", "", text, flags=re.IGNORECASE)
return text.strip(": ").strip()
def build_prompt(core, cmd):
return PROMPTS.get(cmd, "") + core
def gerar_resposta(texto):
lang = detect_language(texto)
cmd = find_command(texto, lang)
core = clean_text(texto)
prompt = build_prompt(core, cmd)
output = generator(prompt, max_new_tokens=256, temperature=0.7, top_p=0.9)[0]["generated_text"]
resposta = output.replace(prompt, "").strip()
if resposta.lower().startswith(core.lower()):
resposta = resposta[len(core):].strip()
return resposta or "⚠️ A IA não conseguiu processar esse texto. Tente reformular."
# Interface
demo = gr.Interface(
fn=gerar_resposta,
inputs=gr.Textbox(lines=6, placeholder="Digite algo como: Corrija: O menino está brincano...", label="Entrada"),
outputs=gr.Textbox(label="Resposta da IA"),
title="🧠 IA Multilingue Sr. Nicolas",
description="Detecta comando embutido e devolve resposta humanizada em português.",
allow_flagging="never"
)
if __name__ == "__main__":
demo.launch() |