Mulai cepat: Pustaka klien Pemahaman Bahasa (LUIS) dan REST API
Penting
LUIS akan dihentikan pada 1 Oktober 2025 dan mulai 1 April 2023 Anda tidak akan dapat membuat sumber daya LUIS baru. Sebaiknya migrasikan aplikasi LUIS Anda ke pemahaman bahasa percakapan untuk mendapatkan manfaat dari dukungan produk berkelanjutan dan kemampuan multibahasa.
Buat dan kueri aplikasi kecerdasan buatan (AI) Azure LUIS dengan pustaka klien LUIS SDK dengan mulai cepat ini menggunakan C#, Python, atau JavaScript. Anda juga dapat menggunakan cURL untuk mengirim permintaan menggunakan REST API.
Pemahaman Bahasa (LUIS) memungkinkan Anda menerapkan pemrosesan bahasa alami (NLP) ke percakapan pengguna, teks bahasa alami untuk memprediksi makna keseluruhan, dan menarik informasi terperinci yang relevan.
- Pustaka klien penulisan dan REST API memungkinkan Anda membuat, mengedit, melatih, dan menerbitkan aplikasi LUIS Anda.
- Pustaka klien runtime prediksi dan REST API memungkinkan Anda untuk mengkueri aplikasi yang diterbitkan.
Gunakan pustaka klien Pemahaman Bahasa (LUIS) terhadap .NET untuk:
- Membuat aplikasi
- Tambahkan niat, entitas yang dipelajari mesin dengan contoh ucapan
- Latih dan terbitkan aplikasi
- Runtime prediksi kueri
Dokumentasi referensi | Penulisan dan Prediksi Kode sumber pustaka | Penulisan dan Prediksi NuGet | Sampel C#
Prasyarat
- Versi saat ini dari .NET Core dan .NET Core CLI.
- Langganan Azure - Buat langganan secara gratis
- Setelah memiliki langganan Azure, buat sumber daya penulisan Language Understanding (LUIS) di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga itu menyebar dan klik tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang dibuat untuk menghubungkan aplikasi ke penulisan Language Understanding (LUIS). Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang dibuat untuk menghubungkan aplikasi ke penulisan Language Understanding (LUIS). Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat. Anda dapat menggunakan tingkat harga gratis (
Menyiapkan
Membuat aplikasi C# baru
Buat aplikasi .NET Core baru di editor atau IDE pilihan Anda.
Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah
new
dotnet untuk membuat aplikasi konsol baru bernamalanguage-understanding-quickstart
. Perintah ini membuat proyek C# "Halo Dunia" sederhana dengan satu file sumber:Program.cs
.dotnet new console -n language-understanding-quickstart
Ubah direktori Anda ke folder aplikasi yang baru dibuat.
cd language-understanding-quickstart
Anda dapat membangun aplikasi dengan:
dotnet build
Output build tidak boleh berisi peringatan atau kesalahan.
... Build succeeded. 0 Warning(s) 0 Error(s) ...
Menginstal pustaka NuGet
Dalam direktori aplikasi, instal pustaka klien Pemahaman Bahasa (LUIS) untuk .NET dengan perintah berikut:
dotnet add package Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring --version 3.2.0-preview.3
dotnet add package Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime --version 3.1.0-preview.1
Model Objek Penulisan
Klien penulisan Pemahaman Bahasa (LUIS) adalah objek LUISAuthoringClient yang mengautentikasi ke Azure, yang berisi kunci penulisan Anda.
Contoh kode untuk penulisan
Setelah klien dibuat, gunakan klien ini untuk mengakses fungsionalitas termasuk:
- Aplikasi - buat, hapus, terbitkan
- Contoh ucapan - tambahkan, hapus menurut ID
- Fitur - mengelola daftar frasa
- Model - mengelola niat dan entitas
- Pola - mengelola pola
- Latih - melatih aplikasi dan polling untuk status pelatihan
- Versi - mengelola, mengekspor, dan menghapus klon
Model Objek Prediksi
Klien runtime prediksi Pemahaman Bahasa (LUIS) adalah objek LUISRuntimeClient yang mengautentikasi ke Azure, yang berisi kunci sumber daya Anda.
Contoh kode untuk runtime prediksi
Setelah klien dibuat, gunakan klien ini untuk mengakses fungsionalitas termasuk:
- Prediksi menurut penahapan atau slot produksi
- Prediksi menurut versi
Contoh kode
Cuplikan kode ini menunjukkan kepada Anda cara melakukan hal berikut dengan pustaka klien Language Understanding (LUIS) untuk python:
- Membuat aplikasi
- Menambahkan niat
- Menambahkan entitas
- Menambahkan ucapan contoh
- Melatih aplikasi
- Menerbitkan aplikasi
- Memprediksi menurut slot
Menambahkan dependensi
Dari direktori proyek, buka file Program.cs di editor atau IDE pilihan Anda. Ganti kode using
yang ada dengan direktif using
berikut:
using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring.Models;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime.Models;
using Newtonsoft.Json;
Menambahkan kode boilerplate
Ubah tanda tangan metode
Main
untuk memungkinkan panggilan asinkron:public static async Task Main()
Tambahkan kode lainnya dalam
Main
metode kelasProgram
kecuali ditentukan lain.
Membuat variabel untuk aplikasi
Membuat dua set variabel: set pertama yang Anda ubah, set kedua dibiarkan seperti yang muncul dalam sampel kode.
Penting
Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.
Membuat variabel untuk menyimpan kunci penulisan dan nama sumber daya Anda.
var key = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"; var authoringEndpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; var predictionEndpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
Membuat variabel untuk menyimpan titik akhir, nama aplikasi, versi, dan nama niat Anda.
var appName = "Contoso Pizza Company"; var versionId = "0.1"; var intentName = "OrderPizzaIntent";
Mengautentikasi klien
Buat objek ApiKeyServiceClientCredentials dengan kunci Anda, dan gunakan dengan titik akhir Anda untuk membuat objek LUISAuthoringClient.
var credentials = new Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring.ApiKeyServiceClientCredentials(key);
var client = new LUISAuthoringClient(credentials) { Endpoint = authoringEndpoint };
Membuat aplikasi LUIS baru
Aplikasi LUIS berisi model pemrosesan bahasa alami (NLP) termasuk niat, entitas, dan contoh ucapan.
Buat ApplicationCreateObject. Nama dan budaya bahasa adalah properti yang diperlukan. Panggil metode Apps.AddAsync. Responnya adalah ID aplikasi.
var newApp = new ApplicationCreateObject
{
Culture = "en-us",
Name = appName,
InitialVersionId = versionId
};
var appId = await client.Apps.AddAsync(newApp);
Membuat niat untuk aplikasi
Objek utama dalam model aplikasi LUIS adalah niat. Niat selaras dengan pengelompokan maksud ucapan pengguna. Pengguna dapat mengajukan pertanyaan, atau membuat pernyataan yang mencari respons tertentu yang dimaksudkan dari bot (atau aplikasi klien lain). Contoh maksud adalah memesan tiket penerbangan, menanyakan cuaca di kota tujuan, dan menanyakan informasi kontak layanan pelanggan.
Buat ModelCreateObject dengan nama niat yang unik, kemudian teruskan ID aplikasi, ID versi, dan ModelCreateObject ke metode Model.AddIntentAsync. Responsnya adalah ID niat.
intentName
Nilainya dikodekan secara permanenOrderPizzaIntent
sebagai bagian dari variabel di bagian Membuat variabel untuk aplikasi.
await client.Model.AddIntentAsync(appId, versionId, new ModelCreateObject()
{
Name = intentName
});
Membuat entitas untuk aplikasi
Meskipun tidak diperlukan, entitas dapat ditemukan di sebagian besar aplikasi. Entitas mengekstrak informasi dari ucapan pengguna, yang diperlukan untuk memenuhi maksud pengguna. Ada beberapa tipe entitas bawaan dan kustom, masing-masing dengan model objek transformasi datanya (DTO) sendiri. Entitas bawaan umum untuk ditambahkan ke aplikasi Anda termasuk angka,datetimeV2,geographyV2,ordinal.
Penting untuk diketahui bahwa entitas tidak ditandai dengan niat. Entitas dapat dan biasanya berlaku untuk banyak niat. Hanya contoh ucapan pengguna yang ditandai untuk satu niat tertentu.
Metode pembuatan untuk entitas adalah bagian dari kelas Model. Setiap jenis entitas memiliki model objek transformasi data (DTO) sendiri, biasanya berisi kata model
di ruang nama Model.
Kode pembuatan entitas membuat entitas pembelajaran mesin dengan subentitas dan fitur yang diterapkan ke subentitas Quantity
.
// Add Prebuilt entity
await client.Model.AddPrebuiltAsync(appId, versionId, new[] { "number" });
// Define ml entity with children and grandchildren
var mlEntityDefinition = new EntityModelCreateObject
{
Name = "Pizza order",
Children = new[]
{
new ChildEntityModelCreateObject
{
Name = "Pizza",
Children = new[]
{
new ChildEntityModelCreateObject { Name = "Quantity" },
new ChildEntityModelCreateObject { Name = "Type" },
new ChildEntityModelCreateObject { Name = "Size" }
}
},
new ChildEntityModelCreateObject
{
Name = "Toppings",
Children = new[]
{
new ChildEntityModelCreateObject { Name = "Type" },
new ChildEntityModelCreateObject { Name = "Quantity" }
}
}
}
};
// Add ML entity
var mlEntityId = await client.Model.AddEntityAsync(appId, versionId, mlEntityDefinition); ;
// Add phraselist feature
var phraselistId = await client.Features.AddPhraseListAsync(appId, versionId, new PhraselistCreateObject
{
EnabledForAllModels = false,
IsExchangeable = true,
Name = "QuantityPhraselist",
Phrases = "few,more,extra"
});
// Get entity and subentities
var model = await client.Model.GetEntityAsync(appId, versionId, mlEntityId);
var toppingQuantityId = GetModelGrandchild(model, "Toppings", "Quantity");
var pizzaQuantityId = GetModelGrandchild(model, "Pizza", "Quantity");
// add model as feature to subentity model
await client.Features.AddEntityFeatureAsync(appId, versionId, pizzaQuantityId, new ModelFeatureInformation { ModelName = "number", IsRequired = true });
await client.Features.AddEntityFeatureAsync(appId, versionId, toppingQuantityId, new ModelFeatureInformation { ModelName = "number"});
// add phrase list as feature to subentity model
await client.Features.AddEntityFeatureAsync(appId, versionId, toppingQuantityId, new ModelFeatureInformation { FeatureName = "QuantityPhraselist" });
Gunakan metode berikut pada kelas untuk menemukan ID subentitas Kuantitas, untuk menetapkan fitur ke subentitas tersebut.
static Guid GetModelGrandchild(NDepthEntityExtractor model, string childName, string grandchildName)
{
return model.Children.
Single(c => c.Name == childName).
Children.
Single(c => c.Name == grandchildName).Id;
}
Menambahkan contoh ucapan ke niat
Untuk menentukan maksud ucapan dan mengekstrak entitas, aplikasi membutuhkan contoh ucapan. Contohnya perlu menargetkan niat tunggal tertentu dan harus menandai semua entitas kustom. Entitas bawaan tidak perlu ditandai.
Tambahkan contoh ucapan dengan membuat daftar objek ExampleLabelObject, satu objek untuk setiap contoh ucapan. Setiap contoh harus menandai semua entitas dengan kamus nama/nilai pasangan nama dan nilai entitas. Nilai entitas harus sama dengan seperti yang muncul dalam teks ucapan contoh.
Panggil Examples.AddAsync dengan ID aplikasi, ID versi, dan contohnya.
// Define labeled example
var labeledExampleUtteranceWithMLEntity = new ExampleLabelObject
{
Text = "I want two small seafood pizzas with extra cheese.",
IntentName = intentName,
EntityLabels = new[]
{
new EntityLabelObject
{
StartCharIndex = 7,
EndCharIndex = 48,
EntityName = "Pizza order",
Children = new[]
{
new EntityLabelObject
{
StartCharIndex = 7,
EndCharIndex = 30,
EntityName = "Pizza",
Children = new[]
{
new EntityLabelObject { StartCharIndex = 7, EndCharIndex = 9, EntityName = "Quantity" },
new EntityLabelObject { StartCharIndex = 11, EndCharIndex = 15, EntityName = "Size" },
new EntityLabelObject { StartCharIndex = 17, EndCharIndex = 23, EntityName = "Type" }
}
},
new EntityLabelObject
{
StartCharIndex = 37,
EndCharIndex = 48,
EntityName = "Toppings",
Children = new[]
{
new EntityLabelObject { StartCharIndex = 37, EndCharIndex = 41, EntityName = "Quantity" },
new EntityLabelObject { StartCharIndex = 43, EndCharIndex = 48, EntityName = "Type" }
}
}
}
},
}
};
// Add an example for the entity.
// Enable nested children to allow using multiple models with the same name.
// The quantity subentity and the phraselist could have the same exact name if this is set to True
await client.Examples.AddAsync(appId, versionId, labeledExampleUtteranceWithMLEntity, enableNestedChildren: true);
Melatih aplikasi
Setelah model dibuat, aplikasi LUIS perlu dilatih untuk versi model ini. Model terlatih dapat digunakan dalam kontainer, atau diterbitkan ke penahapan atau slot produk.
Metode Train.TrainVersionAsync memerlukan ID aplikasi dan ID versi.
Model yang sangat kecil, seperti yang ditunjukkan mulai cepat ini, akan berlatih dengan sangat cepat. Untuk aplikasi tingkat produksi, pelatihan aplikasi harus menyertakan panggilan polling ke metode GetStatusAsync untuk menentukan kapan atau apakah pelatihan berhasil. Responsnya adalah daftar objek ModelTrainingInfo dengan status terpisah untuk setiap objek. Semua objek harus berhasil agar pelatihan dianggap selesai.
await client.Train.TrainVersionAsync(appId, versionId);
while (true)
{
var status = await client.Train.GetStatusAsync(appId, versionId);
if (status.All(m => m.Details.Status == "Success"))
{
// Assumes that we never fail, and that eventually we'll always succeed.
break;
}
}
Menerbitkan aplikasi ke slot produksi
Terbitkan aplikasi LUIS menggunakan metode PublishAsync. Metode ini menerbitkan versi terlatih saat ini ke slot yang ditentukan di titik akhir. Aplikasi klien Anda menggunakan titik akhir ini guna mengirim ucapan pengguna untuk prediksi maksud dan ekstraksi entitas.
await client.Apps.PublishAsync(appId, new ApplicationPublishObject { VersionId = versionId, IsStaging=false});
Mengautentikasi klien runtime prediksi
Buat objek ApiKeyServiceClientCredentials dengan kunci Anda, dan gunakan dengan titik akhir Anda untuk membuat objek LUISRuntimeClient.
Perhatian
Mulai cepat ini menggunakan kunci penulisan sebagai bagian dari kredensial runtime. Kunci penulisan diizinkan untuk mengkueri runtime dengan beberapa kueri. Untuk penahapan dan kode tingkat produksi, ganti kunci penulisan dengan kunci runtime prediksi.
var runtimeClient = new LUISRuntimeClient(credentials) { Endpoint = predictionEndpoint };
Mendapatkan prediksi dari runtime
Tambahkan kode berikut untuk membuat permintaan ke runtime prediksi.
Ucapan pengguna adalah bagian dari objek PredictionRequest.
Metode GetSlotPredictionAsync membutuhkan beberapa parameter seperti ID aplikasi, nama slot, dan objek permintaan prediksi untuk memenuhi permintaan. Opsi lain seperti verbose, tampilkan semua niat, dan log bersifat opsional.
// Production == slot name
var request = new PredictionRequest { Query = "I want two small pepperoni pizzas with more salsa" };
var prediction = await runtimeClient.Prediction.GetSlotPredictionAsync(appId, "Production", request);
Console.Write(JsonConvert.SerializeObject(prediction, Formatting.Indented));
Respon prediksi adalah objek JSON termasuk niat dan entitas apa pun yang ditemukan.
{
"query": "I want two small pepperoni pizzas with more salsa",
"prediction": {
"topIntent": "OrderPizzaIntent",
"intents": {
"OrderPizzaIntent": {
"score": 0.753606856
},
"None": {
"score": 0.119097039
}
},
"entities": {
"Pizza order": [
{
"Pizza": [
{
"Quantity": [
2
],
"Type": [
"pepperoni"
],
"Size": [
"small"
],
"$instance": {
"Quantity": [
{
"type": "builtin.number",
"text": "two",
"startIndex": 7,
"length": 3,
"score": 0.968156934,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Type": [
{
"type": "Type",
"text": "pepperoni",
"startIndex": 17,
"length": 9,
"score": 0.9345611,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Size": [
{
"type": "Size",
"text": "small",
"startIndex": 11,
"length": 5,
"score": 0.9592077,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"Toppings": [
{
"Type": [
"salsa"
],
"Quantity": [
"more"
],
"$instance": {
"Type": [
{
"type": "Type",
"text": "salsa",
"startIndex": 44,
"length": 5,
"score": 0.7292897,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Quantity": [
{
"type": "Quantity",
"text": "more",
"startIndex": 39,
"length": 4,
"score": 0.9320932,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza": [
{
"type": "Pizza",
"text": "two small pepperoni pizzas",
"startIndex": 7,
"length": 26,
"score": 0.812199831,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Toppings": [
{
"type": "Toppings",
"text": "more salsa",
"startIndex": 39,
"length": 10,
"score": 0.7250252,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza order": [
{
"type": "Pizza order",
"text": "two small pepperoni pizzas with more salsa",
"startIndex": 7,
"length": 42,
"score": 0.769223332,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
}
}
Jalankan aplikasi
Menjalankan aplikasi dengan perintah dotnet run
dari direktori aplikasi Anda.
dotnet run
Gunakan pustaka klien Language Understanding (LUIS) terhadap Node.js untuk:
- Membuat aplikasi
- Tambahkan niat, entitas yang dipelajari mesin dengan contoh ucapan
- Latih dan terbitkan aplikasi
- Runtime prediksi kueri
Dokumentasi | referensi Penulisan dan Prediksi NPM | Sampel
Prasyarat
- Node.js
- Langganan Azure - Buat langganan secara gratis
- Setelah memiliki langganan Azure, buat sumber daya penulisan Language Understanding (LUIS) di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga itu menyebar dan klik tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang dibuat untuk menghubungkan aplikasi ke penulisan Language Understanding (LUIS). Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang dibuat untuk menghubungkan aplikasi ke penulisan Language Understanding (LUIS). Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat. Anda dapat menggunakan tingkat harga gratis (
Menyiapkan
Membuat aplikasi JavaScript baru
Di jendela konsol, buat direktori baru untuk aplikasi Anda lalu pindah ke direktori tersebut.
mkdir quickstart-sdk && cd quickstart-sdk
Inisialisasi direktori sebagai aplikasi JavaScript dengan membuat file
package.json
.npm init -y
Buat file bernama
index.js
untuk kode JavaScript Anda.touch index.js
Memasang pustaka NPM
Dalam direktori aplikasi, pasang dependensi dengan perintah berikut, dijalankan satu baris pada satu waktu:
npm install @azure/ms-rest-js
npm install @azure/cognitiveservices-luis-authoring
npm install @azure/cognitiveservices-luis-runtime
package.json
Anda harus terlihat seperti:
{
"name": "quickstart-sdk",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@azure/cognitiveservices-luis-authoring": "^4.0.0-preview.3",
"@azure/cognitiveservices-luis-runtime": "^5.0.0",
"@azure/ms-rest-js": "^2.0.8"
}
}
Model Objek Penulisan
Klien penulisan Pemahaman Bahasa (LUIS) adalah objek LUISAuthoringClient yang mengautentikasi ke Azure, yang berisi kunci penulisan Anda.
Contoh kode untuk penulisan
Setelah klien dibuat, gunakan klien ini untuk mengakses fungsionalitas termasuk:
- Aplikasi - menambahkan, menghapus, menerbitkan
- Contoh ujaran - menambahkan menurut batch, menghapus menurut ID
- Fitur - mengelola daftar frasa
- Model - mengelola niat dan entitas
- Pola - mengelola pola
- Latih - melatih aplikasi dan polling untuk status pelatihan
- Versi - mengelola, mengekspor, dan menghapus klon
Model Objek Prediksi
Klien penulisan Pemahaman Bahasa (LUIS) adalah objek LUISAuthoringClient yang mengautentikasi ke Azure, yang berisi kunci penulisan Anda.
Contoh kode untuk runtime prediksi
Setelah klien dibuat, gunakan klien ini untuk mengakses fungsionalitas termasuk:
- Prediksi menurut
staging
atau slotproduction
- Prediksi menurut versi
Contoh kode
Cuplikan kode ini menunjukkan kepada Anda cara melakukan hal berikut dengan pustaka klien Language Understanding (LUIS) untuk python:
- Membuat aplikasi
- Menambahkan niat
- Menambahkan entitas
- Menambahkan ucapan contoh
- Melatih aplikasi
- Menerbitkan aplikasi
- Memprediksi menurut slot
Menambahkan dependensi
Buka file index.js
di editor pilihan Anda atau beri nama IDE lalu tambahkan dependensi berikut.
const msRest = require("@azure/ms-rest-js");
const LUIS_Authoring = require("@azure/cognitiveservices-luis-authoring");
const LUIS_Prediction = require("@azure/cognitiveservices-luis-runtime");
Menambahkan kode boilerplate
Menambahkan metode
quickstart
dan panggilannya. Metode ini menyimpan sebagian besar kode yang tersisa. Metode ini dipanggil di akhir file.const quickstart = async () => { // add calls here } quickstart() .then(result => console.log("Done")) .catch(err => { console.log(`Error: ${err}`) })
Tambahkan kode yang tersisa dalam metode mulai cepat kecuali jika ditentukan yang lain.
Membuat variabel untuk aplikasi
Membuat dua set variabel: set pertama yang Anda ubah, set kedua dibiarkan seperti yang muncul dalam sampel kode.
Penting
Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.
Membuat variabel untuk menyimpan kunci penulisan dan nama sumber daya Anda.
const authoringKey = 'PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE'; const authoringEndpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; const predictionEndpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
Membuat variabel untuk menyimpan titik akhir, nama aplikasi, versi, dan nama niat Anda.
const appName = "Contoso Pizza Company"; const versionId = "0.1"; const intentName = "OrderPizzaIntent";
Mengautentikasi klien
Buat objek CognitiveServicesCredentials dengan kunci Anda, dan gunakan dengan titik akhir Anda untuk membuat objek LUISAuthoringClient.
const luisAuthoringCredentials = new msRest.ApiKeyCredentials({
inHeader: { "Ocp-Apim-Subscription-Key": authoringKey }
});
const client = new LUIS_Authoring.LUISAuthoringClient(
luisAuthoringCredentials,
authoringEndpoint
);
Membuat aplikasi LUIS baru
Aplikasi LUIS berisi model pemrosesan bahasa alami (NLP) termasuk niat, entitas, dan contoh ucapan.
Buat metode tambahkan objek AppsOperation untuk membuat aplikasi. Nama dan budaya bahasa adalah properti yang diperlukan.
const create_app_payload = {
name: appName,
initialVersionId: versionId,
culture: "en-us"
};
const createAppResult = await client.apps.add(
create_app_payload
);
const appId = createAppResult.body
Membuat niat untuk aplikasi
Objek utama dalam model aplikasi LUIS adalah niat. Niat selaras dengan pengelompokan maksud ucapan pengguna. Pengguna dapat mengajukan pertanyaan, atau membuat pernyataan yang mencari respons tertentu yang dimaksudkan dari bot (atau aplikasi klien lain). Contoh maksud adalah memesan tiket penerbangan, menanyakan cuaca di kota tujuan, dan menanyakan informasi kontak layanan pelanggan.
Gunakan metode model.add_intent dengan nama niat yang unik, kemudian teruskan ID aplikasi, ID versi, dan nama niat baru.
intentName
Nilainya dikodekan secara permanenOrderPizzaIntent
sebagai bagian dari variabel di bagian Membuat variabel untuk aplikasi.
await client.model.addIntent(
appId,
versionId,
{ name: intentName }
);
Membuat entitas untuk aplikasi
Meskipun tidak diperlukan, entitas dapat ditemukan di sebagian besar aplikasi. Entitas mengekstrak informasi dari ucapan pengguna, yang diperlukan untuk memenuhi maksud pengguna. Ada beberapa tipe entitas bawaan dan kustom, masing-masing dengan model objek transformasi datanya (DTO) sendiri. Entitas bawaan umum untuk ditambahkan ke aplikasi Anda termasuk angka,datetimeV2,geographyV2,ordinal.
Penting untuk diketahui bahwa entitas tidak ditandai dengan niat. Entitas dapat dan biasanya berlaku untuk banyak niat. Hanya contoh ucapan pengguna yang ditandai untuk satu niat tertentu.
Metode pembuatan untuk entitas adalah bagian dari kelas Model. Setiap jenis entitas memiliki model objek transformasi data (DTO) sendiri.
Kode pembuatan entitas membuat entitas pembelajaran mesin dengan subentitas dan fitur yang diterapkan ke subentitas Quantity
.
// Add Prebuilt entity
await client.model.addPrebuilt(appId, versionId, ["number"]);
// Define ml entity with children and grandchildren
const mlEntityDefinition = {
name: "Pizza order",
children: [
{
name: "Pizza",
children: [
{ name: "Quantity" },
{ name: "Type" },
{ name: "Size" }
]
},
{
name: "Toppings",
children: [
{ name: "Type" },
{ name: "Quantity" }
]
}
]
};
// Add ML entity
const response = await client.model.addEntity(appId, versionId, mlEntityDefinition);
const mlEntityId = response.body;
// Add phraselist feature
const phraselistResponse = await client.features.addPhraseList(appId, versionId, {
enabledForAllModels: false,
isExchangeable: true,
name: "QuantityPhraselist",
phrases: "few,more,extra"
});
const phraseListId = phraselistResponse.body;
// Get entity and subentities
const model = await client.model.getEntity(appId, versionId, mlEntityId);
const toppingQuantityId = getModelGrandchild(model, "Toppings", "Quantity");
const pizzaQuantityId = getModelGrandchild(model, "Pizza", "Quantity");
// add model as feature to subentity model
await client.features.addEntityFeature(appId, versionId, pizzaQuantityId, { modelName: "number", isRequired: true });
await client.features.addEntityFeature(appId, versionId, toppingQuantityId, { modelName: "number" });
// add phrase list as feature to subentity model
await client.features.addEntityFeature(appId, versionId, toppingQuantityId, { featureName: "QuantityPhraselist" });
Tempatkan metode berikut di atas metode quickstart
untuk menemukan ID subentitas Kuantitas, guna menetapkan fitur ke subentitas tersebut.
const getModelGrandchild = (model, childName, grandchildName) => {
return model.children.find(c => c.name == childName).children.find(c => c.name == grandchildName).id
}
Menambahkan contoh ucapan ke niat
Untuk menentukan maksud ucapan dan mengekstrak entitas, aplikasi membutuhkan contoh ucapan. Contohnya perlu menargetkan niat tunggal tertentu dan harus menandai semua entitas kustom. Entitas bawaan tidak perlu ditandai.
Tambahkan contoh ucapan dengan membuat daftar objek ExampleLabelObject, satu objek untuk setiap contoh ucapan. Setiap contoh harus menandai semua entitas dengan kamus nama/nilai pasangan nama dan nilai entitas. Nilai entitas harus sama dengan seperti yang muncul dalam teks ucapan contoh.
Panggil examples.add dengan ID aplikasi, ID versi, dan contohnya.
// Define labeled example
const labeledExampleUtteranceWithMLEntity =
{
text: "I want two small seafood pizzas with extra cheese.",
intentName: intentName,
entityLabels: [
{
startCharIndex: 7,
endCharIndex: 48,
entityName: "Pizza order",
children: [
{
startCharIndex: 7,
endCharIndex: 30,
entityName: "Pizza",
children: [
{
startCharIndex: 7,
endCharIndex: 9,
entityName: "Quantity"
},
{
startCharIndex: 11,
endCharIndex: 15,
entityName: "Size"
},
{
startCharIndex: 17,
endCharIndex: 23,
entityName: "Type"
}]
},
{
startCharIndex: 37,
endCharIndex: 48,
entityName: "Toppings",
children: [
{
startCharIndex: 37,
endCharIndex: 41,
entityName: "Quantity"
},
{
startCharIndex: 43,
endCharIndex: 48,
entityName: "Type"
}]
}
]
}
]
};
console.log("Labeled Example Utterance:", JSON.stringify(labeledExampleUtteranceWithMLEntity, null, 4 ));
// Add an example for the entity.
// Enable nested children to allow using multiple models with the same name.
// The quantity subentity and the phraselist could have the same exact name if this is set to True
await client.examples.add(appId, versionId, labeledExampleUtteranceWithMLEntity, { enableNestedChildren: true });
Melatih aplikasi
Setelah model dibuat, aplikasi LUIS perlu dilatih untuk versi model ini. Model terlatih dapat digunakan dalam kontainer, atau diterbitkan ke penahapan atau slot produk.
Metode train.trainVersion memerlukan ID aplikasi dan ID versi.
Model yang sangat kecil, seperti yang ditunjukkan mulai cepat ini, akan berlatih dengan sangat cepat. Untuk aplikasi tingkat produksi, pelatihan aplikasi harus menyertakan panggilan polling ke metode get_status untuk menentukan kapan atau apakah pelatihan berhasil. Responsnya adalah daftar objek ModelTrainingInfo dengan status terpisah untuk setiap objek. Semua objek harus berhasil agar pelatihan dianggap selesai.
await client.train.trainVersion(appId, versionId);
while (true) {
const status = await client.train.getStatus(appId, versionId);
if (status.every(m => m.details.status == "Success")) {
// Assumes that we never fail, and that eventually we'll always succeed.
break;
}
}
Menerbitkan aplikasi ke slot produksi
Terbitkan aplikasi LUIS menggunakan metode app.publish. Metode ini menerbitkan versi terlatih saat ini ke slot yang ditentukan di titik akhir. Aplikasi klien Anda menggunakan titik akhir ini guna mengirim ucapan pengguna untuk prediksi maksud dan ekstraksi entitas.
await client.apps.publish(appId, { versionId: versionId, isStaging: false });
Mengautentikasi klien runtime prediksi
Gunakan objek msRest.ApiKeyCredentials dengan kunci Anda, lalu gunakan dengan titik akhir Anda untuk membuat objek LUIS.LUISRuntimeClient.
Perhatian
Mulai cepat ini menggunakan kunci penulisan sebagai bagian dari kredensial runtime. Kunci penulisan diizinkan untuk mengkueri runtime dengan beberapa kueri. Untuk penahapan dan kode tingkat produksi, ganti kunci penulisan dengan kunci runtime prediksi.
const luisPredictionClient = new LUIS_Prediction.LUISRuntimeClient(
luisAuthoringCredentials,
predictionEndpoint
);
Mendapatkan prediksi dari runtime
Tambahkan kode berikut untuk membuat permintaan ke runtime prediksi. Ujaran pengguna adalah bagian dari objek predictionRequest.
Metode luisRuntimeClient.prediction.getSlotPrediction membutuhkan beberapa parameter seperti ID aplikasi, nama slot, dan objek permintaan prediksi untuk memenuhi permintaan. Opsi lain seperti verbose, tampilkan semua niat, dan log bersifat opsional.
// Production == slot name
const request = { query: "I want two small pepperoni pizzas with more salsa" };
const response = await luisPredictionClient.prediction.getSlotPrediction(appId, "Production", request);
console.log(JSON.stringify(response.prediction, null, 4 ));
Respon prediksi adalah objek JSON termasuk niat dan entitas apa pun yang ditemukan.
{
"query": "I want two small pepperoni pizzas with more salsa",
"prediction": {
"topIntent": "OrderPizzaIntent",
"intents": {
"OrderPizzaIntent": {
"score": 0.753606856
},
"None": {
"score": 0.119097039
}
},
"entities": {
"Pizza order": [
{
"Pizza": [
{
"Quantity": [
2
],
"Type": [
"pepperoni"
],
"Size": [
"small"
],
"$instance": {
"Quantity": [
{
"type": "builtin.number",
"text": "two",
"startIndex": 7,
"length": 3,
"score": 0.968156934,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Type": [
{
"type": "Type",
"text": "pepperoni",
"startIndex": 17,
"length": 9,
"score": 0.9345611,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Size": [
{
"type": "Size",
"text": "small",
"startIndex": 11,
"length": 5,
"score": 0.9592077,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"Toppings": [
{
"Type": [
"salsa"
],
"Quantity": [
"more"
],
"$instance": {
"Type": [
{
"type": "Type",
"text": "salsa",
"startIndex": 44,
"length": 5,
"score": 0.7292897,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Quantity": [
{
"type": "Quantity",
"text": "more",
"startIndex": 39,
"length": 4,
"score": 0.9320932,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza": [
{
"type": "Pizza",
"text": "two small pepperoni pizzas",
"startIndex": 7,
"length": 26,
"score": 0.812199831,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Toppings": [
{
"type": "Toppings",
"text": "more salsa",
"startIndex": 39,
"length": 10,
"score": 0.7250252,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza order": [
{
"type": "Pizza order",
"text": "two small pepperoni pizzas with more salsa",
"startIndex": 7,
"length": 42,
"score": 0.769223332,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
}
}
Jalankan aplikasi
Jalankan aplikasi dengan perintah node index.js
pada file mulai cepat Anda.
node index.js
Gunakan pustaka klien Pemahaman Bahasa (LUIS) pada Pyhton untuk:
- Membuat aplikasi
- Tambahkan niat, entitas yang dipelajari mesin dengan contoh ucapan
- Latih dan terbitkan aplikasi
- Runtime prediksi kueri
Dokumentasi referensi | Penulisan dan Prediksi Kode sumber pustaka | Paket (Pypi) | Sampel
Prasyarat
- Versi Python 3.x saat ini.
- Langganan Azure - Buat langganan secara gratis
- Setelah memiliki langganan Azure, buat sumber daya penulisan Language Understanding (LUIS) di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga itu menyebar dan klik tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang dibuat untuk menghubungkan aplikasi ke penulisan Language Understanding (LUIS). Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang dibuat untuk menghubungkan aplikasi ke penulisan Language Understanding (LUIS). Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat. Anda dapat menggunakan tingkat harga gratis (
Menyiapkan
Membuat aplikasi Python baru
Di jendela konsol, buat direktori baru untuk aplikasi Anda lalu pindah ke direktori tersebut.
mkdir quickstart-sdk && cd quickstart-sdk
Buat file yang diberi nama
authoring_and_predict.py
untuk kode Python Anda.touch authoring_and_predict.py
Menginstal pustaka klien dengan Pip
Di dalam direktori aplikasi, instal pustaka klien Language Understanding (LUIS) untuk Python dengan perintah berikut:
pip install azure-cognitiveservices-language-luis
Model Objek Penulisan
Klien penulisan Pemahaman Bahasa (LUIS) adalah objek LUISAuthoringClient yang mengautentikasi ke Azure, yang berisi kunci penulisan Anda.
Contoh kode untuk penulisan
Setelah klien dibuat, gunakan klien ini untuk mengakses fungsionalitas termasuk:
- Aplikasi - buat, hapus, terbitkan
- Contoh ujaran - menambahkan menurut batch, menghapus menurut ID
- Fitur - mengelola daftar frasa
- Model - mengelola niat dan entitas
- Pola - mengelola pola
- Latih - melatih aplikasi dan polling untuk status pelatihan
- Versi - mengelola, mengekspor, dan menghapus klon
Model Objek Prediksi
Klien runtime prediksi Pemahaman Bahasa (LUIS) adalah objek LUISRuntimeClient yang mengautentikasi ke Azure, yang berisi kunci sumber daya Anda.
Contoh kode untuk runtime prediksi
Setelah klien dibuat, gunakan klien ini untuk mengakses fungsionalitas termasuk:
- Prediksi menurut penahapan atau slot produksi
- Prediksi menurut versi
Contoh kode
Cuplikan kode ini menunjukkan kepada Anda cara melakukan hal berikut dengan pustaka klien Language Understanding (LUIS) untuk python:
- Membuat aplikasi
- Menambahkan niat
- Menambahkan entitas
- Menambahkan ucapan contoh
- Melatih aplikasi
- Menerbitkan aplikasi
- Memprediksi menurut slot
Menambahkan dependensi
Menambahkan pustaka klien ke file Python.
from azure.cognitiveservices.language.luis.authoring import LUISAuthoringClient
from azure.cognitiveservices.language.luis.authoring.models import ApplicationCreateObject
from azure.cognitiveservices.language.luis.runtime import LUISRuntimeClient
from msrest.authentication import CognitiveServicesCredentials
from functools import reduce
import json, time, uuid
Menambahkan kode boilerplate
Menambahkan metode
quickstart
dan panggilannya. Metode ini menyimpan sebagian besar kode yang tersisa. Metode ini dipanggil di akhir file.def quickstart(): # add calls here, remember to indent properly quickstart()
Tambahkan kode yang tersisa dalam metode mulai cepat kecuali jika ditentukan yang lain.
Membuat variabel untuk aplikasi
Membuat dua set variabel: set pertama yang Anda ubah, set kedua dibiarkan seperti yang muncul dalam sampel kode.
Penting
Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.
Membuat variabel untuk menyimpan kunci penulisan dan nama sumber daya Anda.
authoringKey = 'PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE' authoringEndpoint = 'PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE' predictionKey = 'PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE' predictionEndpoint = 'PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE'
Membuat variabel untuk menyimpan titik akhir, nama aplikasi, versi, dan nama niat Anda.
# We use a UUID to avoid name collisions. appName = "Contoso Pizza Company " + str(uuid.uuid4()) versionId = "0.1" intentName = "OrderPizzaIntent"
Mengautentikasi klien
Buat objek CognitiveServicesCredentials dengan kunci Anda, dan gunakan dengan titik akhir Anda untuk membuat objek LUISAuthoringClient .
client = LUISAuthoringClient(authoringEndpoint, CognitiveServicesCredentials(authoringKey))
Membuat aplikasi LUIS baru
Aplikasi LUIS berisi model pemrosesan bahasa alami (NLP) termasuk niat, entitas, dan contoh ucapan.
Buat metode tambahkan objek AppsOperation untuk membuat aplikasi. Nama dan budaya bahasa adalah properti yang diperlukan.
# define app basics
appDefinition = ApplicationCreateObject (name=appName, initial_version_id=versionId, culture='en-us')
# create app
app_id = client.apps.add(appDefinition)
# get app id - necessary for all other changes
print("Created LUIS app with ID {}".format(app_id))
Membuat niat untuk aplikasi
Objek utama dalam model aplikasi LUIS adalah niat. Niat selaras dengan pengelompokan maksud ucapan pengguna. Pengguna dapat mengajukan pertanyaan, atau membuat pernyataan yang mencari respons tertentu yang dimaksudkan dari bot (atau aplikasi klien lain). Contoh maksud adalah memesan tiket penerbangan, menanyakan cuaca di kota tujuan, dan menanyakan informasi kontak layanan pelanggan.
Gunakan metode model.add_intent dengan nama niat yang unik, kemudian teruskan ID aplikasi, ID versi, dan nama niat baru.
intentName
Nilainya dikodekan secara permanenOrderPizzaIntent
sebagai bagian dari variabel di bagian Membuat variabel untuk aplikasi.
client.model.add_intent(app_id, versionId, intentName)
Membuat entitas untuk aplikasi
Meskipun tidak diperlukan, entitas dapat ditemukan di sebagian besar aplikasi. Entitas mengekstrak informasi dari ucapan pengguna, yang diperlukan untuk memenuhi maksud pengguna. Ada beberapa tipe entitas bawaan dan kustom, masing-masing dengan model objek transformasi datanya (DTO) sendiri. Entitas bawaan umum untuk ditambahkan ke aplikasi Anda termasuk angka,datetimeV2,geographyV2,ordinal.
Penting untuk diketahui bahwa entitas tidak ditandai dengan niat. Entitas dapat dan biasanya berlaku untuk banyak niat. Hanya contoh ucapan pengguna yang ditandai untuk satu niat tertentu.
Metode pembuatan untuk entitas adalah bagian dari kelas ModelOperations. Setiap jenis entitas memiliki model objek transformasi data (DTO) sendiri.
Kode pembuatan entitas membuat entitas pembelajaran mesin dengan subentitas dan fitur yang diterapkan ke subentitas Quantity
.
# Add Prebuilt entity
client.model.add_prebuilt(app_id, versionId, prebuilt_extractor_names=["number"])
# define machine-learned entity
mlEntityDefinition = [
{
"name": "Pizza",
"children": [
{ "name": "Quantity" },
{ "name": "Type" },
{ "name": "Size" }
]
},
{
"name": "Toppings",
"children": [
{ "name": "Type" },
{ "name": "Quantity" }
]
}]
# add entity to app
modelId = client.model.add_entity(app_id, versionId, name="Pizza order", children=mlEntityDefinition)
# define phraselist - add phrases as significant vocabulary to app
phraseList = {
"enabledForAllModels": False,
"isExchangeable": True,
"name": "QuantityPhraselist",
"phrases": "few,more,extra"
}
# add phrase list to app
phraseListId = client.features.add_phrase_list(app_id, versionId, phraseList)
# Get entity and subentities
modelObject = client.model.get_entity(app_id, versionId, modelId)
toppingQuantityId = get_grandchild_id(modelObject, "Toppings", "Quantity")
pizzaQuantityId = get_grandchild_id(modelObject, "Pizza", "Quantity")
# add model as feature to subentity model
prebuiltFeatureRequiredDefinition = { "model_name": "number", "is_required": True }
client.features.add_entity_feature(app_id, versionId, pizzaQuantityId, prebuiltFeatureRequiredDefinition)
# add model as feature to subentity model
prebuiltFeatureNotRequiredDefinition = { "model_name": "number" }
client.features.add_entity_feature(app_id, versionId, toppingQuantityId, prebuiltFeatureNotRequiredDefinition)
# add phrase list as feature to subentity model
phraseListFeatureDefinition = { "feature_name": "QuantityPhraselist", "model_name": None }
client.features.add_entity_feature(app_id, versionId, toppingQuantityId, phraseListFeatureDefinition)
Tempatkan metode berikut di atas metode quickstart
untuk menemukan ID subentitas Kuantitas, guna menetapkan fitur ke subentitas tersebut.
def get_grandchild_id(model, childName, grandChildName):
theseChildren = next(filter((lambda child: child.name == childName), model.children))
theseGrandchildren = next(filter((lambda child: child.name == grandChildName), theseChildren.children))
grandChildId = theseGrandchildren.id
return grandChildId
Menambahkan contoh ucapan ke niat
Untuk menentukan maksud ucapan dan mengekstrak entitas, aplikasi membutuhkan contoh ucapan. Contohnya perlu menargetkan niat tunggal tertentu dan harus menandai semua entitas kustom. Entitas bawaan tidak perlu ditandai.
Tambahkan contoh ucapan dengan membuat daftar objek ExampleLabelObject, satu objek untuk setiap contoh ucapan. Setiap contoh harus menandai semua entitas dengan kamus nama/nilai pasangan nama dan nilai entitas. Nilai entitas harus sama dengan seperti yang muncul dalam teks ucapan contoh.
Panggil examples.add dengan ID aplikasi, ID versi, dan contohnya.
# Define labeled example
labeledExampleUtteranceWithMLEntity = {
"text": "I want two small seafood pizzas with extra cheese.",
"intentName": intentName,
"entityLabels": [
{
"startCharIndex": 7,
"endCharIndex": 48,
"entityName": "Pizza order",
"children": [
{
"startCharIndex": 7,
"endCharIndex": 30,
"entityName": "Pizza",
"children": [
{
"startCharIndex": 7,
"endCharIndex": 9,
"entityName": "Quantity"
},
{
"startCharIndex": 11,
"endCharIndex": 15,
"entityName": "Size"
},
{
"startCharIndex": 17,
"endCharIndex": 23,
"entityName": "Type"
}]
},
{
"startCharIndex": 37,
"endCharIndex": 48,
"entityName": "Toppings",
"children": [
{
"startCharIndex": 37,
"endCharIndex": 41,
"entityName": "Quantity"
},
{
"startCharIndex": 43,
"endCharIndex": 48,
"entityName": "Type"
}]
}
]
}
]
}
print("Labeled Example Utterance:", labeledExampleUtteranceWithMLEntity)
# Add an example for the entity.
# Enable nested children to allow using multiple models with the same name.
# The quantity subentity and the phraselist could have the same exact name if this is set to True
client.examples.add(app_id, versionId, labeledExampleUtteranceWithMLEntity, { "enableNestedChildren": True })
Melatih aplikasi
Setelah model dibuat, aplikasi LUIS perlu dilatih untuk versi model ini. Model terlatih dapat digunakan dalam kontainer, atau diterbitkan ke penahapan atau slot produk.
Metode train.train_version memerlukan ID aplikasi dan ID versi.
Model yang sangat kecil, seperti yang ditunjukkan mulai cepat ini, akan berlatih dengan sangat cepat. Untuk aplikasi tingkat produksi, pelatihan aplikasi harus menyertakan panggilan polling ke metode get_status untuk menentukan kapan atau apakah pelatihan berhasil. Responsnya adalah daftar objek ModelTrainingInfo dengan status terpisah untuk setiap objek. Semua objek harus berhasil agar pelatihan dianggap selesai.
client.train.train_version(app_id, versionId)
waiting = True
while waiting:
info = client.train.get_status(app_id, versionId)
# get_status returns a list of training statuses, one for each model. Loop through them and make sure all are done.
waiting = any(map(lambda x: 'Queued' == x.details.status or 'InProgress' == x.details.status, info))
if waiting:
print ("Waiting 10 seconds for training to complete...")
time.sleep(10)
else:
print ("trained")
waiting = False
Menerbitkan aplikasi ke slot produksi
Terbitkan aplikasi LUIS menggunakan metode app.publish. Metode ini menerbitkan versi terlatih saat ini ke slot yang ditentukan di titik akhir. Aplikasi klien Anda menggunakan titik akhir ini guna mengirim ucapan pengguna untuk prediksi maksud dan ekstraksi entitas.
# Mark the app as public so we can query it using any prediction endpoint.
# Note: For production scenarios, you should instead assign the app to your own LUIS prediction endpoint. See:
# https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-how-to-azure-subscription#assign-a-resource-to-an-app
client.apps.update_settings(app_id, is_public=True)
responseEndpointInfo = client.apps.publish(app_id, versionId, is_staging=False)
Mengautentikasi klien runtime prediksi
Gunakan objek kredensial dengan kunci Anda, lalu gunakan dengan titik akhir Anda untuk membuat objek LUISRuntimeClientConfiguration.
Perhatian
Mulai cepat ini menggunakan kunci penulisan sebagai bagian dari kredensial runtime. Kunci penulisan diizinkan untuk mengkueri runtime dengan beberapa kueri. Untuk penahapan dan kode tingkat produksi, ganti kunci penulisan dengan kunci runtime prediksi.
runtimeCredentials = CognitiveServicesCredentials(predictionKey)
clientRuntime = LUISRuntimeClient(endpoint=predictionEndpoint, credentials=runtimeCredentials)
Mendapatkan prediksi dari runtime
Tambahkan kode berikut untuk membuat permintaan ke runtime prediksi.
Ucapan pengguna adalah bagian dari objek prediction_request.
Metode get_slot_prediction membutuhkan beberapa parameter seperti ID aplikasi, nama slot, dan objek permintaan prediksi untuk memenuhi permintaan. Opsi lain seperti verbose, tampilkan semua niat, dan log bersifat opsional. Permintaan menampilkan objek PredictionResponse.
# Production == slot name
predictionRequest = { "query" : "I want two small pepperoni pizzas with more salsa" }
predictionResponse = clientRuntime.prediction.get_slot_prediction(app_id, "Production", predictionRequest)
print("Top intent: {}".format(predictionResponse.prediction.top_intent))
print("Sentiment: {}".format (predictionResponse.prediction.sentiment))
print("Intents: ")
for intent in predictionResponse.prediction.intents:
print("\t{}".format (json.dumps (intent)))
print("Entities: {}".format (predictionResponse.prediction.entities))
Respon prediksi adalah objek JSON termasuk niat dan entitas apa pun yang ditemukan.
{
"query": "I want two small pepperoni pizzas with more salsa",
"prediction": {
"topIntent": "OrderPizzaIntent",
"intents": {
"OrderPizzaIntent": {
"score": 0.753606856
},
"None": {
"score": 0.119097039
}
},
"entities": {
"Pizza order": [
{
"Pizza": [
{
"Quantity": [
2
],
"Type": [
"pepperoni"
],
"Size": [
"small"
],
"$instance": {
"Quantity": [
{
"type": "builtin.number",
"text": "two",
"startIndex": 7,
"length": 3,
"score": 0.968156934,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Type": [
{
"type": "Type",
"text": "pepperoni",
"startIndex": 17,
"length": 9,
"score": 0.9345611,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Size": [
{
"type": "Size",
"text": "small",
"startIndex": 11,
"length": 5,
"score": 0.9592077,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"Toppings": [
{
"Type": [
"salsa"
],
"Quantity": [
"more"
],
"$instance": {
"Type": [
{
"type": "Type",
"text": "salsa",
"startIndex": 44,
"length": 5,
"score": 0.7292897,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Quantity": [
{
"type": "Quantity",
"text": "more",
"startIndex": 39,
"length": 4,
"score": 0.9320932,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza": [
{
"type": "Pizza",
"text": "two small pepperoni pizzas",
"startIndex": 7,
"length": 26,
"score": 0.812199831,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Toppings": [
{
"type": "Toppings",
"text": "more salsa",
"startIndex": 39,
"length": 10,
"score": 0.7250252,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza order": [
{
"type": "Pizza order",
"text": "two small pepperoni pizzas with more salsa",
"startIndex": 7,
"length": 42,
"score": 0.769223332,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
}
}
Jalankan aplikasi
Jalankan aplikasi dengan perintah python
pada file mulai cepat Anda.
python authoring_and_predict.py
Dengan mengikuti mulai cepat ini, Anda akan melakukan tiga panggilan REST secara berurutan.
- Pertama, Anda akan mengunggah batch contoh ucapan, yang akan digunakan untuk melatih model aplikasi Pizza, menggunakan panggilan tambahkan label REST Batch.
- Selanjutnya, Anda akan memulai sesi pelatihan untuk aplikasi Pizza, menggunakan panggilan versi aplikasi REST Train.
- Terakhir, Anda akan mendapatkan status sesi latihan untuk aplikasi Pizza, menggunakan panggilan status pelatihan versi REST Get.
Prasyarat
Akun LUIS gratis.
Editor kode seperti Visual Studio Code.
Program baris perintah cURL. Program cURL sudah diinstal di macOS, sebagian besar distribusi Linux, dan Windows 10 build 1803 dan yang lebih baru.
Jika Anda perlu memasang cURL, Anda dapat mengunduh cURL dari halaman unduhan cURL.
Membuat aplikasi Pizza
Buat aplikasi pizza.
- Pilih pizza-app-for-luis-v6.json untuk memunculkan halaman GitHub untuk file
pizza-app-for-luis.json
tersebut. - Klik kanan atau ketuk lama tombol Mentah dan pilih Simpan tautan sebagai untuk menyimpan
pizza-app-for-luis.json
ke komputer Anda. - Masuk ke portal LUIS.
- Pilih Aplikasi Saya.
- Di halaman Aplikasi Saya, pilih + Aplikasi baru untuk percakapan.
- Pilih Impor sebagai JSON.
- Di dialog Impor aplikasi baru, pilih tombol Pilih File.
- Pilih file
pizza-app-for-luis.json
yang Anda unduh, lalu pilih Buka. - Di dialog Impor aplikasi baru bidang Nama, masukkan nama untuk aplikasi Pizza Anda, lalu pilih tombol Selesai.
Aplikasi akan diimpor.
Jika Anda melihat dialog Cara membuat aplikasi LUIS yang efektif, tutup dialog.
Melatih dan menerbitkan aplikasi Pizza
Anda akan melihat halaman Niat dengan daftar niat di aplikasi Pizza.
Di sisi kanan atas situs web LUIS, pilih tombol Train.
Pelatihan selesai ketika tombol Train dinonaktifkan.
Untuk menerima prediksi LUIS di bot obrolan atau aplikasi klien lainnya, Anda perlu memublikasikan aplikasi ke titik akhir prediksi.
Pilih Terbitkan di navigasi kanan atas.
Pilih slot Produksi, lalu pilih Selesai.
Pilih Akses URL titik akhir Anda di pemberitahuan untuk masuk ke halaman Sumber Daya Azure. Anda hanya akan dapat melihat URL jika Anda memiliki sumber daya prediksi yang terkait dengan aplikasi. Anda juga bisa menemukan halaman Sumber Daya Azure dengan mengeklik Kelola.
Menambahkan sumber daya penulisan ke aplikasi Pizza
- Pilih KELOLA.
- Pilih Sumber daya Azure.
- Pilih Sumber Daya Penulisan.
- Pilih Ubah sumber daya penulisan.
Jika Anda memiliki sumber daya penulisan, masukkan Nama Penyewa, Nama Langganan, dan Nama sumber daya LUIS dari sumber daya penulisan Anda.
Jika Anda tidak memiliki sumber daya penulisan:
- Pilih Buat sumber daya baru.
- Masukkan Nama Penyewa, Nama Sumber Daya, Nama Langganan, dan Nama Grup Sumber Daya Azure.
Aplikasi Pizza Anda sekarang siap digunakan.
Mencatat nilai akses untuk aplikasi Pizza
Untuk menggunakan aplikasi Pizza baru, Anda memerlukan ID aplikasi, kunci penulisan, dan penulisan titik akhir aplikasi Pizza Anda. Untuk mendapatkan prediksi, Anda akan memerlukan titik akhir prediksi dan kunci prediksi terpisah.
Untuk menemukan nilai-nilai ini:
- Dari halaman Niat, pilih KELOLA.
- Dari halaman Pengaturan Aplikasi, rekam ID Aplikasi.
- Pilih Sumber daya Azure.
- Pilih Sumber Daya Penulisan.
- Dari tab Sumber Daya Penulisan dan Sumber Daya Prediksi, catat Kunci Primer. Nilai ini adalah kunci penulisan Anda.
- Rekam URL Titik Akhir. Nilai ini adalah titik akhir penulisan Anda.
Buat file JSON untuk melatih aplikasi Pizza
Untuk membuat file JSON dengan tiga contoh ujaran, simpan data JSON berikut ke file bernama ExampleUtterances.JSON
:
[
{
"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
}
]
}
]`
Contoh ucapan mengikuti format tertentu.
Bidang text
berisi teks ucapan contoh. Bidang intentName
harus sesuai dengan nama niat yang ada di aplikasi LUIS. Bidang entityLabels
wajib diisi. Jika Anda tidak ingin memberi label entitas apa pun, berikan array kosong.
Jika array entityLabels tidak kosong, startCharIndex
dan endCharIndex
perlu menandai entitas yang dimaksud di bidang entityName
. Indeks berbasis nol. Jika Anda memulai atau mengakhiri label di spasi dalam teks, panggilan API untuk menambahkan ucapan gagal.
Menambahkan contoh ucapan
Untuk mengunggah batch ucapan contoh, salin perintah ini ke editor teks Anda:
curl "***YOUR-AUTHORING-ENDPOINT***/luis/authoring/v3.0-preview/apps/***YOUR-APP-ID***/versions/***YOUR-APP-VERSION***/examples?verbose=true&show-all-intents=true" ^ --request POST ^ --header "Content-Type:application/json" ^ --header "Ocp-Apim-Subscription-Key: ***YOUR-AUTHORING-KEY***" ^ --data "@ExampleUtterances.JSON"
Ganti nilai yang dimulai dengan
***YOUR-
nilai Anda sendiri.Informasi Tujuan ***YOUR-AUTHORING-ENDPOINT***
Titik akhir URL penulisan. Misalnya, "https://REPLACE-WITH-YOUR-RESOURCE-NAME.api.cognitive.microsoft.com/". Anda mengatur nama sumber daya saat membuat sumber daya. ***YOUR-APP-ID***
ID aplikasi LUIS. ***YOUR-APP-VERSION***
Versi aplikasi LUIS. Untuk aplikasi Pizza, nomor versinya adalah "0.1" tanpa tanda kutip. ***YOUR-AUTHORING-KEY***
Kunci penulisan 32 karakter. Kunci dan sumber daya yang ditetapkan terlihat di portal LUIS di bagian Kelola, di halaman Sumber daya Azure. ID aplikasi tersedia di bagian Kelola yang sama, pada halaman Pengaturan Aplikasi.
Penting
Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.
Mulai Perintah (Windows) atau Terminal (macOS dan Linux), dan ubah direktori ke direktori yang sama saat Anda menyimpan
ExampleUtterances.JSON
file.Salin perintah cURL dari editor, dan tempelkan ke Perintah (Windows) atau Terminal (macOS dan Linux). Tekan Enter untuk menjalankan perintah.
Anda akan melihat respon berikut.
[{"value":{"ExampleId":1255129706,"UtteranceText":"order a pizza"},"hasError":false},{"value":{"ExampleId":1255129707,"UtteranceText":"order a large pepperoni pizza"},"hasError":false},{"value":{"ExampleId":1255129708,"UtteranceText":"i want two large pepperoni pizzas on thin crust"},"hasError":false}]
Berikut adalah output yang diformat untuk keterbacaan:
[ { "value": { "ExampleId": 1255129706, "UtteranceText": "order a pizza" }, "hasError": false }, { "value": { "ExampleId": 1255129707, "UtteranceText": "order a large pepperoni pizza" }, "hasError": false }, { "value": { "ExampleId": 1255129708, "UtteranceText": "i want two large pepperoni pizzas on thin crust" }, "hasError": false } ]
Latih model aplikasi Pizza
Untuk memulai sesi pelatihan untuk aplikasi Pizza, salin perintah ini ke editor teks Anda:
curl "***YOUR-AUTHORING-ENDPOINT***/luis/authoring/v3.0-preview/apps/***YOUR-APP-ID***/versions/***YOUR-APP-VERSION***/train?verbose=true&show-all-intents=true" ^ --data "" ^ --request POST ^ --header "Content-Type:application/json" ^ --header "Ocp-Apim-Subscription-Key: ***YOUR-AUTHORING-KEY***"
Ganti nilai yang dimulai dengan
***YOUR-
dengan nilai Anda sendiri.Salin perintah cURL dari editor, dan tempelkan ke Perintah (Windows) atau Terminal (macOS dan Linux). Tekan Enter untuk menjalankan perintah.
Anda akan melihat respon berikut.
{"statusId":2,"status":"UpToDate"}
Berikut adalah output yang diformat untuk keterbacaan:
{ "statusId": 2, "status": "UpToDate" }
Dapatkan status pelatihan
Untuk mendapatkan status pelatihan untuk sesi pelatihan, salin perintah ini ke editor teks Anda:
curl "***YOUR-AUTHORING-ENDPOINT***/luis/authoring/v3.0-preview/apps/***YOUR-APP-ID***/versions/***YOUR-APP-VERSION***/train?verbose=true&show-all-intents=true" ^ --request GET ^ --header "Content-Type:application/json" ^ --header "Ocp-Apim-Subscription-Key: ***YOUR-AUTHORING-KEY***"
Ganti nilai yang dimulai dengan
***YOUR-
dengan nilai Anda sendiri.Salin perintah cURL dari editor, dan tempelkan ke Perintah (Windows) atau Terminal (macOS dan Linux). Tekan Enter untuk menjalankan perintah.
Anda akan melihat respon berikut.
[{"modelId":"8eb7ad8f-5db5-4c28-819b-ca3905fffd80","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"6f53bc92-ae54-44ce-bc4e-010d1f8cfda0","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"6cb17888-ad6e-464c-82c0-d37fd1f2c4f8","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"a16fc4fd-1949-4e77-9de3-30369f16c3a5","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"6bacdb75-1889-4f93-8971-8c8995ff8960","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"be963f4c-4898-48d7-9eba-3c6af0867b9d","details":{"statusId":2,"status":"UpToDate","exampleCount":171}}]
Berikut adalah output yang diformat untuk keterbacaan:
[ { "modelId": "8eb7ad8f-5db5-4c28-819b-ca3905fffd80", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "6f53bc92-ae54-44ce-bc4e-010d1f8cfda0", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "6cb17888-ad6e-464c-82c0-d37fd1f2c4f8", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "a16fc4fd-1949-4e77-9de3-30369f16c3a5", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "6bacdb75-1889-4f93-8971-8c8995ff8960", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "be963f4c-4898-48d7-9eba-3c6af0867b9d", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } } ]
Mendapatkan intent dari titik akhir prediksi
Gunakan Go untuk mengkueri titik akhir prediksi dan dapatkan hasil prediksi.
Catatan
Perintah ini menggunakan titik akhir prediksi.
Salin perintah ini ke editor teks:
curl "https://***YOUR-PREDICTION-ENDPOINT***/luis/prediction/v3.0/apps/***YOUR-APP-ID***/slots/production/predict" ^ --request GET ^ --get ^ --data "subscription-key=***YOUR-PREDICTION-KEY***" ^ --data "verbose=true" ^ --data "show-all-intents=true" ^ --data-urlencode "query=I want two large pepperoni pizzas on thin crust please"
Ganti nilai yang dimulai dengan
***YOUR-
nilai Anda sendiri.Informasi Tujuan ***YOUR-PREDICTION-ENDPOINT***
Titik akhir URL prediksi Anda. Terletak di portal LUIS, halaman Azure Resources untuk aplikasi Anda.
Contohnya,https://westus.api.cognitive.microsoft.com/
.***YOUR-APP-ID***
ID aplikasi Anda. Terletak di portal LUIS, halaman Pengaturan Aplikasi untuk aplikasi Anda. ***YOUR-PREDICTION-KEY***
Kunci prediksi 32 karakter. Terletak di portal LUIS, halaman Azure Resources untuk aplikasi Anda. Salin teks ke jendela konsol dan tekan Enter untuk menjalankan perintah:
Tinjau respons prediksi, yang dikembalikan sebagai 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"]}]}}}}
Respons JSON diformat untuk keterbacaan:
{ "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" ] } ] } } } }
Membersihkan sumber daya
Anda dapat menghapus aplikasi dari portal LUIS dan menghapus sumber daya Azure dari portal Azure.
Jika Anda menggunakan REST API, hapus file ExampleUtterances.JSON
dari sistem file setelah Anda selesai memahami panduan mulai cepat ini.
Pemecahan Masalah
- Mengautentikasi ke pustaka klien - kesalahan autentikasi biasanya menunjukkan bahwa kunci & titik akhir yang digunakan salah. Panduan mulai cepat ini menggunakan kunci penulisan dan titik akhir untuk runtime prediksi sebagai kenyamanan, tetapi hanya akan berfungsi jika Anda belum menggunakan kuota bulanan. Jika Anda tidak dapat menggunakan kunci penulisan dan titik akhir, Anda perlu menggunakan tombol runtime prediksi dan titik akhir saat mengakses pustaka klien SDK runtime prediksi.
- Membuat entitas - jika Anda mendapatkan kesalahan membuat entitas pembelajaran mesin bersarang yang digunakan dalam tutorial ini, pastikan Anda menyalin kode dan tidak mengubah kode untuk membuat entitas yang berbeda.
- Membuat contoh ucapan - jika Anda mendapatkan kesalahan membuat contoh ujaran berlabel yang digunakan dalam tutorial ini, pastikan Anda menyalin kode dan tidak mengubahnya untuk membuat contoh berlabel yang berbeda.
- Pelatihan - jika Anda mendapatkan kesalahan pelatihan, ini biasanya menunjukkan aplikasi kosong (tidak ada niat dengan contoh ucapan), atau aplikasi dengan maksud atau entitas yang salah bentuk.
- Kesalahan lain-lain - karena kode memanggil ke pustaka klien dengan teks dan objek JSON, pastikan Anda belum mengubah kode.
Kesalahan lain - jika Anda mendapatkan kesalahan yang tidak tercakup dalam daftar sebelumnya, beri tahu kami dengan memberikan umpan balik di bagian bawah di halaman ini. Sertakan bahasa pemrograman dan versi pustaka klien yang Anda pasang.