Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -75,8 +75,8 @@ class Retriever:
|
|
| 75 |
|
| 76 |
# -------------- carregar modelo leve de geração --------------
|
| 77 |
def carregar_generator():
|
| 78 |
-
model_name = "google/flan-t5-small"
|
| 79 |
-
|
| 80 |
device = 0 if torch.cuda.is_available() else -1
|
| 81 |
|
| 82 |
tok = AutoTokenizer.from_pretrained(model_name)
|
|
@@ -106,44 +106,44 @@ except Exception as e:
|
|
| 106 |
|
| 107 |
# -------------- prompt/template --------------
|
| 108 |
|
| 109 |
-
def montar_prompt(pergunta: str, fontes: List[dict]) -> str:
|
| 110 |
-
conteudos = []
|
| 111 |
-
for f in fontes:
|
| 112 |
-
texto = f["text"][:400]
|
| 113 |
-
conteudos.append(f"(p.{f['page']}) {texto}")
|
| 114 |
-
|
| 115 |
-
base = "\n\n".join(conteudos)
|
| 116 |
-
|
| 117 |
-
# 🔧 ALTERAÇÃO — Prompt sem terminar com "Resposta:"
|
| 118 |
-
prompt = (
|
| 119 |
-
f"Responda claramente à pergunta usando APENAS o contexto abaixo.\n\n"
|
| 120 |
-
f"Contexto:\n{base}\n\n"
|
| 121 |
-
f"Pergunta: {pergunta}\n\n"
|
| 122 |
-
f"Resposta detalhada:"
|
| 123 |
-
)
|
| 124 |
-
return prompt
|
| 125 |
-
|
| 126 |
-
|
| 127 |
# def montar_prompt(pergunta: str, fontes: List[dict]) -> str:
|
| 128 |
# conteudos = []
|
| 129 |
# for f in fontes:
|
| 130 |
-
# texto = f["text"][:400]
|
| 131 |
# conteudos.append(f"(p.{f['page']}) {texto}")
|
| 132 |
|
| 133 |
# base = "\n\n".join(conteudos)
|
| 134 |
|
| 135 |
-
# # 🔧
|
| 136 |
# prompt = (
|
| 137 |
-
# "
|
| 138 |
-
# "
|
| 139 |
-
# "
|
| 140 |
-
# f"
|
| 141 |
-
# f"PERGUNTA:\n{pergunta}\n\n"
|
| 142 |
-
# "RESPOSTA (não copie o contexto; responda de forma curta):"
|
| 143 |
# )
|
| 144 |
# return prompt
|
| 145 |
|
| 146 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
|
| 148 |
# PROMPT_PREFIX = (
|
| 149 |
# "Primeiramente, inicie a resposta sempre com 'Oi, querido!'.\n\n"
|
|
@@ -210,8 +210,8 @@ def rag_chat(user_msg, history):
|
|
| 210 |
saida = generator(prompt)[0]["generated_text"].strip()
|
| 211 |
|
| 212 |
# # 🔧 cortar no marcador de parada
|
| 213 |
-
|
| 214 |
-
|
| 215 |
|
| 216 |
# 🔧 ALTERAÇÃO 6 — adicionar "Oi, querido!" apenas na saída (não no prompt)
|
| 217 |
if not saida.lower().startswith("oi, querido"):
|
|
|
|
| 75 |
|
| 76 |
# -------------- carregar modelo leve de geração --------------
|
| 77 |
def carregar_generator():
|
| 78 |
+
# model_name = "google/flan-t5-small"
|
| 79 |
+
model_name = "tgsc/ult5-pt-small"
|
| 80 |
device = 0 if torch.cuda.is_available() else -1
|
| 81 |
|
| 82 |
tok = AutoTokenizer.from_pretrained(model_name)
|
|
|
|
| 106 |
|
| 107 |
# -------------- prompt/template --------------
|
| 108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
# def montar_prompt(pergunta: str, fontes: List[dict]) -> str:
|
| 110 |
# conteudos = []
|
| 111 |
# for f in fontes:
|
| 112 |
+
# texto = f["text"][:400]
|
| 113 |
# conteudos.append(f"(p.{f['page']}) {texto}")
|
| 114 |
|
| 115 |
# base = "\n\n".join(conteudos)
|
| 116 |
|
| 117 |
+
# # 🔧 ALTERAÇÃO — Prompt sem terminar com "Resposta:"
|
| 118 |
# prompt = (
|
| 119 |
+
# f"Responda claramente à pergunta usando APENAS o contexto abaixo.\n\n"
|
| 120 |
+
# f"Contexto:\n{base}\n\n"
|
| 121 |
+
# f"Pergunta: {pergunta}\n\n"
|
| 122 |
+
# f"Resposta detalhada:"
|
|
|
|
|
|
|
| 123 |
# )
|
| 124 |
# return prompt
|
| 125 |
|
| 126 |
|
| 127 |
+
def montar_prompt(pergunta: str, fontes: List[dict]) -> str:
|
| 128 |
+
conteudos = []
|
| 129 |
+
for f in fontes:
|
| 130 |
+
texto = f["text"][:400] # limite
|
| 131 |
+
conteudos.append(f"(p.{f['page']}) {texto}")
|
| 132 |
+
|
| 133 |
+
base = "\n\n".join(conteudos)
|
| 134 |
+
|
| 135 |
+
# 🔧 PROMPT OTIMIZADO PARA ULT5
|
| 136 |
+
prompt = (
|
| 137 |
+
"Você é um assistente que responde perguntas usando APENAS os trechos abaixo.\n"
|
| 138 |
+
"Resuma seu raciocínio e responda de forma objetiva. Não repita trechos do contexto.\n"
|
| 139 |
+
"Quando terminar a resposta, escreva o marcador <FIM>.\n\n"
|
| 140 |
+
f"CONTEXT0:\n{base}\n\n"
|
| 141 |
+
f"PERGUNTA:\n{pergunta}\n\n"
|
| 142 |
+
"RESPOSTA (não copie o contexto; responda de forma curta):"
|
| 143 |
+
)
|
| 144 |
+
return prompt
|
| 145 |
+
|
| 146 |
+
|
| 147 |
|
| 148 |
# PROMPT_PREFIX = (
|
| 149 |
# "Primeiramente, inicie a resposta sempre com 'Oi, querido!'.\n\n"
|
|
|
|
| 210 |
saida = generator(prompt)[0]["generated_text"].strip()
|
| 211 |
|
| 212 |
# # 🔧 cortar no marcador de parada
|
| 213 |
+
if "<FIM>" in saida:
|
| 214 |
+
saida = saida.split("<FIM>")[0].strip()
|
| 215 |
|
| 216 |
# 🔧 ALTERAÇÃO 6 — adicionar "Oi, querido!" apenas na saída (não no prompt)
|
| 217 |
if not saida.lower().startswith("oi, querido"):
|