Akış teknolojisi, kullanıcı tam cevap hazır olmadan önce ilerlemeyi görebildiği için yapay zeka arayüzünün duyarlı 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şlemini tamamlaması ve bir cevabın doğrulamadan geçmesi farklı olaylardır. Üçünü de “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ışında iyi sonuç verir. Olay biçimi, MDN’nin SSE kılavuzunda açıklandığı gibi, adlandırılmış olayları, kimlikleri ve veri alanlarını destekler.
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 yerleştirilmemelidir.
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 tercihleridir; bunlar, aktarım katmanı tarafından sağlanan garantiler değildir.
event: accepted
data: {"request_id":"req_example"}
event: text_delta
data: {"text":"The available sizes are"}
event: completed
data: {"request_id":"req_example","status":"complete"}
Bu örnek, çerçeveleme kavramını göstermektedir. Gerçek bir ayrıştırıcı, bir olayı bölücü, birden fazla olay içeren veya çok baytlı bir karakteri bölen ağ parçalarını işleyebilmelidir. Ağdan okunan veriler otomatik olarak tek bir tam mesaj oluşturmaz.
Bellekte bekleyen veri miktarını sınırladı
Aşağı akış bağlantısı yavaşsa, sunucu sağlayıcının verilerini iletebileceğinden daha hızlı bir şekilde alabilir. Sınırsız arabellekleme, yavaş bir istemciyi bir bellek sorununa dönüştürür.
Uygulama, yazılabilir akış baskısını dikkate almalı ve bir tampon sınırı belirlemelidir. 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ı bölümünde, geri basınç bir akış kontrol mekanizması olarak açıklanmaktadır. Bir LLM uygulamasında, bu mekanizmayı sağlayıcının iptal işlemi ve ürünün zaman aşımı politikasıyla ilişkilendirmem gerekiyor.
İptal işlemini talebin tamamına yansıt
Tarayıcı bağlantısının kapatılması, uygulamada temizleme işleminin başlatılmasını ve destekleniyorsa, yukarı akış model isteğinin iptal edilmesini tetiklemelidir. İptal işlemi başarısız olsa bile zamanlayıcılar, dinleyiciler ve tamponlar serbest bırakılmalıdır.
Ancak, müşterinin bağlantısını kesmesi, hizmet sağlayıcının faturalandırılabilir işi durdurduğunu kanıtlamaz. Kullanım muhasebesi, 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, arabellekleme ve zaman aşımı ayarlarına sahip proxy sunucularından 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. Yeniden bağlanma işlemi, 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 saklanmış olması ve tanımlanmış bir imleç gereklidir; tek başına bir olay kimliği, 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 içerik yayınlanmadan önce doğrulama işlemi 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ı hissettirirken, aynı zamanda tamamlanma durumunun güvenilir olmasını da sağlar.
25 Eylül 2026 tarihinde güncellenmiştir.