Microsoft, yapay zekâ isteklerinin modeller veya hizmet sağlayıcıları arasında yönlendirilmesini ve yedeklemeli geçişini yönetmek için Microsoft.Extensions.AI kitaplığına dört deneysel tür ekledi. Bu türlerin tümü IChatClient arayüzünün uygulamaları olarak çalışır; böylece maliyet, kullanılabilirlik ve yanıt süresi kısıtlarını ele almak için kitaplığın mevcut yapısı içinde kullanılabilirler.
Yönlendirme ve yedeklemeli geçiş araçları
RoutingChatClient, her istek için uygun bir istemci seçen ve çağrıyı bu istemciye ileten temel sınıftır. Basit bir geri çağırma işleviyle oluşturulabilir veya daha karmaşık ya da uygulama durumuna dayalı yönlendirme politikaları uygulamak için SelectClientAsync yeniden tanımlanarak genişletilebilir.
SemanticRoutingChatClient ise istekleri anlamlarına göre yönlendirir. Geliştirici, her istemciyle ilişkili ifade örneklerini kitaplığa sağlar; ardından kullanıcının son iletisi bir gömmeye dönüştürülür ve belirlenen eşiği aşan en yüksek benzerliğe sahip istemciyi seçmek için örneklerle karşılaştırılır. Hiçbir eşleşme eşiği aşmazsa varsayılan istemci kullanılır.
Rota örneklerinin gömmeleri gerektiğinde oluşturulur ve önbelleğe alınır. scoreThreshold, topK ve scoreAggregation gibi ayarlar, minimum benzerlik eşiğini ve sonuç toplamada kullanılan örnek sayısını; ayrıca ortalama veya toplam kullanımını denetlemeyi sağlar. Tür, varsayılan olarak elden çıkarıldığında istemcileri ve gömme oluşturucuyu da elden çıkarır; bu davranış leaveOpen aracılığıyla devre dışı bırakılabilir.
Yedeklemeli geçiş ve denemelerin izlenmesi
FailoverChatClient, bir yeniden deneme döngüsü ekleyerek yönlendirme yeteneklerini genişletir. Seçilen istemci, çağırana herhangi bir akış çıktısı ulaşmadan önce başarısız olursa tür, başka bir istemci seçmek için SelectClientAsync yöntemini yeniden çağırır. Çıktıların gönderilmesi başladıktan sonra hata kesin kabul edilir ve sistem akışın ortasında kurtarma gerçekleştirmez.
Sınıf, başarıyla, başarısızlıkla veya vazgeçmeyle sonuçlanıp sonuçlanmadığına bakılmaksızın her denemeyi izlemek için OnRoutingUpdateAsync yöntemini sağlar. Deneme kaydı; çağrılan istemciyi, yürütme süresini, varsa istisnayı, yanıtın tamamlanıp tamamlanmadığını veya çağırana akış çıktısı ulaşıp ulaşmadığını ve uygun olduğunda ilk güncellemeye kadar geçen süreyi içerir. Bu veriler, sağlayıcıların performansını değerlendirmek veya devre kesici ve istemcileri yanıt süresine göre sıralama gibi politikalar oluşturmak için kullanılabilir.
OrderedFailoverChatClient bu mekanizmanın kullanıma hazır bir uygulamasını sunar; sıralı bir istemci listesi alır ve bunları art arda dener. Tüm seçenekler başarısız olduğunda son istisna yeniden iletilir. MaximumAttemptsPerRequest, bir istekteki çağrıların üst sınırını belirler; ayrıca istek iptal belirteci iptal edildiğinde yeni istemci seçimi durdurulur.
Yönlendirme politikaları oluştururken dikkate alınması gerekenler
Yayın, konuşmanın her turunda doğasını incelemeden yeniden yönlendirme yapılmaması konusunda uyarır. Akıl yürütme modelleri, belirli bir sağlayıcıya bağlı şifrelenmiş içeriklere veya devam belirteçlerine dayanabilir; ayrıca başka bir modele ya da sağlayıcıya geçmek, istem önbelleğinden yararlanmayı ortadan kaldırabilir ve istemi yeniden hesaplama maliyetini doğurabilir.
Birden çok turlu konuşmalar için yayın, sağlayıcının ConversationId değerine güvenmek yerine rotanın hizmetin kendisine ait bir oturum kimliği kullanılarak sabitlenmesini önerir. Seçilen rota oturum durumunda veya IDistributedCache içinde saklanabilir ve rota yalnızca yanıt başarıyla tamamlandıktan sonra sabitlenmelidir.
Oluşturulabilecek diğer politikalar arasında yanıt süresine, sağlığa, maliyete, yeteneklere ve coğrafi bölgeye göre yönlendirme yer alır. Ayrıca her yönlendirici IChatClient olarak çalıştığından birden fazla yönlendirici birbirine eklenebilir. Ancak bu araçlar, başarılı bir yanıtın kalitesine göre sıralı yönlendirme, birden fazla istemciyi çalıştırıp sonuçlarını birleştirme veya ilk yanıtı seçmek için istemciler arasında yarış düzenleme işlemlerini gerçekleştirmez; bu senaryolar birden fazla çağrı yapan bir istemci gerektirir.
Kullanılabilirlik ve deneysel durum
RoutingChatClient, RoutingContext, FailoverChatClient, FailoverChatClientAttempt, OrderedFailoverChatClient ve SemanticRoutingChatClient türleri Microsoft.Extensions.AI’nin 10.9.0 sürümünde kullanıma sunuldu. Bunların tümü MEAI001 tanılayıcı kimliğiyle deneysel olarak işaretlenmiştir. Paket, dotnet add package Microsoft.Extensions.AI komutuyla eklenebilir.