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.

Menyiapkan

Membuat aplikasi C# baru

Buat aplikasi .NET Core baru di editor atau IDE pilihan Anda.

  1. Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah new dotnet untuk membuat aplikasi konsol baru bernama language-understanding-quickstart. Perintah ini membuat proyek C# "Halo Dunia" sederhana dengan satu file sumber: Program.cs.

    dotnet new console -n language-understanding-quickstart
    
  2. Ubah direktori Anda ke folder aplikasi yang baru dibuat.

    cd language-understanding-quickstart
    
  3. 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:

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:

Contoh kode

Cuplikan kode ini menunjukkan kepada Anda cara melakukan hal berikut dengan pustaka klien Language Understanding (LUIS) untuk python:

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

  1. Ubah tanda tangan metode Main untuk memungkinkan panggilan asinkron:

    public static async Task Main()
    
  2. Tambahkan kode lainnya dalam Main metode kelas Program 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.

  1. 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";
    
  2. 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.

intentNameNilainya 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.

Cuplikan layar parsial dari portal menunjukkan entitas yang dibuat, entitas pembelajaran mesin dengan subentitas dan fitur yang diterapkan ke subentitas `Kuantitas`.

// 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.

Cuplikan layar parsial memperlihatkan contoh ucapan berlabel di portal.

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.

Menyiapkan

Membuat aplikasi JavaScript baru

  1. Di jendela konsol, buat direktori baru untuk aplikasi Anda lalu pindah ke direktori tersebut.

    mkdir quickstart-sdk && cd quickstart-sdk
    
  2. Inisialisasi direktori sebagai aplikasi JavaScript dengan membuat file package.json.

    npm init -y
    
  3. 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:

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:

Contoh kode

Cuplikan kode ini menunjukkan kepada Anda cara melakukan hal berikut dengan pustaka klien Language Understanding (LUIS) untuk python:

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

  1. 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}`)
            })
    
  2. 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.

  1. 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";
    
  2. 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.

intentNameNilainya 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.

Cuplikan layar parsial dari portal menunjukkan entitas yang dibuat, entitas pembelajaran mesin dengan subentitas dan fitur yang diterapkan ke subentitas `Kuantitas`.

// 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.

Cuplikan layar parsial memperlihatkan contoh ucapan berlabel di portal.

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.

Menyiapkan

Membuat aplikasi Python baru

  1. Di jendela konsol, buat direktori baru untuk aplikasi Anda lalu pindah ke direktori tersebut.

    mkdir quickstart-sdk && cd quickstart-sdk
    
  2. 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:

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:

Contoh kode

Cuplikan kode ini menunjukkan kepada Anda cara melakukan hal berikut dengan pustaka klien Language Understanding (LUIS) untuk python:

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

  1. 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()
    
  2. 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.

  1. 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'
    
  2. 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.

intentNameNilainya 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.

Cuplikan layar parsial dari portal menunjukkan entitas yang dibuat, entitas pembelajaran mesin dengan subentitas dan fitur yang diterapkan ke subentitas `Kuantitas`.

# 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.

Cuplikan layar parsial memperlihatkan contoh ucapan berlabel di portal.

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.

Dokumentasi rujukan

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.

  1. Pilih pizza-app-for-luis-v6.json untuk memunculkan halaman GitHub untuk file pizza-app-for-luis.json tersebut.
  2. Klik kanan atau ketuk lama tombol Mentah dan pilih Simpan tautan sebagai untuk menyimpan pizza-app-for-luis.json ke komputer Anda.
  3. Masuk ke portal LUIS.
  4. Pilih Aplikasi Saya.
  5. Di halaman Aplikasi Saya, pilih + Aplikasi baru untuk percakapan.
  6. Pilih Impor sebagai JSON.
  7. Di dialog Impor aplikasi baru, pilih tombol Pilih File.
  8. Pilih file pizza-app-for-luis.json yang Anda unduh, lalu pilih Buka.
  9. 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.

  1. Di sisi kanan atas situs web LUIS, pilih tombol Train.

    Tombol Train

  2. 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.

  1. Pilih Terbitkan di navigasi kanan atas.

    Cuplikan layar tombol untuk menerbitkan ke titik akhir.

  2. Pilih slot Produksi, lalu pilih Selesai.

    Cuplikan layar penerbitan LUIS ke titik akhir.

  3. 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.

    Cuplikan layar pesan yang memperlihatkan aplikasi telah diterbitkan.

Menambahkan sumber daya penulisan ke aplikasi Pizza

  1. Pilih KELOLA.
  2. Pilih Sumber daya Azure.
  3. Pilih Sumber Daya Penulisan.
  4. 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:

  1. Pilih Buat sumber daya baru.
  2. 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:

  1. Dari halaman Niat, pilih KELOLA.
  2. Dari halaman Pengaturan Aplikasi, rekam ID Aplikasi.
  3. Pilih Sumber daya Azure.
  4. Pilih Sumber Daya Penulisan.
  5. Dari tab Sumber Daya Penulisan dan Sumber Daya Prediksi, catat Kunci Primer. Nilai ini adalah kunci penulisan Anda.
  6. 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

  1. 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"
    
  2. 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.

  3. Mulai Perintah (Windows) atau Terminal (macOS dan Linux), dan ubah direktori ke direktori yang sama saat Anda menyimpan ExampleUtterances.JSON file.

  4. 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

  1. 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***"
    
  2. Ganti nilai yang dimulai dengan ***YOUR- dengan nilai Anda sendiri.

  3. 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

  1. 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***"
    
  2. Ganti nilai yang dimulai dengan ***YOUR- dengan nilai Anda sendiri.

  3. 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.

  1. 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"
    
  2. 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.
  3. Salin teks ke jendela konsol dan tekan Enter untuk menjalankan perintah:

  4. 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.

Langkah berikutnya