Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -31,8 +31,8 @@ class RAGSystem:
|
|
31 |
model=self.model,
|
32 |
tokenizer=self.tokenizer,
|
33 |
max_length=512,
|
34 |
-
temperature=0.3, #
|
35 |
-
top_p=0.9, #
|
36 |
repetition_penalty=1.2 # Evita repetições
|
37 |
)
|
38 |
|
@@ -153,44 +153,48 @@ class RAGSystem:
|
|
153 |
progress(0.4, desc="Buscando informações relevantes...")
|
154 |
|
155 |
# Configuração do RAG
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
"fetch_k": 6,
|
163 |
-
"score_threshold": 0.6 # Filtra resultados pouco relevantes
|
164 |
-
}
|
165 |
-
),
|
166 |
-
return_source_documents=True
|
167 |
)
|
168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
progress(0.6, desc="Gerando resposta...")
|
170 |
|
171 |
# Prompt mais estruturado
|
172 |
prompt = f"""Instruções:
|
173 |
-
1. Analise cuidadosamente
|
174 |
2. Responda à seguinte pergunta em português de forma clara e direta: {query}
|
175 |
-
3. Use apenas informações encontradas
|
176 |
4. Se não houver informações suficientes, indique explicitamente.
|
177 |
5. Mantenha a resposta objetiva e baseada em fatos.
|
178 |
-
6. Cite exemplos específicos
|
179 |
-
|
|
|
|
|
180 |
|
181 |
Pergunta: {query}"""
|
182 |
|
183 |
# Gera resposta
|
184 |
-
result =
|
185 |
-
|
186 |
-
# Verifica se encontrou contexto relevante
|
187 |
-
context_found = bool(result.get("source_documents", []))
|
188 |
|
189 |
# Formata a resposta
|
190 |
formatted_response = self.format_response(
|
191 |
-
result
|
192 |
source_type,
|
193 |
-
context_found
|
194 |
)
|
195 |
|
196 |
elapsed_time = f"{time.time() - start_time:.1f}s"
|
|
|
31 |
model=self.model,
|
32 |
tokenizer=self.tokenizer,
|
33 |
max_length=512,
|
34 |
+
temperature=0.3, # Respostas mais precisas
|
35 |
+
top_p=0.9, # Diversidade controlada
|
36 |
repetition_penalty=1.2 # Evita repetições
|
37 |
)
|
38 |
|
|
|
153 |
progress(0.4, desc="Buscando informações relevantes...")
|
154 |
|
155 |
# Configuração do RAG
|
156 |
+
retriever = db.as_retriever(
|
157 |
+
search_kwargs={
|
158 |
+
"k": 6, # Aumenta o número de trechos recuperados
|
159 |
+
"fetch_k": 10,
|
160 |
+
"score_threshold": 0.5 # Limiar de relevância
|
161 |
+
}
|
|
|
|
|
|
|
|
|
|
|
162 |
)
|
163 |
|
164 |
+
# Recupera o contexto
|
165 |
+
context_docs = retriever.get_relevant_documents(query)
|
166 |
+
|
167 |
+
# Verifica se o contexto é relevante
|
168 |
+
if not context_docs:
|
169 |
+
return "🔍 Não foram encontradas informações suficientes nos documentos para responder esta pergunta.", "⚠️ Contexto insuficiente", f"{time.time() - start_time:.1f}s"
|
170 |
+
|
171 |
+
# Prepara o contexto para o prompt
|
172 |
+
context = "\n\n".join([doc.page_content for doc in context_docs])
|
173 |
+
|
174 |
progress(0.6, desc="Gerando resposta...")
|
175 |
|
176 |
# Prompt mais estruturado
|
177 |
prompt = f"""Instruções:
|
178 |
+
1. Analise cuidadosamente o contexto fornecido.
|
179 |
2. Responda à seguinte pergunta em português de forma clara e direta: {query}
|
180 |
+
3. Use apenas informações encontradas no contexto.
|
181 |
4. Se não houver informações suficientes, indique explicitamente.
|
182 |
5. Mantenha a resposta objetiva e baseada em fatos.
|
183 |
+
6. Cite exemplos específicos do contexto quando relevante.
|
184 |
+
|
185 |
+
Contexto:
|
186 |
+
{context}
|
187 |
|
188 |
Pergunta: {query}"""
|
189 |
|
190 |
# Gera resposta
|
191 |
+
result = self.llm(prompt)
|
|
|
|
|
|
|
192 |
|
193 |
# Formata a resposta
|
194 |
formatted_response = self.format_response(
|
195 |
+
result,
|
196 |
source_type,
|
197 |
+
context_found=True
|
198 |
)
|
199 |
|
200 |
elapsed_time = f"{time.time() - start_time:.1f}s"
|