Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
import re
|
2 |
from langdetect import detect, DetectorFactory
|
3 |
from transformers import pipeline
|
@@ -6,19 +7,19 @@ import gradio as gr
|
|
6 |
# Garante resultados determinísticos em detect()
|
7 |
DetectorFactory.seed = 0
|
8 |
|
9 |
-
#
|
10 |
generator = pipeline(
|
11 |
"text-generation",
|
12 |
-
model="
|
13 |
device=-1
|
14 |
)
|
15 |
|
16 |
-
#
|
17 |
COMMANDS = {
|
18 |
-
"resumo": ["resuma", "resumo", "resumir"],
|
19 |
-
"reescrever": ["reescreva", "reformule", "reformular"],
|
20 |
-
"expandir": ["expanda", "expansão", "expandir", "detalhe"],
|
21 |
-
"corrigir": ["corrija", "corrigir", "melhore", "revise"]
|
22 |
}
|
23 |
|
24 |
HUMANIZE_PROMPT = {
|
@@ -34,7 +35,7 @@ def detect_language(text: str) -> str:
|
|
34 |
except:
|
35 |
return "pt"
|
36 |
|
37 |
-
def find_command(text: str
|
38 |
low = text.lower()
|
39 |
for cmd, kws in COMMANDS.items():
|
40 |
for kw in kws:
|
@@ -43,7 +44,6 @@ def find_command(text: str, lang: str) -> str:
|
|
43 |
return "gerar"
|
44 |
|
45 |
def clean_text(text: str) -> str:
|
46 |
-
# remove múltiplos espaços e palavras-chave
|
47 |
txt = re.sub(r"\s+", " ", text)
|
48 |
for kws in COMMANDS.values():
|
49 |
for kw in kws:
|
@@ -81,23 +81,19 @@ def build_prompt(core: str, cmd: str, lang: str) -> str:
|
|
81 |
|
82 |
def gerar_resposta(texto: str) -> str:
|
83 |
lang = detect_language(texto)
|
84 |
-
cmd = find_command(texto
|
85 |
core = clean_text(texto)
|
86 |
|
87 |
-
# 1) Geração principal
|
88 |
prompt1 = build_prompt(core, cmd, lang)
|
89 |
out1 = generator(prompt1, max_new_tokens=200, temperature=0.7, top_p=0.9)[0]["generated_text"]
|
90 |
-
# retira o próprio prompt
|
91 |
res1 = out1.replace(prompt1, "").strip()
|
92 |
|
93 |
-
# 2) Humanização final
|
94 |
prompt2 = HUMANIZE_PROMPT[lang] + res1 + "\n\n"
|
95 |
out2 = generator(prompt2, max_new_tokens=100, temperature=0.6, top_p=0.8)[0]["generated_text"]
|
96 |
res2 = out2.replace(prompt2, "").strip()
|
97 |
|
98 |
return res2
|
99 |
|
100 |
-
# Interface Gradio
|
101 |
demo = gr.Interface(
|
102 |
fn=gerar_resposta,
|
103 |
inputs=gr.Textbox(lines=6, placeholder="Digite seu texto com 'resuma', 'expanda', etc...", label="Entrada"),
|
|
|
1 |
+
|
2 |
import re
|
3 |
from langdetect import detect, DetectorFactory
|
4 |
from transformers import pipeline
|
|
|
7 |
# Garante resultados determinísticos em detect()
|
8 |
DetectorFactory.seed = 0
|
9 |
|
10 |
+
# Carregando o modelo GPT2 pequeno em português (CPU)
|
11 |
generator = pipeline(
|
12 |
"text-generation",
|
13 |
+
model="pierreguillou/gpt2-small-portuguese",
|
14 |
device=-1
|
15 |
)
|
16 |
|
17 |
+
# Comandos e palavras-chave em pt/en/fr
|
18 |
COMMANDS = {
|
19 |
+
"resumo": ["resuma", "resumo", "resumir", "summarize", "résumé", "résumer"],
|
20 |
+
"reescrever": ["reescreva", "reformule", "reformular", "rewrite", "réécrire"],
|
21 |
+
"expandir": ["expanda", "expansão", "expandir", "detalhe", "expand", "développez"],
|
22 |
+
"corrigir": ["corrija", "corrigir", "melhore", "revise", "correct", "corriger"]
|
23 |
}
|
24 |
|
25 |
HUMANIZE_PROMPT = {
|
|
|
35 |
except:
|
36 |
return "pt"
|
37 |
|
38 |
+
def find_command(text: str) -> str:
|
39 |
low = text.lower()
|
40 |
for cmd, kws in COMMANDS.items():
|
41 |
for kw in kws:
|
|
|
44 |
return "gerar"
|
45 |
|
46 |
def clean_text(text: str) -> str:
|
|
|
47 |
txt = re.sub(r"\s+", " ", text)
|
48 |
for kws in COMMANDS.values():
|
49 |
for kw in kws:
|
|
|
81 |
|
82 |
def gerar_resposta(texto: str) -> str:
|
83 |
lang = detect_language(texto)
|
84 |
+
cmd = find_command(texto)
|
85 |
core = clean_text(texto)
|
86 |
|
|
|
87 |
prompt1 = build_prompt(core, cmd, lang)
|
88 |
out1 = generator(prompt1, max_new_tokens=200, temperature=0.7, top_p=0.9)[0]["generated_text"]
|
|
|
89 |
res1 = out1.replace(prompt1, "").strip()
|
90 |
|
|
|
91 |
prompt2 = HUMANIZE_PROMPT[lang] + res1 + "\n\n"
|
92 |
out2 = generator(prompt2, max_new_tokens=100, temperature=0.6, top_p=0.8)[0]["generated_text"]
|
93 |
res2 = out2.replace(prompt2, "").strip()
|
94 |
|
95 |
return res2
|
96 |
|
|
|
97 |
demo = gr.Interface(
|
98 |
fn=gerar_resposta,
|
99 |
inputs=gr.Textbox(lines=6, placeholder="Digite seu texto com 'resuma', 'expanda', etc...", label="Entrada"),
|