Çalışma zamanında modelleri ve çıkarım sağlayıcılarını değiştirme

Uygulamalar, konuşmanın farklı dönüşleri için farklı çıkarım hizmetlerinden modeller kullanabilir. Örneğin, bir uygulama kullanıcı seçimine, model özelliklerine, kullanılabilirliğe veya maliyete göre modelleri değiştirebilir.

Sonraki isteğin hedefini değiştirmek, yönlendirmenin yalnızca bir parçasıdır. Yeni modelin aynı bağlamla devam etmesi için önceki konuşmanın da olması gerekir. Bu bağlamı alıp alamayacağı, sohbet geçmişinin nerede depolandığına ve kimin denetlediğine bağlıdır.

Sohbet geçmişi depolaması taşınabilirliği belirler

Çıkarım hizmetleri, konuşma durumuna yönelik farklı yaklaşımları destekler. Bazı API'ler, çağıranın her istekle ilgili ileti geçmişini sağlamasını bekler. Diğer API'ler konuşmayı çıkarım hizmetinde depolar ve arayanın bir tanımlayıcı geçirerek devam etmesine izin verir.

Geçmiş modeli İletilerin depolandığı yer Çağıranın gönderdiği
Arayan yönetimli Uygulama tarafından denetlenen bellekte veya kalıcı depolamada İlgili mesaj geçmişi ve her istekle birlikte varsa yeni mesajlar
Çıkarım hizmeti tarafından yönetilen Çıkarım hizmeti tarafından denetlenen depolama alanında Hizmete özgü bir konuşma veya yanıt tanımlayıcısı ve varsa yeni iletiler.

Bazı çıkarım hizmetleri, farklı API'ler veya seçenekler aracılığıyla her iki yaklaşımı da destekler. Örneğin, OpenAI yanıtlarında false parametresi bulunur; bunu, çıkarım hizmeti tarafından yönetilen sohbet geçmişi için true ve çağıran tarafından yönetilen için store olarak ayarlayabilirsiniz.

Çağıran tarafından yönetilen geçmiş, yönlendirmeyi destekler

Çağıran taraf geçmişi yönetiyorsa, önceki etkileşimlerdeki iletilere erişebilir. Yönlendirici başka bir model veya çıkarım hizmeti seçebilir ve arayan bu iletileri bir sonraki istekle gönderebilir.

Geçmişin işlem belleğinde kalması gerekmez. Uygulama bunu yükleyip seçilen hizmete gönderebildiği sürece, uygulamaya ait kalıcı depolamadan gelebilir. Hedef, konuşmanın daha önceki bölümünde kullanılan ileti içeriğini ve özellikleri de desteklemelidir.

Çıkarım hizmeti tarafından yönetilen geçmiş sınırları yönlendirmesi

Çıkarım hizmeti geçmişi yönettiğinde, konuşmanın gerçek kaynağıdır. Çağıran genellikle iletilerin kendisi yerine opak bir tanımlayıcı tutar.

Bu tanımlayıcı, kaynak hizmet tarafından tutulan durumu ifade eder. Access, konuşmayı oluşturmak için kullanılan hesaba veya projeye, uç noktaya ve kimlik bilgilerine de bağlı olabilir. Başka bir hizmetin istemcisi, iletileri almak için tanımlayıcıyı kullanamaz. Aynı hizmetin başka bir istemcisi de farklı bir kapsam kullanıyorsa konuşmaya erişemeyebilir.

Bir hizmet, kendi depolanan konuşmalarından birinde modellerin değiştirilmesini destekleyebiliyor olabilir. Bu davranış hizmete özgüdür ve taşınabilir yönlendirme değildir. Genel bir yönlendirici, iletileri almadan veya yeniden oluşturmadan hizmet tarafı konuşmasını başka bir sağlayıcıya aktaramaz.

Yönlendirme senaryosu Geçmiş modeli Result
Bir sağlayıcıdan modeller arasında geçiş yapma Çağıran tarafından yönetilen Çağıran, geçmişi yeni modele yeniden oynatabilir. Yeni modelin önceki dönüşlerde kullanılan ileti ve içerik türlerini desteklemesi gerekir.
Farklı çıkarım sağlayıcıları arasında geçiş yapma Arayan yönetimli Arayan kişi, geçmişi yeni sağlayıcıya yeniden oynatabilir. Yeni sağlayıcının önceki dönüşlerde kullanılan rolleri, içerik türlerini, araç arama iletilerini ve araç sonucu iletilerini kabul etmesi gerekir.
Tek bir hizmet tarafı konuşmada modelleri değiştirme Çıkarım hizmeti tarafından yönetilen Geçiş, yalnızca çıkarım hizmeti mevcut konuşmanın yeni modelle sürdürülmesine izin verirse çalışır. Yönlendirme istemcisi bu davranışı etkinleştiremiyor.
Farklı bir çıkarım hizmetine geçme Çıkarım hizmeti tarafından yönetilen Yeni hizmet, özgün hizmetin konuşma tanımlayıcıya erişemiyor. İletileri alın veya yeniden oluşturun ve arayan tarafından yönetilen geçmişi kullanarak yeni rotayı başlatın.

Bu depolama modelleri hakkında daha fazla bilgi için bkz. Depolama.

Agent Framework çalışma zamanı yönlendirmeyi nasıl uygular?

Agent Framework, taşınabilir yönlendirme için gereken arayan tarafından yönetilen geçmişi sağlayabilir. Bu yönlendirme düzeninde sohbet geçmişi sağlayıcısı, konuşmanın gerçek kaynağıdır. İletileri aracı oturumunda veya uygulamaya ait depolama alanında depolayabilir.

Agent Framework'te, arayan tarafından yönetilen geçmiş yerel oturum durumunu ve özel sohbet geçmişi depolama alanını içerir. Çıkarım hizmeti tarafından yönetilen geçmiş, hizmet tarafından yönetilen depolamaya karşılık gelir.

Bir ChatClientAgent için, yönlendirme sohbet istemcisi ajan işlem hattının sohbet istemcisi katmanında yer alır. Yönlendirme istemcisi her istek için birkaç adlandırılmış IChatClient örneğinden birini seçerken ajan ve oturum değişmeden aynı kalır.

Yönlendirilmiş istek şu sırayı izler:

  1. Sohbet geçmişi sağlayıcısı konuşma geçmişini yükler.
  2. Ajan, geçmişi mevcut turdaki girdiyle birleştirir.
  3. Yönlendirme istemcisi oturum için etkin sohbet istemcisini seçer.
  4. Seçilen istemci isteğin tamamını alır.
  5. Sohbet geçmişi sağlayıcısı, çalıştırmadan sonra yeni iletileri depolar.

Seçilen istemci sağlayıcı tarafından yüklenen geçmişi aldığından, uygulama konuşmayı el ile yeniden oluşturmadan yolları değiştirebilir.

.NET SDK, deneysel RoutePersistingRoutingChatClient'yi sunar. Başlangıç rotasını RoutePersistingRoutingChatClientOptions.DefaultRoute ile ayarlayın, bir oturumun rotasını GetActiveRoute ile inceleyin ve SetActiveRoute ile değiştirin. Varsayılan bir yol ayarlamazsanız istemci, inşaatta sağlanan ilk yolu kullanır.

Microsoft.Extensions.AI içinde, ek yönlendirme stratejilerine olanak tanıyan daha fazla yönlendirme istemcisi vardır.

Eksiksiz bir C# uygulaması için çok modelli yönlendirme örneğine bakın.

Important

Rota olarak kaydedilen her sohbet istemcisi, bir sohbet geçmişi sağlayıcısı tarafından sağlanan ve çağıran tarafından yönetilen geçmişi kullanmalıdır. Sağlayıcı bu geçmişi oturumda veya uygulamaya ait depolama alanında depolayabilir. Çıkarım hizmetiyle yönetilen konuşma geçmişini kullanan bir yolu kaydetmeyin.

Python desteği şu anda kullanılamıyor.

Go desteği şu anda kullanılamıyor.

Sonraki Adımlar