DHEIVER commited on
Commit
e0164c8
·
verified ·
1 Parent(s): b4469af

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -10
app.py CHANGED
@@ -72,19 +72,23 @@ def answer_question(question, knowledge_state):
72
  # Etapa de Recuperação (sem alterações)
73
  question_embedding = retriever_model.encode(question, convert_to_tensor=True)
74
  cosine_scores = util.cos_sim(question_embedding, knowledge_base_embeddings)
75
- top_k = min(3, len(knowledge_base))
76
  top_results = torch.topk(cosine_scores, k=top_k, dim=-1)
77
  retrieved_context = "\n---\n".join([knowledge_base[i] for i in top_results.indices[0]])
78
 
 
 
 
 
79
  print(f"\n--- Nova Pergunta de Auditoria ---")
80
  print(f"Pergunta: {question}")
81
  print(f"Contexto Recuperado (Top {top_k}):\n{retrieved_context}")
82
 
83
- # MUDANÇA: Prompt ajustado para o formato de instrução do DeepSeek
84
  prompt = f"""### Instruction:
85
- Você é um assistente de IA. Responda à pergunta do usuário ou execute a tarefa solicitada com base nos trechos de documentos fornecidos. Se a pergunta for aberta, como "explique o documento", resuma os pontos principais encontrados nos trechos.
86
 
87
- **Documentos:**
88
  {retrieved_context}
89
 
90
  **Pergunta:**
@@ -96,17 +100,16 @@ Você é um assistente de IA. Responda à pergunta do usuário ou execute a tare
96
  input_ids = generator_tokenizer(prompt, return_tensors="pt").input_ids
97
  input_length = input_ids.shape[1]
98
 
99
- # MUDANÇA: Ajuste nos parâmetros de geração
100
  outputs = generator_model.generate(
101
  input_ids,
102
- max_new_tokens=256, # Controla o tamanho da *nova* resposta gerada
103
- do_sample=False, # Desativa a amostragem para respostas mais diretas
104
  eos_token_id=generator_tokenizer.eos_token_id,
105
- pad_token_id=generator_tokenizer.eos_token_id # Evita warnings
106
  )
107
 
108
- # MUDANÇA: Decodificação correta para modelos Causal LM
109
- # Precisamos remover o prompt inicial da saída gerada.
110
  generated_tokens = outputs[0, input_length:]
111
  answer = generator_tokenizer.decode(generated_tokens, skip_special_tokens=True)
112
 
 
72
  # Etapa de Recuperação (sem alterações)
73
  question_embedding = retriever_model.encode(question, convert_to_tensor=True)
74
  cosine_scores = util.cos_sim(question_embedding, knowledge_base_embeddings)
75
+ top_k = min(5, len(knowledge_base)) # Aumentado para 5 para mais contexto
76
  top_results = torch.topk(cosine_scores, k=top_k, dim=-1)
77
  retrieved_context = "\n---\n".join([knowledge_base[i] for i in top_results.indices[0]])
78
 
79
+ # Verificação para garantir que o contexto não está vazio
80
+ if not retrieved_context.strip():
81
+ return "Não foi possível encontrar um contexto relevante nos documentos para responder a esta pergunta."
82
+
83
  print(f"\n--- Nova Pergunta de Auditoria ---")
84
  print(f"Pergunta: {question}")
85
  print(f"Contexto Recuperado (Top {top_k}):\n{retrieved_context}")
86
 
87
+ # MUDANÇA PRINCIPAL: Prompt muito mais direto para forçar o uso do contexto
88
  prompt = f"""### Instruction:
89
+ Use estritamente a informação fornecida no 'Contexto' para responder à 'Pergunta'. Não adicione informações externas. Se a pergunta for sobre explicar o documento, resuma os pontos principais do contexto.
90
 
91
+ **Contexto:**
92
  {retrieved_context}
93
 
94
  **Pergunta:**
 
100
  input_ids = generator_tokenizer(prompt, return_tensors="pt").input_ids
101
  input_length = input_ids.shape[1]
102
 
103
+ # Ajuste nos parâmetros de geração
104
  outputs = generator_model.generate(
105
  input_ids,
106
+ max_new_tokens=300, # Aumentado para permitir resumos mais longos
107
+ do_sample=False,
108
  eos_token_id=generator_tokenizer.eos_token_id,
109
+ pad_token_id=generator_tokenizer.eos_token_id
110
  )
111
 
112
+ # Decodificação correta para modelos Causal LM
 
113
  generated_tokens = outputs[0, input_length:]
114
  answer = generator_tokenizer.decode(generated_tokens, skip_special_tokens=True)
115