İçeriğe geç
Mimari

Streaming başladıktan sonra neden başka modele geçmiyoruz?

İlk yanıt parçası kullanıcıya ulaştığında yeniden denemenin anlamı değişir. Kısmi yanıt, hata ve yeni denemeyi birbirinden ayıran sınır.

Yazan Modelion Mühendislik2 dk okuma
Cam bir eşikten geçerek parçalara ayrılan kesintisiz turuncu ışık şeridi

Kullanıcı cevabın ilk cümlesini okumaya başladı. Tam o anda sağlayıcı bağlantısı kesildi. Gateway başka bir modeli çağırıp kalan cevabı tamamlayabilir mi?

Teknik olarak yeni bir çağrı başlatabilir. Fakat o çağrının çıktısını mevcut akışın devamı olarak sunmak, kullanıcının gördüğü cevabın anlamını değiştirir. İki bağımsız üretimi tek cevapmış gibi birleştirmiş olursunuz.

İlk parça bir taahhüttür

Streaming, cevabın tamamını beklemek yerine parçaları hazır oldukça istemciye ulaştırır. OpenAI'ın streaming dokümanı da bu kademeli teslim biçimini açıklar. Streaming API responses.

İlk parça dışarı çıktıktan sonra cevabın bir bölümü artık istemcidedir. O bölümü gateway'in belleğinden silmek, kullanıcının ekranından veya istemcinin işlediği veriden geri almak anlamına gelmez.

Bu yüzden Modelion'da ilk parça gönderildikten sonra sağlayıcılar arasında failover yapılmaz. Sağlayıcı değiştirme fırsatı, henüz dışarıya bir yanıt parçası verilmemişken değerlendirilir; o durumda da adaylar politika kısıtlarına uymalıdır.

Sessizce birleştirmek neyi bozar?

İlk model bir listeyi üç maddelik plan olarak başlatmış olabilir. İkinci model aynı bağlamdan beş maddelik başka bir plan üretebilir. Kelimeler akıcı görünse bile ortaya çıkan metin tek bir üretimin sonucu değildir.

Yapısal çıktıda sorun daha belirginleşir. Açılmış bir JSON nesnesinin ortasına yeni bir nesne eklemek geçersiz çıktı oluşturabilir. Bir araç çağrısı zaten işlenmişse yeni deneme aynı dış işlemi ikinci kez tetikleyebilir. Yeniden deneme kararı, yalnızca ağ bağlantısının durumuna bırakılamaz.

İstemcinin durumları açık olmalı

Basit bir arayüz bile üç durumu ayırmalıdır:

DurumKullanıcıya gösterilecek davranış
Henüz içerik gelmediYanıt hazırlanıyor
İçerik geliyorDevam eden kısmi yanıt
Akış yarıda kesildiKısmi yanıt ve açık hata bilgisi

Normal tamamlanma da ayrı bir olaydır. Bir bağlantının kapanması tek başına cevabın eksiksiz geldiğini kanıtlamaz. Kullandığınız protokolün bitiş işaretini ve hata olaylarını işleyin.

Yeniden denemeyi kullanıcı eylemine bağlayın

Arayüzde yeniden deneme sunuyorsanız önceki kısmi cevabı korumak mı, temizleyip yeni üretim açmak mı istediğinizi belirleyin. Her iki yaklaşım da uygulanabilir; davranışın anlaşılır olması gerekir.

Yeni deneme için ayrı bir istek kimliği tutun. Böylece destek ekibi hangi cevabın kesildiğini, hangisinin sonradan üretildiğini görebilir. Araç çağrıları gibi yan etkili işlemlerde ayrıca işlem kimliğiyle mükerrer yürütmeyi engelleyen bir tasarım gerekir.

Hızın yanında bütünlüğü ölçün

İlk token süresi iyi bir deneyim göstergesidir, ancak tamamlanma oranını anlatmaz. İlk parçaya hızlı ulaşıp sık sık yarıda kesilen bir sistem, yalnızca başlangıç metriğiyle sağlıklı görünebilir.

İlk parça gecikmesini, toplam süreyi, tamamlanan akışları ve yarıda kesilen denemeleri birlikte izleyin. Bu ayrım, yedek aday ekleyerek çözülebilecek başlangıç sorunlarıyla, cevap başladıktan sonra yönetilmesi gereken kesintileri ayırır.

Blog'a dön