Postup aktualizace modelu LUIS pomocí rozhraní REST API

Důležité

Služba LUIS bude vyřazena 1. října 2025 a od 1. dubna 2023 nebudete moct vytvářet nové prostředky LUIS. Doporučujeme migrovat aplikace LUIS do porozumění konverzačnímu jazyku, abyste mohli využívat další podporu produktů a vícejazyčné funkce.

V tomto článku přidáte ukázkové promluvy do aplikace Pizza a vytrénujete aplikaci. Ukázkové promluvy jsou konverzačním textem uživatele namapovaným na záměr. Tím, že poskytnete ukázkové promluvy pro záměry, naučíte službu LUIS, které typy uživatelem zadaného textu patří do kterého záměru.

Ukázka referenční dokumentace |

Požadavky

Soubor JSON s ukázkovými promluvami

Ukázkové promluvy se řídí konkrétním formátem.

Pole text obsahuje text ukázkové promluvy. Pole intentName musí odpovídat názvu existujícího záměru v aplikaci LUIS. Pole entityLabels je povinné. Pokud nechcete označovat žádné entity, zadejte prázdné pole.

Není-li pole entityLabels prázdné, hodnoty startCharIndex a endCharIndex musí označovat entitu, na kterou odkazuje pole entityName. Index je založený na nule. Pokud začnete nebo ukončíte popisek v mezerě v textu, volání rozhraní API pro přidání promluv se nezdaří.

[
  {
    "text": "order a pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "order a large pepperoni pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 14,
        "endCharIndex": 28
      },
      {
        "entityName": "Size",
        "startCharIndex": 8,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "I want two large pepperoni pizzas on thin crust",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 17,
        "endCharIndex": 32
      },
      {
        "entityName": "Size",
        "startCharIndex": 11,
        "endCharIndex": 15
      },
      {
        "entityName": "Quantity",
        "startCharIndex": 7,
        "endCharIndex": 9
      },
      {
        "entityName": "Crust",
        "startCharIndex": 37,
        "endCharIndex": 46
      }
    ]
  }
]

Vytvoření aplikace Pizza

Vytvořte aplikaci pizza.

  1. Výběrem pizza-app-for-luis-v6.json otevřete stránku GitHubu pro pizza-app-for-luis.json soubor.
  2. Klikněte pravým tlačítkem myši nebo dlouho klepněte na tlačítko Nezpracované a vyberte Uložit odkaz, abyste ho uložili pizza-app-for-luis.json do počítače.
  3. Přihlaste se k portálu LUIS.
  4. Vyberte Moje aplikace.
  5. Na stránce Moje aplikace vyberte + Nová aplikace pro konverzaci.
  6. Vyberte Importovat jako JSON.
  7. V dialogovém okně Importovat novou aplikaci vyberte tlačítko Zvolit soubor .
  8. pizza-app-for-luis.json Vyberte stažený soubor a pak vyberte Otevřít.
  9. Do pole Název dialogového okna Importovat novou aplikaci zadejte název aplikace Pizza a pak vyberte tlačítko Hotovo.

Aplikace se naimportuje.

Pokud se zobrazí dialogové okno Jak vytvořit efektivní aplikaci LUIS, zavřete dialogové okno.

Trénovat a publikovat aplikaci Pizza

Měla by se zobrazit stránka Záměry se seznamem záměrů v aplikaci Pizza.

  1. V pravém horním rohu webu LUIS vyberte tlačítko Trénovat .

    Tlačítko Train (Trénovat)

  2. Trénování se dokončí, když je tlačítko Trénovat zakázané.

Pokud chcete přijímat predikce luis v chatovacím robotovi nebo v jiných klientských aplikacích, musíte aplikaci publikovat do koncového bodu předpovědi.

  1. V pravém horním navigačním panelu vyberte Publikovat .

    Snímek obrazovky s tlačítkem pro publikování do koncového bodu

  2. Vyberte produkční slot a pak vyberte Hotovo.

    Snímek obrazovky s publikováním služby LUIS do koncového bodu

  3. V oznámení vyberte Přístup k adresám URL koncového bodu a přejděte na stránku Prostředky Azure. Adresy URL uvidíte jenom v případě, že máte k aplikaci přidružený prostředek predikce. Stránku Prostředky Azure najdete také kliknutím na Spravovat.

    Snímek obrazovky se zprávou zobrazující publikování aplikace

Přidání prostředku pro vytváření obsahu do aplikace Pizza

  1. Vyberte SPRAVOVAT.
  2. Vyberte Azure Resources (Prostředky Azure).
  3. Vyberte Zdroj pro vytváření obsahu.
  4. Vyberte Změnit prostředek pro vytváření obsahu.

Pokud máte prostředek pro vytváření obsahu, zadejte název tenanta, název předplatného a název prostředku luis vašeho prostředku pro vytváření.

Pokud nemáte prostředek pro vytváření obsahu:

  1. Vyberte Vytvořit nový prostředek.
  2. Zadejte název tenanta, název prostředku, název předplatného a název skupiny prostředků Azure.

Vaše aplikace Pizza je teď připravená k použití.

Zaznamenávání přístupových hodnot pro vaši aplikaci Pizza

Pokud chcete použít novou aplikaci Pizza, budete potřebovat ID aplikace, klíč pro vytváření a koncový bod pro vytváření vaší aplikace Pizza. K získání předpovědí budete potřebovat samostatný koncový bod předpovědi a klíč předpovědi.

Tyto hodnoty najdete takto:

  1. Na stránce Záměry vyberte SPRAVOVAT.
  2. Na stránce Nastavení aplikace zaznamenejte ID aplikace.
  3. Vyberte Azure Resources (Prostředky Azure).
  4. Vyberte Zdroj pro vytváření obsahu.
  5. Na kartách Zdroje pro vytváření obsahu a Prostředky predikce si poznamenejte primární klíč. Tato hodnota je váš klíč pro vytváření.
  6. Zaznamenejte adresu URL koncového bodu. Tato hodnota je váš koncový bod pro vytváření.

Změna modelu prostřednictvím kódu programu

  1. Vytvořte novou konzolovou aplikaci, která cílí na jazyk C# s názvem csharp-model-with-restprojektu a složky .

    dotnet new console -lang C# -n csharp-model-with-rest
    
  2. Přejděte do vytvořeného csharp-model-with-rest adresáře a nainstalujte požadované závislosti pomocí těchto příkazů:

    cd csharp-model-with-rest
    dotnet add package System.Net.Http
    dotnet add package JsonFormatterPlus
    
  3. Soubor Program.cs přepište následujícím kódem:

    //
    // This quickstart shows how to add utterances to a LUIS model using the REST APIs.
    //
    
    using System;
    using System.IO;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    using System.Collections.Generic;
    using System.Linq;
    
    // 3rd party NuGet packages
    using JsonFormatterPlus;
    
    namespace AddUtterances
    {
        class Program
        {
            //////////
            // Values to modify.
    
            // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
            static string appID = "PASTE_YOUR_LUIS_APP_ID_HERE";
    
            // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value.
            static string authoringKey = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE";
    
            // YOUR-AUTHORING-ENDPOINT: Replace this endpoint with your authoring key endpoint.
            // For example, "https://your-resource-name.cognitiveservices.azure.com/"
            static string authoringEndpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE";
    
            // NOTE: Replace this your version number.
            static string appVersion = "0.1";
            //////////
    
            static string host = String.Format("{0}luis/authoring/v3.0-preview/apps/{1}/versions/{2}/", authoringEndpoint, appID, appVersion);
    
            // GET request with authentication
            async static Task<HttpResponseMessage> SendGet(string uri)
            {
                using (var client = new HttpClient())
                using (var request = new HttpRequestMessage())
                {
                    request.Method = HttpMethod.Get;
                    request.RequestUri = new Uri(uri);
                    request.Headers.Add("Ocp-Apim-Subscription-Key", authoringKey);
                    return await client.SendAsync(request);
                }
            }
    
            // POST request with authentication
            async static Task<HttpResponseMessage> SendPost(string uri, string requestBody)
            {
                using (var client = new HttpClient())
                using (var request = new HttpRequestMessage())
                {
                    request.Method = HttpMethod.Post;
                    request.RequestUri = new Uri(uri);
    
                    if (!String.IsNullOrEmpty(requestBody))
                    {
                        request.Content = new StringContent(requestBody, Encoding.UTF8, "text/json");
                    }
    
                    request.Headers.Add("Ocp-Apim-Subscription-Key", authoringKey);
                    return await client.SendAsync(request);
                }
            }
    
            // Add utterances as string with POST request
            async static Task AddUtterances(string utterances)
            {
                string uri = host + "examples";
    
                var response = await SendPost(uri, utterances);
                var result = await response.Content.ReadAsStringAsync();
                Console.WriteLine("Added utterances.");
                Console.WriteLine(JsonFormatter.Format(result));
            }
    
            // Train app after adding utterances
            async static Task Train()
            {
                string uri = host  + "train";
    
                var response = await SendPost(uri, null);
                var result = await response.Content.ReadAsStringAsync();
                Console.WriteLine("Sent training request.");
                Console.WriteLine(JsonFormatter.Format(result));
            }
    
            // Check status of training
            async static Task Status()
            {
                var response = await SendGet(host  + "train");
                var result = await response.Content.ReadAsStringAsync();
                Console.WriteLine("Requested training status.");
                Console.WriteLine(JsonFormatter.Format(result));
            }
    
            // Add utterances, train, check status
            static void Main(string[] args)
            {
                string utterances = @"
                [
                    {
                        'text': 'order a pizza',
                        'intentName': 'ModifyOrder',
                        'entityLabels': [
                            {
                                'entityName': 'Order',
                                'startCharIndex': 6,
                                'endCharIndex': 12
                            }
                        ]
                    },
                    {
                        'text': 'order a large pepperoni pizza',
                        'intentName': 'ModifyOrder',
                        'entityLabels': [
                            {
                                'entityName': 'Order',
                                'startCharIndex': 6,
                                'endCharIndex': 28
                            },
                            {
                                'entityName': 'FullPizzaWithModifiers',
                                'startCharIndex': 6,
                                'endCharIndex': 28
                            },
                            {
                                'entityName': 'PizzaType',
                                'startCharIndex': 14,
                                'endCharIndex': 28
                            },
                            {
                                'entityName': 'Size',
                                'startCharIndex': 8,
                                'endCharIndex': 12
                            }
                        ]
                    },
                    {
                        'text': 'I want two large pepperoni pizzas on thin crust',
                        'intentName': 'ModifyOrder',
                        'entityLabels': [
                            {
                                'entityName': 'Order',
                                'startCharIndex': 7,
                                'endCharIndex': 46
                            },
                            {
                                'entityName': 'FullPizzaWithModifiers',
                                'startCharIndex': 7,
                                'endCharIndex': 46
                            },
                            {
                                'entityName': 'PizzaType',
                                'startCharIndex': 17,
                                'endCharIndex': 32
                            },
                            {
                                'entityName': 'Size',
                                'startCharIndex': 11,
                                'endCharIndex': 15
                            },
                            {
                                'entityName': 'Quantity',
                                'startCharIndex': 7,
                                'endCharIndex': 9
                            },
                            {
                                'entityName': 'Crust',
                                'startCharIndex': 37,
                                'endCharIndex': 46
                            }
                        ]
                    }
                ]
                ";
    
                AddUtterances(utterances).Wait();
                Train().Wait();
                Status().Wait();
            }
        }
    }
    
  4. Nahraďte hodnoty začínající vlastními YOUR- hodnotami.

    Informační Účel
    YOUR-APP-ID ID vaší aplikace LUIS.
    YOUR-AUTHORING-KEY Váš klíč pro vytváření 32 znaků.
    YOUR-AUTHORING-ENDPOINT Koncový bod adresy URL pro vytváření Například https://replace-with-your-resource-name.api.cognitive.microsoft.com/. Název prostředku nastavíte při vytváření prostředku.

    Přiřazené klíče a prostředky jsou viditelné na portálu LUIS v části Správa na stránce prostředky Azure. ID aplikace je k dispozici ve stejné části Správa na stránce Nastavení aplikace.

    Důležité

    Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

  5. Sestavte konzolovou aplikaci.

    dotnet build
    
  6. Spusťte konzolovou aplikaci.

    dotnet run
    
  7. Projděte si odpověď pro vytváření obsahu:

    Added utterances.
    [
        {
            "value": {
                "ExampleId": 1137150691,
                "UtteranceText": "order a pizza"
            },
            "hasError": false
        },
        {
            "value": {
                "ExampleId": 1137150692,
                "UtteranceText": "order a large pepperoni pizza"
            },
            "hasError": false
        },
        {
            "value": {
                "ExampleId": 1137150693,
                "UtteranceText": "i want two large pepperoni pizzas on thin crust"
            },
            "hasError": false
        }
    ]
    Sent training request.
    {
        "statusId": 9,
        "status": "Queued"
    }
    Requested training status.
    [
        {
            "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f",
            "details": {
                "statusId": 9,
                "status": "Queued",
                "exampleCount": 0
            }
        },
        {
            "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37",
            "details": {
                "statusId": 9,
                "status": "Queued",
                "exampleCount": 0
            }
        },
        {
            "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9",
            "details": {
                "statusId": 9,
                "status": "Queued",
                "exampleCount": 0
            }
        },
        {
            "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c",
            "details": {
                "statusId": 9,
                "status": "Queued",
                "exampleCount": 0
            }
        },
        {
            "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000",
            "details": {
                "statusId": 9,
                "status": "Queued",
                "exampleCount": 0
            }
        },
        {
            "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583",
            "details": {
                "statusId": 9,
                "status": "Queued",
                "exampleCount": 0
            }
        }
    ]
    

Vyčištění prostředků

Po dokončení tohoto rychlého startu odstraňte složku projektu ze systému souborů.

Další kroky

Osvědčené postupy pro aplikaci

Ukázka referenční dokumentace |

Požadavky

  • JDK SE (Java Development Kit, Standard Edition)
  • Visual Studio Code nebo vaše oblíbené integrované vývojové prostředí

Soubor JSON s ukázkovými promluvami

Ukázkové promluvy se řídí konkrétním formátem.

Pole text obsahuje text ukázkové promluvy. Pole intentName musí odpovídat názvu existujícího záměru v aplikaci LUIS. Pole entityLabels je povinné. Pokud nechcete označovat žádné entity, zadejte prázdné pole.

Není-li pole entityLabels prázdné, hodnoty startCharIndex a endCharIndex musí označovat entitu, na kterou odkazuje pole entityName. Index je založený na nule. Pokud začnete nebo ukončíte popisek v mezerě v textu, volání rozhraní API pro přidání promluv se nezdaří.

[
  {
    "text": "order a pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "order a large pepperoni pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 14,
        "endCharIndex": 28
      },
      {
        "entityName": "Size",
        "startCharIndex": 8,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "I want two large pepperoni pizzas on thin crust",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 17,
        "endCharIndex": 32
      },
      {
        "entityName": "Size",
        "startCharIndex": 11,
        "endCharIndex": 15
      },
      {
        "entityName": "Quantity",
        "startCharIndex": 7,
        "endCharIndex": 9
      },
      {
        "entityName": "Crust",
        "startCharIndex": 37,
        "endCharIndex": 46
      }
    ]
  }
]

Změna modelu prostřednictvím kódu programu

  1. Vytvořte novou složku pro uložení projektu Java, například java-model-with-rest.

  2. Pojmenujte lib podadresář a zkopírujte do podadresáře lib následující knihovny Java:

  3. Vytvořte nový soubor s názvem Model.java. Přidejte následující kód:

    //
    // This quickstart shows how to add utterances to a LUIS model using the REST APIs.
    //
    
    import java.io.*;
    import java.net.URI;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    // To compile, execute this command at the console:
    //      Windows: javac -cp ";lib/*" Model.java
    //      macOs: javac -cp ":lib/*" Model.java
    //      Linux: javac -cp ":lib/*" Model.java
    
    // To run, execute this command at the console:
    //      Windows: java -cp ";lib/*" Model
    //      macOs: java -cp ":lib/*" Model
    //      Linux: java -cp ":lib/*" Model
    
    public class Model
    {
        public static void main(String[] args)
        {
            try
            {
                //////////
                // Values to modify.
    
                // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
                String AppId = "PASTE_YOUR_LUIS_APP_ID_HERE";
    
                // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value.
                String Key = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE";
    
                // YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint.
                // For example, "https://your-resource-name.cognitiveservices.azure.com/"
                String Endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE";
    
                // NOTE: Replace this your version number. The Pizza app uses a version number of "0.1".
                String Version = "0.1";
                //////////
    
                // The list of utterances to add, in JSON format.
                String Utterances = "[{'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12}]}, {'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28}, {'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12}]}, {'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32}, {'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15}, {'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9}, {'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46}]}]";
    
                // Create the URLs for uploading example utterances and for training.
                URIBuilder addUtteranceURL = new URIBuilder(Endpoint + "luis/authoring/v3.0-preview/apps/" + AppId + "/versions/" + Version + "/examples");
                URIBuilder trainURL = new URIBuilder(Endpoint + "luis/authoring/v3.0-preview/apps/" + AppId + "/versions/" + Version + "/train");
                URI addUtterancesURI = addUtteranceURL.build();
                URI trainURI = trainURL.build();
    
    
                // Add the utterances.
    
                // Create the request.
                HttpClient addUtterancesClient = HttpClients.createDefault();
                HttpPost addUtterancesRequest = new HttpPost(addUtterancesURI);
    
                // Add the headers.
                addUtterancesRequest.setHeader("Ocp-Apim-Subscription-Key",Key);
                addUtterancesRequest.setHeader("Content-type","application/json");
    
                // Add the body.
                StringEntity stringEntity = new StringEntity(Utterances);
                addUtterancesRequest.setEntity(stringEntity);
    
                // Execute the request and obtain the response.
                HttpResponse addUtterancesResponse = addUtterancesClient.execute(addUtterancesRequest);
                HttpEntity addUtterancesEntity = addUtterancesResponse.getEntity();
    
                // Print the response on the console.
                if (addUtterancesEntity != null)
                {
                    System.out.println(EntityUtils.toString(addUtterancesEntity));
                }
    
    
                // Train the model.
    
                // Create the request.
                HttpClient trainClient = HttpClients.createDefault();
                HttpPost trainRequest = new HttpPost(trainURI);
    
                // Add the headers.
                trainRequest.setHeader("Ocp-Apim-Subscription-Key",Key);
                trainRequest.setHeader("Content-type","application/json");
    
                // Execute the request and obtain the response.
                HttpResponse trainResponse = trainClient.execute(trainRequest);
                HttpEntity trainEntity = trainResponse.getEntity();
    
                // Print the response on the console.
                if (trainEntity != null)
                {
                    System.out.println(EntityUtils.toString(trainEntity));
                }
    
    
                // Get the training status.
    
    
                // Create the request.
                HttpClient trainStatusClient = HttpClients.createDefault();
                HttpGet trainStatusRequest = new HttpGet(trainURI);
    
                // Add the headers.
                trainStatusRequest.setHeader("Ocp-Apim-Subscription-Key",Key);
                trainStatusRequest.setHeader("Content-type","application/json");
    
                // Execute the request and obtain the response.
                HttpResponse trainStatusResponse = trainStatusClient.execute(trainStatusRequest);
                HttpEntity trainStatusEntity = trainStatusResponse.getEntity();
    
                // Print the response on the console.
                if (trainStatusEntity != null)
                {
                    System.out.println(EntityUtils.toString(trainStatusEntity));
                }
            }
    
            // Display errors if they occur.
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
    }
    
  4. Nahraďte hodnoty začínající vlastními YOUR- hodnotami.

    Informační Účel
    YOUR-APP-ID ID vaší aplikace LUIS.
    YOUR-AUTHORING-KEY Váš klíč pro vytváření 32 znaků.
    YOUR-AUTHORING-ENDPOINT Koncový bod adresy URL pro vytváření Například https://replace-with-your-resource-name.api.cognitive.microsoft.com/. Název prostředku nastavíte při vytváření prostředku.

    Přiřazené klíče a prostředky jsou viditelné na portálu LUIS v části Správa na stránce prostředky Azure. ID aplikace je k dispozici ve stejné části Správa na stránce Nastavení aplikace.

    Důležité

    Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

  5. Pomocí příkazového řádku ve stejném adresáři, ve kterém jste vytvořili Model.java soubor, zadejte následující příkaz pro kompilaci souboru Java:

    • Pokud používáte Windows, použijte tento příkaz: javac -cp ";lib/*" Model.java
    • Pokud používáte macOS nebo Linux, použijte tento příkaz: javac -cp ":lib/*" Model.java
  6. Spusťte aplikaci Java z příkazového řádku zadáním následujícího textu na příkazovém řádku:

    • Pokud používáte Windows, použijte tento příkaz: java -cp ";lib/*" Model
    • Pokud používáte macOS nebo Linux, použijte tento příkaz: java -cp ":lib/*" Model
  7. Projděte si odpověď pro vytváření obsahu:

    [{"value":{"ExampleId":1137150691,"UtteranceText":"order a pizza"},"hasError":false},{"value":{"ExampleId":1137150692,"UtteranceText":"order a large pepperoni pizza"},"hasError":false},{"value":{"ExampleId":1137150693,"UtteranceText":"i want two large pepperoni pizzas on thin crust"},"hasError":false}]
    {"statusId":9,"status":"Queued"}
    [{"modelId":"edb46abf-0000-41ab-beb2-a41a0fe1630f","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"a5030be2-616c-4648-bf2f-380fa9417d37","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"e4b6704b-1636-474c-9459-fe9ccbeba51c","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"031d3777-2a00-4a7a-9323-9a3280a30000","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"9250e7a1-06eb-4413-9432-ae132ed32583","details":{"statusId":3,"status":"InProgress","exampleCount":0,"progressSubstatus":"CollectingData"}}]
    

    Tady je výstup formátovaný pro čitelnost:

    [
      {
        "value": {
          "ExampleId": 1137150691,
          "UtteranceText": "order a pizza"
        },
        "hasError": false
      },
      {
        "value": {
          "ExampleId": 1137150692,
          "UtteranceText": "order a large pepperoni pizza"
        },
        "hasError": false
      },
      {
        "value": {
          "ExampleId": 1137150693,
          "UtteranceText": "i want two large pepperoni pizzas on thin crust"
        },
        "hasError": false
      }
    ]
    {
      "statusId": 9,
      "status": "Queued"
    }
    [
      {
        "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583",
        "details": {
          "statusId": 3,
          "status": "InProgress",
          "exampleCount": 0,
          "progressSubstatus": "CollectingData"
        }
      }
    ]
    

Vyčištění prostředků

Po dokončení tohoto rychlého startu odstraňte složku projektu ze systému souborů.

Další kroky

Osvědčené postupy pro aplikaci

Ukázka referenční dokumentace |

Požadavky

Soubor JSON s ukázkovými promluvami

Ukázkové promluvy se řídí konkrétním formátem.

Pole text obsahuje text ukázkové promluvy. Pole intentName musí odpovídat názvu existujícího záměru v aplikaci LUIS. Pole entityLabels je povinné. Pokud nechcete označovat žádné entity, zadejte prázdné pole.

Není-li pole entityLabels prázdné, hodnoty startCharIndex a endCharIndex musí označovat entitu, na kterou odkazuje pole entityName. Index je založený na nule. Pokud začnete nebo ukončíte popisek v mezerě v textu, volání rozhraní API pro přidání promluv se nezdaří.

[
  {
    "text": "order a pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "order a large pepperoni pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 14,
        "endCharIndex": 28
      },
      {
        "entityName": "Size",
        "startCharIndex": 8,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "I want two large pepperoni pizzas on thin crust",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 17,
        "endCharIndex": 32
      },
      {
        "entityName": "Size",
        "startCharIndex": 11,
        "endCharIndex": 15
      },
      {
        "entityName": "Quantity",
        "startCharIndex": 7,
        "endCharIndex": 9
      },
      {
        "entityName": "Crust",
        "startCharIndex": 37,
        "endCharIndex": 46
      }
    ]
  }
]

Vytvoření aplikace Pizza

Vytvořte aplikaci pizza.

  1. Výběrem pizza-app-for-luis-v6.json otevřete stránku GitHubu pro pizza-app-for-luis.json soubor.
  2. Klikněte pravým tlačítkem myši nebo dlouho klepněte na tlačítko Nezpracované a vyberte Uložit odkaz, abyste ho uložili pizza-app-for-luis.json do počítače.
  3. Přihlaste se k portálu LUIS.
  4. Vyberte Moje aplikace.
  5. Na stránce Moje aplikace vyberte + Nová aplikace pro konverzaci.
  6. Vyberte Importovat jako JSON.
  7. V dialogovém okně Importovat novou aplikaci vyberte tlačítko Zvolit soubor .
  8. pizza-app-for-luis.json Vyberte stažený soubor a pak vyberte Otevřít.
  9. Do pole Název dialogového okna Importovat novou aplikaci zadejte název aplikace Pizza a pak vyberte tlačítko Hotovo.

Aplikace se naimportuje.

Pokud se zobrazí dialogové okno Jak vytvořit efektivní aplikaci LUIS, zavřete dialogové okno.

Trénovat a publikovat aplikaci Pizza

Měla by se zobrazit stránka Záměry se seznamem záměrů v aplikaci Pizza.

  1. V pravém horním rohu webu LUIS vyberte tlačítko Trénovat .

    Tlačítko Train (Trénovat)

  2. Trénování se dokončí, když je tlačítko Trénovat zakázané.

Pokud chcete přijímat predikce luis v chatovacím robotovi nebo v jiných klientských aplikacích, musíte aplikaci publikovat do koncového bodu předpovědi.

  1. V pravém horním navigačním panelu vyberte Publikovat .

    Snímek obrazovky s tlačítkem pro publikování do koncového bodu

  2. Vyberte produkční slot a pak vyberte Hotovo.

    Snímek obrazovky s publikováním služby LUIS do koncového bodu

  3. V oznámení vyberte Přístup k adresám URL koncového bodu a přejděte na stránku Prostředky Azure. Adresy URL uvidíte jenom v případě, že máte k aplikaci přidružený prostředek predikce. Stránku Prostředky Azure najdete také kliknutím na Spravovat.

    Snímek obrazovky se zprávou zobrazující publikování aplikace

Přidání prostředku pro vytváření obsahu do aplikace Pizza

  1. Vyberte SPRAVOVAT.
  2. Vyberte Azure Resources (Prostředky Azure).
  3. Vyberte Zdroj pro vytváření obsahu.
  4. Vyberte Změnit prostředek pro vytváření obsahu.

Pokud máte prostředek pro vytváření obsahu, zadejte název tenanta, název předplatného a název prostředku luis vašeho prostředku pro vytváření.

Pokud nemáte prostředek pro vytváření obsahu:

  1. Vyberte Vytvořit nový prostředek.
  2. Zadejte název tenanta, název prostředku, název předplatného a název skupiny prostředků Azure.

Vaše aplikace Pizza je teď připravená k použití.

Zaznamenávání přístupových hodnot pro vaši aplikaci Pizza

Pokud chcete použít novou aplikaci Pizza, budete potřebovat ID aplikace, klíč pro vytváření a koncový bod pro vytváření vaší aplikace Pizza. K získání předpovědí budete potřebovat samostatný koncový bod předpovědi a klíč předpovědi.

Tyto hodnoty najdete takto:

  1. Na stránce Záměry vyberte SPRAVOVAT.
  2. Na stránce Nastavení aplikace zaznamenejte ID aplikace.
  3. Vyberte Azure Resources (Prostředky Azure).
  4. Vyberte Zdroj pro vytváření obsahu.
  5. Na kartách Zdroje pro vytváření obsahu a Prostředky predikce si poznamenejte primární klíč. Tato hodnota je váš klíč pro vytváření.
  6. Zaznamenejte adresu URL koncového bodu. Tato hodnota je váš koncový bod pro vytváření.

Změna modelu prostřednictvím kódu programu

  1. Vytvořte nový soubor s názvem predict.go. Přidejte následující kód:

    //
    // This quickstart shows how to add utterances to a LUIS model using the REST APIs.
    //
    
    // dependencies
    package main
    import (
        "fmt"
        "net/http"
        "io/ioutil"
        "log"
        "strings"
    )
    
    // main function
    func main() {
    
        //////////
        // Values to modify.
    
        // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
        var appID = "PASTE_YOUR_LUIS_APP_ID_HERE"
    
        // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value.
        var authoringKey = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"
    
        //  YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint.
        // For example, "https://your-resource-name.cognitiveservices.azure.com/"
        var endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"
    
        // NOTE: Replace this your version number. The Pizza app uses a version number of "0.1".
        var version = "0.1"
        //////////
    
        var exampleUtterances = "[{'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12}]}, {'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28}, {'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12}]}, {'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32}, {'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15}, {'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9}, {'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46}]}]"
    
        fmt.Println("add example utterances requested")
        addUtterance(authoringKey, appID, version, exampleUtterances, endpoint)
    
        fmt.Println("training selected")
        requestTraining(authoringKey, appID, version, endpoint)
    
        fmt.Println("training status selected")
        getTrainingStatus(authoringKey, appID, version, endpoint)
    }
    
    // Send the list of utterances to the model.
    func addUtterance(authoringKey string, appID string,  version string, labeledExampleUtterances string, endpoint string){
    
        var authoringUrl = fmt.Sprintf("%sluis/authoring/v3.0-preview/apps/%s/versions/%s/examples", endpoint, appID, version)
    
        httpRequest("POST", authoringUrl, authoringKey, labeledExampleUtterances)
    }
    
    // Request training.
    func requestTraining(authoringKey string, appID string,  version string, endpoint string){
    
        trainApp("POST", authoringKey, appID, version, endpoint)
    }
    
    
    func trainApp(httpVerb string, authoringKey string, appID string,  version string, endpoint string){
    
        var authoringUrl = fmt.Sprintf("%sluis/authoring/v3.0-preview/apps/%s/versions/%s/train", endpoint, appID, version)
    
        httpRequest(httpVerb,authoringUrl, authoringKey, "")
    }
    
    
    func getTrainingStatus(authoringKey string, appID string, version string, endpoint string){
    
        trainApp("GET", authoringKey, appID, version, endpoint)
    }
    
    // generic HTTP request
    // includes setting header with authoring key
    func httpRequest(httpVerb string, url string, authoringKey string, body string){
    
        client := &http.Client{}
    
        request, err := http.NewRequest(httpVerb, url, strings.NewReader(body))
        request.Header.Add("Ocp-Apim-Subscription-Key", authoringKey)
    
        fmt.Println("body")
        fmt.Println(body)
    
        response, err := client.Do(request)
    
        if err != nil {
            log.Fatal(err)
        } else {
            defer response.Body.Close()
    
            contents, err := ioutil.ReadAll(response.Body)
    
            if err != nil {
                log.Fatal(err)
            }
    
            fmt.Println("   ", response.StatusCode)
            fmt.Println(string(contents))
        }
    }
    
  2. Nahraďte hodnoty začínající vlastními YOUR- hodnotami.

    Informační Účel
    YOUR-APP-ID ID vaší aplikace LUIS.
    YOUR-AUTHORING-KEY Váš klíč pro vytváření 32 znaků.
    YOUR-AUTHORING-ENDPOINT Koncový bod adresy URL pro vytváření Například https://replace-with-your-resource-name.api.cognitive.microsoft.com/. Název prostředku nastavíte při vytváření prostředku.

    Přiřazené klíče a prostředky jsou viditelné na portálu LUIS v části Správa na stránce prostředky Azure. ID aplikace je k dispozici ve stejné části Správa na stránce Nastavení aplikace.

    Důležité

    Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

  3. Pomocí příkazového řádku ve stejném adresáři, ve kterém jste soubor vytvořili, zadejte následující příkaz pro kompilaci souboru Go:

    go build model.go
    
  4. Aplikaci Go spusťte z příkazového řádku zadáním následujícího textu do příkazového řádku:

    go run model.go
    
  5. Projděte si odpověď pro vytváření obsahu:

    add example utterances requested
    body
    [{'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12}]}, {'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28}, {'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12}]}, {'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32}, {'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15}, {'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9}, {'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46}]}]
        201
    [{"value":{"ExampleId":1137150691,"UtteranceText":"order a pizza"},"hasError":false},{"value":{"ExampleId":1137150692,"UtteranceText":"order a large pepperoni pizza"},"hasError":false},{"value":{"ExampleId":1137150693,"UtteranceText":"i want two large pepperoni pizzas on thin crust"},"hasError":false}]
    training selected
    body
    
        202
    {"statusId":9,"status":"Queued"}
    training status selected
    body
    
        200
    [{"modelId":"edb46abf-0000-41ab-beb2-a41a0fe1630f","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"a5030be2-616c-4648-bf2f-380fa9417d37","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"e4b6704b-1636-474c-9459-fe9ccbeba51c","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"031d3777-2a00-4a7a-9323-9a3280a30000","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"9250e7a1-06eb-4413-9432-ae132ed32583","details":{"statusId":9,"status":"Queued","exampleCount":0}}]
    

    Tady je výstup formátovaný pro čitelnost:

    add example utterances requested
    body
    [
      {
        'text': 'order a pizza',
        'intentName': 'ModifyOrder',
        'entityLabels': [
          {
            'entityName': 'Order',
            'startCharIndex': 6,
            'endCharIndex': 12
          }
        ]
      },
      {
        'text': 'order a large pepperoni pizza',
        'intentName': 'ModifyOrder',
        'entityLabels': [
          {
            'entityName': 'Order',
            'startCharIndex': 6,
            'endCharIndex': 28
          },
          {
            'entityName': 'FullPizzaWithModifiers',
            'startCharIndex': 6,
            'endCharIndex': 28
          },
          {
            'entityName': 'PizzaType',
            'startCharIndex': 14,
            'endCharIndex': 28
          },
          {
            'entityName': 'Size',
            'startCharIndex': 8,
            'endCharIndex': 12
          }
        ]
      },
      {
        'text': 'I want two large pepperoni pizzas on thin crust',
        'intentName': 'ModifyOrder',
        'entityLabels': [
          {
            'entityName': 'Order',
            'startCharIndex': 7,
            'endCharIndex': 46
          },
          {
            'entityName': 'FullPizzaWithModifiers',
            'startCharIndex': 7,
            'endCharIndex': 46
          },
          {
            'entityName': 'PizzaType',
            'startCharIndex': 17,
            'endCharIndex': 32
          },
          {
            'entityName': 'Size',
            'startCharIndex': 11,
            'endCharIndex': 15
          },
          {
            'entityName': 'Quantity',
            'startCharIndex': 7,
            'endCharIndex': 9
          },
          {
            'entityName': 'Crust',
            'startCharIndex': 37,
            'endCharIndex': 46
          }
        ]
      }
    ]
    
        201
    [
      {
        "value": {
          "ExampleId": 1137150691,
          "UtteranceText": "order a pizza"
        },
        "hasError": false
      },
      {
        "value": {
          "ExampleId": 1137150692,
          "UtteranceText": "order a large pepperoni pizza"
        },
        "hasError": false
      },
      {
        "value": {
          "ExampleId": 1137150693,
          "UtteranceText": "i want two large pepperoni pizzas on thin crust"
        },
        "hasError": false
      }
    ]
    training selected
    body
    
        202
    {
      "statusId": 9,
      "status": "Queued"
    }
    training status selected
    body
    
        200
    [
      {
        "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      }
    ]
    

Vyčištění prostředků

Po dokončení tohoto rychlého startu odstraňte soubor ze systému souborů.

Další kroky

Osvědčené postupy pro aplikaci

Ukázka referenční dokumentace |

Požadavky

Soubor JSON s ukázkovými promluvami

Ukázkové promluvy se řídí konkrétním formátem.

Pole text obsahuje text ukázkové promluvy. Pole intentName musí odpovídat názvu existujícího záměru v aplikaci LUIS. Pole entityLabels je povinné. Pokud nechcete označovat žádné entity, zadejte prázdné pole.

Není-li pole entityLabels prázdné, hodnoty startCharIndex a endCharIndex musí označovat entitu, na kterou odkazuje pole entityName. Index je založený na nule. Pokud začnete nebo ukončíte popisek v mezerě v textu, volání rozhraní API pro přidání promluv se nezdaří.

[
  {
    "text": "order a pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "order a large pepperoni pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 14,
        "endCharIndex": 28
      },
      {
        "entityName": "Size",
        "startCharIndex": 8,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "I want two large pepperoni pizzas on thin crust",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 17,
        "endCharIndex": 32
      },
      {
        "entityName": "Size",
        "startCharIndex": 11,
        "endCharIndex": 15
      },
      {
        "entityName": "Quantity",
        "startCharIndex": 7,
        "endCharIndex": 9
      },
      {
        "entityName": "Crust",
        "startCharIndex": 37,
        "endCharIndex": 46
      }
    ]
  }
]

Vytvoření projektu Node.js

  1. Vytvořte novou složku pro uložení projektu Node.js, například node-model-with-rest.

  2. Otevřete nový příkazový řádek, přejděte do složky, kterou jste vytvořili, a spusťte následující příkaz:

    npm init
    

    Stisknutím klávesy Enter v každé výzvě přijměte výchozí nastavení.

  3. Nainstalujte modul request-promise zadáním následujícího příkazu:

    npm install --save request
    npm install --save request-promise
    npm install --save querystring
    

Změna modelu prostřednictvím kódu programu

  1. Vytvořte nový soubor s názvem model.js. Přidejte následující kód:

    //
    // This quickstart shows how to add utterances to a LUIS model using the REST APIs.
    //
    
    var request = require('request-promise');
    
    //////////
    // Values to modify.
    
    // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
    const LUIS_appId = "PASTE_YOUR_LUIS_APP_ID_HERE";
    
    // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value.
    const LUIS_authoringKey = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE";
    
    // YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint.
    // For example, "https://your-resource-name.cognitiveservices.azure.com/"
    const LUIS_endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE";
    
    // NOTE: Replace this your version number. The Pizza app uses a version number of "0.1".
    const LUIS_versionId = "0.1";
    //////////
    
    const addUtterancesURI = `${LUIS_endpoint}luis/authoring/v3.0-preview/apps/${LUIS_appId}/versions/${LUIS_versionId}/examples`;
    const addTrainURI = `${LUIS_endpoint}luis/authoring/v3.0-preview/apps/${LUIS_appId}/versions/${LUIS_versionId}/train`;
    
    const utterances = [
        {
            'text': 'order a pizza',
            'intentName': 'ModifyOrder',
            'entityLabels': [
                {
                    'entityName': 'Order',
                    'startCharIndex': 6,
                    'endCharIndex': 12
                }
            ]
        },
        {
            'text': 'order a large pepperoni pizza',
            'intentName': 'ModifyOrder',
            'entityLabels': [
                {
                    'entityName': 'Order',
                    'startCharIndex': 6,
                    'endCharIndex': 28
                },
                {
                    'entityName': 'FullPizzaWithModifiers',
                    'startCharIndex': 6,
                    'endCharIndex': 28
                },
                {
                    'entityName': 'PizzaType',
                    'startCharIndex': 14,
                    'endCharIndex': 28
                },
                {
                    'entityName': 'Size',
                    'startCharIndex': 8,
                    'endCharIndex': 12
                }
            ]
        },
        {
            'text': 'I want two large pepperoni pizzas on thin crust',
            'intentName': 'ModifyOrder',
            'entityLabels': [
                {
                    'entityName': 'Order',
                    'startCharIndex': 7,
                    'endCharIndex': 46
                },
                {
                    'entityName': 'FullPizzaWithModifiers',
                    'startCharIndex': 7,
                    'endCharIndex': 46
                },
                {
                    'entityName': 'PizzaType',
                    'startCharIndex': 17,
                    'endCharIndex': 32
                },
                {
                    'entityName': 'Size',
                    'startCharIndex': 11,
                    'endCharIndex': 15
                },
                {
                    'entityName': 'Quantity',
                    'startCharIndex': 7,
                    'endCharIndex': 9
                },
                {
                    'entityName': 'Crust',
                    'startCharIndex': 37,
                    'endCharIndex': 46
                }
            ]
        }
    ];
    
    // Main function.
    const main = async() =>{
    
        await addUtterances(utterances);
        await train("POST");
        await train("GET");
    
    }
    
    // Adds the utterances to the model.
    const addUtterances = async (utterances) => {
    
        const options = {
            uri: addUtterancesURI,
            method: 'POST',
            headers: {
                'Ocp-Apim-Subscription-Key': LUIS_authoringKey
            },
            json: true,
            body: utterances
        };
    
        const response = await request(options)
        console.log("addUtterance:\n" + JSON.stringify(response, null, 2));
    }
    
    // With verb === "POST", sends a training request.
    // With verb === "GET", obtains the training status.
    const train = async (verb) => {
    
        const options = {
            uri: addTrainURI,
            method: verb,
            headers: {
                'Ocp-Apim-Subscription-Key': LUIS_authoringKey
            },
            json: true,
            body: null // The body can be empty for a training request
        };
    
        const response = await request(options)
        console.log("train " + verb + ":\n" + JSON.stringify(response, null, 2));
    }
    
    // MAIN
    main().then(() => console.log("done")).catch((err)=> console.log(err));
    
  2. Nahraďte hodnoty začínající vlastními YOUR- hodnotami.

    Informační Účel
    YOUR-APP-ID ID vaší aplikace LUIS.
    YOUR-AUTHORING-KEY Váš klíč pro vytváření 32 znaků.
    YOUR-AUTHORING-ENDPOINT Koncový bod adresy URL pro vytváření Například https://replace-with-your-resource-name.api.cognitive.microsoft.com/. Název prostředku nastavíte při vytváření prostředku.

    Přiřazené klíče a prostředky jsou viditelné na portálu LUIS v části Správa na stránce prostředky Azure. ID aplikace je k dispozici ve stejné části Správa na stránce Nastavení aplikace.

    Důležité

    Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

  3. Na příkazovém řádku zadejte následující příkaz pro spuštění projektu:

    node model.js
    
  4. Projděte si odpověď pro vytváření obsahu:

    addUtterance:
    [
      {
        "value": {
          "ExampleId": 1137150691,
          "UtteranceText": "order a pizza"
        },
        "hasError": false
      },
      {
        "value": {
          "ExampleId": 1137150692,
          "UtteranceText": "order a large pepperoni pizza"
        },
        "hasError": false
      },
      {
        "value": {
          "ExampleId": 1137150693,
          "UtteranceText": "i want two large pepperoni pizzas on thin crust"
        },
        "hasError": false
      }
    ]
    train POST:
    {
      "statusId": 9,
      "status": "Queued"
    }
    train GET:
    [
      {
        "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      },
      {
        "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583",
        "details": {
          "statusId": 9,
          "status": "Queued",
          "exampleCount": 0
        }
      }
    ]
    done
    

Vyčištění prostředků

Po dokončení tohoto rychlého startu odstraňte složku projektu ze systému souborů.

Další kroky

Osvědčené postupy pro aplikaci

Ukázka referenční dokumentace |

Požadavky

Soubor JSON s ukázkovými promluvami

Ukázkové promluvy se řídí konkrétním formátem.

Pole text obsahuje text ukázkové promluvy. Pole intentName musí odpovídat názvu existujícího záměru v aplikaci LUIS. Pole entityLabels je povinné. Pokud nechcete označovat žádné entity, zadejte prázdné pole.

Není-li pole entityLabels prázdné, hodnoty startCharIndex a endCharIndex musí označovat entitu, na kterou odkazuje pole entityName. Index je založený na nule. Pokud začnete nebo ukončíte popisek v mezerě v textu, volání rozhraní API pro přidání promluv se nezdaří.

[
  {
    "text": "order a pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "order a large pepperoni pizza",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 6,
        "endCharIndex": 28
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 14,
        "endCharIndex": 28
      },
      {
        "entityName": "Size",
        "startCharIndex": 8,
        "endCharIndex": 12
      }
    ]
  },
  {
    "text": "I want two large pepperoni pizzas on thin crust",
    "intentName": "ModifyOrder",
    "entityLabels": [
      {
        "entityName": "Order",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "FullPizzaWithModifiers",
        "startCharIndex": 7,
        "endCharIndex": 46
      },
      {
        "entityName": "PizzaType",
        "startCharIndex": 17,
        "endCharIndex": 32
      },
      {
        "entityName": "Size",
        "startCharIndex": 11,
        "endCharIndex": 15
      },
      {
        "entityName": "Quantity",
        "startCharIndex": 7,
        "endCharIndex": 9
      },
      {
        "entityName": "Crust",
        "startCharIndex": 37,
        "endCharIndex": 46
      }
    ]
  }
]

Vytvoření aplikace Pizza

Vytvořte aplikaci pizza.

  1. Výběrem pizza-app-for-luis-v6.json otevřete stránku GitHubu pro pizza-app-for-luis.json soubor.
  2. Klikněte pravým tlačítkem myši nebo dlouho klepněte na tlačítko Nezpracované a vyberte Uložit odkaz, abyste ho uložili pizza-app-for-luis.json do počítače.
  3. Přihlaste se k portálu LUIS.
  4. Vyberte Moje aplikace.
  5. Na stránce Moje aplikace vyberte + Nová aplikace pro konverzaci.
  6. Vyberte Importovat jako JSON.
  7. V dialogovém okně Importovat novou aplikaci vyberte tlačítko Zvolit soubor .
  8. pizza-app-for-luis.json Vyberte stažený soubor a pak vyberte Otevřít.
  9. Do pole Název dialogového okna Importovat novou aplikaci zadejte název aplikace Pizza a pak vyberte tlačítko Hotovo.

Aplikace se naimportuje.

Pokud se zobrazí dialogové okno Jak vytvořit efektivní aplikaci LUIS, zavřete dialogové okno.

Trénovat a publikovat aplikaci Pizza

Měla by se zobrazit stránka Záměry se seznamem záměrů v aplikaci Pizza.

  1. V pravém horním rohu webu LUIS vyberte tlačítko Trénovat .

    Tlačítko Train (Trénovat)

  2. Trénování se dokončí, když je tlačítko Trénovat zakázané.

Pokud chcete přijímat predikce luis v chatovacím robotovi nebo v jiných klientských aplikacích, musíte aplikaci publikovat do koncového bodu předpovědi.

  1. V pravém horním navigačním panelu vyberte Publikovat .

    Snímek obrazovky s tlačítkem pro publikování do koncového bodu

  2. Vyberte produkční slot a pak vyberte Hotovo.

    Snímek obrazovky s publikováním služby LUIS do koncového bodu

  3. V oznámení vyberte Přístup k adresám URL koncového bodu a přejděte na stránku Prostředky Azure. Adresy URL uvidíte jenom v případě, že máte k aplikaci přidružený prostředek predikce. Stránku Prostředky Azure najdete také kliknutím na Spravovat.

    Snímek obrazovky se zprávou zobrazující publikování aplikace

Přidání prostředku pro vytváření obsahu do aplikace Pizza

  1. Vyberte SPRAVOVAT.
  2. Vyberte Azure Resources (Prostředky Azure).
  3. Vyberte Zdroj pro vytváření obsahu.
  4. Vyberte Změnit prostředek pro vytváření obsahu.

Pokud máte prostředek pro vytváření obsahu, zadejte název tenanta, název předplatného a název prostředku luis vašeho prostředku pro vytváření.

Pokud nemáte prostředek pro vytváření obsahu:

  1. Vyberte Vytvořit nový prostředek.
  2. Zadejte název tenanta, název prostředku, název předplatného a název skupiny prostředků Azure.

Vaše aplikace Pizza je teď připravená k použití.

Zaznamenávání přístupových hodnot pro vaši aplikaci Pizza

Pokud chcete použít novou aplikaci Pizza, budete potřebovat ID aplikace, klíč pro vytváření a koncový bod pro vytváření vaší aplikace Pizza. K získání předpovědí budete potřebovat samostatný koncový bod předpovědi a klíč předpovědi.

Tyto hodnoty najdete takto:

  1. Na stránce Záměry vyberte SPRAVOVAT.
  2. Na stránce Nastavení aplikace zaznamenejte ID aplikace.
  3. Vyberte Azure Resources (Prostředky Azure).
  4. Vyberte Zdroj pro vytváření obsahu.
  5. Na kartách Zdroje pro vytváření obsahu a Prostředky predikce si poznamenejte primární klíč. Tato hodnota je váš klíč pro vytváření.
  6. Zaznamenejte adresu URL koncového bodu. Tato hodnota je váš koncový bod pro vytváření.

Změna modelu prostřednictvím kódu programu

  1. Vytvořte nový soubor s názvem model.py. Přidejte následující kód:

    ########### Python 3.6 #############
    
    #
    # This quickstart shows how to add utterances to a LUIS model using the REST APIs.
    #
    
    import requests
    
    try:
    
        ##########
        # Values to modify.
    
        # YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
        appId = "PASTE_YOUR_LUIS_APP_ID_HERE"
    
        # YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value.
        authoring_key = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"
    
        # YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint.
        # For example, "https://your-resource-name.cognitiveservices.azure.com/"
        authoring_endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"
    
        # The version number of your LUIS app
        app_version = "0.1"
        ##########
    
        # The headers to use in this REST call.
        headers = {'Ocp-Apim-Subscription-Key': authoring_key}
    
        # The URL parameters to use in this REST call.
        params ={
            #'timezoneOffset': '0',
            #'verbose': 'true',
            #'show-all-intents': 'true',
            #'spellCheck': 'false',
            #'staging': 'false'
        }
    
        # List of example utterances to send to the LUIS app.
        data = """[
        {
            'text': 'order a pizza',
            'intentName': 'ModifyOrder',
            'entityLabels': [
                {
                    'entityName': 'Order',
                    'startCharIndex': 6,
                    'endCharIndex': 12
                }
            ]
        },
        {
            'text': 'order a large pepperoni pizza',
            'intentName': 'ModifyOrder',
            'entityLabels': [
                {
                    'entityName': 'Order',
                    'startCharIndex': 6,
                    'endCharIndex': 28
                },
                {
                    'entityName': 'FullPizzaWithModifiers',
                    'startCharIndex': 6,
                    'endCharIndex': 28
                },
                {
                    'entityName': 'PizzaType',
                    'startCharIndex': 14,
                    'endCharIndex': 28
                },
                {
                    'entityName': 'Size',
                    'startCharIndex': 8,
                    'endCharIndex': 12
                }
            ]
        },
        {
            'text': 'I want two large pepperoni pizzas on thin crust',
            'intentName': 'ModifyOrder',
            'entityLabels': [
                {
                    'entityName': 'Order',
                    'startCharIndex': 7,
                    'endCharIndex': 46
                },
                {
                    'entityName': 'FullPizzaWithModifiers',
                    'startCharIndex': 7,
                    'endCharIndex': 46
                },
                {
                    'entityName': 'PizzaType',
                    'startCharIndex': 17,
                    'endCharIndex': 32
                },
                {
                    'entityName': 'Size',
                    'startCharIndex': 11,
                    'endCharIndex': 15
                },
                {
                    'entityName': 'Quantity',
                    'startCharIndex': 7,
                    'endCharIndex': 9
                },
                {
                    'entityName': 'Crust',
                    'startCharIndex': 37,
                    'endCharIndex': 46
                }
            ]
        }
    ]
    """
    
    
        # Make the REST call to POST the list of example utterances.
        response = requests.post(f'{authoring_endpoint}luis/authoring/v3.0-preview/apps/{appId}/versions/{app_version}/examples',
            headers=headers, params=params, data=data)
    
        # Display the results on the console.
        print('Add the list of utterances:')
        print(response.json())
    
    
        # Make the REST call to initiate a training session.
        response = requests.post(f'{authoring_endpoint}luis/authoring/v3.0-preview/apps/{appId}/versions/{app_version}/train',
            headers=headers, params=params, data=None)
    
        # Display the results on the console.
        print('Request training:')
        print(response.json())
    
    
        # Make the REST call to request the status of training.
        response = requests.get(f'{authoring_endpoint}luis/authoring/v3.0-preview/apps/{appId}/versions/{app_version}/train',
            headers=headers, params=params, data=None)
    
        # Display the results on the console.
        print('Request training status:')
        print(response.json())
    
    
    except Exception as e:
        # Display the error string.
        print(f'{e}')
    
  2. Nahraďte hodnoty začínající vlastními YOUR- hodnotami.

    Informační Účel
    YOUR-APP-ID ID vaší aplikace LUIS.
    YOUR-AUTHORING-KEY Váš klíč pro vytváření 32 znaků.
    YOUR-AUTHORING-ENDPOINT Koncový bod adresy URL pro vytváření Například https://replace-with-your-resource-name.api.cognitive.microsoft.com/. Název prostředku nastavíte při vytváření prostředku.

    Přiřazené klíče a prostředky jsou viditelné na portálu LUIS v části Správa na stránce prostředky Azure. ID aplikace je k dispozici ve stejné části Správa na stránce Nastavení aplikace.

    Důležité

    Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

  3. Pomocí příkazového řádku ve stejném adresáři, ve kterém jste soubor vytvořili, zadejte následující příkaz, který soubor spustí:

    python model.py
    
  4. Projděte si odpověď pro vytváření obsahu:

    Add the list of utterances:
    [{'value': {'ExampleId': 1137150691, 'UtteranceText': 'order a pizza'}, 'hasError': False}, {'value': {'ExampleId': 1137150692, 'UtteranceText': 'order a large pepperoni pizza'}, 'hasError': False}, {'value': {'ExampleId': 1137150693, 'UtteranceText': 'i want two large pepperoni pizzas on thin crust'}, 'hasError': False}]
    Request training:
    {'statusId': 9, 'status': 'Queued'}
    Request training status:
    [{'modelId': 'edb46abf-0000-41ab-beb2-a41a0fe1630f', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': 'a5030be2-616c-4648-bf2f-380fa9417d37', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': '3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': 'e4b6704b-1636-474c-9459-fe9ccbeba51c', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': '031d3777-2a00-4a7a-9323-9a3280a30000', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': '9250e7a1-06eb-4413-9432-ae132ed32583', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}]
    

    Tady je výstup formátovaný pro čitelnost:

    Add the list of utterances:
    [
      {
        'value': {
          'ExampleId': 1137150691,
          'UtteranceText': 'order a pizza'
        },
        'hasError': False
      },
      {
        'value': {
          'ExampleId': 1137150692,
          'UtteranceText': 'order a large pepperoni pizza'
        },
        'hasError': False
      },
      {
        'value': {
          'ExampleId': 1137150693,
          'UtteranceText': 'i want two large pepperoni pizzas on thin crust'
        },
        'hasError': False
      }
    ]
    
    Request training:
    {
      'statusId': 9,
      'status': 'Queued'
    }
    
    Request training status:
    [
      {
        'modelId': 'edb46abf-0000-41ab-beb2-a41a0fe1630f',
        'details': {
          'statusId': 3,
          'status': 'InProgress',
          'exampleCount': 0,
          'progressSubstatus': 'CollectingData'
        }
      },
      {
        'modelId': 'a5030be2-616c-4648-bf2f-380fa9417d37',
        'details': {
          'statusId': 3,
          'status': 'InProgress',
          'exampleCount': 0,
          'progressSubstatus': 'CollectingData'
        }
      },
      {
        'modelId': '3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9',
        'details': {
          'statusId': 3,
          'status': 'InProgress',
          'exampleCount': 0,
          'progressSubstatus': 'CollectingData'
        }
      },
      {
        'modelId': 'e4b6704b-1636-474c-9459-fe9ccbeba51c',
        'details': {
          'statusId': 3,
          'status': 'InProgress',
          'exampleCount': 0,
          'progressSubstatus': 'CollectingData'
        }
      },
      {
        'modelId': '031d3777-2a00-4a7a-9323-9a3280a30000',
        'details': {
          'statusId': 3,
          'status': 'InProgress',
          'exampleCount': 0,
          'progressSubstatus': 'CollectingData'
        }
      },
      {
        'modelId': '9250e7a1-06eb-4413-9432-ae132ed32583',
        'details': {
          'statusId': 3,
          'status': 'InProgress',
          'exampleCount': 0,
          'progressSubstatus': 'CollectingData'
        }
      }
    ]
    

Vyčištění prostředků

Po dokončení tohoto rychlého startu odstraňte soubor ze systému souborů.

Další kroky

Osvědčené postupy pro aplikaci