Obtención de una intención mediante las API REST

En este artículo, usará una aplicación de LUIS para determinar la intención de un usuario a partir de texto conversacional. Envíe la intención del usuario como texto al punto de conexión de predicción HTTP de la aplicación de Pizza. En el punto de conexión, LUIS aplica el modelo de la aplicación de Pizza para analizar el texto en lenguaje natural y lo que significa, y así determinar la intención general y extraer los datos que son pertinentes para el dominio del sujeto de la aplicación.

Para este artículo, necesita una cuenta gratuita de LUIS.

Documentación de referencia | Ejemplo

Requisitos previos

Creación de una aplicación de pizza

  1. Seleccione pizza-app-for-luis-v6.json para abrir la página de GitHub para el archivo pizza-app-for-luis.json.
  2. Pulse de forma prolongada o haga clic con el botón derecho en el botón Sin formato y seleccione Guardar vínculo como para guardar el archivo pizza-app-for-luis.json en el equipo.
  3. Inicie sesión en el portal de LUIS.
  4. Seleccione Mis aplicaciones.
  5. En la página Mis aplicaciones, seleccione + Nueva aplicación para la conversación.
  6. Seleccione Importar como JSON.
  7. En el cuadro de diálogo Importar nueva aplicación, seleccione el botón Elegir archivo.
  8. Seleccione el archivo de pizza-app-for-luis.json que descargó y, a continuación, seleccione Abrir.
  9. En el cuadro de diálogo Importar nueva aplicación en el campo Nombre, escriba un nombre para la aplicación de pizza y, a continuación, seleccione el botón Listo.

Se importará la aplicación.

Si ve el cuadro de diálogo Cómo crear una aplicación eficaz de LUIS, ciérrelo.

Entrene y publique la aplicación de pizza

Debería consultar la página Intenciones con una lista de las intenciones de la aplicación de pizza.

  1. En la parte superior derecha del sitio web de LUIS, seleccione el botón Entrenar.

    Botón Train (Entrenar)

  2. El entrenamiento se completa cuando el indicador de estado del botón Entrenar es verde.

Para recibir una predicción de LUIS en un bot de chat u otra aplicación cliente, tiene que publicar la aplicación en el punto de conexión de predicción.

  1. Seleccione Publish (Publicar) en el panel de navegación superior derecho.

    Captura de pantalla del botón de publicación en el punto de conexión de LUIS del menú superior derecho

  2. Seleccione el espacio de producción y, después, Done (Listo).

    Captura de pantalla de la publicación de LUIS en el punto de conexión

  3. Seleccione Obtener acceso a la URL del punto de conexión en la notificación para ir a la página Recursos de Azure. Solo podrá ver las direcciones URL si tiene un recurso de predicción asociado a la aplicación. La página Recursos de Azure también aparece al hacer clic en Administrar.

    Un mensaje que indica que la aplicación se ha publicado

La aplicación de pizza ya está lista para usarse.

Registre el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza

Para usar la nueva aplicación de pizza, necesitará el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza.

Para establecer estos valores:

  1. En la página Intenciones, seleccione ADMINISTRAR.
  2. En la página Configuración de la aplicación, registre el Id. de aplicación.
  3. Seleccione Recursos de Azure.
  4. En la página Recursos de Azure, registre la Clave principal. Este valor es su clave de predicción.
  5. Registre la Dirección URL del punto de conexión. Este valor es su punto de conexión de predicción.

Obtención de la intención mediante programación

Use C# (.NET Core) para consultar el punto de conexión de predicción y obtener un resultado de predicción.

  1. Cree una aplicación de consola con C# como lenguaje de destino, con csharp-predict-with-rest como nombre del proyecto y de la carpeta.

    dotnet new console -lang C# -n csharp-predict-with-rest
    
  2. Cambie al directorio csharp-predict-with-rest que ha creado e instale las dependencias necesarias con este comando:

    cd csharp-predict-with-rest
    dotnet add package System.Net.Http
    
  3. Abra Program.cs en el IDE o editor que prefiera. A continuación, sobrescriba Program.cs con el código siguiente:

    //
    // 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 = "PASTE_YOUR_LUIS_APP_ID_HERE";
    
                // YOUR-PREDICTION-KEY: 32 character key.
                var predictionKey = "PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE";
    
                // YOUR-PREDICTION-ENDPOINT: Example is "https://westus.api.cognitive.microsoft.com/"
                var predictionEndpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
    
                // 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. Reemplace los valores a partir de YOUR- por sus propios valores.

    Información Propósito
    YOUR-APP-ID El identificador de la aplicación. Se encuentra en el portal de LUIS, en la página Configuración de la aplicación de la aplicación.
    YOUR-PREDICTION-KEY La clave de predicción de 32 caracteres. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    YOUR-PREDICTION-ENDPOINT El punto de conexión de la dirección URL de predicción. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    Por ejemplo, https://westus.api.cognitive.microsoft.com/.
  5. Compile la aplicación de la consola con este comando:

    dotnet build
    
  6. Ejecución de la aplicación de consola. La salida de la consola muestra el mismo código JSON que vio anteriormente en la ventana del explorador.

    dotnet run
    
  7. Revise la respuesta de la predicción, que se devuelve como 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"]}]}}}}
    

    Respuesta JSON con formato para mejorar la legibilidad:

    {
      "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"
                ]
              }
            ]
          }
        }
      }
    }
    

Limpieza de recursos

Cuando haya terminado con este inicio rápido, elimine la carpeta del proyecto del sistema de archivos.

Pasos siguientes

Documentación de referencia | Ejemplo

Requisitos previos

Creación de una aplicación de pizza

  1. Seleccione pizza-app-for-luis-v6.json para abrir la página de GitHub para el archivo pizza-app-for-luis.json.
  2. Pulse de forma prolongada o haga clic con el botón derecho en el botón Sin formato y seleccione Guardar vínculo como para guardar el archivo pizza-app-for-luis.json en el equipo.
  3. Inicie sesión en el portal de LUIS.
  4. Seleccione Mis aplicaciones.
  5. En la página Mis aplicaciones, seleccione + Nueva aplicación para la conversación.
  6. Seleccione Importar como JSON.
  7. En el cuadro de diálogo Importar nueva aplicación, seleccione el botón Elegir archivo.
  8. Seleccione el archivo de pizza-app-for-luis.json que descargó y, a continuación, seleccione Abrir.
  9. En el cuadro de diálogo Importar nueva aplicación en el campo Nombre, escriba un nombre para la aplicación de pizza y, a continuación, seleccione el botón Listo.

Se importará la aplicación.

Si ve el cuadro de diálogo Cómo crear una aplicación eficaz de LUIS, ciérrelo.

Entrene y publique la aplicación de pizza

Debería consultar la página Intenciones con una lista de las intenciones de la aplicación de pizza.

  1. En la parte superior derecha del sitio web de LUIS, seleccione el botón Entrenar.

    Botón Train (Entrenar)

  2. El entrenamiento se completa cuando el indicador de estado del botón Entrenar es verde.

Para recibir una predicción de LUIS en un bot de chat u otra aplicación cliente, tiene que publicar la aplicación en el punto de conexión de predicción.

  1. Seleccione Publish (Publicar) en el panel de navegación superior derecho.

    Captura de pantalla del botón de publicación en el punto de conexión de LUIS del menú superior derecho

  2. Seleccione el espacio de producción y, después, Done (Listo).

    Captura de pantalla de la publicación de LUIS en el punto de conexión

  3. Seleccione Obtener acceso a la URL del punto de conexión en la notificación para ir a la página Recursos de Azure. Solo podrá ver las direcciones URL si tiene un recurso de predicción asociado a la aplicación. La página Recursos de Azure también aparece al hacer clic en Administrar.

    Un mensaje que indica que la aplicación se ha publicado

La aplicación de pizza ya está lista para usarse.

Registre el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza

Para usar la nueva aplicación de pizza, necesitará el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza.

Para establecer estos valores:

  1. En la página Intenciones, seleccione ADMINISTRAR.
  2. En la página Configuración de la aplicación, registre el Id. de aplicación.
  3. Seleccione Recursos de Azure.
  4. En la página Recursos de Azure, registre la Clave principal. Este valor es su clave de predicción.
  5. Registre la Dirección URL del punto de conexión. Este valor es su punto de conexión de predicción.

Obtención de la intención mediante programación

Use Go para consultar el punto de conexión de predicción y obtener un resultado de predicción.

  1. Cree un nuevo archivo llamado predict.go. Agregue el siguiente código:

    //
    // 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 = "PASTE_YOUR_LUIS_APP_ID_HERE"
    
        // YOUR-PREDICTION-KEY: Your LUIS authoring key, 32 character value.
        var predictionKey = "PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE"
    
        // YOUR-PREDICTION-ENDPOINT: Replace with your authoring key endpoint.
        // For example, "https://westus.api.cognitive.microsoft.com/"
        var predictionEndpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE"
    
        // 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. Reemplace los valores a partir de YOUR- por sus propios valores.

    Información Propósito
    YOUR-APP-ID El identificador de la aplicación. Se encuentra en el portal de LUIS, en la página Configuración de la aplicación de la aplicación.
    YOUR-PREDICTION-KEY La clave de predicción de 32 caracteres. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    YOUR-PREDICTION-ENDPOINT El punto de conexión de la dirección URL de predicción. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    Por ejemplo, https://westus.api.cognitive.microsoft.com/.
  3. Con un símbolo del sistema en el mismo directorio que donde creó el archivo, escriba el siguiente comando para compilar el archivo de Go:

    go build predict.go
    
  4. En el símbolo del sistema, escriba el siguiente texto para ejecutar la aplicación de Go desde la línea de comandos:

    go run predict.go
    
  5. Revise la respuesta de la predicción, que se devuelve como 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"]}]}}}}
    

    Respuesta JSON con formato para mejorar la legibilidad:

    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"
                ]
              }
            ]
          }
        }
      }
    }
    

Limpieza de recursos

Cuando haya terminado con este inicio rápido, elimine el archivo del sistema de archivos.

Pasos siguientes

Documentación de referencia | Ejemplo

Requisitos previos

Creación de una aplicación de pizza

  1. Seleccione pizza-app-for-luis-v6.json para abrir la página de GitHub para el archivo pizza-app-for-luis.json.
  2. Pulse de forma prolongada o haga clic con el botón derecho en el botón Sin formato y seleccione Guardar vínculo como para guardar el archivo pizza-app-for-luis.json en el equipo.
  3. Inicie sesión en el portal de LUIS.
  4. Seleccione Mis aplicaciones.
  5. En la página Mis aplicaciones, seleccione + Nueva aplicación para la conversación.
  6. Seleccione Importar como JSON.
  7. En el cuadro de diálogo Importar nueva aplicación, seleccione el botón Elegir archivo.
  8. Seleccione el archivo de pizza-app-for-luis.json que descargó y, a continuación, seleccione Abrir.
  9. En el cuadro de diálogo Importar nueva aplicación en el campo Nombre, escriba un nombre para la aplicación de pizza y, a continuación, seleccione el botón Listo.

Se importará la aplicación.

Si ve el cuadro de diálogo Cómo crear una aplicación eficaz de LUIS, ciérrelo.

Entrene y publique la aplicación de pizza

Debería consultar la página Intenciones con una lista de las intenciones de la aplicación de pizza.

  1. En la parte superior derecha del sitio web de LUIS, seleccione el botón Entrenar.

    Botón Train (Entrenar)

  2. El entrenamiento se completa cuando el indicador de estado del botón Entrenar es verde.

Para recibir una predicción de LUIS en un bot de chat u otra aplicación cliente, tiene que publicar la aplicación en el punto de conexión de predicción.

  1. Seleccione Publish (Publicar) en el panel de navegación superior derecho.

    Captura de pantalla del botón de publicación en el punto de conexión de LUIS del menú superior derecho

  2. Seleccione el espacio de producción y, después, Done (Listo).

    Captura de pantalla de la publicación de LUIS en el punto de conexión

  3. Seleccione Obtener acceso a la URL del punto de conexión en la notificación para ir a la página Recursos de Azure. Solo podrá ver las direcciones URL si tiene un recurso de predicción asociado a la aplicación. La página Recursos de Azure también aparece al hacer clic en Administrar.

    Un mensaje que indica que la aplicación se ha publicado

La aplicación de pizza ya está lista para usarse.

Registre el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza

Para usar la nueva aplicación de pizza, necesitará el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza.

Para establecer estos valores:

  1. En la página Intenciones, seleccione ADMINISTRAR.
  2. En la página Configuración de la aplicación, registre el Id. de aplicación.
  3. Seleccione Recursos de Azure.
  4. En la página Recursos de Azure, registre la Clave principal. Este valor es su clave de predicción.
  5. Registre la Dirección URL del punto de conexión. Este valor es su punto de conexión de predicción.

Obtención de la intención mediante programación

Use Java para consultar el punto de conexión de predicción y obtener un resultado de predicción.

  1. Cree una nueva carpeta para contener el proyecto de Java, como java-predict-with-rest.

  2. Cree un subdirectorio llamado lib y copie las siguientes bibliotecas de Java en el subdirectorio lib:

  3. Copie el código siguiente para crear una clase en un archivo llamado 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 = "PASTE_YOUR_LUIS_APP_ID_HERE";
    
                // YOUR-PREDICTION-KEY: Your LUIS authoring key, 32 character value.
                String Key = "PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE";
    
                // YOUR-PREDICTION-ENDPOINT: Replace this with your authoring key endpoint.
                // For example, "https://westus.api.cognitive.microsoft.com/"
                String Endpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
    
                // 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. Reemplace los valores a partir de YOUR- por sus propios valores.

    Information Propósito
    YOUR-APP-ID El identificador de la aplicación. Se encuentra en el portal de LUIS, en la página Configuración de la aplicación de la aplicación.
    YOUR-PREDICTION-KEY La clave de predicción de 32 caracteres. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    YOUR-PREDICTION-ENDPOINT El punto de conexión de la dirección URL de predicción. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    Por ejemplo, https://westus.api.cognitive.microsoft.com/.
  5. Compile el programa de Java desde la línea de comandos.

    • Si usa Windows, use este comando: javac -cp ";lib/*" Predict.java
    • Si usa macOS o Linux, use este comando: javac -cp ":lib/*" Predict.java
  6. Ejecute el programa de Java desde la línea de comandos:

    • Si usa Windows, use este comando: java -cp ";lib/*" Predict
    • Si usa macOS o Linux, use este comando: java -cp ":lib/*" Predict
  7. Revise la respuesta de la predicción, que se devuelve como 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"]}]}}}}
    

    Respuesta JSON con formato para mejorar la legibilidad:

    {
      "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"
                ]
              }
            ]
          }
        }
      }
    }
    

Limpieza de recursos

Cuando haya terminado con este inicio rápido, elimine la carpeta del proyecto del sistema de archivos.

Pasos siguientes

Documentación de referencia | Ejemplo

Requisitos previos

Creación de una aplicación de pizza

  1. Seleccione pizza-app-for-luis-v6.json para abrir la página de GitHub para el archivo pizza-app-for-luis.json.
  2. Pulse de forma prolongada o haga clic con el botón derecho en el botón Sin formato y seleccione Guardar vínculo como para guardar el archivo pizza-app-for-luis.json en el equipo.
  3. Inicie sesión en el portal de LUIS.
  4. Seleccione Mis aplicaciones.
  5. En la página Mis aplicaciones, seleccione + Nueva aplicación para la conversación.
  6. Seleccione Importar como JSON.
  7. En el cuadro de diálogo Importar nueva aplicación, seleccione el botón Elegir archivo.
  8. Seleccione el archivo de pizza-app-for-luis.json que descargó y, a continuación, seleccione Abrir.
  9. En el cuadro de diálogo Importar nueva aplicación en el campo Nombre, escriba un nombre para la aplicación de pizza y, a continuación, seleccione el botón Listo.

Se importará la aplicación.

Si ve el cuadro de diálogo Cómo crear una aplicación eficaz de LUIS, ciérrelo.

Entrene y publique la aplicación de pizza

Debería consultar la página Intenciones con una lista de las intenciones de la aplicación de pizza.

  1. En la parte superior derecha del sitio web de LUIS, seleccione el botón Entrenar.

    Botón Train (Entrenar)

  2. El entrenamiento se completa cuando el indicador de estado del botón Entrenar es verde.

Para recibir una predicción de LUIS en un bot de chat u otra aplicación cliente, tiene que publicar la aplicación en el punto de conexión de predicción.

  1. Seleccione Publish (Publicar) en el panel de navegación superior derecho.

    Captura de pantalla del botón de publicación en el punto de conexión de LUIS del menú superior derecho

  2. Seleccione el espacio de producción y, después, Done (Listo).

    Captura de pantalla de la publicación de LUIS en el punto de conexión

  3. Seleccione Obtener acceso a la URL del punto de conexión en la notificación para ir a la página Recursos de Azure. Solo podrá ver las direcciones URL si tiene un recurso de predicción asociado a la aplicación. La página Recursos de Azure también aparece al hacer clic en Administrar.

    Un mensaje que indica que la aplicación se ha publicado

La aplicación de pizza ya está lista para usarse.

Registre el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza

Para usar la nueva aplicación de pizza, necesitará el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza.

Para establecer estos valores:

  1. En la página Intenciones, seleccione ADMINISTRAR.
  2. En la página Configuración de la aplicación, registre el Id. de aplicación.
  3. Seleccione Recursos de Azure.
  4. En la página Recursos de Azure, registre la Clave principal. Este valor es su clave de predicción.
  5. Registre la Dirección URL del punto de conexión. Este valor es su punto de conexión de predicción.

Creación del proyecto Node.js

  1. Cree una nueva carpeta para almacenar el proyecto de Node. js, como node-predict-with-rest.

  2. Abra un nuevo símbolo del sistema, vaya a la carpeta que ha creado y ejecute el siguiente comando:

    npm init
    

    Presione Entrar en cada aviso para aceptar los valores predeterminados.

  3. Instale todas las dependencias escribiendo los siguientes comandos:

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

Obtención de la intención mediante programación

Use Node.js para consultar el punto de conexión de predicción y obtener un resultado de predicción.

  1. Copie el siguiente fragmento de código en un archivo llamado 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 = "PASTE_YOUR_LUIS_APP_ID_HERE";
    
        // YOUR-PREDICTION-KEY: Your LUIS authoring key, 32 character value.
        const LUIS_predictionKey = "PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE";
    
        // YOUR-PREDICTION-ENDPOINT: Replace this with your authoring key endpoint.
        // For example, "https://westus.api.cognitive.microsoft.com/"
        const LUIS_endpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
    
        // 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. Reemplace los valores a partir de YOUR- por sus propios valores.

    Información Propósito
    YOUR-APP-ID El identificador de la aplicación. Se encuentra en el portal de LUIS, en la página Configuración de la aplicación de la aplicación.
    YOUR-PREDICTION-KEY La clave de predicción de 32 caracteres. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    YOUR-PREDICTION-ENDPOINT El punto de conexión de la dirección URL de predicción. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    Por ejemplo, https://westus.api.cognitive.microsoft.com/.
  3. Revise la respuesta de la predicción, que se devuelve como 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"
                ]
              }
            ]
          }
        }
      }
    }
    

Limpieza de recursos

Cuando haya terminado con este inicio rápido, elimine la carpeta del proyecto del sistema de archivos.

Pasos siguientes

Documentación de referencia | Ejemplo

Requisitos previos

Creación de una aplicación de pizza

  1. Seleccione pizza-app-for-luis-v6.json para abrir la página de GitHub para el archivo pizza-app-for-luis.json.
  2. Pulse de forma prolongada o haga clic con el botón derecho en el botón Sin formato y seleccione Guardar vínculo como para guardar el archivo pizza-app-for-luis.json en el equipo.
  3. Inicie sesión en el portal de LUIS.
  4. Seleccione Mis aplicaciones.
  5. En la página Mis aplicaciones, seleccione + Nueva aplicación para la conversación.
  6. Seleccione Importar como JSON.
  7. En el cuadro de diálogo Importar nueva aplicación, seleccione el botón Elegir archivo.
  8. Seleccione el archivo de pizza-app-for-luis.json que descargó y, a continuación, seleccione Abrir.
  9. En el cuadro de diálogo Importar nueva aplicación en el campo Nombre, escriba un nombre para la aplicación de pizza y, a continuación, seleccione el botón Listo.

Se importará la aplicación.

Si ve el cuadro de diálogo Cómo crear una aplicación eficaz de LUIS, ciérrelo.

Entrene y publique la aplicación de pizza

Debería consultar la página Intenciones con una lista de las intenciones de la aplicación de pizza.

  1. En la parte superior derecha del sitio web de LUIS, seleccione el botón Entrenar.

    Botón Train (Entrenar)

  2. El entrenamiento se completa cuando el indicador de estado del botón Entrenar es verde.

Para recibir una predicción de LUIS en un bot de chat u otra aplicación cliente, tiene que publicar la aplicación en el punto de conexión de predicción.

  1. Seleccione Publish (Publicar) en el panel de navegación superior derecho.

    Captura de pantalla del botón de publicación en el punto de conexión de LUIS del menú superior derecho

  2. Seleccione el espacio de producción y, después, Done (Listo).

    Captura de pantalla de la publicación de LUIS en el punto de conexión

  3. Seleccione Obtener acceso a la URL del punto de conexión en la notificación para ir a la página Recursos de Azure. Solo podrá ver las direcciones URL si tiene un recurso de predicción asociado a la aplicación. La página Recursos de Azure también aparece al hacer clic en Administrar.

    Un mensaje que indica que la aplicación se ha publicado

La aplicación de pizza ya está lista para usarse.

Registre el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza

Para usar la nueva aplicación de pizza, necesitará el identificador de la aplicación, la clave de predicción y el punto de conexión de predicción de la aplicación de pizza.

Para establecer estos valores:

  1. En la página Intenciones, seleccione ADMINISTRAR.
  2. En la página Configuración de la aplicación, registre el Id. de aplicación.
  3. Seleccione Recursos de Azure.
  4. En la página Recursos de Azure, registre la Clave principal. Este valor es su clave de predicción.
  5. Registre la Dirección URL del punto de conexión. Este valor es su punto de conexión de predicción.

Obtención de la intención desde el punto de conexión de predicción

Use Python para consultar el punto de conexión de predicción y obtener un resultado de predicción.

  1. Copie este fragmento de código en un archivo llamado 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. Reemplace los valores a partir de YOUR- por sus propios valores.

    Información Propósito
    YOUR-APP-ID El identificador de la aplicación. Se encuentra en el portal de LUIS, en la página Configuración de la aplicación de la aplicación.
    YOUR-PREDICTION-KEY La clave de predicción de 32 caracteres. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    YOUR-PREDICTION-ENDPOINT El punto de conexión de la dirección URL de predicción. Se encuentra en el portal de LUIS, en la página Recursos de Azure de la aplicación.
    Por ejemplo, https://westus.api.cognitive.microsoft.com/.
  3. Instale la dependencia requests. La biblioteca requests se utiliza para realizar solicitudes HTTP:

    pip install requests
    
  4. Ejecute el script con este comando de la consola:

    python predict.py
    
  5. Revise la respuesta de la predicción, que se devuelve como 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']}]}}}}
    

    Respuesta JSON con formato para mejorar la legibilidad:

    {
      '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'
                ]
              }
            ]
          }
        }
      }
    }
    

Limpieza de recursos

Cuando haya terminado con este inicio rápido, elimine el archivo del sistema de archivos.

Pasos siguientes