Botunuza doğal dil anlama özelliği ekleme

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Dekont

Language Understanding (LUIS) 1 Ekim 2025'te kullanımdan kaldırılacaktır. 1 Nisan 2023'e kadar yeni LUIS kaynakları oluşturamayacaksınız. Dil anlamanın daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan konuşma dili anlama (CLU), LUIS'in güncelleştirilmiş sürümüdür. Bot Framework SDK'sında dil anlama desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Kullanıcınızın konuşma ve bağlamsal olarak ne anlama geldiğini anlama becerisi zor bir görev olabilir, ancak botunuza daha doğal bir konuşma hissi sağlayabilir. Language Understanding (LUIS), botunuzun kullanıcı iletilerinin amacını tanıyabilmesi, kullanıcınızdan daha doğal bir dil elde edebilmesi ve konuşma akışını daha iyi yönlendirmesi için bunu yapmanızı sağlayan bulut tabanlı bir API hizmetidir.

Bu konu başlığında, kullanıcı girişi içinde yer alan farklı amaçları ve varlıkları tanımak için bir uçuş rezervasyon uygulamasına LUIS ekleme adımları açıklanmaktadır.

Dekont

Bot Framework JavaScript, C# ve Python SDK'ları desteklenmeye devam edecektir, ancak Java SDK'sı son uzun vadeli destek Kasım 2023'te sona erecek şekilde kullanımdan kaldırılacaktır. Yalnızca bu depodaki kritik güvenlik ve hata düzeltmeleri yapılacaktır.

Java SDK ile oluşturulan mevcut botlar çalışmaya devam edecektir.

Yeni bot derlemesi için Power Virtual Agents'ı kullanmayı göz önünde bulundurun ve doğru sohbet botu çözümünü seçme hakkında bilgi edinin.

Daha fazla bilgi için bkz . Bot oluşturmanın geleceği.

Ön koşullar

Bu örnek hakkında

Bu çekirdek bot örneği, bir havaalanı uçuş rezervasyon uygulaması örneğini gösterir. Kullanıcı girişini tanımak ve en çok tanınan LUIS amacını döndürmek için bir LUIS hizmeti kullanır.

Dil modeli üç amaç içerir: Book Flight, Cancelve None. LUIS, kullanıcının bota ileti gönderirken ne demek istediğini anlamak için bu amaçları kullanır. Dil modeli ayrıca LUIS'in kaynak veya hedef havaalanı gibi kullanıcının girişinden ayıklayabileceğiniz varlıkları da tanımlar.

Kullanıcı girişinin her işlenmesinden sonra hem DialogBot hem ConversationStatede UserState geçerli durumunu kaydeder. Gerekli tüm bilgiler toplandıktan sonra, kodlama örneği bir demo uçuş rezervasyon rezervasyonu oluşturur. Bu makalede, bu örneğin LUIS yönlerini ele alacağız. Ancak, örneğin genel akışı şöyledir:

  • OnMembersAddedAsync , yeni bir kullanıcı bağlandığında çağrılır ve bir hoş geldiniz kartı görüntüler.
  • OnMessageActivityAsync , alınan her kullanıcı girişi için çağrılır.

Class diagram outlining the structure of the C# sample.

Modül, OnMessageActivityAsync iletişim kutusu uzantısı yöntemi aracılığıyla uygun iletişim kutusunu Run çalıştırır. Ardından ana iletişim kutusu LUIS yardımcısını çağırarak en çok puan alan kullanıcı amacını bulur. Kullanıcı girişinin en üst amacı "BookFlight" değerini döndürürse yardımcı, LUIS'in döndürdüğü kullanıcı bilgilerini doldurur. Bundan sonra ana iletişim kutusu, kullanıcıdan gereken ek bilgileri alan şu şekilde başlatılır BookingDialog:

  • Origin kaynak şehir
  • TravelDate uçuş rezervasyonu tarihi
  • Destination hedef şehir

Bu makalede bota LUIS ekleme adımları yer alır. İletişim kutularını veya durumu kullanma hakkında bilgi için, sırasıyla bir iletişim kutusu istemi kullanarak kullanıcı girişi toplama veya kullanıcı ve konuşma verilerini kaydetme konularına bakın.

LUIS portalında LUIS uygulaması oluşturma

  1. LUIS portalında oturum açın ve gerekirse bir hesap ve yazma kaynağı oluşturun.
  2. LUIS'in Konuşma uygulamaları sayfasında İçeri Aktar'ı ve ardından JSON olarak içeri aktar'ı seçin.
  3. Yeni uygulamayı içeri aktar iletişim kutusunda:
    1. Örneğin CognitiveModels klasöründe FlightBooking.json dosyasını seçin.
    2. Uygulamanın isteğe bağlı adı olarak girin FlightBooking ve Bitti'yi seçin.
  4. Sitede Etkili bir LUIS uygulaması oluşturma ve Bileşik varlıklarınızı yükseltme iletişim kutuları görüntülenebilir. Bu iletişim kutularını kapatabilir ve devam edebilirsiniz.
  5. Uygulamanızı eğitin ve ardından uygulamanızı üretim ortamında yayımlayın. Daha fazla bilgi için bir uygulamayı eğitmeye ve yayımlamaya ilişkin LUIS belgelerine bakın.

Varlıkları neden kullanmalısınız?

LUIS varlıkları, botunuzun standart amaçların ötesindeki olayları anlamasını sağlar. Bu, kullanıcılardan ek bilgi toplamanıza olanak tanır, böylece botunuz soru sorabilir ve daha akıllıca yanıt verebilir. Üç LUIS amacı olan 'Book Flight', 'Cancel' ve 'None' tanımlarının yanı sıra FlightBooking.json dosyası da 'From.Airport' ve 'To.Airport' gibi bir dizi varlık içerir. Bu varlıklar LUIS'in yeni bir seyahat rezervasyonu istediğinde kullanıcının özgün girişinde yer alan ek bilgileri algılamasına ve döndürmesine olanak tanır.

LUIS uygulamanıza bağlanmak için değerleri alma

LUIS uygulamanız yayımlandıktan sonra botunuzdan erişebilirsiniz. LUIS uygulamanıza botunuzun içinden erişmek için birkaç değer kaydetmeniz gerekir. LUIS portalını kullanarak bu bilgileri alabilirsiniz.

LUIS.ai portalından uygulama bilgilerini alma

Ayarlar dosyası (appsettings.json.envveya config.py) tüm hizmet başvurularını tek bir yerde bir araya getirmek için yer görevi görür. Aldığınız bilgiler sonraki bölümde bu dosyaya eklenecektir.

  1. luis.ai yayımlanan LUIS uygulamanızı seçin.

  2. Yayımlanmış LUIS uygulamanız açıkken YÖNET sekmesini seçin.

  3. Sol taraftaki Ayarlar sekmesini seçin ve Uygulama Kimliği için gösterilen değeri YOUR_APP_ID> olarak <kaydedin.

    Screenshot of the Manage page displaying your application ID.

  4. Azure Kaynakları'yı ve ardından Tahmin Kaynağı'yı seçin. Konum<için gösterilen değeri YOUR_REGION> ve Birincil Anahtar'ı YOUR_AUTHORING_KEY> olarak <kaydedin.

    Screenshot of the Manage page displaying your location and primary key.

    Alternatif olarak, yazma kaynağınız için bölge ve birincil anahtarı kullanabilirsiniz.

Ayarlar dosyasını güncelleştirme

LUIS uygulamanıza erişmek için gerekli olan uygulama kimliği, yazma anahtarı ve bölge gibi bilgileri dosyaya appsettings.json ekleyin. Önceki adımda, bu değerleri yayımlanan LUIS uygulamanızdan aldıysanız. API ana bilgisayar adı biçiminde <your region>.api.cognitive.microsoft.comolmalıdır.

appsetting.json

{
  "MicrosoftAppType": "",
  "MicrosoftAppId": "",
  "MicrosoftAppPassword": "",
  "MicrosoftAppTenantId": "",
  "LuisAppId": "",
  "LuisAPIKey": "",
  "LuisAPIHostName": ""
}

Botunuzu LUIS uygulamanızı kullanacak şekilde yapılandırma

Projeniz için Microsoft.Bot.Builder.AI.Luis NuGet paketinin yüklü olduğundan emin olun.

BOT, LUIS hizmetine bağlanmak için appsetting.json dosyasına eklediğiniz bilgileri çeker. sınıfı, FlightBookingRecognizer appsetting.json dosyasındaki ayarlarınız ile kod içerir ve yöntemini çağırarak RecognizeAsync LUIS hizmetini sorgular.

FlightBookingRecognizer.cs

public class FlightBookingRecognizer : IRecognizer
{
    private readonly LuisRecognizer _recognizer;

    public FlightBookingRecognizer(IConfiguration configuration)
    {
        var luisIsConfigured = !string.IsNullOrEmpty(configuration["LuisAppId"]) && !string.IsNullOrEmpty(configuration["LuisAPIKey"]) && !string.IsNullOrEmpty(configuration["LuisAPIHostName"]);
        if (luisIsConfigured)
        {
            var luisApplication = new LuisApplication(
                configuration["LuisAppId"],
                configuration["LuisAPIKey"],
                "https://" + configuration["LuisAPIHostName"]);
            // Set the recognizer options depending on which endpoint version you want to use.
            // More details can be found in https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-migration-api-v3
            var recognizerOptions = new LuisRecognizerOptionsV3(luisApplication)
            {
                PredictionOptions = new Bot.Builder.AI.LuisV3.LuisPredictionOptions
                {
                    IncludeInstanceData = true,
                }
            };

            _recognizer = new LuisRecognizer(recognizerOptions);
        }
    }

    // Returns true if luis is configured in the appsettings.json and initialized.
    public virtual bool IsConfigured => _recognizer != null;

    public virtual async Task<RecognizerResult> RecognizeAsync(ITurnContext turnContext, CancellationToken cancellationToken)
        => await _recognizer.RecognizeAsync(turnContext, cancellationToken);

    public virtual async Task<T> RecognizeAsync<T>(ITurnContext turnContext, CancellationToken cancellationToken)
        where T : IRecognizerConvert, new()
        => await _recognizer.RecognizeAsync<T>(turnContext, cancellationToken);
}

FlightBookingEx.cs, From, To ve TravelDate değerlerini ayıklama mantığını içerir; öğesinden MainDialog.csçağrılırken FlightBookingRecognizer.RecognizeAsync<FlightBooking> LUIS sonuçlarını depolamak için kullanılan kısmi sınıfı FlightBooking.cs genişletir.

CognitiveModels\FlightBookingEx.cs

// Extends the partial FlightBooking class with methods and properties that simplify accessing entities in the luis results
public partial class FlightBooking
{
    public (string From, string Airport) FromEntities
    {
        get
        {
            var fromValue = Entities?._instance?.From?.FirstOrDefault()?.Text;
            var fromAirportValue = Entities?.From?.FirstOrDefault()?.Airport?.FirstOrDefault()?.FirstOrDefault();
            return (fromValue, fromAirportValue);
        }
    }

    public (string To, string Airport) ToEntities
    {
        get
        {
            var toValue = Entities?._instance?.To?.FirstOrDefault()?.Text;
            var toAirportValue = Entities?.To?.FirstOrDefault()?.Airport?.FirstOrDefault()?.FirstOrDefault();
            return (toValue, toAirportValue);
        }
    }

    // This value will be a TIMEX. And we are only interested in a Date so grab the first result and drop the Time part.
    // TIMEX is a format that represents DateTime expressions that include some ambiguity. e.g. missing a Year.
    public string TravelDate
        => Entities.datetime?.FirstOrDefault()?.Expressions.FirstOrDefault()?.Split('T')[0];
}

LUIS artık botunuz için yapılandırıldı ve bağlandı.

Botu test edin

En son Bot Framework Öykünücüsü'ni indirme ve yükleme

  1. Örneği makinenizde yerel olarak çalıştırın. Yönergelere ihtiyacınız varsa C# Örneği, JS Örneği veya Python Örneği dosyasına bakınREADME.

  2. Öykünücü'ye "paris'e seyahat" veya "Paris'ten berlin'e gitme" gibi bir ileti yazın. FlightBooking.json dosyasında bulunan tüm ifadeleri kullanarak "Kitap uçuşu" amacını eğitin.

LUIS'ten döndürülen en önemli amaç "Uçuş rezervasyonu" olarak çözümlenirse, botunuz seyahat rezervasyonu oluşturmak için depolanmış yeterli bilgiye sahip olana kadar daha fazla soru sorar. Bu noktada bu rezervasyon bilgileri kullanıcınıza geri döndürülecektir.

Bu noktada kod botu mantığı sıfırlanır ve daha fazla rezervasyon oluşturmaya devam edebilirsiniz.

Ek bilgiler

LUIS hakkında daha fazla bilgi için LUIS belgelerine bakın:

Bahşiş

SDK'nın farklı bölümleri ayrı varlık sınıfları veya öğeleri tanımlar. İleti varlıkları için bkz . Varlıklar ve etkinlik türleri.