Orchestrator ile birden çok LUIS ve Soru-Cevap modeli kullanma

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Not

Azure Yapay Zeka Soru-Cevap Oluşturma 31 Mart 2025 tarihinde kullanımdan kaldırılacaktır. 1 Ekim 2022 tarihinden itibaren yeni QnA Maker kaynakları veya bilgi bankası makaleleri oluşturamazsınız. Soru ve yanıtlama özelliğinin 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 özel soru yanıtlama, Soru-Cevap Oluşturma hizmetinin güncelleştirilmiş sürümüdür. Bot Framework SDK'sında soru-cevap desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Not

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.

Bot birden çok Language Understanding (LUIS) modeli ve Soru-Cevap Oluşturma bilgi bankası kullanıyorsa, kullanıcı girişiyle en iyi eşleşen LUIS modelini veya Soru-Cevap Oluşturma bilgi bankası belirlemek için Bot Framework Orchestrator'ı kullanabilirsiniz. CLI komutunu kullanarak bf orchestrator bir Orchestrator anlık görüntü dosyası oluşturabilir ve ardından anlık görüntü dosyasını kullanarak kullanıcı girişini çalışma zamanında doğru modele yönlendirebilirsiniz.

Bu makalede Orchestrator ile mevcut Soru-Cevap Oluşturma bilgi bankası nasıl kullanılacağı açıklanmaktadır.

Önkoşullar

Bu örnek hakkında

Bu örnek, önceden tanımlanmış bir LUIS ve Soru-Cevap Oluşturma projeleri kümesini temel alır. Ancak botunuzda Soru-Cevap Oluşturma'yı kullanmak için Soru-Cevap Oluşturma portalında mevcut bir bilgi bankası gerekir. Botunuz daha sonra kullanıcının sorularını yanıtlamak için bilgi bankası kullanabilir.

Yeni bot geliştirme için Copilot Studio'yu kullanmayı göz önünde bulundurun. Bot Framework SDK botu için yeni bir bilgi bankası oluşturmanız gerekiyorsa aşağıdaki Azure AI hizmetleri makalelerine bakın:

C# sınıf diyagramı.

OnMessageActivityAsync , alınan her kullanıcı girişi için çağrılır. Bu modül en çok puan alan kullanıcı amacını bulur ve bu sonucu öğesine DispatchToTopIntentAsyncgeçirir. DispatchToTopIntentAsync de uygun uygulama işleyicisini çağırır.

  • ProcessSampleQnAAsync - bot hakkında SSS soruları için.
  • ProcessWeatherAsync - hava durumu sorguları için.
  • ProcessHomeAutomationAsync - ev aydınlatma komutları için.

İşleyici LUIS veya Soru-Cevap Oluşturma hizmetini çağırır ve oluşturulan sonucu kullanıcıya geri döndürür.

LUIS uygulamaları oluşturma

Orchestrator anlık görüntü dosyası oluşturabilmeniz için önce LUIS uygulamalarının ve Soru-Cevap bilgi bankası oluşturulması ve yayımlanması gerekir. Bu makalede başvuruda bulunan örnek bot, klasöründeki NLP With Orchestrator örneğine \CognitiveModels dahil edilen aşağıdaki modelleri kullanır:

Veri Akışı Adı Açıklama
HomeAutomation İlişkili varlık verileriyle ev otomasyonu amacını tanıyan bir LUIS uygulaması.
Hava Durumu Konum verileriyle hava durumuyla ilgili amaçları tanıyan bir LUIS uygulaması.
Soru-Cevap Oluşturma Bot hakkındaki basit soruların yanıtlarını sağlayan soru-cevap oluşturma bilgi bankası.

LUIS uygulamalarını oluşturma

Örneğin bilişsel modeller dizininde HomeAutomation ve Weather .lu dosyalarından LUIS uygulamaları oluşturun.

  1. Uygulamayı içeri aktarmak, eğitmek ve üretim ortamında yayımlamak için aşağıdaki komutu çalıştırın.

    bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
    
  2. Uygulama kimliklerini, görünen adları, yazma anahtarını ve konumu kaydedin.

Daha fazla bilgi için LUIS portalında LUIS uygulaması oluşturma ve Botunuza doğal dil anlama ekleme bölümünde LUIS uygulamanıza bağlanmak için değerler elde etme konularına ve bir uygulamayı eğitip üretim ortamına yayımlamaya ilişkin LUIS belgelerine bakın.

Botunuzu bilgi bankası bağlamak için değerleri alma

Not

Azure Yapay Zeka Soru-Cevap Oluşturma 31 Mart 2025 tarihinde kullanımdan kaldırılacaktır. 1 Ekim 2022 tarihinden itibaren yeni QnA Maker kaynakları veya bilgi bankası makaleleri oluşturamazsınız. Soru ve yanıtlama özelliğinin 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 özel soru yanıtlama, Soru-Cevap Oluşturma hizmetinin güncelleştirilmiş sürümüdür. Bot Framework SDK'sında soru-cevap desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Mevcut bir bilgi bankası ve Soru-Cevap Oluşturma ana bilgisayar adınız ve uç nokta anahtarınız olması gerekir.

İpucu

Soru-Cevap Oluşturma belgelerinde bilgi bankası oluşturma, eğitma ve yayımlama yönergeleri bulunur.

Orchestrator anlık görüntü dosyasını oluşturma

Orchestrator aracının CLI arabirimi, çalışma zamanında doğru LUIS veya Soru-Cevap Oluşturma uygulamasına yönlendirmek için Orchestrator anlık görüntü dosyasını oluşturur.

  1. Visual C++ Yeniden Dağıtılabilir paketinin desteklenen en son sürümünü yükleme

  2. Bir komut istemi veya terminal penceresi açın ve dizinleri örnek dizinle değiştirin

  3. Geçerli npm sürümüne ve Bot Framework CLI'ya sahip olduğunuzdan emin olun.

    npm i -g npm
    npm i -g @microsoft/botframework-cli
    
  4. Orchestrator temel model dosyasını indirme

    mkdir model
    bf orchestrator:basemodel:get --out ./model
    
  5. Orchestrator anlık görüntü dosyasını oluşturma

    mkdir generated
    bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
    

Paketleri yükleme

Bu uygulamayı ilk kez çalıştırmadan önce birkaç NuGet paketinin yüklendiğinden emin olun:

  • Microsoft.Bot.Builder
  • Microsoft.Bot.Builder.AI.Luis
  • Microsoft.Bot.Builder.AI.QnA
  • Microsoft.Bot.Builder.AI.Orchestrator

appsettings.json dosyanızı el ile güncelleştirme

Tüm hizmet uygulamalarınız oluşturulduktan sonra her birine ilişkin bilgilerin 'appsettings.json' dosyanıza eklenmesi gerekir. C# (arşivlenmiş) kodu için ilk örnek boş bir appsettings.json dosyası içeriyor:

appsettings.json

C# (arşivlenmiş)

Aşağıda gösterilen varlıkların her biri için, bu yönergelerde daha önce kaydettiğiniz değerleri ekleyin:

"QnAKnowledgebaseId": "<knowledge-base-id>",
"QnAEndpointKey": "<qna-maker-resource-key>",
"QnAEndpointHostName": "<your-hostname>",

"LuisHomeAutomationAppId": "<app-id-for-home-automation-app>",
"LuisWeatherAppId": "<app-id-for-weather-app>",
"LuisAPIKey": "<your-luis-endpoint-key>",
"LuisAPIHostName": "<your-dispatch-app-region>",

Tüm değişiklikler tamamlandığında bu dosyayı kaydedin.

Botunuzdan hizmetlere bağlanma

LUIS ve Soru-Cevap Oluşturma hizmetlerine bağlanmak için botunuz ayarlar dosyasından bilgileri çeker.

BotServices.cs'da, Orchestrator botunuzu HomeAutomationve SampleQnA Weather hizmetlerine bağlamak için yapılandırma dosyası appsettings.json içinde yer alan bilgiler kullanılır. Oluşturucular, bu hizmetlere bağlanmak için sağladığınız değerleri kullanır.

BotServices.cs

C# (arşivlenmiş)

Botunuzdan hizmetleri arama

Kullanıcınızdan gelen her giriş için bot mantığı kullanıcı girişini Orchestrator Recognizer'a geçirir, döndürülen en önemli amacı bulur ve bu bilgileri kullanarak giriş için uygun hizmeti çağırır.

Yöntem her OnMessageActivityAsync çağrıldığında DispatchBot.cs dosyasında gelen kullanıcı iletisini denetler ve Orchestrator Recognizer'dan en üstteki amacı alırsınız. Ardından hizmeti çağırmak ve sonucu döndürmek için ve recognizerResult değerini doğru yönteme geçiririztopIntent.

bots\DispatchBot.cs

C# (arşivlenmiş)

Tanıma sonuçlarıyla çalışma

Orchestrator tanıyıcısı bir sonuç ürettiğinde, hangi hizmetin konuşmayı en uygun şekilde işleyebileceğini gösterir. Bu bottaki kod isteği ilgili hizmete yönlendirir ve çağrılan hizmetten gelen yanıtı özetler. Orchestrator'dan döndürülen amaclara bağlı olarak, bu kod döndürülen amacı doğru LUIS modeline veya Soru-Cevap hizmetine yönlendirmek için kullanır.

bots\DispatchBot.cs

C# (arşivlenmiş)

ve ProcessWeatherAsync yöntemleri, ProcessHomeAutomationAsync en üst amacı ve varlıkları doğru LUIS modelinden almak için dönüş bağlamı içinde yer alan kullanıcı girişini kullanır.

yöntemi, ProcessSampleQnAAsync bilgi bankası bir yanıt oluşturmak ve bu sonucu kullanıcıya görüntülemek için dönüş bağlamı içinde yer alan kullanıcı girişini kullanır.

Not

Bu bir üretim uygulamasıysa, seçilen LUIS yöntemleri belirtilen hizmetine bağlanır, kullanıcı girişini geçirir ve döndürülen LUIS amacını ve varlık verilerini işler.

Botunuzu test etme

  1. Geliştirme ortamınızı kullanarak örnek kodu başlatın. Uygulamanız tarafından açılan tarayıcı penceresinin adres çubuğunda gösterilen localhost adresini not edin: https://localhost:<Port_Number>.

  2. Bot Framework Emulator'ı açın, Botu Aç düğmesine tıklayın.

  3. Bot aç iletişim kutusunda, gibi http://localhost:3978/api/messagesbot uç nokta URL'nizi girin. Bağlan'a tıklayın.

  4. Başvurunuz için, botunuz için oluşturulan hizmetlerin ele aldığı bazı sorular ve komutlar şunlardır:

    • Soru-Cevap Oluşturma
      • hi, good morning
      • what are you, what do you do
    • LUIS (ev otomasyonu)
      • turn on bedroom light
      • turn off bedroom light
      • make some coffee
    • LUIS (hava durumu)
      • whats the weather in redmond washington
      • what's the forecast for london
      • show me the forecast for nebraska

Kullanıcı konuşmasını Soru-Cevap Oluşturma'ya yönlendirme

  1. Öykünücü'de metni hi girin ve ifadeyi gönderin. Bot bu sorguyu Orchestrator'a gönderir ve hangi alt uygulamanın daha fazla işlem için bu konuşmayı alması gerektiğini belirten bir yanıt alır.

  2. Günlükteki satırı seçerek Öykünücü'de Orchestrator Recognition Trace JSON yanıtını görebilirsiniz. Orchestrator sonucu Denetçi'de görüntülenir.

    {
    "type": "trace",
    "timestamp": "2021-05-01T06:26:04.067Z",
    "serviceUrl": "http://localhost:58895",
    "channelId": "emulator",
    "from": {
      "id": "36b2a460-aa43-11eb-920f-7da472b36492",
      "name": "Bot",
      "role": "bot"
    },
    "conversation": {
      "id": "17ef3f40-aa46-11eb-920f-7da472b36492|livechat"
    },
    "recipient": {
      "id": "5f8c6123-2596-45df-928c-566d44426556",
      "role": "user"
    },
    "locale": "en-US",
    "replyToId": "1a3f70d0-aa46-11eb-8b97-2b2a779de581",
    "label": "Orchestrator Recognition",
    "valueType": "OrchestratorRecognizer",
    "value": {
      "text": "hi",
      "alteredText": null,
      "intents": {
        "QnAMaker": {
          "score": 0.9987310956576168
        },
        "HomeAutomation": {
          "score": 0.3402091165577196
        },
        "Weather": {
          "score": 0.24092200496795158
        }
      },
      "entities": {},
      "result": [
        {
          "Label": {
            "Type": 1,
            "Name": "QnAMaker",
            "Span": {
              "Offset": 0,
              "Length": 2
            }
          },
          "Score": 0.9987310956576168,
          "ClosestText": "hi"
        },
        {
          "Label": {
            "Type": 1,
            "Name": "HomeAutomation",
            "Span": {
              "Offset": 0,
              "Length": 2
            }
          },
          "Score": 0.3402091165577196,
          "ClosestText": "make some coffee"
        },
        {
          "Label": {
            "Type": 1,
            "Name": "Weather",
            "Span": {
              "Offset": 0,
              "Length": 2
            }
          },
          "Score": 0.24092200496795158,
          "ClosestText": "soliciting today's weather"
        }
      ]
    },
    "name": "OrchestratorRecognizerResult",
    "id": "1ae65f30-aa46-11eb-8b97-2b2a779de581",
    "localTimestamp": "2021-04-30T23:26:04-07:00"
    }
    

    konuşma, hiOrchestrator'ın Soru-Cevap Oluşturma amacının bir parçası olduğundan ve olarak topScoringIntentseçildiğinden, bot bu kez Soru-Cevap Oluşturma uygulamasına aynı konuşmayla ikinci bir istekte bulunur.

  3. Öykünücü QnAMaker Trace günlüğünde satırı seçin. Soru-Cevap Oluşturma sonucu Denetçi'de görüntülenir.

    {
        "questions": [
            "hi",
            "greetings",
            "good morning",
            "good evening"
        ],
        "answer": "Hello!",
        "score": 1,
        "id": 96,
        "source": "QnAMaker.tsv",
        "metadata": [],
        "context": {
            "isContextOnly": false,
            "prompts": []
        }
    }
    

[Python (arşivlenmiş)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator