kdirgul commited on
Commit
5027d66
·
verified ·
1 Parent(s): 88f6e11

RAG-SFT: faz7_rag.py (extractive QA converter + prompt hizalama)

Browse files
Files changed (1) hide show
  1. code/kod/faz7_rag.py +17 -3
code/kod/faz7_rag.py CHANGED
@@ -196,16 +196,30 @@ def chunk_text(text, size=600, overlap=100):
196
  return out
197
 
198
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  def build_rag_prompt(question, hits, max_ctx_chars=2400):
200
  ctx = ""
201
  for c, _ in hits:
202
- if len(ctx) + len(c) + 3 > max_ctx_chars:
203
  break
204
- ctx += f"- {c}\n"
205
  # SFT formatı = Talimat/Girdi/Yanıt; `### Soru` SFT'de YOK → kaldırıldı, soru talimata gömüldü.
206
  # Yönerge soruyla AYNI dilde (EN soruda TR'ye kaymayı önler — France vakası).
207
  # "kısa/doğrudan + adım adım düşünme" → Magpie'den gelen <think> sızmasını ve uzun-jenerasyon halüsinasyonunu kırar.
208
- tr = any(ch in question.lower() for ch in "çğıöşü")
209
  instr = (f"Aşağıdaki bağlamı kullanarak soruyu kısa ve doğrudan yanıtla; adım adım düşünme. "
210
  f"Cevap bağlamda yoksa \"bilmiyorum\" de.\nSoru: {question}"
211
  if tr else
 
196
  return out
197
 
198
 
199
+ # TR tespiti: özel karakter VEYA TR soru-kelimesi (faz7_prep_rag_sft.py ile BİREBİR aynı tutulmalı).
200
+ _TR_WORDS = {"nedir", "ne", "hangi", "neresi", "nerede", "nereye", "kim", "kimdir", "neden",
201
+ "niçin", "niye", "mıdır", "midir", "mudur", "müdür", "kaç", "kaçtır", "nasıl",
202
+ "mı", "mi", "mu", "mü", "için", "ile", "kaçıncı"}
203
+
204
+
205
+ def _is_tr(question):
206
+ ql = question.lower()
207
+ if any(ch in ql for ch in "çğıöşü"):
208
+ return True
209
+ words = set(ql.replace("?", " ").replace("'", " ").replace(".", " ").split())
210
+ return bool(words & _TR_WORDS)
211
+
212
+
213
  def build_rag_prompt(question, hits, max_ctx_chars=2400):
214
  ctx = ""
215
  for c, _ in hits:
216
+ if len(ctx) + len(c) + 2 > max_ctx_chars:
217
  break
218
+ ctx += c + "\n\n" # düz metin (madde yok) → RAG-SFT verisi ham paragrafla eşleşsin
219
  # SFT formatı = Talimat/Girdi/Yanıt; `### Soru` SFT'de YOK → kaldırıldı, soru talimata gömüldü.
220
  # Yönerge soruyla AYNI dilde (EN soruda TR'ye kaymayı önler — France vakası).
221
  # "kısa/doğrudan + adım adım düşünme" → Magpie'den gelen <think> sızmasını ve uzun-jenerasyon halüsinasyonunu kırar.
222
+ tr = _is_tr(question)
223
  instr = (f"Aşağıdaki bağlamı kullanarak soruyu kısa ve doğrudan yanıtla; adım adım düşünme. "
224
  f"Cevap bağlamda yoksa \"bilmiyorum\" de.\nSoru: {question}"
225
  if tr else