Come ottenere una finalità con le API REST

In questo articolo si usa un'app LUIS per stabilire l'intenzione di un utente partendo da un testo discorsivo. Inviare l'intenzione dell'utente come testo all'endpoint di previsione HTTP dell'app Pizza. Nell'endpoint, LUIS applica il modello dell'app Pizza per analizzare il testo in linguaggio naturale allo scopo di identificare il significato, stabilire la finalità generale ed estrarre i dati pertinenti per il dominio dell'app.

Per questo articolo è necessario un account LUIS gratuito.

Documentazione di riferimento | Esempio

Prerequisiti

Creare l’app Pizza

  1. Selezionare pizza-app-for-luis-v6.json per aprire la pagina di GitHub per il file pizza-app-for-luis.json.
  2. Toccare e tenere premuto a lungo o fare clic con il pulsante destro del mouse sul pulsante Raw e selezionare Salva collegamento come per salvare pizza-app-for-luis.json nel computer.
  3. Accedere al portale LUIS.
  4. Selezionare App personali.
  5. Nella pagina App personali, selezionare + Nuova app di conversazione.
  6. Selezionare Importa come JSON.
  7. Nella finestra di dialogo Importa nuova app selezionare il pulsante Scegli file.
  8. Selezionare il file pizza-app-for-luis.json scaricato e quindi selezionare Apri.
  9. Nel campo Nome della finestra di dialogo Importa nuova app immettere un nome per l'app Pizza, quindi selezionare il pulsante Fatto.

L'app verrà importata.

Se viene visualizzata una finestra di dialogo Come creare un'app LUIS efficace, chiudere la finestra di dialogo.

Eseguire il training dell’app Pizza e pubblicarla

Verrà visualizzata la pagina Finalità con un elenco delle finalità dell'app pizza.

  1. In alto a destra nel sito Web LUIS selezionare il pulsante Train (Esegui il training).

    Pulsante per l'esecuzione del training

  2. Il training è completo quando l'indicatore di stato sul pulsante Train (Esegui il training) diventa di colore verde.

Per ottenere una previsione di Language Understanding Intelligent Service (LUIS) in un chatbot o in un'altra applicazione client, è necessario pubblicare l'app nell'endpoint di previsione.

  1. Selezionare Pubblica nel riquadro di spostamento in alto a destra.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS nel menu in alto a destra

  2. Selezionare Slot di produzione e quindi Fatto.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS

  3. Selezionare il collegamento Accedi agli URL degli endpoint nella notifica per passare alla pagina Risorse di Azure. Sarà possibile visualizzare gli URL solo se all'app è associata una risorsa di previsione. Per passare alla pagina Risorse di Azure, è anche possibile fare clic su Gestisci.

    Messaggio che informa che l'app è stata pubblicata

L'app Pizza è ora pronta per essere usata.

Registrare l'ID app, la chiave di previsione e l'endpoint di previsione dell'app Pizza

Per usare la nuova app Pizza, sono necessari l'ID app, la chiave di previsione e l'endpoint previsione dell'app Pizza.

Per trovare questi valori:

  1. Nella pagina Finalità, selezionare GESTISCi.
  2. Nella pagina Impostazioni applicazione, registrare l’ID app.
  3. Selezionare Risorse di Azure.
  4. Dalla pagina Risorse di Azure, registrare la chiave primaria. Questo valore è la chiave di previsione.
  5. Registrare l’URL dell'endpoint. Questo valore è l’endpoint di previsione.

Ottenere la finalità a livello di codice

Usare C# (.NET Core) per eseguire query sull'endpoint di previsione per ottenere un risultato della previsione.

  1. Creare una nuova applicazione console destinata al linguaggio C#, con un nome di progetto e di cartella csharp-predict-with-rest.

    dotnet new console -lang C# -n csharp-predict-with-rest
    
  2. Passare alla directory csharp-predict-with-rest creata e installare la dipendenza necessaria con il comando seguente:

    cd csharp-predict-with-rest
    dotnet add package System.Net.Http
    
  3. Aprire Program.cs nell'IDE o nell'editor preferito. Sovrascrivere quindi Program.cs con il codice seguente:

    //
    // This quickstart shows how to predict the intent of an utterance by using the LUIS REST APIs.
    //
    
    using System;
    using System.Net.Http;
    using System.Web;
    
    namespace predict_with_rest
    {
        class Program
        {
            static void Main(string[] args)
            {
                //////////
                // Values to modify.
    
                // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
                var appId = "YOUR-APP-ID";
    
                // YOUR-PREDICTION-KEY: 32 character key.
                var predictionKey = "YOUR-PREDICTION-KEY";
    
                // YOUR-PREDICTION-ENDPOINT: Example is "https://westus.api.cognitive.microsoft.com/"
                var predictionEndpoint = "https://YOUR-PREDICTION-ENDPOINT/";
    
                // An utterance to test the pizza app.
                var utterance = "I want two large pepperoni pizzas on thin crust please";
                //////////
    
                MakeRequest(predictionKey, predictionEndpoint, appId, utterance);
    
                Console.WriteLine("Press ENTER to exit...");
                Console.ReadLine();
            }
    
            static async void MakeRequest(string predictionKey, string predictionEndpoint, string appId, string utterance)
            {
                var client = new HttpClient();
                var queryString = HttpUtility.ParseQueryString(string.Empty);
    
                // The request header contains your subscription key
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", predictionKey);
    
                // The "q" parameter contains the utterance to send to LUIS
                queryString["query"] = utterance;
    
                // These optional request parameters are set to their default values
                // queryString["verbose"] = "true";
                // queryString["show-all-intents"] = "true";
                // queryString["staging"] = "false";
                // queryString["timezoneOffset"] = "0";
    
                var predictionEndpointUri = String.Format("{0}luis/prediction/v3.0/apps/{1}/slots/production/predict?{2}", predictionEndpoint, appId, queryString);
    
                // Remove these before updating the article.
                Console.WriteLine("endpoint: " + predictionEndpoint);
                Console.WriteLine("appId: " + appId);
                Console.WriteLine("queryString: " + queryString);
                Console.WriteLine("endpointUri: " + predictionEndpointUri);
    
                var response = await client.GetAsync(predictionEndpointUri);
    
                var strResponseContent = await response.Content.ReadAsStringAsync();
    
                // Display the JSON result from LUIS.
                Console.WriteLine(strResponseContent.ToString());
            }
        }
    }
    
  4. Sostituire i valori che iniziano con YOUR- con i propri valori.

    Informazioni Scopo
    YOUR-APP-ID L'ID app. Disponibile nel portale LUIS, pagina Impostazioni applicazione per l'app.
    YOUR-PREDICTION-KEY La chiave di previsione di 32 caratteri. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    YOUR-PREDICTION-ENDPOINT L'endpoint dell'URL di previsione. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    Ad esempio: https://westus.api.cognitive.microsoft.com/.
  5. Compilare l'applicazione console con il comando seguente:

    dotnet build
    
  6. Eseguire l'applicazione console. L'output della console mostra lo stesso codice JSON visualizzato in precedenza nella finestra del browser.

    dotnet run
    
  7. Esaminare la risposta di previsione restituita in formato JSON:

    {"query":"I want two large pepperoni pizzas on thin crust please","prediction":{"topIntent":"ModifyOrder","intents":{"ModifyOrder":{"score":1.0},"None":{"score":8.55E-09},"Greetings":{"score":1.82222226E-09},"CancelOrder":{"score":1.47272727E-09},"Confirmation":{"score":9.8125E-10}},"entities":{"Order":[{"FullPizzaWithModifiers":[{"PizzaType":["pepperoni pizzas"],"Size":[["Large"]],"Quantity":[2],"Crust":[["Thin"]],"$instance":{"PizzaType":[{"type":"PizzaType","text":"pepperoni pizzas","startIndex":17,"length":16,"score":0.9978157,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Size":[{"type":"SizeList","text":"large","startIndex":11,"length":5,"score":0.9984481,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Quantity":[{"type":"builtin.number","text":"two","startIndex":7,"length":3,"score":0.999770939,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Crust":[{"type":"CrustList","text":"thin crust","startIndex":37,"length":10,"score":0.933985531,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"$instance":{"FullPizzaWithModifiers":[{"type":"FullPizzaWithModifiers","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.90681237,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"ToppingList":[["Pepperoni"]],"$instance":{"Order":[{"type":"Order","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.9047088,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"ToppingList":[{"type":"ToppingList","text":"pepperoni","startIndex":17,"length":9,"modelTypeId":5,"modelType":"List Entity Extractor","recognitionSources":["model"]}]}}}}
    

    La risposta JSON formattata per migliorare la leggibilità:

    {
      "query": "I want two large pepperoni pizzas on thin crust please",
      "prediction": {
        "topIntent": "ModifyOrder",
        "intents": {
          "ModifyOrder": {
            "score": 1
          },
          "None": {
            "score": 8.55e-9
          },
          "Greetings": {
            "score": 1.82222226e-9
          },
          "CancelOrder": {
            "score": 1.47272727e-9
          },
          "Confirmation": {
            "score": 9.8125e-10
          }
        },
        "entities": {
          "Order": [
            {
              "FullPizzaWithModifiers": [
                {
                  "PizzaType": [
                    "pepperoni pizzas"
                  ],
                  "Size": [
                    [
                      "Large"
                    ]
                  ],
                  "Quantity": [
                    2
                  ],
                  "Crust": [
                    [
                      "Thin"
                    ]
                  ],
                  "$instance": {
                    "PizzaType": [
                      {
                        "type": "PizzaType",
                        "text": "pepperoni pizzas",
                        "startIndex": 17,
                        "length": 16,
                        "score": 0.9978157,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Size": [
                      {
                        "type": "SizeList",
                        "text": "large",
                        "startIndex": 11,
                        "length": 5,
                        "score": 0.9984481,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Quantity": [
                      {
                        "type": "builtin.number",
                        "text": "two",
                        "startIndex": 7,
                        "length": 3,
                        "score": 0.999770939,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Crust": [
                      {
                        "type": "CrustList",
                        "text": "thin crust",
                        "startIndex": 37,
                        "length": 10,
                        "score": 0.933985531,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ]
                  }
                }
              ],
              "$instance": {
                "FullPizzaWithModifiers": [
                  {
                    "type": "FullPizzaWithModifiers",
                    "text": "two large pepperoni pizzas on thin crust",
                    "startIndex": 7,
                    "length": 40,
                    "score": 0.90681237,
                    "modelTypeId": 1,
                    "modelType": "Entity Extractor",
                    "recognitionSources": [
                      "model"
                    ]
                  }
                ]
              }
            }
          ],
          "ToppingList": [
            [
              "Pepperoni"
            ]
          ],
          "$instance": {
            "Order": [
              {
                "type": "Order",
                "text": "two large pepperoni pizzas on thin crust",
                "startIndex": 7,
                "length": 40,
                "score": 0.9047088,
                "modelTypeId": 1,
                "modelType": "Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ],
            "ToppingList": [
              {
                "type": "ToppingList",
                "text": "pepperoni",
                "startIndex": 17,
                "length": 9,
                "modelTypeId": 5,
                "modelType": "List Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ]
          }
        }
      }
    }
    

Pulire le risorse

Al termine di questo argomento di avvio rapido, eliminare la cartella del progetto dal file system.

Passaggi successivi

Documentazione di riferimento | Esempio

Prerequisiti

Creare l’app Pizza

  1. Selezionare pizza-app-for-luis-v6.json per aprire la pagina di GitHub per il file pizza-app-for-luis.json.
  2. Toccare e tenere premuto a lungo o fare clic con il pulsante destro del mouse sul pulsante Raw e selezionare Salva collegamento come per salvare pizza-app-for-luis.json nel computer.
  3. Accedere al portale LUIS.
  4. Selezionare App personali.
  5. Nella pagina App personali, selezionare + Nuova app di conversazione.
  6. Selezionare Importa come JSON.
  7. Nella finestra di dialogo Importa nuova app selezionare il pulsante Scegli file.
  8. Selezionare il file pizza-app-for-luis.json scaricato e quindi selezionare Apri.
  9. Nel campo Nome della finestra di dialogo Importa nuova app immettere un nome per l'app Pizza, quindi selezionare il pulsante Fatto.

L'app verrà importata.

Se viene visualizzata una finestra di dialogo Come creare un'app LUIS efficace, chiudere la finestra di dialogo.

Eseguire il training dell’app Pizza e pubblicarla

Verrà visualizzata la pagina Finalità con un elenco delle finalità dell'app pizza.

  1. In alto a destra nel sito Web LUIS selezionare il pulsante Train (Esegui il training).

    Pulsante per l'esecuzione del training

  2. Il training è completo quando l'indicatore di stato sul pulsante Train (Esegui il training) diventa di colore verde.

Per ottenere una previsione di Language Understanding Intelligent Service (LUIS) in un chatbot o in un'altra applicazione client, è necessario pubblicare l'app nell'endpoint di previsione.

  1. Selezionare Pubblica nel riquadro di spostamento in alto a destra.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS nel menu in alto a destra

  2. Selezionare Slot di produzione e quindi Fatto.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS

  3. Selezionare il collegamento Accedi agli URL degli endpoint nella notifica per passare alla pagina Risorse di Azure. Sarà possibile visualizzare gli URL solo se all'app è associata una risorsa di previsione. Per passare alla pagina Risorse di Azure, è anche possibile fare clic su Gestisci.

    Messaggio che informa che l'app è stata pubblicata

L'app Pizza è ora pronta per essere usata.

Registrare l'ID app, la chiave di previsione e l'endpoint di previsione dell'app Pizza

Per usare la nuova app Pizza, sono necessari l'ID app, la chiave di previsione e l'endpoint previsione dell'app Pizza.

Per trovare questi valori:

  1. Nella pagina Finalità, selezionare GESTISCi.
  2. Nella pagina Impostazioni applicazione, registrare l’ID app.
  3. Selezionare Risorse di Azure.
  4. Dalla pagina Risorse di Azure, registrare la chiave primaria. Questo valore è la chiave di previsione.
  5. Registrare l’URL dell'endpoint. Questo valore è l’endpoint di previsione.

Ottenere la finalità a livello di codice

Usare Go per eseguire query sull'endpoint di previsione per ottenere un risultato della previsione.

  1. Creare un file denominato predict.go. Aggiungere il codice seguente:

    //
    // This quickstart shows how to predict the intent of an utterance by using the LUIS REST APIs.
    //
    
    package main
    
    // Import dependencies.
    import (
        "fmt"
        "net/http"
        "net/url"
        "io/ioutil"
        "log"
    )
    
    func main() {
    
        //////////
        // Values to modify.
    
        // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
        var appID = "YOUR-APP-ID"
    
        // YOUR-PREDICTION-KEY: Your LUIS authoring key, 32 character value.
        var predictionKey = "YOUR-PREDICTION-KEY"
    
        // YOUR-PREDICTION-ENDPOINT: Replace with your authoring key endpoint.
        // For example, "https://westus.api.cognitive.microsoft.com/"
        var predictionEndpoint = "https://YOUR-PREDICTION-ENDPOINT/"
    
        // utterance for public app
        var utterance = "I want two large pepperoni pizzas on thin crust please"
        //////////
    
        // Call the prediction endpoint.
        endpointPrediction(appID, predictionKey, predictionEndpoint, utterance)
    }
    
    // Calls the prediction endpoint and displays the prediction results on the console.
    func endpointPrediction(appID string, predictionKey string, predictionEndpoint string, utterance string) {
    
        var endpointUrl = fmt.Sprintf("%sluis/prediction/v3.0/apps/%s/slots/production/predict?subscription-key=%s&verbose=true&show-all-intents=true&query=%s", predictionEndpoint, appID, predictionKey, url.QueryEscape(utterance))
    
        response, err := http.Get(endpointUrl)
    
        if err != nil {
            // handle error
            fmt.Println("error from Get")
            log.Fatal(err)
        }
    
        response2, err2 := ioutil.ReadAll(response.Body)
    
        if err2 != nil {
            // handle error
            fmt.Println("error from ReadAll")
            log.Fatal(err2)
        }
    
        fmt.Println("response")
        fmt.Println(string(response2))
    }
    
  2. Sostituire i valori che iniziano con YOUR- con i propri valori.

    Informazioni Scopo
    YOUR-APP-ID L'ID app. Disponibile nel portale LUIS, pagina Impostazioni applicazione per l'app.
    YOUR-PREDICTION-KEY La chiave di previsione di 32 caratteri. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    YOUR-PREDICTION-ENDPOINT L'endpoint dell'URL di previsione. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    Ad esempio: https://westus.api.cognitive.microsoft.com/.
  3. Da un prompt dei comandi nella stessa directory in cui è stato creato il file immettere il comando seguente per compilare il file Go:

    go build predict.go
    
  4. Eseguire l'applicazione Go alla riga di comando immettendo il testo seguente nel prompt dei comandi:

    go run predict.go
    
  5. Esaminare la risposta di previsione restituita in formato JSON:

    response
    {"query":"I want two large pepperoni pizzas on thin crust please","prediction":{"topIntent":"ModifyOrder","intents":{"ModifyOrder":{"score":1.0},"None":{"score":8.55E-09},"Greetings":{"score":1.82222226E-09},"CancelOrder":{"score":1.47272727E-09},"Confirmation":{"score":9.8125E-10}},"entities":{"Order":[{"FullPizzaWithModifiers":[{"PizzaType":["pepperoni pizzas"],"Size":[["Large"]],"Quantity":[2],"Crust":[["Thin"]],"$instance":{"PizzaType":[{"type":"PizzaType","text":"pepperoni pizzas","startIndex":17,"length":16,"score":0.9978157,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Size":[{"type":"SizeList","text":"large","startIndex":11,"length":5,"score":0.9984481,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Quantity":[{"type":"builtin.number","text":"two","startIndex":7,"length":3,"score":0.999770939,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Crust":[{"type":"CrustList","text":"thin crust","startIndex":37,"length":10,"score":0.933985531,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"$instance":{"FullPizzaWithModifiers":[{"type":"FullPizzaWithModifiers","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.90681237,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"ToppingList":[["Pepperoni"]],"$instance":{"Order":[{"type":"Order","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.9047088,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"ToppingList":[{"type":"ToppingList","text":"pepperoni","startIndex":17,"length":9,"modelTypeId":5,"modelType":"List Entity Extractor","recognitionSources":["model"]}]}}}}
    

    Risposta JSON formattata per migliorare la leggibilità:

    response
    {
      "query": "I want two large pepperoni pizzas on thin crust please",
      "prediction": {
        "topIntent": "ModifyOrder",
        "intents": {
          "ModifyOrder": {
            "score": 1
          },
          "None": {
            "score": 8.55e-9
          },
          "Greetings": {
            "score": 1.82222226e-9
          },
          "CancelOrder": {
            "score": 1.47272727e-9
          },
          "Confirmation": {
            "score": 9.8125e-10
          }
        },
        "entities": {
          "Order": [
            {
              "FullPizzaWithModifiers": [
                {
                  "PizzaType": [
                    "pepperoni pizzas"
                  ],
                  "Size": [
                    [
                      "Large"
                    ]
                  ],
                  "Quantity": [
                    2
                  ],
                  "Crust": [
                    [
                      "Thin"
                    ]
                  ],
                  "$instance": {
                    "PizzaType": [
                      {
                        "type": "PizzaType",
                        "text": "pepperoni pizzas",
                        "startIndex": 17,
                        "length": 16,
                        "score": 0.9978157,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Size": [
                      {
                        "type": "SizeList",
                        "text": "large",
                        "startIndex": 11,
                        "length": 5,
                        "score": 0.9984481,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Quantity": [
                      {
                        "type": "builtin.number",
                        "text": "two",
                        "startIndex": 7,
                        "length": 3,
                        "score": 0.999770939,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Crust": [
                      {
                        "type": "CrustList",
                        "text": "thin crust",
                        "startIndex": 37,
                        "length": 10,
                        "score": 0.933985531,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ]
                  }
                }
              ],
              "$instance": {
                "FullPizzaWithModifiers": [
                  {
                    "type": "FullPizzaWithModifiers",
                    "text": "two large pepperoni pizzas on thin crust",
                    "startIndex": 7,
                    "length": 40,
                    "score": 0.90681237,
                    "modelTypeId": 1,
                    "modelType": "Entity Extractor",
                    "recognitionSources": [
                      "model"
                    ]
                  }
                ]
              }
            }
          ],
          "ToppingList": [
            [
              "Pepperoni"
            ]
          ],
          "$instance": {
            "Order": [
              {
                "type": "Order",
                "text": "two large pepperoni pizzas on thin crust",
                "startIndex": 7,
                "length": 40,
                "score": 0.9047088,
                "modelTypeId": 1,
                "modelType": "Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ],
            "ToppingList": [
              {
                "type": "ToppingList",
                "text": "pepperoni",
                "startIndex": 17,
                "length": 9,
                "modelTypeId": 5,
                "modelType": "List Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ]
          }
        }
      }
    }
    

Pulire le risorse

Al termine di questo argomento di avvio rapido, eliminare il file dal file system.

Passaggi successivi

Documentazione di riferimento | Esempio

Prerequisiti

Creare l’app Pizza

  1. Selezionare pizza-app-for-luis-v6.json per aprire la pagina di GitHub per il file pizza-app-for-luis.json.
  2. Toccare e tenere premuto a lungo o fare clic con il pulsante destro del mouse sul pulsante Raw e selezionare Salva collegamento come per salvare pizza-app-for-luis.json nel computer.
  3. Accedere al portale LUIS.
  4. Selezionare App personali.
  5. Nella pagina App personali, selezionare + Nuova app di conversazione.
  6. Selezionare Importa come JSON.
  7. Nella finestra di dialogo Importa nuova app selezionare il pulsante Scegli file.
  8. Selezionare il file pizza-app-for-luis.json scaricato e quindi selezionare Apri.
  9. Nel campo Nome della finestra di dialogo Importa nuova app immettere un nome per l'app Pizza, quindi selezionare il pulsante Fatto.

L'app verrà importata.

Se viene visualizzata una finestra di dialogo Come creare un'app LUIS efficace, chiudere la finestra di dialogo.

Eseguire il training dell’app Pizza e pubblicarla

Verrà visualizzata la pagina Finalità con un elenco delle finalità dell'app pizza.

  1. In alto a destra nel sito Web LUIS selezionare il pulsante Train (Esegui il training).

    Pulsante per l'esecuzione del training

  2. Il training è completo quando l'indicatore di stato sul pulsante Train (Esegui il training) diventa di colore verde.

Per ottenere una previsione di Language Understanding Intelligent Service (LUIS) in un chatbot o in un'altra applicazione client, è necessario pubblicare l'app nell'endpoint di previsione.

  1. Selezionare Pubblica nel riquadro di spostamento in alto a destra.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS nel menu in alto a destra

  2. Selezionare Slot di produzione e quindi Fatto.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS

  3. Selezionare il collegamento Accedi agli URL degli endpoint nella notifica per passare alla pagina Risorse di Azure. Sarà possibile visualizzare gli URL solo se all'app è associata una risorsa di previsione. Per passare alla pagina Risorse di Azure, è anche possibile fare clic su Gestisci.

    Messaggio che informa che l'app è stata pubblicata

L'app Pizza è ora pronta per essere usata.

Registrare l'ID app, la chiave di previsione e l'endpoint di previsione dell'app Pizza

Per usare la nuova app Pizza, sono necessari l'ID app, la chiave di previsione e l'endpoint previsione dell'app Pizza.

Per trovare questi valori:

  1. Nella pagina Finalità, selezionare GESTISCi.
  2. Nella pagina Impostazioni applicazione, registrare l’ID app.
  3. Selezionare Risorse di Azure.
  4. Dalla pagina Risorse di Azure, registrare la chiave primaria. Questo valore è la chiave di previsione.
  5. Registrare l’URL dell'endpoint. Questo valore è l’endpoint di previsione.

Ottenere la finalità a livello di codice

Usare Java per eseguire query sull'endpoint di previsione per ottenere un risultato della previsione.

  1. Creare una nuova cartella che contenga il progetto Java, ad esempio java-predict-with-rest.

  2. Creare una sottodirectory denominata lib e copiarla nelle librerie Java seguenti nella sottodirectory lib:

  3. Copiare il codice seguente per creare una classe in un file denominato Predict.java:

    //
    // This quickstart shows how to predict the intent of an utterance by using the LUIS 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.utils.URIBuilder;
    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/*" Predict.java
    //      macOs: javac -cp ":lib/*" Predict.java
    //      Linux: javac -cp ":lib/*" Predict.java
    
    // To run, execute this command at the console:
    //      Windows: java -cp ";lib/*" Predict
    //      macOs: java -cp ":lib/*" Predict
    //      Linux: java -cp ":lib/*" Predict
    
    public class Predict {
    
        public static void main(String[] args)
        {
            HttpClient httpclient = HttpClients.createDefault();
    
            try
            {
                //////////
                // Values to modify.
    
                // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
                String AppId = "YOUR-APP-ID";
    
                // YOUR-PREDICTION-KEY: Your LUIS authoring key, 32 character value.
                String Key = "YOUR-PREDICTION-KEY";
    
                // YOUR-PREDICTION-ENDPOINT: Replace this with your authoring key endpoint.
                // For example, "https://westus.api.cognitive.microsoft.com/"
                String Endpoint = "https://YOUR-PREDICTION-ENDPOINT/";
    
                // The utterance you want to use.
                String Utterance = "I want two large pepperoni pizzas on thin crust please";
                //////////
    
                // Begin building the endpoint URL.
                URIBuilder endpointURLbuilder = new URIBuilder(Endpoint + "luis/prediction/v3.0/apps/" + AppId + "/slots/production/predict?");
    
                // Create the query string params.
                endpointURLbuilder.setParameter("query", Utterance);
                endpointURLbuilder.setParameter("subscription-key", Key);
                endpointURLbuilder.setParameter("show-all-intents", "true");
                endpointURLbuilder.setParameter("verbose", "true");
    
                // Create the prediction endpoint URL.
                URI endpointURL = endpointURLbuilder.build();
    
                // Create the HTTP object from the URL.
                HttpGet request = new HttpGet(endpointURL);
    
                // Access the LUIS endpoint to analyze the text utterance.
                HttpResponse response = httpclient.execute(request);
    
                // Get the response.
                HttpEntity entity = response.getEntity();
    
                // Print the response on the console.
                if (entity != null)
                {
                    System.out.println(EntityUtils.toString(entity));
                }
            }
    
            // Display errors if they occur.
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
    }
    
  4. Sostituire i valori che iniziano con YOUR- con i propri valori.

    Informazioni Scopo
    YOUR-APP-ID L'ID app. Disponibile nel portale LUIS, pagina Impostazioni applicazione per l'app.
    YOUR-PREDICTION-KEY La chiave di previsione di 32 caratteri. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    YOUR-PREDICTION-ENDPOINT L'endpoint dell'URL di previsione. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    Ad esempio: https://westus.api.cognitive.microsoft.com/.
  5. Compilare il programma Java dalla riga di comando.

    • Se si usa Windows, usare questo comando: javac -cp ";lib/*" Predict.java
    • Se si usa macOS o Linux, usare questo comando: javac -cp ":lib/*" Predict.java
  6. Eseguire il programma Java dalla riga di comando:

    • Se si usa Windows, usare questo comando: java -cp ";lib/*" Predict
    • Se si usa macOS o Linux, usare questo comando: java -cp ":lib/*" Predict
  7. Esaminare la risposta di previsione restituita in formato JSON:

    {"query":"I want two large pepperoni pizzas on thin crust please","prediction":{"topIntent":"ModifyOrder","intents":{"ModifyOrder":{"score":1.0},"None":{"score":8.55E-09},"Greetings":{"score":1.82222226E-09},"CancelOrder":{"score":1.47272727E-09},"Confirmation":{"score":9.8125E-10}},"entities":{"Order":[{"FullPizzaWithModifiers":[{"PizzaType":["pepperoni pizzas"],"Size":[["Large"]],"Quantity":[2],"Crust":[["Thin"]],"$instance":{"PizzaType":[{"type":"PizzaType","text":"pepperoni pizzas","startIndex":17,"length":16,"score":0.9978157,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Size":[{"type":"SizeList","text":"large","startIndex":11,"length":5,"score":0.9984481,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Quantity":[{"type":"builtin.number","text":"two","startIndex":7,"length":3,"score":0.999770939,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Crust":[{"type":"CrustList","text":"thin crust","startIndex":37,"length":10,"score":0.933985531,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"$instance":{"FullPizzaWithModifiers":[{"type":"FullPizzaWithModifiers","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.90681237,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"ToppingList":[["Pepperoni"]],"$instance":{"Order":[{"type":"Order","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.9047088,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"ToppingList":[{"type":"ToppingList","text":"pepperoni","startIndex":17,"length":9,"modelTypeId":5,"modelType":"List Entity Extractor","recognitionSources":["model"]}]}}}}
    

    La risposta JSON formattata per migliorare la leggibilità:

    {
      "query": "I want two large pepperoni pizzas on thin crust please",
      "prediction": {
        "topIntent": "ModifyOrder",
        "intents": {
          "ModifyOrder": {
            "score": 1
          },
          "None": {
            "score": 8.55e-9
          },
          "Greetings": {
            "score": 1.82222226e-9
          },
          "CancelOrder": {
            "score": 1.47272727e-9
          },
          "Confirmation": {
            "score": 9.8125e-10
          }
        },
        "entities": {
          "Order": [
            {
              "FullPizzaWithModifiers": [
                {
                  "PizzaType": [
                    "pepperoni pizzas"
                  ],
                  "Size": [
                    [
                      "Large"
                    ]
                  ],
                  "Quantity": [
                    2
                  ],
                  "Crust": [
                    [
                      "Thin"
                    ]
                  ],
                  "$instance": {
                    "PizzaType": [
                      {
                        "type": "PizzaType",
                        "text": "pepperoni pizzas",
                        "startIndex": 17,
                        "length": 16,
                        "score": 0.9978157,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Size": [
                      {
                        "type": "SizeList",
                        "text": "large",
                        "startIndex": 11,
                        "length": 5,
                        "score": 0.9984481,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Quantity": [
                      {
                        "type": "builtin.number",
                        "text": "two",
                        "startIndex": 7,
                        "length": 3,
                        "score": 0.999770939,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Crust": [
                      {
                        "type": "CrustList",
                        "text": "thin crust",
                        "startIndex": 37,
                        "length": 10,
                        "score": 0.933985531,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ]
                  }
                }
              ],
              "$instance": {
                "FullPizzaWithModifiers": [
                  {
                    "type": "FullPizzaWithModifiers",
                    "text": "two large pepperoni pizzas on thin crust",
                    "startIndex": 7,
                    "length": 40,
                    "score": 0.90681237,
                    "modelTypeId": 1,
                    "modelType": "Entity Extractor",
                    "recognitionSources": [
                      "model"
                    ]
                  }
                ]
              }
            }
          ],
          "ToppingList": [
            [
              "Pepperoni"
            ]
          ],
          "$instance": {
            "Order": [
              {
                "type": "Order",
                "text": "two large pepperoni pizzas on thin crust",
                "startIndex": 7,
                "length": 40,
                "score": 0.9047088,
                "modelTypeId": 1,
                "modelType": "Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ],
            "ToppingList": [
              {
                "type": "ToppingList",
                "text": "pepperoni",
                "startIndex": 17,
                "length": 9,
                "modelTypeId": 5,
                "modelType": "List Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ]
          }
        }
      }
    }
    

Pulire le risorse

Al termine di questo argomento di avvio rapido, eliminare la cartella del progetto dal file system.

Passaggi successivi

Documentazione di riferimento | Esempio

Prerequisiti

Creare l’app Pizza

  1. Selezionare pizza-app-for-luis-v6.json per aprire la pagina di GitHub per il file pizza-app-for-luis.json.
  2. Toccare e tenere premuto a lungo o fare clic con il pulsante destro del mouse sul pulsante Raw e selezionare Salva collegamento come per salvare pizza-app-for-luis.json nel computer.
  3. Accedere al portale LUIS.
  4. Selezionare App personali.
  5. Nella pagina App personali, selezionare + Nuova app di conversazione.
  6. Selezionare Importa come JSON.
  7. Nella finestra di dialogo Importa nuova app selezionare il pulsante Scegli file.
  8. Selezionare il file pizza-app-for-luis.json scaricato e quindi selezionare Apri.
  9. Nel campo Nome della finestra di dialogo Importa nuova app immettere un nome per l'app Pizza, quindi selezionare il pulsante Fatto.

L'app verrà importata.

Se viene visualizzata una finestra di dialogo Come creare un'app LUIS efficace, chiudere la finestra di dialogo.

Eseguire il training dell’app Pizza e pubblicarla

Verrà visualizzata la pagina Finalità con un elenco delle finalità dell'app pizza.

  1. In alto a destra nel sito Web LUIS selezionare il pulsante Train (Esegui il training).

    Pulsante per l'esecuzione del training

  2. Il training è completo quando l'indicatore di stato sul pulsante Train (Esegui il training) diventa di colore verde.

Per ottenere una previsione di Language Understanding Intelligent Service (LUIS) in un chatbot o in un'altra applicazione client, è necessario pubblicare l'app nell'endpoint di previsione.

  1. Selezionare Pubblica nel riquadro di spostamento in alto a destra.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS nel menu in alto a destra

  2. Selezionare Slot di produzione e quindi Fatto.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS

  3. Selezionare il collegamento Accedi agli URL degli endpoint nella notifica per passare alla pagina Risorse di Azure. Sarà possibile visualizzare gli URL solo se all'app è associata una risorsa di previsione. Per passare alla pagina Risorse di Azure, è anche possibile fare clic su Gestisci.

    Messaggio che informa che l'app è stata pubblicata

L'app Pizza è ora pronta per essere usata.

Registrare l'ID app, la chiave di previsione e l'endpoint di previsione dell'app Pizza

Per usare la nuova app Pizza, sono necessari l'ID app, la chiave di previsione e l'endpoint previsione dell'app Pizza.

Per trovare questi valori:

  1. Nella pagina Finalità, selezionare GESTISCi.
  2. Nella pagina Impostazioni applicazione, registrare l’ID app.
  3. Selezionare Risorse di Azure.
  4. Dalla pagina Risorse di Azure, registrare la chiave primaria. Questo valore è la chiave di previsione.
  5. Registrare l’URL dell'endpoint. Questo valore è l’endpoint di previsione.

Creare il progetto Node.js

  1. Creare una nuova cartella che contenga il progetto Node.js, ad esempio node-predict-with-rest.

  2. Aprire un nuovo prompt dei comandi, passare alla cartella creata ed eseguire il comando seguente:

    npm init
    

    Premere INVIO a ogni richiesta per accettare le impostazioni predefinite.

  3. Installare le dipendenze immettendo i comandi seguenti:

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

Ottenere la finalità a livello di codice

Usare Node.js per eseguire query sull'endpoint di previsione per ottenere un risultato della previsione.

  1. Copiare il frammento di codice seguente in un file denominato predict.js:

    //
    // This quickstart shows how to predict the intent of an utterance by using the LUIS REST APIs.
    //
    
    var requestPromise = require('request-promise');
    var queryString = require('querystring');
    
    // Analyze a string utterance.
    getPrediction = async () => {
    
        //////////
        // Values to modify.
    
        // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
        const LUIS_appId = "YOUR-APP-ID";
    
        // YOUR-PREDICTION-KEY: Your LUIS authoring key, 32 character value.
        const LUIS_predictionKey = "YOUR-PREDICTION-KEY";
    
        // YOUR-PREDICTION-ENDPOINT: Replace this with your authoring key endpoint.
        // For example, "https://westus.api.cognitive.microsoft.com/"
        const LUIS_endpoint = "https://YOUR-PREDICTION-ENDPOINT/";
    
        // The utterance you want to use.
        const utterance = "I want two large pepperoni pizzas on thin crust please";
        //////////
    
        // Create query string
        const queryParams = {
            "show-all-intents": true,
            "verbose":  true,
            "query": utterance,
            "subscription-key": LUIS_predictionKey
        }
    
        // Create the URI for the REST call.
        const URI = `${LUIS_endpoint}luis/prediction/v3.0/apps/${LUIS_appId}/slots/production/predict?${queryString.stringify(queryParams)}`
    
        // Send the REST call.
        const response = await requestPromise(URI);
    
        // Display the response from the REST call.
        console.log(response);
    }
    
    // Pass an utterance to the sample LUIS app
    getPrediction().then(()=>console.log("done")).catch((err)=>console.log(err));
    
  2. Sostituire i valori che iniziano con YOUR- con i propri valori.

    Informazioni Scopo
    YOUR-APP-ID L'ID app. Disponibile nel portale LUIS, pagina Impostazioni applicazione per l'app.
    YOUR-PREDICTION-KEY La chiave di previsione di 32 caratteri. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    YOUR-PREDICTION-ENDPOINT L'endpoint dell'URL di previsione. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    Ad esempio: https://westus.api.cognitive.microsoft.com/.
  3. Esaminare la risposta di previsione restituita in formato JSON:

    {"query":"I want two large pepperoni pizzas on thin crust please","prediction":{"topIntent":"ModifyOrder","intents":{"ModifyOrder":{"score":1.0},"None":{"score":8.55E-09},"Greetings":{"score":1.82222226E-09},"CancelOrder":{"score":1.47272727E-09},"Confirmation":{"score":9.8125E-10}},"entities":{"Order":[{"FullPizzaWithModifiers":[{"PizzaType":["pepperoni pizzas"],"Size":[["Large"]],"Quantity":[2],"Crust":[["Thin"]],"$instance":{"PizzaType":[{"type":"PizzaType","text":"pepperoni pizzas","startIndex":17,"length":16,"score":0.9978157,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Size":[{"type":"SizeList","text":"large","startIndex":11,"length":5,"score":0.9984481,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Quantity":[{"type":"builtin.number","text":"two","startIndex":7,"length":3,"score":0.999770939,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Crust":[{"type":"CrustList","text":"thin crust","startIndex":37,"length":10,"score":0.933985531,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"$instance":{"FullPizzaWithModifiers":[{"type":"FullPizzaWithModifiers","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.90681237,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"ToppingList":[["Pepperoni"]],"$instance":{"Order":[{"type":"Order","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.9047088,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"ToppingList":[{"type":"ToppingList","text":"pepperoni","startIndex":17,"length":9,"modelTypeId":5,"modelType":"List Entity Extractor","recognitionSources":["model"]}]}}}}
        ```
    
    The JSON response formatted for readability:
    
    ```JSON
    {
      "query": "I want two large pepperoni pizzas on thin crust please",
      "prediction": {
        "topIntent": "ModifyOrder",
        "intents": {
          "ModifyOrder": {
            "score": 1
          },
          "None": {
            "score": 8.55e-9
          },
          "Greetings": {
            "score": 1.82222226e-9
          },
          "CancelOrder": {
            "score": 1.47272727e-9
          },
          "Confirmation": {
            "score": 9.8125e-10
          }
        },
        "entities": {
          "Order": [
            {
              "FullPizzaWithModifiers": [
                {
                  "PizzaType": [
                    "pepperoni pizzas"
                  ],
                  "Size": [
                    [
                      "Large"
                    ]
                  ],
                  "Quantity": [
                    2
                  ],
                  "Crust": [
                    [
                      "Thin"
                    ]
                  ],
                  "$instance": {
                    "PizzaType": [
                      {
                        "type": "PizzaType",
                        "text": "pepperoni pizzas",
                        "startIndex": 17,
                        "length": 16,
                        "score": 0.9978157,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Size": [
                      {
                        "type": "SizeList",
                        "text": "large",
                        "startIndex": 11,
                        "length": 5,
                        "score": 0.9984481,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Quantity": [
                      {
                        "type": "builtin.number",
                        "text": "two",
                        "startIndex": 7,
                        "length": 3,
                        "score": 0.999770939,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ],
                    "Crust": [
                      {
                        "type": "CrustList",
                        "text": "thin crust",
                        "startIndex": 37,
                        "length": 10,
                        "score": 0.933985531,
                        "modelTypeId": 1,
                        "modelType": "Entity Extractor",
                        "recognitionSources": [
                          "model"
                        ]
                      }
                    ]
                  }
                }
              ],
              "$instance": {
                "FullPizzaWithModifiers": [
                  {
                    "type": "FullPizzaWithModifiers",
                    "text": "two large pepperoni pizzas on thin crust",
                    "startIndex": 7,
                    "length": 40,
                    "score": 0.90681237,
                    "modelTypeId": 1,
                    "modelType": "Entity Extractor",
                    "recognitionSources": [
                      "model"
                    ]
                  }
                ]
              }
            }
          ],
          "ToppingList": [
            [
              "Pepperoni"
            ]
          ],
          "$instance": {
            "Order": [
              {
                "type": "Order",
                "text": "two large pepperoni pizzas on thin crust",
                "startIndex": 7,
                "length": 40,
                "score": 0.9047088,
                "modelTypeId": 1,
                "modelType": "Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ],
            "ToppingList": [
              {
                "type": "ToppingList",
                "text": "pepperoni",
                "startIndex": 17,
                "length": 9,
                "modelTypeId": 5,
                "modelType": "List Entity Extractor",
                "recognitionSources": [
                  "model"
                ]
              }
            ]
          }
        }
      }
    }
    

Pulire le risorse

Al termine di questo argomento di avvio rapido, eliminare la cartella del progetto dal file system.

Passaggi successivi

Documentazione di riferimento | Esempio

Prerequisiti

Creare l’app Pizza

  1. Selezionare pizza-app-for-luis-v6.json per aprire la pagina di GitHub per il file pizza-app-for-luis.json.
  2. Toccare e tenere premuto a lungo o fare clic con il pulsante destro del mouse sul pulsante Raw e selezionare Salva collegamento come per salvare pizza-app-for-luis.json nel computer.
  3. Accedere al portale LUIS.
  4. Selezionare App personali.
  5. Nella pagina App personali, selezionare + Nuova app di conversazione.
  6. Selezionare Importa come JSON.
  7. Nella finestra di dialogo Importa nuova app selezionare il pulsante Scegli file.
  8. Selezionare il file pizza-app-for-luis.json scaricato e quindi selezionare Apri.
  9. Nel campo Nome della finestra di dialogo Importa nuova app immettere un nome per l'app Pizza, quindi selezionare il pulsante Fatto.

L'app verrà importata.

Se viene visualizzata una finestra di dialogo Come creare un'app LUIS efficace, chiudere la finestra di dialogo.

Eseguire il training dell’app Pizza e pubblicarla

Verrà visualizzata la pagina Finalità con un elenco delle finalità dell'app pizza.

  1. In alto a destra nel sito Web LUIS selezionare il pulsante Train (Esegui il training).

    Pulsante per l'esecuzione del training

  2. Il training è completo quando l'indicatore di stato sul pulsante Train (Esegui il training) diventa di colore verde.

Per ottenere una previsione di Language Understanding Intelligent Service (LUIS) in un chatbot o in un'altra applicazione client, è necessario pubblicare l'app nell'endpoint di previsione.

  1. Selezionare Pubblica nel riquadro di spostamento in alto a destra.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS nel menu in alto a destra

  2. Selezionare Slot di produzione e quindi Fatto.

    Screenshot del pulsante per la pubblicazione nell'endpoint LUIS

  3. Selezionare il collegamento Accedi agli URL degli endpoint nella notifica per passare alla pagina Risorse di Azure. Sarà possibile visualizzare gli URL solo se all'app è associata una risorsa di previsione. Per passare alla pagina Risorse di Azure, è anche possibile fare clic su Gestisci.

    Messaggio che informa che l'app è stata pubblicata

L'app Pizza è ora pronta per essere usata.

Registrare l'ID app, la chiave di previsione e l'endpoint di previsione dell'app Pizza

Per usare la nuova app Pizza, sono necessari l'ID app, la chiave di previsione e l'endpoint previsione dell'app Pizza.

Per trovare questi valori:

  1. Nella pagina Finalità, selezionare GESTISCi.
  2. Nella pagina Impostazioni applicazione, registrare l’ID app.
  3. Selezionare Risorse di Azure.
  4. Dalla pagina Risorse di Azure, registrare la chiave primaria. Questo valore è la chiave di previsione.
  5. Registrare l’URL dell'endpoint. Questo valore è l’endpoint di previsione.

Ottenere una finalità dall'endpoint di previsione

Usare Python per eseguire query sull'endpoint di previsione per ottenere un risultato della previsione.

  1. Copiare questo frammento di codice nel file denominato predict.py:

    ########### Python 3.6 #############
    
    #
    # This quickstart shows how to predict the intent of an utterance by using the LUIS 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-PREDICTION-KEY: Your LUIS prediction key, 32 character value.
        prediction_key = 'PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE'
    
        # YOUR-PREDICTION-ENDPOINT: Replace with your prediction endpoint.
        # For example, "https://westus.api.cognitive.microsoft.com/"
        prediction_endpoint = 'PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE'
    
        # The utterance you want to use.
        utterance = 'I want two large pepperoni pizzas on thin crust please'
        ##########
    
        # The headers to use in this REST call.
        headers = {
        }
    
        # The URL parameters to use in this REST call.
        params ={
            'query': utterance,
            'timezoneOffset': '0',
            'verbose': 'true',
            'show-all-intents': 'true',
            'spellCheck': 'false',
            'staging': 'false',
            'subscription-key': prediction_key
        }
    
    
        # Make the REST call.
        response = requests.get(f'{prediction_endpoint}luis/prediction/v3.0/apps/{appId}/slots/production/predict', headers=headers, params=params)
    
        # Display the results on the console.
        print(response.json())
    
    
    except Exception as e:
        # Display the error string.
        print(f'{e}')
    
  2. Sostituire i valori che iniziano con YOUR- con i propri valori.

    Informazioni Scopo
    YOUR-APP-ID L'ID app. Disponibile nel portale LUIS, pagina Impostazioni applicazione per l'app.
    YOUR-PREDICTION-KEY La chiave di previsione di 32 caratteri. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    YOUR-PREDICTION-ENDPOINT L'endpoint dell'URL di previsione. Disponibile nel portale LUIS, pagina delle risorse di Azure per l'app.
    Ad esempio: https://westus.api.cognitive.microsoft.com/.
  3. Installare la dipendenza requests. La libreria requests viene usata per creare richieste HTTP:

    pip install requests
    
  4. Eseguire lo script con questo comando della console:

    python predict.py
    
  5. Esaminare la risposta di previsione restituita in formato JSON:

    {'query': 'I want two large pepperoni pizzas on thin crust please', 'prediction': {'topIntent': 'ModifyOrder', 'intents': {'ModifyOrder': {'score': 1.0}, 'None': {'score': 8.55e-09}, 'Greetings': {'score': 1.82222226e-09}, 'CancelOrder': {'score': 1.47272727e-09}, 'Confirmation': {'score': 9.8125e-10}}, 'entities': {'Order': [{'FullPizzaWithModifiers': [{'PizzaType': ['pepperoni pizzas'], 'Size': [['Large']], 'Quantity': [2], 'Crust': [['Thin']], '$instance': {'PizzaType': [{'type': 'PizzaType', 'text': 'pepperoni pizzas', 'startIndex': 17, 'length': 16, 'score': 0.9978157, 'modelTypeId': 1, 'modelType': 'Entity Extractor', 'recognitionSources': ['model']}], 'Size': [{'type': 'SizeList', 'text': 'large', 'startIndex': 11, 'length': 5, 'score': 0.9984481, 'modelTypeId': 1, 'modelType': 'Entity Extractor', 'recognitionSources': ['model']}], 'Quantity': [{'type': 'builtin.number', 'text': 'two', 'startIndex': 7, 'length': 3, 'score': 0.999770939, 'modelTypeId': 1, 'modelType': 'Entity Extractor', 'recognitionSources': ['model']}], 'Crust': [{'type': 'CrustList', 'text': 'thin crust', 'startIndex': 37, 'length': 10, 'score': 0.933985531, 'modelTypeId': 1, 'modelType': 'Entity Extractor', 'recognitionSources': ['model']}]}}], '$instance': {'FullPizzaWithModifiers': [{'type': 'FullPizzaWithModifiers', 'text': 'two large pepperoni pizzas on thin crust', 'startIndex': 7, 'length': 40, 'score': 0.90681237, 'modelTypeId': 1, 'modelType': 'Entity Extractor', 'recognitionSources': ['model']}]}}], 'ToppingList': [['Pepperoni']], '$instance': {'Order': [{'type': 'Order', 'text': 'two large pepperoni pizzas on thin crust', 'startIndex': 7, 'length': 40, 'score': 0.9047088, 'modelTypeId': 1, 'modelType': 'Entity Extractor', 'recognitionSources': ['model']}], 'ToppingList': [{'type': 'ToppingList', 'text': 'pepperoni', 'startIndex': 17, 'length': 9, 'modelTypeId': 5, 'modelType': 'List Entity Extractor', 'recognitionSources': ['model']}]}}}}
    

    Risposta JSON formattata per migliorare la leggibilità:

    {
      'query': 'I want two large pepperoni pizzas on thin crust please',
      'prediction': {
        'topIntent': 'ModifyOrder',
        'intents': {
          'ModifyOrder': {
            'score': 1.0
          },
          'None': {
            'score': 8.55e-9
          },
          'Greetings': {
            'score': 1.82222226e-9
          },
          'CancelOrder': {
            'score': 1.47272727e-9
          },
          'Confirmation': {
            'score': 9.8125e-10
          }
        },
        'entities': {
          'Order': [
            {
              'FullPizzaWithModifiers': [
                {
                  'PizzaType': [
                    'pepperoni pizzas'
                  ],
                  'Size': [
                    [
                      'Large'
                    ]
                  ],
                  'Quantity': [
                    2
                  ],
                  'Crust': [
                    [
                      'Thin'
                    ]
                  ],
                  '$instance': {
                    'PizzaType': [
                      {
                        'type': 'PizzaType',
                        'text': 'pepperoni pizzas',
                        'startIndex': 17,
                        'length': 16,
                        'score': 0.9978157,
                        'modelTypeId': 1,
                        'modelType': 'Entity Extractor',
                        'recognitionSources': [
                          'model'
                        ]
                      }
                    ],
                    'Size': [
                      {
                        'type': 'SizeList',
                        'text': 'large',
                        'startIndex': 11,
                        'length': 5,
                        'score': 0.9984481,
                        'modelTypeId': 1,
                        'modelType': 'Entity Extractor',
                        'recognitionSources': [
                          'model'
                        ]
                      }
                    ],
                    'Quantity': [
                      {
                        'type': 'builtin.number',
                        'text': 'two',
                        'startIndex': 7,
                        'length': 3,
                        'score': 0.999770939,
                        'modelTypeId': 1,
                        'modelType': 'Entity Extractor',
                        'recognitionSources': [
                          'model'
                        ]
                      }
                    ],
                    'Crust': [
                      {
                        'type': 'CrustList',
                        'text': 'thin crust',
                        'startIndex': 37,
                        'length': 10,
                        'score': 0.933985531,
                        'modelTypeId': 1,
                        'modelType': 'Entity Extractor',
                        'recognitionSources': [
                          'model'
                        ]
                      }
                    ]
                  }
                }
              ],
              '$instance': {
                'FullPizzaWithModifiers': [
                  {
                    'type': 'FullPizzaWithModifiers',
                    'text': 'two large pepperoni pizzas on thin crust',
                    'startIndex': 7,
                    'length': 40,
                    'score': 0.90681237,
                    'modelTypeId': 1,
                    'modelType': 'Entity Extractor',
                    'recognitionSources': [
                      'model'
                    ]
                  }
                ]
              }
            }
          ],
          'ToppingList': [
            [
              'Pepperoni'
            ]
          ],
          '$instance': {
            'Order': [
              {
                'type': 'Order',
                'text': 'two large pepperoni pizzas on thin crust',
                'startIndex': 7,
                'length': 40,
                'score': 0.9047088,
                'modelTypeId': 1,
                'modelType': 'Entity Extractor',
                'recognitionSources': [
                  'model'
                ]
              }
            ],
            'ToppingList': [
              {
                'type': 'ToppingList',
                'text': 'pepperoni',
                'startIndex': 17,
                'length': 9,
                'modelTypeId': 5,
                'modelType': 'List Entity Extractor',
                'recognitionSources': [
                  'model'
                ]
              }
            ]
          }
        }
      }
    }
    

Pulire le risorse

Al termine di questo argomento di avvio rapido, eliminare il file dal file system.

Passaggi successivi