Cevabı Akıtmak — Asistan Yazarken Müşteri Neden Boş Ekrana Bakıyor?
Önce şunu oku: Modelin Cevabını Uygulamada Kullanmak — Doğrulamadan Kaydetme
30 saniyede özet
Modelin cevabını tamamını bekleyip göstermek, müşteriyi sonuna kadar boş ekrana baktırır; akıtmak ilk kelimeyi hemen gösterir. Müşteri ayrılınca iptal modele kadar taşınmazsa, okunmayan parçalar yine üretilir.
Bir çay ocağında bir garson bütün demlik hazır olmadan masaya gitmiyor; masa boş bardaklara bakıyor. Öbür garson ilk bardak hazır olur olmaz döküyor. Bir de masa kalktığında demlemeyi bırakmak var.
-
Bayt: Asistanımız kart limiti sorusuna güzel bir cevap yazıyor. Ama ekranda on saniye hiçbir şey görünmüyor.
-
Sen: Müşteriler bekleyemeyip sekmeyi kapatıyor. Faturaya bakınca o cevaplar da sonuna kadar yazılmış.
-
Bayt: Kimse okumadı, ama hepsini ödedik!
-
Bayt: İlk bardağı hemen dökelim; masa kalkınca da demlemeyi durduralım.
Boş ekran neden uzun hissettirir?
Model cevabı parça parça üretir. Sunucu bütün parçaları toplayıp sonra gönderirse, müşteri cevabın sonuna kadar boş ekrana bakar.
cevabı akıtmakModelin ürettiği cevabı tamamlanmasını beklemeden, parça parça ekrana göndermek. Toplam süreyi değil, boş bekleyişi kısaltır.Sözlükte gör →, her parçayı üretildiği anda ekrana göndermektir. Tarayıcıya akış için çoğu zaman Server-Sent EventsSunucunun açık tuttuğu tek bir HTTP cevabına olay yazdığı, tek yönlü akış. Tarayıcıda EventSource ile açılır ve kopunca kendisi yeniden bağlanır.Sözlükte gör → kullanılır. Toplam süre değişmez, ama ilk kelime hemen görünür.
Kafam karıştı, daha basit anlat
Akıtmak cevabı hızlandırmaz; müşteriyi boş ekrana baktırmaz.
Modelin cevabını akıtmak (streaming) neyi değiştirir?
Akıtılan cevabın toplam süresi beklenen cevaba göre nasıldır?
Masa kalkınca demlemeyi bırak
Cevap akıyor. Müşteri dördüncü parçadan sonra sekmeyi kapattı. Sunucu model çağrısını iptal etmiyor. Model kaç parça daha üretir? Cevabı göster
Cevabın geri kalanının hepsini. Tarayıcı bağlantıyı kapattı, ama sunucu bunu model çağrısına iletmedi. Model on iki parçanın hepsini yazdı ve son sekizini kimse okumadı.
Adım adım oku
- Bütün demlik hazır olunca gelen garson.
- İlk bardak hazır olur olmaz dökülür.
- Masa kalktı, garson hâlâ dolduruyor.
- Hazır olanı hemen ver; giden olursa dur.
istek iptaliKullanıcı vazgeçince bunu tarayıcıdan sunucuya, oradan model çağrısına kadar taşıyıp işi durdurmak.Sözlükte gör → zincir boyunca taşınmalıdır: tarayıcı bağlantıyı kapatır, sunucu bunu fark eder ve model çağrısını durdurur. Bir halka eksikse model yazmaya ve faturalanmaya devam eder.
Akıtmanın bir sınırı da var. Cevabı kod kullanacaksa, örneğin bir JSON, yarım hâli ayrıştırılamaz ve doğrulanamaz. İnsana akıt, koda tamamlanmış cevabı ver.
Kafam karıştı, daha basit anlat
Müşteri gidince modeli de durdur. Kodun kullanacağı cevabı ise sonuna kadar bekle.
Müşteri cevap yazılırken sayfadan ayrıldı ve sunucu model çağrısını sürdürdü. Sonuç?
Model JSON üretiyor ve kodun bu JSON'u kullanacak. Akıtmak burada neden dikkat ister?
Kendin gör
Asistan cevap yazıyor
Tohum 281065- ·
- ·
- ·
- ·
- ·
- ·
- ·
- ·
- ·
- ·
- ·
- ·
Üretilen: 0/12 · ekranda: 0 · ✕ okuyan yokken üretilen: 0
Şu an ne oldu?
Cevabın tamamını bekle, sonra göster
Model cevabı parça parça üretiyor.
Görevler0/3
Müşteri cevabın sonuna kadar boş ekrana baksınaçık
İpucu
Tamamını bekle.
Müşteri gitsin, model yazmaya devam etsinaçık
İpucu
Ayrılsın, iptal etme.
Cevap ilk adımda görünsün, müşteri gidince üretim dursunaçık
İpucu
Akıt ve iptal et.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. Cevabın tamamı beklendi: müşteri on iki adım boyunca boş ekrana baktı.
- “Geldikçe göster” seç. İlk parça ilk adımda göründü; toplam adım aynı.
- “Müşteri ayrılıyor”u aç. Dördüncü parçadan sonra kimse okumadı; model sekiz parça daha üretti.
- “İptal et”i de aç. Müşteri gidince üretim durdu.
Tarayıcıya akan cevap için hangi teknik sık kullanılır?
İptal zincirinde hangi halka eksik olursa model çalışmaya devam eder?
Tuzaklar
Aradaki tampon. Yerelde akan cevap, bir ters vekil sunucunun arkasında tek seferde gelebilir. Aradaki her katmanda tamponlamanın kapalı olduğundan emin ol.
Yarıda kalan cevabı saklamak. Akış ortasında model hata verirse, gelen kısım tam bir cevap sanılmamalı. Yarıda kaldığını açıkça söyle ve yeniden denemeyi öner.
Eskiyen akışlar. Kullanıcı aynı soruyu art arda gönderirse, eski akışları iptal et ve aynı anda açık akış sayısını sınırla.
Kafam karıştı, daha basit anlat
Tamponu kapat, yarım cevabı yarım diye göster, eskiyen akışı kapat.
Akış ortasında model hata verdi. Ekranda ne olmalı?
Derinleş · Bankacılık asistanı: akan cevap ve uçtan uca iptal 3 dosya · ~59 satır · ilk okumada atlayabilirsin
Kendini sına
Cevabı akıtmak toplam üretim süresini kısaltır.
Akışı bir ters vekil sunucu (proxy) arkasında yayına aldın ama parçalar tek seferde geliyor. Olası neden?
Aklında kalacak üç şey
- 1 Cevabı akıtmak toplam süreyi değil, boş bekleyişi kısaltır: ilk kelime üretildiği anda ekrana gelir.
- 2 Müşteri ayrılınca bağlantı kapanır; sunucu bunu model çağrısına iletmezse model yazmaya ve faturalanmaya devam eder.
- 3 İnsana akıt, koda tamamlanmışı ver: yarım bir JSON ayrıştırılamaz ve doğrulanamaz.