Akış teknolojisi, kullanıcı tam cevap hazır olmadan önce ilerlemeyi görebildiğinden, yapay zeka arayüzünün hızlı tepki verdiğini hissettirir. Ayrıca, tek bir isteği model sağlayıcı, uygulama sunucusu, ters proxy ve tarayıcıyı kapsayan bir yaşam döngüsüne dönüştürür.
Bu yaşam döngüsünün tanımlanmış durumları olmasını istiyorum. Bir bağlantının kapanması, bir sağlayıcının işini bitirmesi ve bir cevabın doğrulama sürecinden geçmesi farklı olaylardır. Bu üçünün hepsini “tamamlandı” olarak değerlendirmek, hataların açıklanmasını zorlaştırır.
Etkileşime uygun bir aktarım yöntemi seçin
Sunucu tarafından gönderilen olaylar, sunucudan istemciye yapılan güncelleme akışları için oldukça etkilidir. Olay biçimi, aşağıda açıklandığı gibi adlandırılmış olayları, kimlikleri ve veri alanlarını destekler: MDN’nin SSE kılavuzu.
Tarayıcının yerleşik EventSource arayüzü, bir akışı almak için kullanışlıdır; ancak POST gövdesi veya özel istek başlıkları gerektiren uygulamalar, bunun yerine fetch tabanlı bir akış istemcisi kullanabilir. Bu seçim, uygulamanın kendi başına hangi ayrıştırma ve yeniden bağlanma davranışlarını uygulaması gerektiğini belirler.
Kimlik doğrulama, istek gönderme ve akış aboneliği işlemlerini açıkça belirtirim. Kimlik bilgileri, sadece bağlantı kurmak için kolaylık sağladığı için bir URL’ye eklenmemelidir.
Uygulama protokolünü tanımlayın
Kullanışlı bir akış, kabul, ilerleme, metin, doğrulama durumu, tamamlanma ve hata durumlarını birbirinden ayırabilir. Olay adları, uygulamanın kendi tercihidir; bunlar, aktarım katmanı tarafından sağlanan garantiler değildir.
olay: kabul edildi
veriler: {"istek_id":"req_example"}
olay: text_delta
veriler: {"metin":"Mevcut boyutlar şunlardır"}
olay: tamamlandı
veriler: {"istek_id":"req_example","durum":"tamamlandı"}
Bu örnek, çerçeveleme kavramını göstermektedir. Gerçek bir ayrıştırıcı, bir olayı bölen, birden fazla olay içeren veya çok baytlı bir karakteri bölen ağ parçalarını işleyebilmelidir. Bir ağ okuma işlemi, otomatik olarak tek bir tam mesaj anlamına gelmez.
Bellekte bekleyen veri miktarını sınırladı
Aşağı akış bağlantısı yavaşsa, sunucu sağlayıcının verilerini iletebildiğinden daha hızlı bir şekilde alabilir. Sınırsız arabellekleme, yavaş bir istemciyi bellek sorununa dönüştürür.
Uygulama, yazılabilir akış baskısını dikkate almalı ve bir tampon sınırı tanımlamalıdır. Yukarı akış protokolünün etkili bir şekilde duraklatılamadığı durumlarda, kuyruğun sınırsız bir şekilde büyümesine izin vermektense işlemi iptal etmek daha güvenli olabilir.
MDN’nin Streams API kavramları geri basıncı bir akış kontrol mekanizması olarak açıklıyor. Bir LLM uygulamasında, bu mekanizmayı sağlayıcının iptal işlemiyle ve ürünün zaman aşımı politikasıyla ilişkilendirmem gerekiyor.
İptal işlemini isteğin tamamına yansıt
Tarayıcı bağlantısının kapatılması, uygulamada temizleme işlemini tetiklemeli ve destekleniyorsa, yukarı akış model isteğinin iptal edilmesini sağlamalıdır. İptal işlemi başarısız olsa bile zamanlayıcılar, dinleyiciler ve arabellekler serbest bırakılmalıdır.
Ancak, müşterinin bağlantısını kesmesi, hizmet sağlayıcının faturalandırılabilir çalışmayı durdurduğunu kanıtlamaz. Kullanım hesaplamaları bu belirsizliği korumalı ve bunu hizmet sağlayıcının elindeki kullanım bilgilerine göre uzlaştırmalıdır.
Uzun süreli bağlantılar da, arabellek ve zaman aşımı ayarlarına sahip proxy'lerden geçer. Dağıtılmış yolu test ediyorum; çünkü geliştirme sunucusuna doğrudan bağlandığında sorunsuz çalışan bir akış, üretim altyapısı içinde farklı bir şekilde davranabilir.
Kısmi cevapların nasıl gösterileceğine karar verin
Yarı yolda kesilen bir yanıt, gözle görülür şekilde eksik kalmalıdır. Bağlantının yeniden kurulması, sessizce başka bir model çağrısı oluşturmamalı veya kısmi yanıta yeni bir yanıt eklememelidir.
Devam ettirme işlemi için, olay geçmişinin korunmuş olması ve tanımlanmış bir imleç gereklidir; yalnızca bir olay kimliği tek başına tekrar oynatmayı sağlamaz. Daha basit bir ürün için, açık bir yeniden başlatma seçeneği sunmak daha net bir davranış olabilir.
Doğrulama, başka bir seçenek sunar. Eğer doğrulama işlemleri yayınlanmadan önce tamamlanmak zorundaysa, ilgili içeriğin önceden depolanması gerekir. Metni hemen gösterip daha sonra doğrulamak, farklı bir ürün vaadidir.
Yavaş çalışan istemcileri, iptal edilen istekleri, proxy zaman aşımlarını, sağlayıcı hatalarını ve hatalı biçimlendirilmiş olay sınırlarını kontrol ediyorum. İyi bir akış arayüzü, hızlı bir kullanım hissi verirken aynı zamanda tamamlanma durumunun güvenilir olmasını da sağlar.
25 Eylül 2026 tarihinde güncellenmiştir.
