Så här uppdaterar du LUIS-modellen med REST-API:er
Viktigt!
LUIS dras tillbaka den 1 oktober 2025 och från och med den 1 april 2023 kommer du inte att kunna skapa nya LUIS-resurser. Vi rekommenderar att du migrerar dina LUIS-program till förståelse för konversationsspråk för att dra nytta av fortsatt produktsupport och flerspråkiga funktioner.
I den här artikeln lägger du till exempelyttranden i en Pizza-app och tränar appen. Exempelyttranden är konversationstext från användare som mappas till en avsikt. Genom att tillhandahålla exempelyttranden för avsikter lär du LUIS vilka typer av text från användare som tillhör vilken avsikt.
Exempel på referensdokumentation |
Förutsättningar
JSON-fil med exempelyttranden
Exempelyttrandena följer ett visst format.
Fältet text
innehåller texten för exempelyttrandet. Fältet intentName
måste motsvara namnet på en befintlig avsikt i LUIS-appen. Fältet entityLabels
är obligatoriskt. Om du inte vill märka ut några entiteter kan du ange en tom matris.
Om matrisen entityLabels inte är tom måste startCharIndex
och endCharIndex
märka ut den entitet som anges i fältet entityName
. Indexet är nollbaserat. Om du börjar eller avslutar etiketten vid ett blanksteg i texten misslyckas API-anropet för att lägga till yttrandena.
[
{
"text": "order a pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 12
}
]
},
{
"text": "order a large pepperoni pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "PizzaType",
"startCharIndex": 14,
"endCharIndex": 28
},
{
"entityName": "Size",
"startCharIndex": 8,
"endCharIndex": 12
}
]
},
{
"text": "I want two large pepperoni pizzas on thin crust",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "PizzaType",
"startCharIndex": 17,
"endCharIndex": 32
},
{
"entityName": "Size",
"startCharIndex": 11,
"endCharIndex": 15
},
{
"entityName": "Quantity",
"startCharIndex": 7,
"endCharIndex": 9
},
{
"entityName": "Crust",
"startCharIndex": 37,
"endCharIndex": 46
}
]
}
]
Skapa pizzaapp
Skapa pizzaappen.
- Välj pizza-app-for-luis-v6.json för att visa GitHub-sidan för
pizza-app-for-luis.json
filen. - Högerklicka eller tryck länge på raw-knappen och välj Spara länk för att spara på
pizza-app-for-luis.json
datorn. - Logga in på LUIS-portalen.
- Välj Mina appar.
- På sidan Mina appar väljer du + Ny app för konversation.
- Välj Importera som JSON.
- I dialogrutan Importera ny app väljer du knappen Välj fil.
- Välj den
pizza-app-for-luis.json
fil som du laddade ned och välj sedan Öppna. - I dialogrutan Importera nytt appnamn anger du ett namn för din Pizza-app och väljer sedan knappen Klar.
Appen importeras.
Om du ser en dialogruta Så här skapar du en effektiv LUIS-app stänger du dialogrutan.
Träna och publicera Pizza-appen
Du bör se sidan Avsikter med en lista över avsikter i Pizza-appen.
Välj knappen Träna längst upp till höger på LUIS-webbplatsen.
Träningen är klar när knappen Träna är inaktiverad.
För att få en LUIS-förutsägelse i en chattrobot eller andra klientprogram måste du publicera appen till förutsägelseslutpunkten.
Välj Publicera i det övre högra navigeringsfältet.
Välj produktionsplatsen och välj sedan Klar.
Välj Åtkomst till slutpunkts-URL:er i meddelandet för att gå till sidan Azure-resurser . Du kan bara se URL:erna om du har en förutsägelseresurs som är associerad med appen. Du hittar även sidan Azure-resurser genom att klicka på Hantera.
Lägga till en redigeringsresurs i Pizza-appen
- Välj HANTERA.
- Välj Azure-resurser.
- Välj Redigeringsresurs.
- Välj Ändra redigeringsresurs.
Om du har en redigeringsresurs anger du klientorganisationens namn, prenumerationsnamn och LUIS-resursnamnet för redigeringsresursen.
Om du inte har någon redigeringsresurs:
- Välj Skapa ny resurs.
- Ange ett klientnamn, resursnamn, prenumerationsnamn och Azure-resursgruppnamn.
Din Pizza-app är nu redo att användas.
Registrera åtkomstvärdena för din Pizza-app
Om du vill använda din nya Pizza-app behöver du app-ID, redigeringsnyckel och redigeringsslutpunkt för din Pizza-app. För att få förutsägelser behöver du din separata förutsägelseslutpunkt och förutsägelsenyckel.
Så här hittar du följande värden:
- På sidan Avsikter väljer du HANTERA.
- På sidan Programinställningar registrerar du app-ID :t.
- Välj Azure-resurser.
- Välj Redigeringsresurs.
- På flikarna Redigeringsresurs och Förutsägelseresurser registrerar du primärnyckeln. Det här värdet är din redigeringsnyckel.
- Registrera slutpunkts-URL :en. Det här värdet är din redigeringsslutpunkt.
Ändra modell programmatiskt
Skapa ett nytt konsolprogram som riktar sig till C#-språket med projekt- och mappnamnet
csharp-model-with-rest
.dotnet new console -lang C# -n csharp-model-with-rest
Ändra till katalogen
csharp-model-with-rest
du skapade och installera nödvändiga beroenden med följande kommandon:cd csharp-model-with-rest dotnet add package System.Net.Http dotnet add package JsonFormatterPlus
Skriv över Program.cs med följande kod:
// // This quickstart shows how to add utterances to a LUIS model using the REST APIs. // using System; using System.IO; using System.Net.Http; using System.Text; using System.Threading.Tasks; using System.Collections.Generic; using System.Linq; // 3rd party NuGet packages using JsonFormatterPlus; namespace AddUtterances { class Program { ////////// // Values to modify. // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page. static string appID = "PASTE_YOUR_LUIS_APP_ID_HERE"; // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value. static string authoringKey = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"; // YOUR-AUTHORING-ENDPOINT: Replace this endpoint with your authoring key endpoint. // For example, "https://your-resource-name.cognitiveservices.azure.com/" static string authoringEndpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; // NOTE: Replace this your version number. static string appVersion = "0.1"; ////////// static string host = String.Format("{0}luis/authoring/v3.0-preview/apps/{1}/versions/{2}/", authoringEndpoint, appID, appVersion); // GET request with authentication async static Task<HttpResponseMessage> SendGet(string uri) { using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Get; request.RequestUri = new Uri(uri); request.Headers.Add("Ocp-Apim-Subscription-Key", authoringKey); return await client.SendAsync(request); } } // POST request with authentication async static Task<HttpResponseMessage> SendPost(string uri, string requestBody) { using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Post; request.RequestUri = new Uri(uri); if (!String.IsNullOrEmpty(requestBody)) { request.Content = new StringContent(requestBody, Encoding.UTF8, "text/json"); } request.Headers.Add("Ocp-Apim-Subscription-Key", authoringKey); return await client.SendAsync(request); } } // Add utterances as string with POST request async static Task AddUtterances(string utterances) { string uri = host + "examples"; var response = await SendPost(uri, utterances); var result = await response.Content.ReadAsStringAsync(); Console.WriteLine("Added utterances."); Console.WriteLine(JsonFormatter.Format(result)); } // Train app after adding utterances async static Task Train() { string uri = host + "train"; var response = await SendPost(uri, null); var result = await response.Content.ReadAsStringAsync(); Console.WriteLine("Sent training request."); Console.WriteLine(JsonFormatter.Format(result)); } // Check status of training async static Task Status() { var response = await SendGet(host + "train"); var result = await response.Content.ReadAsStringAsync(); Console.WriteLine("Requested training status."); Console.WriteLine(JsonFormatter.Format(result)); } // Add utterances, train, check status static void Main(string[] args) { string utterances = @" [ { 'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12 } ] }, { 'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28 }, { 'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12 } ] }, { 'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32 }, { 'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15 }, { 'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9 }, { 'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46 } ] } ] "; AddUtterances(utterances).Wait(); Train().Wait(); Status().Wait(); } } }
Ersätt värdena som börjar med
YOUR-
dina egna värden.Information Syfte YOUR-APP-ID
Ditt LUIS-app-ID. YOUR-AUTHORING-KEY
Redigeringsnyckeln på 32 tecken. YOUR-AUTHORING-ENDPOINT
Url-slutpunkten för redigering. Exempel: https://replace-with-your-resource-name.api.cognitive.microsoft.com/
Du anger resursnamnet när du skapade resursen.Tilldelade nycklar och resurser visas i LUIS-portalen i avsnittet Hantera på sidan Azure-resurser . App-ID:t är tillgängligt i samma avsnitt Hantera på sidan Programinställningar .
Viktigt!
Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.
Skapa konsolprogrammet.
dotnet build
Kör konsolprogrammet.
dotnet run
Granska redigeringssvaret:
Added utterances. [ { "value": { "ExampleId": 1137150691, "UtteranceText": "order a pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150692, "UtteranceText": "order a large pepperoni pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150693, "UtteranceText": "i want two large pepperoni pizzas on thin crust" }, "hasError": false } ] Sent training request. { "statusId": 9, "status": "Queued" } Requested training status. [ { "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } } ]
Rensa resurser
När du är klar med den här snabbstarten tar du bort projektmappen från filsystemet.
Nästa steg
Exempel på referensdokumentation |
Förutsättningar
- JDK SE (Java Development Kit, Standard Edition)
- Visual Studio Code eller din favorit-IDE
JSON-fil med exempelyttranden
Exempelyttrandena följer ett visst format.
Fältet text
innehåller texten för exempelyttrandet. Fältet intentName
måste motsvara namnet på en befintlig avsikt i LUIS-appen. Fältet entityLabels
är obligatoriskt. Om du inte vill märka ut några entiteter kan du ange en tom matris.
Om matrisen entityLabels inte är tom måste startCharIndex
och endCharIndex
märka ut den entitet som anges i fältet entityName
. Indexet är nollbaserat. Om du börjar eller avslutar etiketten vid ett blanksteg i texten misslyckas API-anropet för att lägga till yttrandena.
[
{
"text": "order a pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 12
}
]
},
{
"text": "order a large pepperoni pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "PizzaType",
"startCharIndex": 14,
"endCharIndex": 28
},
{
"entityName": "Size",
"startCharIndex": 8,
"endCharIndex": 12
}
]
},
{
"text": "I want two large pepperoni pizzas on thin crust",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "PizzaType",
"startCharIndex": 17,
"endCharIndex": 32
},
{
"entityName": "Size",
"startCharIndex": 11,
"endCharIndex": 15
},
{
"entityName": "Quantity",
"startCharIndex": 7,
"endCharIndex": 9
},
{
"entityName": "Crust",
"startCharIndex": 37,
"endCharIndex": 46
}
]
}
]
Ändra modell programmatiskt
Skapa en ny mapp som ska innehålla Java-projektet, till exempel
java-model-with-rest
.Skapa en underkatalog med namnet
lib
och kopiera i följande Java-libs till underkatalogenlib
:Skapa en ny fil med namnet
Model.java
. Lägg till följande kod:// // This quickstart shows how to add utterances to a LUIS model using the REST APIs. // import java.io.*; import java.net.URI; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; // To compile, execute this command at the console: // Windows: javac -cp ";lib/*" Model.java // macOs: javac -cp ":lib/*" Model.java // Linux: javac -cp ":lib/*" Model.java // To run, execute this command at the console: // Windows: java -cp ";lib/*" Model // macOs: java -cp ":lib/*" Model // Linux: java -cp ":lib/*" Model public class Model { public static void main(String[] args) { try { ////////// // Values to modify. // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page. String AppId = "PASTE_YOUR_LUIS_APP_ID_HERE"; // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value. String Key = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"; // YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint. // For example, "https://your-resource-name.cognitiveservices.azure.com/" String Endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; // NOTE: Replace this your version number. The Pizza app uses a version number of "0.1". String Version = "0.1"; ////////// // The list of utterances to add, in JSON format. String Utterances = "[{'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12}]}, {'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28}, {'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12}]}, {'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32}, {'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15}, {'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9}, {'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46}]}]"; // Create the URLs for uploading example utterances and for training. URIBuilder addUtteranceURL = new URIBuilder(Endpoint + "luis/authoring/v3.0-preview/apps/" + AppId + "/versions/" + Version + "/examples"); URIBuilder trainURL = new URIBuilder(Endpoint + "luis/authoring/v3.0-preview/apps/" + AppId + "/versions/" + Version + "/train"); URI addUtterancesURI = addUtteranceURL.build(); URI trainURI = trainURL.build(); // Add the utterances. // Create the request. HttpClient addUtterancesClient = HttpClients.createDefault(); HttpPost addUtterancesRequest = new HttpPost(addUtterancesURI); // Add the headers. addUtterancesRequest.setHeader("Ocp-Apim-Subscription-Key",Key); addUtterancesRequest.setHeader("Content-type","application/json"); // Add the body. StringEntity stringEntity = new StringEntity(Utterances); addUtterancesRequest.setEntity(stringEntity); // Execute the request and obtain the response. HttpResponse addUtterancesResponse = addUtterancesClient.execute(addUtterancesRequest); HttpEntity addUtterancesEntity = addUtterancesResponse.getEntity(); // Print the response on the console. if (addUtterancesEntity != null) { System.out.println(EntityUtils.toString(addUtterancesEntity)); } // Train the model. // Create the request. HttpClient trainClient = HttpClients.createDefault(); HttpPost trainRequest = new HttpPost(trainURI); // Add the headers. trainRequest.setHeader("Ocp-Apim-Subscription-Key",Key); trainRequest.setHeader("Content-type","application/json"); // Execute the request and obtain the response. HttpResponse trainResponse = trainClient.execute(trainRequest); HttpEntity trainEntity = trainResponse.getEntity(); // Print the response on the console. if (trainEntity != null) { System.out.println(EntityUtils.toString(trainEntity)); } // Get the training status. // Create the request. HttpClient trainStatusClient = HttpClients.createDefault(); HttpGet trainStatusRequest = new HttpGet(trainURI); // Add the headers. trainStatusRequest.setHeader("Ocp-Apim-Subscription-Key",Key); trainStatusRequest.setHeader("Content-type","application/json"); // Execute the request and obtain the response. HttpResponse trainStatusResponse = trainStatusClient.execute(trainStatusRequest); HttpEntity trainStatusEntity = trainStatusResponse.getEntity(); // Print the response on the console. if (trainStatusEntity != null) { System.out.println(EntityUtils.toString(trainStatusEntity)); } } // Display errors if they occur. catch (Exception e) { System.out.println(e.getMessage()); } } }
Ersätt värdena som börjar med
YOUR-
dina egna värden.Information Syfte YOUR-APP-ID
Ditt LUIS-app-ID. YOUR-AUTHORING-KEY
Redigeringsnyckeln på 32 tecken. YOUR-AUTHORING-ENDPOINT
Url-slutpunkten för redigering. Exempel: https://replace-with-your-resource-name.api.cognitive.microsoft.com/
Du anger resursnamnet när du skapade resursen.Tilldelade nycklar och resurser visas i LUIS-portalen i avsnittet Hantera på sidan Azure-resurser . App-ID:t är tillgängligt i samma avsnitt Hantera på sidan Programinställningar .
Viktigt!
Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.
Med en kommandotolk i samma katalog som där du skapade
Model.java
filen anger du följande kommando för att kompilera Java-filen:- Om du använder Windows använder du det här kommandot:
javac -cp ";lib/*" Model.java
- Om du använder macOS eller Linux använder du det här kommandot:
javac -cp ":lib/*" Model.java
- Om du använder Windows använder du det här kommandot:
Kör Java-programmet från kommandoraden genom att ange följande text i kommandotolken:
- Om du använder Windows använder du det här kommandot:
java -cp ";lib/*" Model
- Om du använder macOS eller Linux använder du det här kommandot:
java -cp ":lib/*" Model
- Om du använder Windows använder du det här kommandot:
Granska redigeringssvaret:
[{"value":{"ExampleId":1137150691,"UtteranceText":"order a pizza"},"hasError":false},{"value":{"ExampleId":1137150692,"UtteranceText":"order a large pepperoni pizza"},"hasError":false},{"value":{"ExampleId":1137150693,"UtteranceText":"i want two large pepperoni pizzas on thin crust"},"hasError":false}] {"statusId":9,"status":"Queued"} [{"modelId":"edb46abf-0000-41ab-beb2-a41a0fe1630f","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"a5030be2-616c-4648-bf2f-380fa9417d37","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"e4b6704b-1636-474c-9459-fe9ccbeba51c","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"031d3777-2a00-4a7a-9323-9a3280a30000","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"9250e7a1-06eb-4413-9432-ae132ed32583","details":{"statusId":3,"status":"InProgress","exampleCount":0,"progressSubstatus":"CollectingData"}}]
Här är utdata som är formaterade för läsbarhet:
[ { "value": { "ExampleId": 1137150691, "UtteranceText": "order a pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150692, "UtteranceText": "order a large pepperoni pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150693, "UtteranceText": "i want two large pepperoni pizzas on thin crust" }, "hasError": false } ] { "statusId": 9, "status": "Queued" } [ { "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583", "details": { "statusId": 3, "status": "InProgress", "exampleCount": 0, "progressSubstatus": "CollectingData" } } ]
Rensa resurser
När du är klar med den här snabbstarten tar du bort projektmappen från filsystemet.
Nästa steg
Exempel på referensdokumentation |
Förutsättningar
- Programmeringsspråket Go
- Visual Studio Code
JSON-fil med exempelyttranden
Exempelyttrandena följer ett visst format.
Fältet text
innehåller texten för exempelyttrandet. Fältet intentName
måste motsvara namnet på en befintlig avsikt i LUIS-appen. Fältet entityLabels
är obligatoriskt. Om du inte vill märka ut några entiteter kan du ange en tom matris.
Om matrisen entityLabels inte är tom måste startCharIndex
och endCharIndex
märka ut den entitet som anges i fältet entityName
. Indexet är nollbaserat. Om du börjar eller avslutar etiketten vid ett blanksteg i texten misslyckas API-anropet för att lägga till yttrandena.
[
{
"text": "order a pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 12
}
]
},
{
"text": "order a large pepperoni pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "PizzaType",
"startCharIndex": 14,
"endCharIndex": 28
},
{
"entityName": "Size",
"startCharIndex": 8,
"endCharIndex": 12
}
]
},
{
"text": "I want two large pepperoni pizzas on thin crust",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "PizzaType",
"startCharIndex": 17,
"endCharIndex": 32
},
{
"entityName": "Size",
"startCharIndex": 11,
"endCharIndex": 15
},
{
"entityName": "Quantity",
"startCharIndex": 7,
"endCharIndex": 9
},
{
"entityName": "Crust",
"startCharIndex": 37,
"endCharIndex": 46
}
]
}
]
Skapa pizzaapp
Skapa pizzaappen.
- Välj pizza-app-for-luis-v6.json för att visa GitHub-sidan för
pizza-app-for-luis.json
filen. - Högerklicka eller tryck länge på raw-knappen och välj Spara länk för att spara på
pizza-app-for-luis.json
datorn. - Logga in på LUIS-portalen.
- Välj Mina appar.
- På sidan Mina appar väljer du + Ny app för konversation.
- Välj Importera som JSON.
- I dialogrutan Importera ny app väljer du knappen Välj fil.
- Välj den
pizza-app-for-luis.json
fil som du laddade ned och välj sedan Öppna. - I dialogrutan Importera nytt appnamn anger du ett namn för din Pizza-app och väljer sedan knappen Klar.
Appen importeras.
Om du ser en dialogruta Så här skapar du en effektiv LUIS-app stänger du dialogrutan.
Träna och publicera Pizza-appen
Du bör se sidan Avsikter med en lista över avsikter i Pizza-appen.
Välj knappen Träna längst upp till höger på LUIS-webbplatsen.
Träningen är klar när knappen Träna är inaktiverad.
För att få en LUIS-förutsägelse i en chattrobot eller andra klientprogram måste du publicera appen till förutsägelseslutpunkten.
Välj Publicera i det övre högra navigeringsfältet.
Välj produktionsplatsen och välj sedan Klar.
Välj Åtkomst till slutpunkts-URL:er i meddelandet för att gå till sidan Azure-resurser . Du kan bara se URL:erna om du har en förutsägelseresurs som är associerad med appen. Du hittar även sidan Azure-resurser genom att klicka på Hantera.
Lägga till en redigeringsresurs i Pizza-appen
- Välj HANTERA.
- Välj Azure-resurser.
- Välj Redigeringsresurs.
- Välj Ändra redigeringsresurs.
Om du har en redigeringsresurs anger du klientorganisationens namn, prenumerationsnamn och LUIS-resursnamnet för redigeringsresursen.
Om du inte har någon redigeringsresurs:
- Välj Skapa ny resurs.
- Ange ett klientnamn, resursnamn, prenumerationsnamn och Azure-resursgruppnamn.
Din Pizza-app är nu redo att användas.
Registrera åtkomstvärdena för din Pizza-app
Om du vill använda din nya Pizza-app behöver du app-ID, redigeringsnyckel och redigeringsslutpunkt för din Pizza-app. För att få förutsägelser behöver du din separata förutsägelseslutpunkt och förutsägelsenyckel.
Så här hittar du följande värden:
- På sidan Avsikter väljer du HANTERA.
- På sidan Programinställningar registrerar du app-ID :t.
- Välj Azure-resurser.
- Välj Redigeringsresurs.
- På flikarna Redigeringsresurs och Förutsägelseresurser registrerar du primärnyckeln. Det här värdet är din redigeringsnyckel.
- Registrera slutpunkts-URL :en. Det här värdet är din redigeringsslutpunkt.
Ändra modell programmatiskt
Skapa en ny fil med namnet
predict.go
. Lägg till följande kod:// // This quickstart shows how to add utterances to a LUIS model using the REST APIs. // // dependencies package main import ( "fmt" "net/http" "io/ioutil" "log" "strings" ) // main function func main() { ////////// // Values to modify. // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page. var appID = "PASTE_YOUR_LUIS_APP_ID_HERE" // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value. var authoringKey = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE" // YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint. // For example, "https://your-resource-name.cognitiveservices.azure.com/" var endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE" // NOTE: Replace this your version number. The Pizza app uses a version number of "0.1". var version = "0.1" ////////// var exampleUtterances = "[{'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12}]}, {'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28}, {'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12}]}, {'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32}, {'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15}, {'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9}, {'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46}]}]" fmt.Println("add example utterances requested") addUtterance(authoringKey, appID, version, exampleUtterances, endpoint) fmt.Println("training selected") requestTraining(authoringKey, appID, version, endpoint) fmt.Println("training status selected") getTrainingStatus(authoringKey, appID, version, endpoint) } // Send the list of utterances to the model. func addUtterance(authoringKey string, appID string, version string, labeledExampleUtterances string, endpoint string){ var authoringUrl = fmt.Sprintf("%sluis/authoring/v3.0-preview/apps/%s/versions/%s/examples", endpoint, appID, version) httpRequest("POST", authoringUrl, authoringKey, labeledExampleUtterances) } // Request training. func requestTraining(authoringKey string, appID string, version string, endpoint string){ trainApp("POST", authoringKey, appID, version, endpoint) } func trainApp(httpVerb string, authoringKey string, appID string, version string, endpoint string){ var authoringUrl = fmt.Sprintf("%sluis/authoring/v3.0-preview/apps/%s/versions/%s/train", endpoint, appID, version) httpRequest(httpVerb,authoringUrl, authoringKey, "") } func getTrainingStatus(authoringKey string, appID string, version string, endpoint string){ trainApp("GET", authoringKey, appID, version, endpoint) } // generic HTTP request // includes setting header with authoring key func httpRequest(httpVerb string, url string, authoringKey string, body string){ client := &http.Client{} request, err := http.NewRequest(httpVerb, url, strings.NewReader(body)) request.Header.Add("Ocp-Apim-Subscription-Key", authoringKey) fmt.Println("body") fmt.Println(body) response, err := client.Do(request) if err != nil { log.Fatal(err) } else { defer response.Body.Close() contents, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } fmt.Println(" ", response.StatusCode) fmt.Println(string(contents)) } }
Ersätt värdena som börjar med
YOUR-
dina egna värden.Information Syfte YOUR-APP-ID
Ditt LUIS-app-ID. YOUR-AUTHORING-KEY
Redigeringsnyckeln på 32 tecken. YOUR-AUTHORING-ENDPOINT
Url-slutpunkten för redigering. Exempel: https://replace-with-your-resource-name.api.cognitive.microsoft.com/
Du anger resursnamnet när du skapade resursen.Tilldelade nycklar och resurser visas i LUIS-portalen i avsnittet Hantera på sidan Azure-resurser . App-ID:t är tillgängligt i samma avsnitt Hantera på sidan Programinställningar .
Viktigt!
Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.
Med en kommandotolk i samma katalog som där du skapade filen anger du följande kommando för att kompilera Go-filen:
go build model.go
Kör Go-programmet från kommandoraden genom att ange följande text i kommandotolken:
go run model.go
Granska redigeringssvaret:
add example utterances requested body [{'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12}]}, {'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28}, {'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28}, {'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12}]}, {'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [{'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46}, {'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32}, {'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15}, {'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9}, {'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46}]}] 201 [{"value":{"ExampleId":1137150691,"UtteranceText":"order a pizza"},"hasError":false},{"value":{"ExampleId":1137150692,"UtteranceText":"order a large pepperoni pizza"},"hasError":false},{"value":{"ExampleId":1137150693,"UtteranceText":"i want two large pepperoni pizzas on thin crust"},"hasError":false}] training selected body 202 {"statusId":9,"status":"Queued"} training status selected body 200 [{"modelId":"edb46abf-0000-41ab-beb2-a41a0fe1630f","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"a5030be2-616c-4648-bf2f-380fa9417d37","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"e4b6704b-1636-474c-9459-fe9ccbeba51c","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"031d3777-2a00-4a7a-9323-9a3280a30000","details":{"statusId":9,"status":"Queued","exampleCount":0}},{"modelId":"9250e7a1-06eb-4413-9432-ae132ed32583","details":{"statusId":9,"status":"Queued","exampleCount":0}}]
Här är utdata som är formaterade för läsbarhet:
add example utterances requested body [ { 'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12 } ] }, { 'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28 }, { 'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12 } ] }, { 'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32 }, { 'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15 }, { 'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9 }, { 'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46 } ] } ] 201 [ { "value": { "ExampleId": 1137150691, "UtteranceText": "order a pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150692, "UtteranceText": "order a large pepperoni pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150693, "UtteranceText": "i want two large pepperoni pizzas on thin crust" }, "hasError": false } ] training selected body 202 { "statusId": 9, "status": "Queued" } training status selected body 200 [ { "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } } ]
Rensa resurser
När du är klar med den här snabbstarten tar du bort filen från filsystemet.
Nästa steg
Exempel på referensdokumentation |
Förutsättningar
- Programmeringsspråket Node.js
- Visual Studio Code
JSON-fil med exempelyttranden
Exempelyttrandena följer ett visst format.
Fältet text
innehåller texten för exempelyttrandet. Fältet intentName
måste motsvara namnet på en befintlig avsikt i LUIS-appen. Fältet entityLabels
är obligatoriskt. Om du inte vill märka ut några entiteter kan du ange en tom matris.
Om matrisen entityLabels inte är tom måste startCharIndex
och endCharIndex
märka ut den entitet som anges i fältet entityName
. Indexet är nollbaserat. Om du börjar eller avslutar etiketten vid ett blanksteg i texten misslyckas API-anropet för att lägga till yttrandena.
[
{
"text": "order a pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 12
}
]
},
{
"text": "order a large pepperoni pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "PizzaType",
"startCharIndex": 14,
"endCharIndex": 28
},
{
"entityName": "Size",
"startCharIndex": 8,
"endCharIndex": 12
}
]
},
{
"text": "I want two large pepperoni pizzas on thin crust",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "PizzaType",
"startCharIndex": 17,
"endCharIndex": 32
},
{
"entityName": "Size",
"startCharIndex": 11,
"endCharIndex": 15
},
{
"entityName": "Quantity",
"startCharIndex": 7,
"endCharIndex": 9
},
{
"entityName": "Crust",
"startCharIndex": 37,
"endCharIndex": 46
}
]
}
]
Skapa Node.js-projektet
Skapa en ny mapp för att lagra ditt Node.js projekt, till exempel
node-model-with-rest
.Öppna en ny kommandotolk, navigera till mappen du skapade och kör följande kommando:
npm init
Tryck på Retur vid varje uppmaning för att acceptera standardinställningarna.
Installera modulen request-promise genom att ange följande kommando:
npm install --save request npm install --save request-promise npm install --save querystring
Ändra modell programmatiskt
Skapa en ny fil med namnet
model.js
. Lägg till följande kod:// // This quickstart shows how to add utterances to a LUIS model using the REST APIs. // var request = require('request-promise'); ////////// // Values to modify. // YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page. const LUIS_appId = "PASTE_YOUR_LUIS_APP_ID_HERE"; // YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value. const LUIS_authoringKey = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"; // YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint. // For example, "https://your-resource-name.cognitiveservices.azure.com/" const LUIS_endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; // NOTE: Replace this your version number. The Pizza app uses a version number of "0.1". const LUIS_versionId = "0.1"; ////////// const addUtterancesURI = `${LUIS_endpoint}luis/authoring/v3.0-preview/apps/${LUIS_appId}/versions/${LUIS_versionId}/examples`; const addTrainURI = `${LUIS_endpoint}luis/authoring/v3.0-preview/apps/${LUIS_appId}/versions/${LUIS_versionId}/train`; const utterances = [ { 'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12 } ] }, { 'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28 }, { 'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12 } ] }, { 'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32 }, { 'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15 }, { 'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9 }, { 'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46 } ] } ]; // Main function. const main = async() =>{ await addUtterances(utterances); await train("POST"); await train("GET"); } // Adds the utterances to the model. const addUtterances = async (utterances) => { const options = { uri: addUtterancesURI, method: 'POST', headers: { 'Ocp-Apim-Subscription-Key': LUIS_authoringKey }, json: true, body: utterances }; const response = await request(options) console.log("addUtterance:\n" + JSON.stringify(response, null, 2)); } // With verb === "POST", sends a training request. // With verb === "GET", obtains the training status. const train = async (verb) => { const options = { uri: addTrainURI, method: verb, headers: { 'Ocp-Apim-Subscription-Key': LUIS_authoringKey }, json: true, body: null // The body can be empty for a training request }; const response = await request(options) console.log("train " + verb + ":\n" + JSON.stringify(response, null, 2)); } // MAIN main().then(() => console.log("done")).catch((err)=> console.log(err));
Ersätt värdena som börjar med
YOUR-
dina egna värden.Information Syfte YOUR-APP-ID
Ditt LUIS-app-ID. YOUR-AUTHORING-KEY
Redigeringsnyckeln på 32 tecken. YOUR-AUTHORING-ENDPOINT
Url-slutpunkten för redigering. Exempel: https://replace-with-your-resource-name.api.cognitive.microsoft.com/
Du anger resursnamnet när du skapade resursen.Tilldelade nycklar och resurser visas i LUIS-portalen i avsnittet Hantera på sidan Azure-resurser . App-ID:t är tillgängligt i samma avsnitt Hantera på sidan Programinställningar .
Viktigt!
Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.
I kommandotolken anger du följande kommando för att köra projektet:
node model.js
Granska redigeringssvaret:
addUtterance: [ { "value": { "ExampleId": 1137150691, "UtteranceText": "order a pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150692, "UtteranceText": "order a large pepperoni pizza" }, "hasError": false }, { "value": { "ExampleId": 1137150693, "UtteranceText": "i want two large pepperoni pizzas on thin crust" }, "hasError": false } ] train POST: { "statusId": 9, "status": "Queued" } train GET: [ { "modelId": "edb46abf-0000-41ab-beb2-a41a0fe1630f", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "a5030be2-616c-4648-bf2f-380fa9417d37", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "e4b6704b-1636-474c-9459-fe9ccbeba51c", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "031d3777-2a00-4a7a-9323-9a3280a30000", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } }, { "modelId": "9250e7a1-06eb-4413-9432-ae132ed32583", "details": { "statusId": 9, "status": "Queued", "exampleCount": 0 } } ] done
Rensa resurser
När du är klar med den här snabbstarten tar du bort projektmappen från filsystemet.
Nästa steg
Exempel på referensdokumentation |
Förutsättningar
- Python 3.6 eller senare.
- Visual Studio Code
JSON-fil med exempelyttranden
Exempelyttrandena följer ett visst format.
Fältet text
innehåller texten för exempelyttrandet. Fältet intentName
måste motsvara namnet på en befintlig avsikt i LUIS-appen. Fältet entityLabels
är obligatoriskt. Om du inte vill märka ut några entiteter kan du ange en tom matris.
Om matrisen entityLabels inte är tom måste startCharIndex
och endCharIndex
märka ut den entitet som anges i fältet entityName
. Indexet är nollbaserat. Om du börjar eller avslutar etiketten vid ett blanksteg i texten misslyckas API-anropet för att lägga till yttrandena.
[
{
"text": "order a pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 12
}
]
},
{
"text": "order a large pepperoni pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "PizzaType",
"startCharIndex": 14,
"endCharIndex": 28
},
{
"entityName": "Size",
"startCharIndex": 8,
"endCharIndex": 12
}
]
},
{
"text": "I want two large pepperoni pizzas on thin crust",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "PizzaType",
"startCharIndex": 17,
"endCharIndex": 32
},
{
"entityName": "Size",
"startCharIndex": 11,
"endCharIndex": 15
},
{
"entityName": "Quantity",
"startCharIndex": 7,
"endCharIndex": 9
},
{
"entityName": "Crust",
"startCharIndex": 37,
"endCharIndex": 46
}
]
}
]
Skapa pizzaapp
Skapa pizzaappen.
- Välj pizza-app-for-luis-v6.json för att visa GitHub-sidan för
pizza-app-for-luis.json
filen. - Högerklicka eller tryck länge på raw-knappen och välj Spara länk för att spara på
pizza-app-for-luis.json
datorn. - Logga in på LUIS-portalen.
- Välj Mina appar.
- På sidan Mina appar väljer du + Ny app för konversation.
- Välj Importera som JSON.
- I dialogrutan Importera ny app väljer du knappen Välj fil.
- Välj den
pizza-app-for-luis.json
fil som du laddade ned och välj sedan Öppna. - I dialogrutan Importera nytt appnamn anger du ett namn för din Pizza-app och väljer sedan knappen Klar.
Appen importeras.
Om du ser en dialogruta Så här skapar du en effektiv LUIS-app stänger du dialogrutan.
Träna och publicera Pizza-appen
Du bör se sidan Avsikter med en lista över avsikter i Pizza-appen.
Välj knappen Träna längst upp till höger på LUIS-webbplatsen.
Träningen är klar när knappen Träna är inaktiverad.
För att få en LUIS-förutsägelse i en chattrobot eller andra klientprogram måste du publicera appen till förutsägelseslutpunkten.
Välj Publicera i det övre högra navigeringsfältet.
Välj produktionsplatsen och välj sedan Klar.
Välj Åtkomst till slutpunkts-URL:er i meddelandet för att gå till sidan Azure-resurser . Du kan bara se URL:erna om du har en förutsägelseresurs som är associerad med appen. Du hittar även sidan Azure-resurser genom att klicka på Hantera.
Lägga till en redigeringsresurs i Pizza-appen
- Välj HANTERA.
- Välj Azure-resurser.
- Välj Redigeringsresurs.
- Välj Ändra redigeringsresurs.
Om du har en redigeringsresurs anger du klientorganisationens namn, prenumerationsnamn och LUIS-resursnamnet för redigeringsresursen.
Om du inte har någon redigeringsresurs:
- Välj Skapa ny resurs.
- Ange ett klientnamn, resursnamn, prenumerationsnamn och Azure-resursgruppnamn.
Din Pizza-app är nu redo att användas.
Registrera åtkomstvärdena för din Pizza-app
Om du vill använda din nya Pizza-app behöver du app-ID, redigeringsnyckel och redigeringsslutpunkt för din Pizza-app. För att få förutsägelser behöver du din separata förutsägelseslutpunkt och förutsägelsenyckel.
Så här hittar du följande värden:
- På sidan Avsikter väljer du HANTERA.
- På sidan Programinställningar registrerar du app-ID :t.
- Välj Azure-resurser.
- Välj Redigeringsresurs.
- På flikarna Redigeringsresurs och Förutsägelseresurser registrerar du primärnyckeln. Det här värdet är din redigeringsnyckel.
- Registrera slutpunkts-URL :en. Det här värdet är din redigeringsslutpunkt.
Ändra modell programmatiskt
Skapa en ny fil med namnet
model.py
. Lägg till följande kod:########### Python 3.6 ############# # # This quickstart shows how to add utterances to a LUIS model using the REST APIs. # import requests try: ########## # Values to modify. # YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page. appId = "PASTE_YOUR_LUIS_APP_ID_HERE" # YOUR-AUTHORING-KEY: Your LUIS authoring key, 32 character value. authoring_key = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE" # YOUR-AUTHORING-ENDPOINT: Replace this with your authoring key endpoint. # For example, "https://your-resource-name.cognitiveservices.azure.com/" authoring_endpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE" # The version number of your LUIS app app_version = "0.1" ########## # The headers to use in this REST call. headers = {'Ocp-Apim-Subscription-Key': authoring_key} # The URL parameters to use in this REST call. params ={ #'timezoneOffset': '0', #'verbose': 'true', #'show-all-intents': 'true', #'spellCheck': 'false', #'staging': 'false' } # List of example utterances to send to the LUIS app. data = """[ { 'text': 'order a pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 12 } ] }, { 'text': 'order a large pepperoni pizza', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 6, 'endCharIndex': 28 }, { 'entityName': 'PizzaType', 'startCharIndex': 14, 'endCharIndex': 28 }, { 'entityName': 'Size', 'startCharIndex': 8, 'endCharIndex': 12 } ] }, { 'text': 'I want two large pepperoni pizzas on thin crust', 'intentName': 'ModifyOrder', 'entityLabels': [ { 'entityName': 'Order', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'FullPizzaWithModifiers', 'startCharIndex': 7, 'endCharIndex': 46 }, { 'entityName': 'PizzaType', 'startCharIndex': 17, 'endCharIndex': 32 }, { 'entityName': 'Size', 'startCharIndex': 11, 'endCharIndex': 15 }, { 'entityName': 'Quantity', 'startCharIndex': 7, 'endCharIndex': 9 }, { 'entityName': 'Crust', 'startCharIndex': 37, 'endCharIndex': 46 } ] } ] """ # Make the REST call to POST the list of example utterances. response = requests.post(f'{authoring_endpoint}luis/authoring/v3.0-preview/apps/{appId}/versions/{app_version}/examples', headers=headers, params=params, data=data) # Display the results on the console. print('Add the list of utterances:') print(response.json()) # Make the REST call to initiate a training session. response = requests.post(f'{authoring_endpoint}luis/authoring/v3.0-preview/apps/{appId}/versions/{app_version}/train', headers=headers, params=params, data=None) # Display the results on the console. print('Request training:') print(response.json()) # Make the REST call to request the status of training. response = requests.get(f'{authoring_endpoint}luis/authoring/v3.0-preview/apps/{appId}/versions/{app_version}/train', headers=headers, params=params, data=None) # Display the results on the console. print('Request training status:') print(response.json()) except Exception as e: # Display the error string. print(f'{e}')
Ersätt värdena som börjar med
YOUR-
dina egna värden.Information Syfte YOUR-APP-ID
Ditt LUIS-app-ID. YOUR-AUTHORING-KEY
Redigeringsnyckeln på 32 tecken. YOUR-AUTHORING-ENDPOINT
Url-slutpunkten för redigering. Exempel: https://replace-with-your-resource-name.api.cognitive.microsoft.com/
Du anger resursnamnet när du skapade resursen.Tilldelade nycklar och resurser visas i LUIS-portalen i avsnittet Hantera på sidan Azure-resurser . App-ID:t är tillgängligt i samma avsnitt Hantera på sidan Programinställningar .
Viktigt!
Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.
Med en kommandotolk i samma katalog som där du skapade filen anger du följande kommando för att köra filen:
python model.py
Granska redigeringssvaret:
Add the list of utterances: [{'value': {'ExampleId': 1137150691, 'UtteranceText': 'order a pizza'}, 'hasError': False}, {'value': {'ExampleId': 1137150692, 'UtteranceText': 'order a large pepperoni pizza'}, 'hasError': False}, {'value': {'ExampleId': 1137150693, 'UtteranceText': 'i want two large pepperoni pizzas on thin crust'}, 'hasError': False}] Request training: {'statusId': 9, 'status': 'Queued'} Request training status: [{'modelId': 'edb46abf-0000-41ab-beb2-a41a0fe1630f', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': 'a5030be2-616c-4648-bf2f-380fa9417d37', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': '3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': 'e4b6704b-1636-474c-9459-fe9ccbeba51c', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': '031d3777-2a00-4a7a-9323-9a3280a30000', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}, {'modelId': '9250e7a1-06eb-4413-9432-ae132ed32583', 'details': {'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData'}}]
Här är utdata som är formaterade för läsbarhet:
Add the list of utterances: [ { 'value': { 'ExampleId': 1137150691, 'UtteranceText': 'order a pizza' }, 'hasError': False }, { 'value': { 'ExampleId': 1137150692, 'UtteranceText': 'order a large pepperoni pizza' }, 'hasError': False }, { 'value': { 'ExampleId': 1137150693, 'UtteranceText': 'i want two large pepperoni pizzas on thin crust' }, 'hasError': False } ] Request training: { 'statusId': 9, 'status': 'Queued' } Request training status: [ { 'modelId': 'edb46abf-0000-41ab-beb2-a41a0fe1630f', 'details': { 'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData' } }, { 'modelId': 'a5030be2-616c-4648-bf2f-380fa9417d37', 'details': { 'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData' } }, { 'modelId': '3f2b1f31-a3c3-4fbd-8182-e9d9dbc120b9', 'details': { 'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData' } }, { 'modelId': 'e4b6704b-1636-474c-9459-fe9ccbeba51c', 'details': { 'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData' } }, { 'modelId': '031d3777-2a00-4a7a-9323-9a3280a30000', 'details': { 'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData' } }, { 'modelId': '9250e7a1-06eb-4413-9432-ae132ed32583', 'details': { 'statusId': 3, 'status': 'InProgress', 'exampleCount': 0, 'progressSubstatus': 'CollectingData' } } ]
Rensa resurser
När du är klar med den här snabbstarten tar du bort filen från filsystemet.