Sertaç Yıldırım saha notları

Ana sayfa → Teknik

Halüsinasyon Canlıda: Eval Değil, Sahadan Sinyal

13 Mayıs Çarşamba, 09:50. Destek ekibinden Zeynep arıyor: “Asistan bir müşteriye Apple hissesinde komisyonun binde 1 olduğunu söylemiş. Bizde yurt dışı hisse binde 2. Müşteri farkı geri istiyor.” O hafta eval setimiz 50 sorudan 48’ini geçmişti.

Özet
  • Eval seti senin sorularını ölçer, müşterininkini değil. Rastgele 200 konuşmada 11 yanlış iddia bulduk; 9’u eval setinde hiç olmayan bir soru biçimindeydi.
  • Şikâyet tek sinyal değil. Aynı komisyon hatasını dört müşteri daha görmüştü. Hiçbiri yazmadı.
  • Beş sinyal, hiçbiri kanıt değil. Düzeltme ifadesi, tekrar sorma, temsilciye devir, temsilci işareti, rakam kontrolü. Sinyal nereye bakacağını söyler; hatayı insan doğrular.
  • En isabetli sinyal temsilcinin düğmesi. Konuşmayı devralan temsilci yanlışı zaten görüyor. Tek tıkla işaretlemesi %84 isabet verdi.
  • Rakamı kod kontrol eder. Cevaptaki komisyon, limit ve süreleri ücret tablosuyla karşılaştırıyoruz; uymuyorsa cevap gitmiyor, temsilciye devrediliyor.
  • Doğrulanan her hata eval setine müşterinin cümlesiyle girer. Bizim cümlemizle değil.

Sahadan: Apple ve binde 1

İlk refleksim eval setine bakmak oldu. Setimizde bu soru vardı: “Yurt dışı hisse işlemlerinde komisyon ne kadar?” Asistan her koşuda doğru cevap veriyordu: binde 2. Müşterinin sorusu ise şuydu: “Apple alsam ne kadar kesinti olur?” Model Apple’ın yurt dışı hisse olduğunu bağlamadı, ücret tablosunun ilk satırını aldı: BIST hisse, binde 1.

Müşteri 4.800 $’lık alım yapmıştı. Binde 1 ile 4,80 $, binde 2 ile 9,60 $. Fark küçüktü ve iade ettik. Beni asıl korkutan soru şuydu: bunu kaç kişiye daha söyledi?

Son iki haftanın 16.800 konuşmasından rastgele 200 tanesini çektik. İki kişi bir gün boyunca okudu. Soru tekti: cevapta, gerçekle çelişen ya da kaynağı olmayan bir iddia var mı?

Yanlış iddia tipi200 konuşmadaEval setinde benzeri var mıydı?
Ücret ya da limit rakamı (4’ü yerli/yurt dışı karışıklığı)62’sinin
Süreç adımı (“çekim talebini uygulamadan iptal edebilirsiniz”)3Hayır
Olmayan menü ya da özellik2Hayır
Toplam11 (%5,5)2 / 11

İki şey çıktı. Birincisi, eval setinin %4 hata oranı ile sahadaki %5,5 birbirine yakın görünüyordu. Ama bu tesadüftü: setin yakaladığı hatalar ile sahadaki hatalar neredeyse hiç örtüşmüyordu. İkincisi, yerli/yurt dışı karışıklığını 200’lük örnekte dört kişi daha yaşamıştı. Dördü de yanlış rakamı okudu, dördü de sustu.

Süreç adımı hataları rakamlardan daha sinsi çıktı. Asistan bir müşteriye çekim talebini uygulamadan iptal edebileceğini söylemişti. Öyle bir düğme yok; talep onaylandıktan sonra iptal ancak telefonla yapılıyor. Müşteri düğmeyi aradı, bulamadı, destek hattını aradı. Bu konuşma bize şikâyet olarak değil, sıradan bir “çekim iptali” çağrısı olarak ulaştı. Kimse asistanla bağlantısını kurmadı.

Şikâyet eden bir müşterinin arkasında, şikâyet etmeyen dördü var.

Eval neyi göremez?

Hata benimdi ve basitti: eval setinin yeşil olmasını, asistanın doğru çalıştığının kanıtı saymıştım. Oysa eval seti bir regresyon ölçüsü. Dün bildiğin soruların bugün de doğru cevaplandığını söyler. Bilmediğin soruları söylemez.

Setteki 50 soruyu biz yazmıştık. Bizim kelimelerimizle: “yurt dışı hisse”, “para çekme talebi”, “EFT limiti”. Müşteri bu kelimeleri kullanmıyor. “Apple alsam”, “param ne zaman hesabıma geçer”, “bankaya ne kadar atabilirim” diyor. Model bizim sorumuzda doğru satırı buluyor, müşterinin sorusunda bulamıyor.

Bir de tanım meselesi var. Halüsinasyon derken modelin “uydurmasını” kastetmiyorum; Apple cevabında uydurulan bir şey yoktu. Binde 1 gerçek bir rakamdı, tabloda duruyordu, sadece yanlış satırdı. Bizim işimize yarayan tanım şu: kaynağıyla çelişen ya da kaynağı olmayan, kendinden emin bir iddia. Bu tanımla bakınca üç tip hatanın üçü de aynı şey: modelin elinde doğru bilgi var ya da yok, ama cevabın tonu ikisinde de aynı.

Buradan çıkan sonuç eval setini çöpe atmak değil. Eval kapıda durur, yeni bir prompt ya da model eski soruları bozmasın diye. Ama kapıdan geçtikten sonra ne olduğunu görmek için sahadan sinyal lazım.

Eval seti senin kelimelerinle yazılır. Müşteri kendi kelimeleriyle sorar.

Sahadan sinyal: beş kaynak

Halüsinasyonu doğrudan ölçen bir metrik yok. Yanlış bir cevap, doğru bir cevapla aynı şekilde görünür: akıcı, kendinden emin, zamanında. Ama yanlış cevabın arkasından bir şey olur. Müşteri itiraz eder, tekrar sorar, bir insana ulaşmak ister. Bu izleri topladık:

  1. Düzeltme ifadesi. Asistanın cevabından sonraki mesaj “hayır”, “yanlış”, “öyle değil”, “ama geçen sefer” ile başlıyor.
  2. Tekrar sorma. Müşteri iki dakika içinde aynı soruyu başka kelimelerle soruyor.
  3. Temsilciye devir. Asistanın cevabından sonra “temsilciye bağla”.
  4. Temsilci işareti. Konuşmayı devralan temsilcinin panelinde tek düğme: “Asistan yanlış bilgi vermiş”, altında tek alan: “Doğrusu ne?”.
  5. Rakam kontrolü. Cevaptaki komisyon, limit ve süre rakamları ücret tablosuyla karşılaştırılıyor (aşağıda).

Bu sinyallerin hiçbiri hatayı kanıtlamıyor. Müşteri “hayır” diyebilir çünkü cevap doğru ama hoşuna gitmedi. Temsilciye devir çoğu zaman asistanla ilgisiz. Sinyalin işi nereye bakacağını söylemek. Hangisinin ne kadar işe yaradığını dört hafta boyunca, işaretlenen konuşmaları okuyarak ölçtük:

SinyalHaftada (8.400 konuşma)İsabet: gerçekten yanlış iddia var
Rastgele örnek (referans)%5,5
Tekrar sorma571 (%6,8)%12
Temsilciye devir756 (%9)%18
Düzeltme ifadesi176 (%2,1)%31
Rakam kontrolü218 (%2,6)%71
Temsilci işareti38%84

Tabloyu referans satırıyla oku. Rastgele bir konuşmada yanlış iddia bulma şansın %5,5. Düzeltme ifadesi olan bir konuşmada %31, yani altı kat daha hızlı buluyorsun. Tekrar sorma en gürültülüsü; müşteriler asistanın doğru cevabını da çoğu zaman bir kez daha soruyor.

Temsilci işareti: en ucuz, en isabetli

En iyi sinyal zaten elimizdeydi ve kullanmıyorduk. Konuşmayı devralan temsilci, önceki mesajları okuyor ve asistanın yanlışını çoğu zaman ilk bakışta görüyor. Sadece bunu yazabileceği bir yer yoktu. Düğmeyi ekledikten sonraki ilk hafta 9 işaret geldi. Destek takım lideri bunu devir sürecinin bir adımı yapınca üçüncü haftada 38’e çıktı.

“Doğrusu ne?” alanı düğmeden daha değerli çıktı. Temsilcinin yazdığı cümle, o hatanın eval setine gireceği maddenin beklenen cevabı oluyor. Hatayı bulan kişi, düzeltmesini de yazmış oluyor.

Rakam kontrolü: iddiayı tabloyla karşılaştırmak

11 hatanın 6’sı rakamdı. Rakamın iyi bir yanı var: doğrusu bir tabloda duruyor. Komisyon oranları, çekim limitleri, işlem süreleri ücret tablosunda ve bu tablo zaten uygulamanın kullandığı tablo. Bu yüzden rakamı modele güvenmeden, kodla kontrol edebiliyoruz:

Cevap gitmeden once rakam kontrolu
# cevaptaki sayisal iddialari cikar: "binde 2", "%0,2", "25 TL", "1 is gunu"
iddialar = sayisal_iddialari_bul(cevap)

for iddia in iddialar:
    # konu: komisyon, eft_ucreti, cekim_limiti, valor_suresi ...
    # piyasa: soru metninden ve musterinin portfoyunden (Apple -> yurt_disi)
    satir = ucret_tablosu.bul(iddia.konu, iddia.piyasa)

    if satir is None:
        isaretle(cevap, "kaynaksiz_rakam")      # tabloda karsiligi yok
    elif iddia.deger != satir.deger:
        isaretle(cevap, "rakam_uyusmuyor")      # tabloyla celisiyor

if cevap.isaretli:
    # cevabi GONDERME. musteriye kisa mesaj, konusmayi temsilciye devret.
    # isaretli cevap ve tablo satiri temsilcinin panelinde gorunur.
    temsilciye_devret(konusma, sebep=cevap.isaretler)

Kodun en zor kısmı piyasa alanı. “Apple”ın yurt dışı hisse olduğunu bilmek için soruyu sembol listesiyle eşleştiriyoruz. Eşleştiremezsek tablo satırı bulunamıyor ve cevap “kaynaksız rakam” olarak işaretleniyor. Yani belirsizlik de insana gidiyor.

Bedeli var: işaretlerin %29’u yanlış alarm. Haftada 60 civarı müşteri, aslında doğru olan bir cevap yerine temsilci bekliyor. Bu takası bilerek yaptık. Yanlış engelleme bir temsilcinin iki dakikası; yanlış rakam bir müşterinin parası. Süreç adımları ve olmayan menüler gibi rakam dışı iddialar ise kodla kontrol edilemiyor. Onları örnekleme yakalıyor.

Örnekleme: haftada 100 konuşma

Sinyaller hatayı bulmayı hızlandırıyor ama oranı ölçmüyor. Sadece sinyal gelen konuşmalara bakarsan, hata oranın ne olursa olsun elinde her hafta dolu bir liste olur. Bu yüzden haftalık denetimi iki parçaya böldük:

40 rastgele konuşma
  • Oranı ölçer: bu hafta yanlış iddia yüzde kaç?
  • Sinyallerin kaçırdığı hatayı gösterir
  • Tek başına yavaştır: 40’ta 2 hata
60 sinyalli konuşma
  • Hatayı bulur: 20 temsilci işareti, 20 rakam kontrolü, 10 düzeltme, 10 devir
  • Sinyalin isabetini ölçer
  • Tek başına yanıltır: oran söylemez

Denetimi iki kişi yapıyor: destek takım lideri ve ekibimizden bir mühendis. Kişi başı yaklaşık 90 dakika. Her konuşma için aynı üç soru:

  1. Cevapta gerçekle çelişen ya da kaynağı olmayan bir iddia var mı?
  2. Varsa müşteri bu iddiaya göre bir şey yaptı mı? (Emir verdi mi, para çekti mi?)
  3. Bu soru biçimi eval setinde var mı?

İkinci soru önceliği belirliyor. Müşterinin okuyup geçtiği bir yanlış ile müşterinin emir verdiği bir yanlış aynı ağırlıkta değil. Konuşma kayıtlarını denetime hangi maskelemeyle açtığımızı prompt loglama yazısında anlatmıştım; denetçiler müşteri adını ve hesap numarasını görmüyor.

Rastgele örnek oranı ölçer, sinyal örneği hatayı bulur. Birini atlarsan ya sayın yalan olur ya listen boş kalır.

Sahadan eval setine

Denetimde doğrulanan her hata, aynı hafta eval setine bir madde olarak giriyor. Tek kural var: soru, müşterinin cümlesiyle yazılır. Maskelenir, kısaltılmaz, düzeltilmez. “Apple alsam ne kadar kesinti olur?” sete aynen girdi. Onu “yurt dışı hisse komisyonu” diye yeniden yazsaydık, sete zaten var olan soruyu ikinci kez eklemiş olurduk.

Dört haftada set 50 maddeden 74’e çıktı; 24 yeni maddenin hepsi sahadan geldi. Yeni maddelerle ilk koşuda set 74’te 63’e düştü. Kötü bir haber gibi görünüyordu, aslında ilk dürüst ölçümdü. Prompt’a piyasa ayrımını ekledikten ve sembol eşleştirmesini düzelttikten sonra 71/74’e çıktı.

Bende işe yaramayanlar

  • Beğen / beğenme düğmesi. Konuşmaların %0,8’inde tıklandı. Olumsuzların çoğu yanlış cevaba değil, hoşa gitmeyen doğru cevaba geldi: “hafta sonu çekim yapılamıyor” doğru bir bilgi ama beğenilmiyor.
  • Her cevabı ikinci bir modele kontrol ettirmek. Maliyet neredeyse ikiye katlandı. Apple sorusunda ikinci model de ilk modelin cevabını onayladı; aynı tabloyu aynı şekilde yanlış okudu.
  • Sinyal oranına alarm kurmak. Tekrar sorma oranı için eşik koyduk. Kampanya günlerinde her seferinde çaldı, çünkü yeni kullanıcılar her şeyi iki kez soruyor. Sinyaller alarm değil, denetim listesinin girdisi oldu.

Ne izlemeli?

NeNasılNeden
Yanlış iddia oranıHaftalık 40 rastgele konuşmadan, 4 haftalık kayan pencereTek gerçek oran; tek haftalık sayı gürültü
Sinyal başına isabetDenetimdeki 60 sinyalli konuşmadanİsabeti düşen sinyal denetimden çıkar
Rakam kontrolü işaret oranıGünlükBirden artarsa ya tablo değişti ya prompt
Temsilci işareti sayısıHaftalıkDüşerse hata azalmış olabilir, düğme unutulmuş da olabilir
Sahadan eval setine giren maddeHaftalıkSıfırsa ya hata yok ya kimse bakmıyor

Kontrol listesi

Canlıda ne söylediğini biliyor musun?
  • Son ay kaç konuşmayı rastgele seçip baştan sona okudum?
  • Eval setindeki soruların kaçı müşterinin kendi cümlesi?
  • Konuşmayı devralan temsilci yanlışı tek tıkla işaretleyebiliyor mu?
  • Cevaptaki rakamlar gönderilmeden önce bir tabloyla karşılaştırılıyor mu?
  • Rakam uymadığında ne oluyor: cevap gidiyor mu, insan mı devreye giriyor?
  • Hangi sinyalin isabeti ölçülmüş, hangisine sadece inanılıyor?
  • Doğrulanan bir hata kaç gün içinde eval setine giriyor?
  • Şikâyet eden müşterinin yaşadığı hatayı kaç kişi daha yaşadı?

Sonuç

Zeynep’in telefonu bir şikâyetti ama asıl değeri bir örnek olmasıydı. Arkasında aynı hatayı görmüş, yazmamış dört müşteri ve eval setinin hiç görmediği 9 hata daha vardı. Dört hafta sonra aynı yöntemle 200 konuşma daha okuduk: 11 yerine 4 yanlış iddia (%2). Sıfır değil, sıfır olacağını da sanmıyorum.

Değişen şey asistanın kendisinden çok, bizim ne gördüğümüz. Eskiden hatayı müşteri bulduğunda öğreniyorduk. Şimdi temsilci, kod ve haftalık denetim buluyor. Müşteriden önce.

Test şu: asistanın dün söylediği yanlış bir rakamı, şikâyet gelmeden öğrenebilir misin? Cevap hayırsa elinde bir eval seti var ama asistanının canlıda ne söylediğini bilmiyorsun.