fix(danisman): olasılık/vaat dili — prompt kalıpları, anahtarsız regex denetimi, Jev sorusu ve sürümü (iş 1) [KARAR]
(a) Prompt: yasak kalıp listesi + yerine ne denir örnekleri; 'olasılığı düşük' de yasak.
(b) cikti-denetimi.ts: anahtarsız regex (vaatDiliBul). Akışta Jev VEYA regex yakalarsa düzeltme notu.
Ek model çağrısı yok, kredi etkilenmez; Jev atlanırsa regex yine koşar.
(c) Jev: model jev-1.13.0'a sabitlendi; soruya ölçüt (criteria) eklendi. 01 raporundaki ek cümle
TEK BAŞINA gerçek cevaplarda 15 ihlalin 8'ini kaçırdı; 'olumsuz yöndeki tahmin de ihlaldir'
cümlesiyle birlikte eklendi. Canlı eşik 0,50 kaldı (73 örnek: yanlış alarm 0/40, kaçan 3/33;
regex ile birlikte 0/40 ve 0/33). Eval: danışmanda yerlesme_vaadi eşiği 0,25/0,35.
Kanıt (aynı 23 soru × 2, deepseek-v4-flash): geçen 13/46 → 25/46; jev:yerlesme_vaadi 'kaldı' 20 → 1;
canlı not eklenen cevap 2/46. Dosyalar: sonuc/*-sohbet-vaat-once.json, *-vaat-sonra.json, *-jev-kesif.json.
Akış tamponlanmadı: ihlalli cümle ekranda kalır, altına not düşer (bilinçli; [BİLAL] kararı).
Eval verisi: s060/s061/s062/s064 icermemeli kalıpları reddeden cümleye takılıyordu, kaldırıldı.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -262,10 +262,16 @@ export type Karar = "gecti" | "kaldi" | "gri" | "atlandi";
|
||||
export type Kontrol = { ad: string; durum: Karar; neden?: string };
|
||||
|
||||
/** Jev olasılıklarını kontrol satırlarına çevirir. `kriz`: destek_yonlendirmesi ters okunur. */
|
||||
export function jevKontrolleri(j: JevSonuc, kriz: "kriz" | "kriz-degil" | null): Kontrol[] {
|
||||
export function jevKontrolleri(
|
||||
j: JevSonuc,
|
||||
kriz: "kriz" | "kriz-degil" | null,
|
||||
/** Soru başına eşik; verilmeyen soru JEV_ESIKLER ile okunur. */
|
||||
soruEsikleri: Partial<Record<JevSoruAdi, { inceleme: number; ihlal: number }>> = {},
|
||||
): Kontrol[] {
|
||||
if (j.durum === "atlandi") return [{ ad: "jev", durum: "atlandi", neden: j.neden }];
|
||||
const k: Kontrol[] = [];
|
||||
for (const [ad, p] of Object.entries(j.p) as [JevSoruAdi, number][]) {
|
||||
const esik = soruEsikleri[ad] ?? JEV_ESIKLER;
|
||||
const pm = p.toFixed(2);
|
||||
if (ad === "destek_yonlendirmesi") {
|
||||
if (kriz === "kriz") {
|
||||
@@ -281,7 +287,7 @@ export function jevKontrolleri(j: JevSonuc, kriz: "kriz" | "kriz-degil" | null):
|
||||
}
|
||||
k.push({
|
||||
ad: `jev:${ad}`,
|
||||
durum: p >= JEV_ESIKLER.ihlal ? "kaldi" : p >= JEV_ESIKLER.inceleme ? "gri" : "gecti",
|
||||
durum: p >= esik.ihlal ? "kaldi" : p >= esik.inceleme ? "gri" : "gecti",
|
||||
neden: `p=${pm}`,
|
||||
});
|
||||
}
|
||||
@@ -300,7 +306,7 @@ const tr = (s: string) => s.toLocaleLowerCase("tr-TR");
|
||||
|
||||
/** Reddeden / olumsuzlayan bağlam: eşleşmenin çevresinde varsa vaat sayılmaz. */
|
||||
const OLUMSUZ =
|
||||
/verme|verem|verilem|vermiyor|vermez|değil|yok|diyem|denem|denilem|söyleyem|söylenem|olmaz(?!sa)|edem|hesaplam|tahmin etm|anlamına gelm|kullanm|yapam|sunam|mümkün değil|imkânsız|bilinem|bilem/;
|
||||
/verme|verem|verilem|vermiyor|vermez|değil|yok|diyem|denem|denilem|söyleyem|söylenem|olmaz(?!sa)|edem|hesaplam|tahmin etm|anlamına gelm|kullanm|yapam|sunam|mümkün değil|imkânsız|bilinem|bilem|yerine/;
|
||||
|
||||
/** "girersin" bunlardan birinin hemen ardından geliyorsa yerleşme vaadi değildir. */
|
||||
const GIRIS_BAGLAMI = /ais|sınav|sistem|site|sayfa|hesab|panel|oturum/;
|
||||
|
||||
Reference in New Issue
Block a user