İçeriğe geç
Kaynak kütüphanesi
GOCUX / Makalelerchat

Güncel bilgiyle yanıt veren sohbet botu: getirme, tazelik ve ret

Güncel kaynaklardan yanıt veren bir sohbet botu ya da asistan tasarlamak: getirme adımı, tazelik kuralları, gerçek zamanlı veri araçları, atıflar ve ret anı.

Bir dil modeli eğitim verisinde ne varsa onu bilir; sonrasında olan hiçbir şeyi bilmez. Bu sabahki döviz kurunu, hizmetinizin şu an çalışıp çalışmadığını ya da bir rakibin geçen hafta fiyat sayfasında neyi değiştirdiğini bilemez. Bu yüzden insanların güncel konularda soru soracağı bir sohbet botunun, modelin sağlayamayacağı üç şeye ihtiyacı vardır: soru anında doğru malzemeyi getiren bir getirme adımı, her soru türü için işe yarar bir “güncel” tanımı ve ne zaman yanıt veremeyeceğini söyleyeceğine dair bir kural. Bu rehber üçünü de ele alıyor; web'e dayanan yanıtlar, canlı veri akışları ve çok turlu asistanlar için aynı ölçüde.

Her soru türü için “güncel”in ne demek olduğuna karar verin

Her soru taze veri gerektirmez; hepsine aynı şekilde davranmak ya zaman kaybettirir ya da bayat yanıtlar üretir. Kullanıcılarınızın gerçekten sorduğu soruları tazelik sınıflarına ayırın:

SınıfÖrnek soruNe kadar tazeYanıtın kaynağı
SabitFAVÖK ne demek?Nadiren değişirModel bilgisi ya da kendi belgeleriniz
Yavaş değişenTedarikçinin kurumsal planı neleri kapsıyor?Günler ya da haftalarWeb araması ya da izlenen bir sayfa
Hızlı değişenDüzenleyici bugün ne açıkladı?SaatlerTarih filtreli haber ya da web araması
Canlı durumSiparişim kargoya verildi mi? Hizmet çalışıyor mu?Şu anYapılandırılmış bir API çağrısı

Botun önündeki küçük bir yönlendirici her soruyu sınıflandırır ve yolu seçer. Bilinen bir terimi tanımlamak için web'de arama yapmak gecikme ekler ve kötü bir sayfanın içeri sızma ihtimalini doğurur; canlı durum sorusunu model bilgisinden yanıtlamak ise düpedüz yanlıştır.

Getirme adımını tasarlayın

Belge gerektiren sorularda işin çoğunu getirme adımı yapar. Sağlam duran bir sıra:

  1. Konuşma turunu bağımsız bir sorguya dönüştürün. Bir sohbette kullanıcılar “peki kurumsal planları?” ya da “Almanya'da da öyle mi?” der. Bir arama motoru “onların” ya da “öyle” sözcüğünün neyi kastettiğini bilemez. Önce konuşmaya bakarak bu göndermeleri çözün.
  2. Kaynağı seçin. Tazelik sınıfına göre kendi bilgi tabanınız, bir web arama API'si, bir haber araması ya da yapılandırılmış bir API.
  3. Yalnızca özetleri değil, sayfaları çekin. Arama özetleri kırpılmıştır ve bazen eski bir sürümden önbelleğe alınmıştır. İlk birkaç sonuç için sayfanın kendisini okuyun.
  4. Pasajları seçin. Soruyu karşılayan bölümleri; her sayfanın URL'si, başlığı, yayım ya da güncelleme tarihi ve sizin getirdiğiniz zamanla birlikte saklayın.
  5. Pasajlardan yanıt verin ve her iddiayı geldiği pasaja bağlayın.

Ekiplerin en sık atladığı, kullanıcıların ise en çok fark ettiği adım yeniden yazmadır. Basit bir örnek:

Konuşma:
  Kullanıcı: Hangi proje araçları kurum içi kurulum seçeneği sunuyor?
  Bot:       ...üç araç listeler...
  Kullanıcı: İkincisi tek oturum açmayı (SSO) destekliyor mu?

Bağımsız sorgu:
  "[ikinci aracın adı] SSO desteği dokümantasyon"

Bunun altyapısı için web arama API'si nedir ve canlı web verisiyle RAG yazılarına bakın.

Gerçek zamanlı veri aramaya değil, araçlara aittir

Arama belge bulur. Dakikadan dakikaya değişen durum için yanlış araçtır: stok seviyeleri, sipariş durumu, hesap bakiyeleri, döviz kurları, hizmet sağlığı, bir uçuşun kapı numarası. Bunlar için modele, kayıt sistemini doğrudan çağıran bir araç verin.

İyi bir gerçek zamanlı araç dar ve tipli olur; yanıtın “şu zaman itibarıyla” diyebilmesi için de kendi zaman damgasını ve kaynağını döndürür:

get_order_status(order_id: string)
  returns: { status, carrier, updated_at, source_system }

Birkaç kural bu araçları dürüst tutar. Yalnızca tazelik sınıfının izin verdiği süre kadar önbelleğe alın; bir saat önbellekte kalmış hizmet durumu artık durum değildir. Üst sistem erişilemez olduğunda, modelin “hiçbir şey yok” diye okuyabileceği boş bir değer yerine açık bir hata döndürün. Ve okuyan araçları bir şeyi değiştiren araçlardan ayrı tutun. Bir siparişi sorgulamak zararsızdır; onu iptal etmek ya da teslimat adresini değiştirmek kullanıcının onayını beklemelidir. GoCux Sohbet içinde bir şeyi değiştirecek her araç çağrısı, siz onaylayana kadar bekletilir.

Yanıtın uyması gereken tazelik kuralları

Getirme adımı güncel malzemeyi içeri alır; bu kurallar da yanıtın bu emeği boşa çıkarmamasını sağlar:

  • Tarihi gösterin. Değişken her olgu, “itibarıyla” zamanını ya da geldiği kaynağın tarihini taşır.
  • En yeni yetkili kaynağı tercih edin; iki kaynak çeliştiğinde birini sessizce seçmek yerine bunu söyleyin ve ikisini de tarihleriyle gösterin.
  • Zamana duyarlı sorularda tarihsiz sayfalara şüpheyle yaklaşın; onları işaretleyin ya da dışarıda bırakın.
  • Geçmişin getirmeyi ezmesine izin vermeyin. Kullanıcının dün söylediği bir fiyat ya da botun belleğinde saklanan bir olgu, bugünün fiyatı değildir. Bellek tercihler ve bağlam için yararlıdır; canlı bir akışın yerini tutmaz.
  • Zamana duyarlı takip sorularında yeniden getirin; konuşmanın başındaki pasajları yeniden kullanmayın.

Okuduğunuzu kaynak gösterin, ne zaman reddedeceğinizi bilin

Bir yanıttaki her olgusal iddia, onu destekleyen pasaja ve gerçekten okunan sayfanın URL'sine işaret etmelidir. Modelin bellekten URL üretmesine asla izin vermeyin; makul görünen bir bağlantı kanıt değildir ve derli toplu bir dipnot, bambaşka bir şey söyleyen bir sayfayı gösteriyor olabilir. Atıf biçimleri ve kontrolleri için kaynaklarını gösteren sohbet botları rehberine bakın.

Ne zaman yanıt vermeyeceğine karar vermek de aynı ölçüde önemlidir. Bir sohbet botu şu durumlarda reddetmeli ya da kısmen yanıt verip bunu açıkça söylemelidir:

  • getirme başarısız olduysa ya da kaynak erişilemez durumdaysa; bu, çalışıp hiçbir şey bulamayan bir aramadan farklıdır;
  • kaynaklar bulundu ama hiçbiri sorulan soruya verilecek bir yanıtı desteklemiyorsa;
  • kaynaklar çelişiyor ve çelişki getirilen malzemeyle çözülemiyorsa;
  • yanıt, botun sahip olmadığı bir eylem ya da yetki gerektiriyorsa;
  • soru, botun kurulduğu kapsamın dışında kalıyorsa.

İyi bir ret somuttur ve bir sonraki adımı önerir:

Fiyat sayfasına şu an ulaşamadım, bu yüzden bugünkü fiyatı doğrulayamıyorum. Elimdeki son sürüm [tarih] tarihinde alındı. Güncel olmayabileceği işaretlenmiş hâliyle görmek ister misiniz?

Bu bir başarısızlık değil, işe yarar bir yanıttır. Gerekçesi ret de bir sonuçtur yazısında ayrıntılı olarak anlatılıyor.

GoCux nereye oturur

GoCux bir web arama API'si değildir ve açık web'i okumaz; dolayısıyla herkese açık bir web sohbet botunun getirme altyapısı da değildir. Bu tasarımın kanıt ve gözden geçirmeyle ilgili kısımlarını karşılar. Bilgi arama, tek bir projenin belgeleriyle sınırlanmış bir soruyu pasajlar ve atıflarıyla yanıtlar; boş bir sonuç geçerli bir yanıt olarak bildirilir, “erişilemiyor” ise ayrı bir durum olarak. Yanıtlar, bir yanıtı çalışma alanından çıkmadan önce gözden geçirilecek şekilde hazırlar; yanıt bir müşteriye gidecekse bu önemlidir. Web malzemesi bir projeye yetkilendirilmiş bir tarama ya da dışa aktarma adımıyla alınabilir ve özgün sayfa adresini ve alınma tarihini korur; böylece bir kaynağın yaşı içe aktarmadan sonra da görünür kalır.

Yayına almadan önce neyi test etmeli

Bilinen bir tarih itibarıyla doğruladığınız yanıtları olan, zamana duyarlı sorulardan küçük bir değerlendirme seti kurun ve onu düzenli aralıklarla yeniden çalıştırın; çünkü doğru yanıtlar zamanla değişir. Her çalıştırmada şunları kontrol edin:

  • Değişken her iddia bir “itibarıyla” zamanı ya da kaynak tarihi gösteriyor.
  • Atıflar açılıyor ve gösterilen pasaj iddiayı destekliyor.
  • Takip soruları doğru biçimde bağımsız sorgulara dönüştürülüyor.
  • Canlı durum soruları aramaya değil, araçlara gidiyor.
  • Bir kaynak çöktüğünde bot tahmin yürütmek yerine bunu söylüyor.
  • Bir şeyi değiştiren araçlar onay bekliyor.
  • Çelişen kaynaklar tarihleriyle birlikte bir çelişki olarak gösteriliyor.

Getirme altyapılarını kendi sorularınız üzerinde karşılaştırma yöntemleri için web aramasını kendi sorgularınızla değerlendirmek yazısına bakın.

Bu iş akışını çalışma alanınıza taşıyın.

Kapsamı belirleyin. Kanıtları inceleyin. Gereken adımları onaylayın.

Çalışma alanını aç

Sıradaki adım