DHEIVER commited on
Commit
4f1f3fd
·
verified ·
1 Parent(s): c31a53d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -23
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, # Reduzido para respostas mais precisas
35
- top_p=0.9, # Ajustado para permitir diversidade controlada
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
- qa_chain = RetrievalQA.from_chain_type(
157
- llm=self.llm,
158
- chain_type="stuff",
159
- retriever=db.as_retriever(
160
- search_kwargs={
161
- "k": 4,
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 os documentos fornecidos.
174
  2. Responda à seguinte pergunta em português de forma clara e direta: {query}
175
- 3. Use apenas informações encontradas nos documentos.
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 dos documentos quando relevante.
179
- 7. Evite inventar informações que não estão presentes nos documentos.
 
 
180
 
181
  Pergunta: {query}"""
182
 
183
  # Gera resposta
184
- result = qa_chain({"query": prompt})
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["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"