クイック スタート:ナレッジ ベースの作成および管理Quickstart: Create and manage knowledge base

QnA Maker クライアント ライブラリの使用を開始します。Get started with the QnA Maker client library. 以下の手順に従って、パッケージをインストールし、基本タスクのコード例を試してみましょう。Follow these steps to install the package and try out the example code for basic tasks. QnA Maker を使用すると、FAQ ドキュメント、URL、製品マニュアルなどの半構造化コンテンツからの質問と回答サービスをいっそう強力にできます。QnA Maker enables you to power a question-and-answer service from your semi-structured content like FAQ documents, URLs, and product manuals.

.NET 用 QnA Maker クライアント ライブラリは、次の目的で使用することができます。Use the QnA Maker client library for .NET to:

  • ナレッジ ベースの作成Create a knowledge base
  • ナレッジ ベースの更新Update a knowledge base
  • ナレッジ ベースの公開Publish a knowledge base
  • 発行したエンドポイント キーの取得Get published endpoint key
  • 実行時間の長いタスクの待機Wait for long-running task
  • ナレッジ ベースの削除Delete knowledge base

リファレンス ドキュメント | ライブラリのソース コード | パッケージ (NuGet) | C# サンプルReference documentation | Library source code | Package (NuGet) | C# Samples

注意

2019 年 7 月 1 日より後に作成された新しいリソースには、カスタム サブドメイン名が使用されます。New resources created after July 1, 2019, will use custom subdomain names. リージョンのエンドポイントの詳細および全一覧については、「Cognitive Services のカスタム サブドメイン名」を参照してください。For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

前提条件Prerequisites

  • Azure サブスクリプション - 無料アカウントを作成しますAzure subscription - Create one for free
  • Visual Studio IDE または現在のバージョンの .NET CoreThe Visual Studio IDE or current version of .NET Core.
  • Azure サブスクリプションを入手したら、Azure portal で QnA Maker リソースを作成し、オーサリング キーとエンドポイントを取得します。Once you have your Azure subscription, create a QnA Maker resource in the Azure portal to get your authoring key and endpoint. デプロイされたら、 [リソースに移動] を選択します。After it deploys, select Go to resource.
    • アプリケーションを QnA Maker API に接続するには、作成したリソースのキーとエンドポイントが必要です。You will need the key and endpoint from the resource you create to connect your application to the QnA Maker API. このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。You'll paste your key and endpoint into the code below later in the quickstart.
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。You can use the free pricing tier (F0) to try the service, and upgrade later to a paid tier for production.

設定Setting up

QnA Maker Azure リソースを作成するCreate a QnA Maker Azure resource

Azure Cognitive Services は、ユーザーがサブスクライブする Azure リソースによって表されます。Azure Cognitive Services are represented by Azure resources that you subscribe to. Azure portal または Azure CLI を使用して、ローカル コンピューター上に QnA Maker のリソースを作成します。Create a resource for QnA Maker using the Azure portal or Azure CLI on your local machine.

対象のリソースのキーとエンドポイントを取得した後、QNAMAKER_SUBSCRIPTION_KEY という名前で、そのキーの環境変数を作成します。After getting a key and endpoint for your resource, create an environment variable for the key, named QNAMAKER_SUBSCRIPTION_KEY. リソース名は、エンドポイントの URL のカスタム サブドメインとして使用されます。The resource name is used as custom subdomain of the endpoint URL.

新しい C# アプリケーションを作成するCreate a new C# application

好みのエディターまたは IDE で、新しい .NET Core アプリケーションを作成します。Create a new .NET Core application in your preferred editor or IDE.

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、dotnet new コマンドを使用し、qna-maker-quickstart という名前で新しいコンソール アプリを作成します。In a console window (such as cmd, PowerShell, or Bash), use the dotnet new command to create a new console app with the name qna-maker-quickstart. このコマンドにより、1 つのソース ファイルを使用する単純な "Hello World" C# プロジェクトが作成されます。Program.csThis command creates a simple "Hello World" C# project with a single source file: Program.cs.

dotnet new console -n qna-maker-quickstart

新しく作成されたアプリ フォルダーにディレクトリを変更します。Change your directory to the newly created app folder. 次を使用してアプリケーションをビルドできます。You can build the application with:

dotnet build

ビルドの出力に警告やエラーが含まれないようにする必要があります。The build output should contain no warnings or errors.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

SDK のインストールInstall the SDK

次のコマンドを使用して、アプリケーション ディレクトリ内に .NET 用 QnA Maker クライアント ライブラリをインストールします。Within the application directory, install the QnA Maker client library for .NET with the following command:

dotnet add package Microsoft.Azure.CognitiveServices.Knowledge.QnAMaker --version 1.0.0

Visual Studio IDE を使用している場合、クライアント ライブラリは、ダウンロード可能な NuGet パッケージとして入手できます。If you're using the Visual Studio IDE, the client library is available as a downloadable NuGet package.

オブジェクト モデルObject model

QnA Maker クライアントは、自分のキーが含まれている Microsoft.Rest.ServiceClientCredentials を使用して Azure に対する認証を行う QnAMakerClient オブジェクトです。The QnA Maker client is a QnAMakerClient object that authenticates to Azure using Microsoft.Rest.ServiceClientCredentials, which contains your key.

クライアントが作成されたら、ナレッジ ベース プロパティを使用して、ナレッジ ベースを作成、管理、および公開します。Once the client is created, use the Knowledge base property to create, manage, and publish your knowledge base.

JSON オブジェクトを送信して、ナレッジ ベースを管理します。Manage your knowledge base by sending a JSON object. 即時操作の場合は、通常、状態を示す JSON オブジェクトがメソッドから返されます。For immediate operations, a method usually returns a JSON object indicating status. 実行時間の長い操作の場合、応答は操作 ID になります。For long-running operations, the response is the operation ID. client.Operations.GetDetailsAsync メソッドを操作 ID と共に呼び出して、要求の状態を確認します。Call the client.Operations.GetDetailsAsync method with the operation ID to determine the status of the request.

コード例Code examples

以下のコード スニペットは、.NET 用 QnA Maker クライアント ライブラリを使用して次のことを実行する方法を示します。These code snippets show you how to do the following with the QnA Maker client library for .NET:

依存関係を追加するAdd the dependencies

プロジェクト ディレクトリから、好みのエディターまたは IDE で Program.cs ファイルを開きます。From the project directory, open the Program.cs file in your preferred editor or IDE. 既存の using コードを次の using ディレクティブに置き換えます。Replace the existing using code with the following using directives:

using Microsoft.Azure.CognitiveServices.Knowledge.QnAMaker;
using Microsoft.Azure.CognitiveServices.Knowledge.QnAMaker.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

ナレッジ ベースを作成するためのクライアントを認証するAuthenticate the client for authoring the knowledge base

main メソッド内で、QNAMAKER_SUBSCRIPTION_KEY という名前の環境変数から取得したリソースの Azure キーの変数を作成します。In the main method, create a variable for your resource's Azure key pulled from an environment variable named QNAMAKER_SUBSCRIPTION_KEY. アプリケーションの起動後に環境変数を作成した場合、その変数にアクセスするには、アプリケーションを実行しているエディター、IDE、またはシェルを閉じて、再読み込みしなければならない場合があります。If you created the environment variable after the application is launched, the editor, IDE, or shell running it will need to be closed and reloaded to access the variable. メソッドは後で作成します。The methods will be created later.

次に、自分のキーを使用して ApiKeyServiceClientCredentials オブジェクトを作成し、それを自分のエンドポイントと共に使用して、QnAMakerClient オブジェクトを作成します。Next, create an ApiKeyServiceClientCredentials object with your key, and use it with your endpoint to create an QnAMakerClient object.

環境変数Environment variable 可変variable Example
QNAMAKER_SUBSCRIPTION_KEY subscription_key このキーは 32 文字の文字列で、Azure portal の [クイックスタート] ページの QnA Maker リソースで入手できます。The key is a 32 character string and is available in the Azure portal, on the QnA Maker resource, on the Quickstart page. これは、予測エンドポイント キーと同じではありません。This is not the same as the prediction endpoint key.
QNAMAKER_HOST Endpoint https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com 形式の作成エンドポイントには、実際のリソース名が含まれます。Your authoring endpoint, in the format of https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com, includes your resource name. これは、予測エンドポイントを照会するときに使用した URL と同じではありません。This is not the same URL used to query the prediction endpoint.
var subscriptionKey = Environment.GetEnvironmentVariable("QNAMAKER_SUBSCRIPTION_KEY");
var client = new QnAMakerClient(new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = "https://<your-custom-domain>.api.cognitive.microsoft.com" };

回答を生成するためのランタイムを認証するAuthenticate the runtime for generating an answer

main メソッドに、QNAMAKER_ENDPOINT_HOSTNAME および QNAMAKER_ENDPOINT_KEY という名前の環境変数から取得される、リソースの認証の変数を作成します。In the main method, create a variable for your resource's authentication pulled from an environment variables named QNAMAKER_ENDPOINT_HOSTNAME and QNAMAKER_ENDPOINT_KEY. ナレッジ ベースを公開すると、これらの値が返されます。When you publish your knowledge base, these values are returned. 公開後は、QnA Maker ポータルの [設定] ページでこれらの設定を確認できます。After you publish, you can find these settings on the Settings page of the QnA Maker portal.

ナレッジ ベースにクエリを実行して回答を生成したり、アクティブ ラーニングからトレーニングしたりするための QnAMakerRuntimeClient を作成します。Create a QnAMakerRuntimeClient to query the knowledge base to generate an answer or train from active learning.

var endpointhostName = Environment.GetEnvironmentVariable("QNAMAKER_ENDPOINT_HOSTNAME");
var endpointKey = Environment.GetEnvironmentVariable("QNAMAKER_ENDPOINT_KEY");
var runtimeClient = new QnAMakerRuntimeClient(new EndpointKeyServiceClientCredentials(endpointKey)) { RuntimeEndpoint = $"https://{endpointhostName}.azurewebsites.net" };

ナレッジ ベースの作成Create a knowledge base

ナレッジ ベースには、次の 3 つのソースの CreateKbDTO オブジェクトに対する質問と回答のペアが格納されます。A knowledge base stores question and answer pairs for the CreateKbDTO object from three sources:

  • 本文の場合は、QnADTO オブジェクトを使用します。For editorial content, use the QnADTO object.
  • ファイルの場合は、FileDTO オブジェクトを使用します。For files, use the FileDTO object.
  • URL の場合は、文字列のリストを使用します。For URLs, use a list of strings.

CreateAsync メソッドを呼び出した後、返された操作 ID を MonitorOperation メソッドに渡して、状態をポーリングします。Call the CreateAsync method then pass the returned operation ID to the MonitorOperation method to poll for status.

次のコードの最後の行では、MonitorOoperation の応答からナレッジ ベース ID を返しています。The final line of the following code returns the knowledge base ID from the response from MonitorOoperation.

private static async Task<string> CreateSampleKb(IQnAMakerClient client)
{
    var qna1 = new QnADTO
    {
        Answer = "You can use our REST APIs to manage your knowledge base.",
        Questions = new List<string> { "How do I manage my knowledgebase?" },
        Metadata = new List<MetadataDTO> { new MetadataDTO { Name = "Category", Value = "api" } }    
    };
    
    var file1 = new FileDTO
    {
        FileName="myFileName",
        FileUri="https://mydomain/myfile.md"

    };

    var urls = new List<string> {
        "https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs"
    };

    var createKbDto = new CreateKbDTO
    {
        Name = "QnA Maker FAQ from c# quickstart",
        QnaList = new List<QnADTO> { qna1 },
        //Files = new List<FileDTO> { file1 },
        Urls = urls

    };

    var createOp = await client.Knowledgebase.CreateAsync(createKbDto);
    createOp = await MonitorOperation(client, createOp);

    return createOp.ResourceLocation.Replace("/knowledgebases/", string.Empty);
}

ナレッジ ベースを適切に作成するには、上記のコードで参照されている MonitorOperation 関数を必ず含めます。Make sure the include the MonitorOperation function, referenced in the above code, in order to successfully create a knowledge base.

ナレッジ ベースの更新Update a knowledge base

ナレッジ ベースを更新するには、ナレッジ ベース ID と、addupdate、および delete DTO オブジェクトを含む UpdatekbOperationDTO を、UpdateAsync メソッドに渡します。You can update a knowledge base by passing in the knowledge base ID and an UpdatekbOperationDTO containing add, update, and delete DTO objects to the UpdateAsync method. 更新が成功したかどうかを確認するには、MonitorOperation メソッドを使用します。Use the MonitorOperation method to determine if the update succeeded.

private static async Task UpdateKB(IQnAMakerClient client, string kbId)
{
    // Update kb
    var updateOp = await client.Knowledgebase.UpdateAsync(kbId, new UpdateKbOperationDTO
    {
        // Create JSON of changes 
        Add = new UpdateKbOperationDTOAdd { QnaList = new List<QnADTO> { new QnADTO { Questions = new List<string> { "bye" }, Answer = "goodbye" } } }, 
        Update = null,
        Delete = null
    });

    // Loop while operation is success
    updateOp = await MonitorOperation(client, updateOp);
}

ナレッジ ベースを適切に更新するには、上記のコードで参照されている MonitorOperation 関数を必ず含めます。Make sure the include the MonitorOperation function, referenced in the above code, in order to successfully update a knowledge base.

ナレッジ ベースのダウンロードDownload a knowledge base

データベースを QnADocumentsDTO のリストとしてダウンロードするには、DownloadAsync メソッドを使用します。Use the DownloadAsync method to download the database as a list of QnADocumentsDTO. このメソッドの結果は TSV ファイルではないため、これは、QnA Maker ポータルの [設定] ページからのエクスポートと同等 "ではありません"。This is not equivalent to the QnA Maker portal's export from the Settings page because the result of this method is not a TSV file.

Console.Write("Downloading KB...");
var kbData = client.Knowledgebase.DownloadAsync(kbId, EnvironmentType.Prod).Result;
Console.WriteLine("KB Downloaded. It has {0} QnAs.", kbData.QnaDocuments.Count);

ナレッジ ベースの公開Publish a knowledge base

PublishAsync メソッドを使用して、ナレッジ ベースを公開します。Publish the knowledge base using the PublishAsync method. これにより、ナレッジ ベース ID によって参照される、最新の保存済みおよびトレーニング済みのモデルが取得され、エンドポイントで公開されます。This takes the current saved and trained model, referenced by the knowledge base ID, and publishes that at an endpoint.

Console.Write("Publishing KB...");
client.Knowledgebase.PublishAsync(kbId).Wait();
Console.WriteLine("KB Published.");

ナレッジ ベースから回答を生成するGenerate an answer from the knowledge base

RuntimeClient.GenerateAnswerAsync メソッドを使用して公開済みのナレッジ ベースから回答を生成します。Generate an answer from a published knowledge base using the RuntimeClient.GenerateAnswerAsync method. このメソッドは、ナレッジ ベース ID と QueryDTO を受け取ります。This method accepts the knowledge base ID and the QueryDTO. さらに、TopContext など、QueryDTO のプロパティにアクセスしてチャット ボットで使用することができます。Access additional properties of the QueryDTO, such a Top and Context to use in your chat bot.

Console.Write("Querying Endpoint...");
var response = runtimeClient.Runtime.GenerateAnswerAsync(kbId, new QueryDTO { Question = "How do I manage my knowledgebase?" }).Result;
Console.WriteLine("Endpoint Response: {0}.", response.Answers[0].Answer);

ナレッジ ベースを削除するDelete a knowledge base

DeleteAsync メソッドをナレッジ ベース ID のパラメーターと共に使用して、ナレッジ ベースを削除します。Delete the knowledge base using the DeleteAsync method with a parameter of the knowledge base ID.

Console.Write("Deleting KB...");
client.Knowledgebase.DeleteAsync(kbId).Wait();
Console.WriteLine("KB Deleted.");            

操作の状態の取得Get status of an operation

create や update などのメソッドの中には、プロセスが終了するのを待つ代わりに、操作が返されるのに十分な時間がかかるものがあります。Some methods, such as create and update, can take enough time that instead of waiting for the process to finish, an operation is returned. 操作からの操作 ID を使用して、(再試行ロジックを使用して) ポーリングし、元のメソッドの状態を判別します。Use the operation ID from the operation to poll (with retry logic) to determine the status of the original method.

次のコード ブロックの loop および Task.Delay は、再試行ロジックをシミュレートするために使用されています。The loop and Task.Delay in the following code block are used to simulate retry logic. これらは自分の再試行ロジックに置き換える必要があります。These should be replaced with your own retry logic.

private static async Task<Operation> MonitorOperation(IQnAMakerClient client, Operation operation)
{
    // Loop while operation is success
    for (int i = 0;
        i < 20 && (operation.OperationState == OperationStateType.NotStarted || operation.OperationState == OperationStateType.Running);
        i++)
    {
        Console.WriteLine("Waiting for operation: {0} to complete.", operation.OperationId);
        await Task.Delay(5000);
        operation = await client.Operations.GetDetailsAsync(operation.OperationId);
    }

    if (operation.OperationState != OperationStateType.Succeeded)
    {
        throw new Exception($"Operation {operation.OperationId} failed to completed.");
    }
    return operation;
}

アプリケーションの実行Run the application

自分のアプリケーション ディレクトリで dotnet run コマンドを使用してアプリケーションを実行します。Run the application with the dotnet run command from your application directory.

この記事にあるすべてのコード スニペットは、入手可能であり、1 つのファイルとして実行できます。All of the code snippets in this article are available and can be run as a single file.

dotnet run

このクイックスタートのソース コードは、QnA Maker C# のサンプル GitHub リポジトリから入手できます。The source code for this quickstart is available in the QnA Maker C# samples GitHub repository.

リソースをクリーンアップするClean up resources

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。Deleting the resource group also deletes any other resources associated with it.

Node.js 用 QnA Maker クライアント ライブラリは、次の目的で使用することができます。Use the QnA Maker client library for Node.js to:

  • ナレッジ ベースの作成Create a knowledge base
  • ナレッジ ベースの更新Update a knowledge base
  • ナレッジ ベースの公開Publish a knowledge base
  • 発行したエンドポイント キーの取得Get published endpoint key
  • 実行時間の長いタスクの待機Wait for long-running task
  • ナレッジ ベースの削除Delete knowledge base

リファレンスのドキュメント | ライブラリのソース コード | パッケージ (NPM) | Node.js のサンプルReference documentation | Library source code | Package (NPM) | Node.js Samples

注意

2019 年 7 月 1 日より後に作成された新しいリソースには、カスタム サブドメイン名が使用されます。New resources created after July 1, 2019, will use custom subdomain names. リージョンのエンドポイントの詳細および全一覧については、「Cognitive Services のカスタム サブドメイン名」を参照してください。For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

前提条件Prerequisites

  • Azure サブスクリプション - 無料アカウントを作成しますAzure subscription - Create one for free
  • 最新バージョンの Node.jsThe current version of Node.js.
  • Azure サブスクリプションを入手したら、Azure portal で QnA Maker リソースを作成し、オーサリング キーとエンドポイントを取得します。Once you have your Azure subscription, create a QnA Maker resource in the Azure portal to get your authoring key and endpoint. デプロイされたら、 [リソースに移動] を選択します。After it deploys, select Go to resource.
    • アプリケーションを QnA Maker API に接続するには、作成したリソースのキーとエンドポイントが必要です。You will need the key and endpoint from the resource you create to connect your application to the QnA Maker API. このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。You'll paste your key and endpoint into the code below later in the quickstart.
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。You can use the free pricing tier (F0) to try the service, and upgrade later to a paid tier for production.

設定Setting up

QnA Maker Azure リソースを作成するCreate a QnA Maker Azure resource

Azure Cognitive Services は、ユーザーがサブスクライブする Azure リソースによって表されます。Azure Cognitive Services are represented by Azure resources that you subscribe to. Azure portal または Azure CLI を使用して、ローカル コンピューター上に QnA Maker のリソースを作成します。Create a resource for QnA Maker using the Azure portal or Azure CLI on your local machine.

リソースからキーとエンドポイントを取得した後、Azure portal の [クイックスタート] ページで、新しいリソースのための値を取得します。After getting the key and endpoint from your resource, get the values from the Azure portal, for your new resource, on the Quickstart page.

QNAMAKER_AUTHORING_KEY および QNAMAKER_ENDPOINT という名前の環境変数を作成します。Create environment variables, named QNAMAKER_AUTHORING_KEY and QNAMAKER_ENDPOINT. .env.sample ファイルを .env にコピーして、そのファイル内の環境変数を使用することができます。You can copy the .env.sample file to .env and use the environment variables in that file.

新しい Node.js アプリケーションを作成するCreate a new Node.js application

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。In a console window (such as cmd, PowerShell, or Bash), create a new directory for your app, and navigate to it.

mkdir qnamaker_quickstart && cd qnamaker_quickstart

npm init -y コマンドを実行し、package.json ファイルを使用して node アプリケーションを作成します。Run the npm init -y command to create a node application with a package.json file.

npm init -y

クライアント ライブラリをインストールするInstall the client library

必須およびオプションの NPM パッケージをインストールします。Install the required and optional NPM packages:

npm install @azure/cognitiveservices-qnamaker @azure/ms-rest-js dotenv

アプリの package.json ファイルが依存関係によって更新されます。Your app's package.json file is updated with the dependencies. dotenv はオプションであり、テキスト ファイルで環境変数を設定できるようにするために使用されます。The dotenv is optional and is used to allow you to set the environment variables in a text file. ソース管理に .env をチェックインしないでください。Do not check the .env into your source control.

オブジェクト モデルObject model

QnA Maker クライアントは、自分のキーが含まれている ServiceClientCredentials を使用して Azure に対する認証を行う QnAMakerClient オブジェクトです。The QnA Maker client is a QnAMakerClient object that authenticates to Azure using ServiceClientCredentials, which contains your key.

クライアントが作成されたら、ナレッジ ベース プロパティを使用して、ナレッジ ベースを作成、管理、および公開します。Once the client is created, use the Knowledge base property create, manage, and publish your knowledge base.

JSON オブジェクトを送信して、ナレッジ ベースを管理します。Manage your knowledge base by sending a JSON object. 即時操作の場合は、通常、状態を示す JSON オブジェクトがメソッドから返されます。For immediate operations, a method usually returns a JSON object indicating status. 実行時間の長い操作の場合、応答は操作 ID になります。For long-running operations, the response is the operation ID. client.Operations.getDetails メソッドを操作 ID と共に呼び出して、要求の状態を確認します。Call the client.Operations.getDetails method with the operation ID to determine the status of the request.

コード例Code examples

以下のコード スニペットは、Node.js 用 QnA Maker クライアント ライブラリを使用して次のことを実行する方法を示します。These code snippets show you how to do the following with the QnA Maker client library for Node.js:

依存関係を追加するAdd the dependencies

index.js という名前でファイルを作成します。Create a file named index.js. ファイルに QnA Maker ライブラリと依存関係を追加します。Add the QnA Maker library and the dependencies to the file.

const msRest = require("@azure/ms-rest-js");
const qnamaker = require("@azure/cognitiveservices-qnamaker");
require('dotenv').config();

自分のリソースの Azure エンドポイントおよびキー用の変数を作成します。Create variables for your resource's Azure endpoint and key. アプリケーションの起動後に環境変数を作成した場合、その変数にアクセスするには、アプリケーションを実行しているエディター、IDE、またはシェルを閉じて、もう一度開く必要があります。If you created the environment variable after you launched the application, you will need to close and reopen the editor, IDE, or shell running it to access the variable.

環境変数Environment variable Node.js 変数Node.js variable Example
QNAMAKER_AUTHORING_KEY authoring_key このキーは 32 文字の文字列で、Azure portal の [クイックスタート] ページの QnA Maker リソースで入手できます。The key is a 32 character string and is available in the Azure portal, on the QnA Maker resource, on the Quickstart page. これは、予測エンドポイント キーと同じではありません。This is not the same as the prediction endpoint key.
QNAMAKER_ENDPOINT endpoint https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com 形式の作成エンドポイントには、実際のリソース名が含まれます。Your authoring endpoint, in the format of https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com, includes your resource name. これは、予測エンドポイントを照会するときに使用した URL と同じではありません。This is not the same URL used to query the prediction endpoint.
// Get environment values key and endpoint for your QnA Maker resource - found in the Azure portal for that resource
if (!process.env.QNAMAKER_AUTHORING_KEY) {
    throw new Error('please set/export the following environment variable: QNAMAKER_AUTHORING_KEY');
}
const authoringKey = process.env.QNAMAKER_AUTHORING_KEY;

if (!process.env.QNAMAKER_ENDPOINT) {
    throw new Error('please set/export the following environment variable: QNAMAKER_ENDPOINT');
}
const endpoint = process.env.QNAMAKER_ENDPOINT;

クライアントを認証するAuthenticate the client

次に、自分のキーを使用して ApiKeyCredentials オブジェクトを作成し、それを自分のエンドポイントと共に使用して、QnAMakerClient オブジェクトを作成します。Next, create a ApiKeyCredentials object with your key, and use it with your endpoint to create an QnAMakerClient object. クライアント オブジェクトを使用して、ナレッジ ベース クライアント オブジェクトを取得します。Use the client object to get a knowledge base client object.

const creds = new msRest.ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': authoringKey } });
const qnaMakerClient = new qnamaker.QnAMakerClient(creds, endpoint);
const knowledgeBaseClient = new qnamaker.Knowledgebase(qnaMakerClient);

ナレッジ ベースの作成Create a knowledge base

ナレッジ ベースには、次の 3 つのソースの CreateKbDTO オブジェクトに対する質問と回答のペアが格納されます。A knowledge base stores question and answer pairs for the CreateKbDTO object from three sources:

  • 本文の場合は、QnADTO オブジェクトを使用します。For editorial content, use the QnADTO object.
  • ファイルの場合は、FileDTO オブジェクトを使用します。For files, use the FileDTO object.
  • URL の場合は、文字列のリストを使用します。For URLs, use a list of strings.

ナレッジ ベース情報を使用して、create メソッドを呼び出します。Call the create method with the knowledge base information. ナレッジ ベース情報は、基本的に JSON オブジェクトです。The knowledge base information is basically a JSON object.

create メソッドから戻ったら、返された操作 ID を wait_for_operation メソッドに渡して、状態をポーリングします。When the create method returns, pass the returned operation ID to the wait_for_operation method to poll for status. 操作が完了すると、wait_for_operation メソッドから戻ってきます。The wait_for_operation method returns when the operation completes. 返された操作の resourceLocation ヘッダー値を解析して、新しいナレッジ ベース ID を取得します。Parse the resourceLocation header value of the returned operation to get the new knowledge base ID.

const createKnowledgeBase = async () => {

    const answer = "You can use our REST APIs to manage your Knowledge Base. See here for details: https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9baa";
    const source = "Custom Editorial";
    const questions = ["How do I programmatically update my Knowledge Base?"];
    const metadata = [{ Name: "category", Value: "api" }];
    const qna_list = [{ id: 0, answer: answer, Source: source, questions: questions, Metadata: metadata }];
    const create_kb_payload = {
        name: 'QnA Maker FAQ',
        qnaList: qna_list,
        urls: [],
        files: []
    };

    const results = await knowledgeBaseClient.create(create_kb_payload)

    if(results._response.status.toString().indexOf("2",0)==-1) {
        console.log(`Create request failed - HTTP status ${results._response.status}`)
        return
    }

    const operationResult = await wait_for_operation( results.operationId)

    if(!operationResult || !operationResult.operationState ||  !(operationResult.operationState= "Succeeded") || !operationResult.resourceLocation) {
        console.log(`Create operation state failed - HTTP status ${operationResult._response.status}`)
        return
    }

    // parse resourceLocation for KB ID
   const kbID = operationResult.resourceLocation.replace("/knowledgebases/","");

   console.log(`Create operation ${operationResult._response.status}, KB ID ${kbID}`)
   return kbID;
}

ナレッジ ベースを適切に作成するには、上記のコードで参照されている wait_for_operation 関数を必ず含めます。Make sure the include the wait_for_operation function, referenced in the above code, in order to successfully create a knowledge base.

ナレッジ ベースの更新Update a knowledge base

ナレッジ ベースを更新するには、ナレッジ ベース ID と、addupdatedelete DTO オブジェクトを含む UpdateKbOperationDTO を、update メソッドに渡します。You can update a knowledge base by passing in the knowledge base ID and an UpdateKbOperationDTO containing add, update, and delete DTO objects to the update method. DTO も、基本的に JSON オブジェクトです。The DTOs are also basically JSON objects. 更新が成功したかどうかを確認するには、wait_for_operation メソッドを使用します。Use the wait_for_operation method to determine if the update succeeded.

const updateKnowledgeBase = async(kb_id) => {

    // Add new Q&A lists, URLs, and files to the KB.
    const answer = "You can change the default message if you use the QnAMakerDialog. See this for details: https://docs.botframework.com/en-us/azure-bot-service/templates/qnamaker/#navtitle";
    const source = "Custom Editorial";
    const questions = ["How can I change the default message from QnA Maker?"];
    const metadata = [{ Name: "category", Value: "api" }];
    const qna_list = [{ id: 1, answer: answer, Source: source, questions: questions, Metadata: metadata }];
    const update_kb_add_payload = { qnaList: qna_list, urls: [], files: [] };


    // Update the KB name.
    const name = "New KB name";
    const update_kb_update_payload = { name: name };

    // Delete the QnaList with ID 0.
    const ids = [0];
    const update_kb_delete_payload = { ids: ids };

    // Bundle the add, update, and delete requests.
    const update_kb_payload = {
        add: update_kb_add_payload,
        update: update_kb_update_payload,
        deleteProperty:
        update_kb_delete_payload
    };

    const results = await knowledgeBaseClient.update(kb_id, update_kb_payload)

    if(!results._response.status.toString().indexOf("2",0)==-1) {
        console.log(`Update request failed - HTTP status ${results._response.status}`)
        return false
    }

    const operationResult = await wait_for_operation( results.operationId)

    if(operationResult.operationState != "Succeeded") {
        console.log(`Update operation state failed - HTTP status ${operationResult._response.status}`)
        return false
    }

    console.log(`Update operation state ${operationResult._response.status} - HTTP status ${operationResult._response.status}`)
    return true
}

ナレッジ ベースを適切に更新するには、上記のコードで参照されている wait_for_operation 関数を必ず含めます。Make sure the include the wait_for_operation function, referenced in the above code, in order to successfully update a knowledge base.

ナレッジ ベースの公開Publish a knowledge base

publish メソッドを使用して、ナレッジ ベースを公開します。Publish the knowledge base using the publish method. これにより、ナレッジ ベース ID によって参照される、最新の保存済みおよびトレーニング済みのモデルが取得され、エンドポイントで公開されます。This takes the current saved and trained model, referenced by the knowledge base ID, and publishes that at an endpoint. HTTP 応答コードを調べて、発行が成功したことを検証します。Check the HTTP response code to validate that the publish succeeded.

const publishKnowledgeBase = async(kb_id) => {

    const results = await knowledgeBaseClient.publish(kb_id)

    if(!results._response.status.toString().indexOf("2",0)==-1) {
        console.log(`Publish request failed - HTTP status ${results._response.status}`)
        return false
    }

    console.log(`Publish request succeeded - HTTP status ${results._response.status}`)

    return true
}

発行したエンドポイントの取得Get published endpoint

ナレッジ ベースが発行されたら、クエリ予測ランタイムの generateAnswer API を通じて、発行されたナレッジ ベースにアクセスします。Once the knowledge base is published, access the published knowledge base via the query prediction runtime' generateAnswer API. そうするには、ランタイムのエンドポイント キーが必要です。In order to do this, you need the runtime's endpoint key. これは、オーサリング キーとは異なります。This is different than the authoring key.

const getEndpointKeys = async () => {

    const endpointKeysClient = new qnamaker.EndpointKeys(qnaMakerClient);

    const results = await endpointKeysClient.getKeys();

    if(!results._response.status.toString().indexOf("2",0)==-1) {
        console.log(`GetEndpointKeys request failed - HTTP status ${results._response.status}`)
        return null
    }

    console.log(`GetEndpointKeys request succeeded - HTTP status ${results._response.status} - primary key ${results.primaryEndpointKey}`)

    return results.primaryEndpointKey
}

呼び出しからは、2 つのエンドポイント キーが返されます。Two endpoint keys are returned from the call. ランタイム エンドポイントへのアクセスに必要なのは、1 つだけです。Only one is necessary to access the runtime endpoint.

ナレッジ ベースを削除するDelete a knowledge base

delete メソッドをナレッジ ベース ID のパラメーターと共に使用して、ナレッジ ベースを削除します。Delete the knowledge base using the delete method with a parameter of the knowledge base ID.

const deleteKnowledgeBase = async (kb_id) => {

    const results = await knowledgeBaseClient.deleteMethod(kb_id)

    if(results._response.status.toString().indexOf("2",0)==-1) {
        console.log(`Delete operation state failed - HTTP status ${results._response.status}`)
        return false
    }

    console.log(`Delete operation state succeeded - HTTP status ${results._response.status}`)
    return true
}

操作の状態の取得Get status of an operation

create や update などのメソッドの中には、プロセスが終了するのを待つ代わりに、操作が返されるのに十分な時間がかかるものがあります。Some methods, such as create and update, can take enough time that instead of waiting for the process to finish, an operation is returned. 操作からの操作 ID を使用して、(再試行ロジックを使用して) ポーリングし、元のメソッドの状態を判別します。Use the operation ID from the operation to poll (with retry logic) to determine the status of the original method.

次のコード ブロック内の delayTimer 呼び出しは、再試行ロジックをシミュレートするために使用されています。The delayTimer call in the following code block is used to simulate the retry logic. これを独自の再試行ロジックに置き換えます。Replace this with your own retry logic.

const wait_for_operation = async (operation_id) => {

    let state = "NotStarted"
    let operationResult = undefined

    while("Running" === state || "NotStarted" === state){

        operationResult = await qnaMakerClient.operations.getDetails(operation_id)
        state = operationResult.operationState;

        console.log(`Operation state - ${state}`)

        await delayTimer(1000);
    }

    return operationResult;
}

アプリケーションの実行Run the application

自分のアプリケーション ディレクトリで node index.js コマンドを使用してアプリケーションを実行します。Run the application with node index.js command from your application directory.

この記事にあるすべてのコード スニペットは、入手可能であり、1 つのファイルとして実行できます。All of the code snippets in this article are available and can be run as a single file.

node index.js

プログラムによって、状態がコンソールに出力されます。The program prints status to the console:

qnamaker_quickstart@1.0.0 start C:\samples\cognitive-services-quickstart-code\javascript\QnAMaker\sdk> node index.js

Operation state - Running
Operation state - Running
Operation state - Running
Operation state - Running
Operation state - Running
Operation state - Succeeded
Create operation 200, KB ID 99df758d-f23f-4931-ab83-e738fe978e69
Operation state - Running
Operation state - Running
Operation state - Running
Operation state - Succeeded
Update operation state 200 - HTTP status 200
Publish request succeeded - HTTP status 204
GetEndpointKeys request succeeded - HTTP status 200 - primary key 8482830b-681e-400e-b8a3-4016278aba64
QnA Maker FAQ stored in English language with 1 sources, last updated 2020-01-12T16:54:40Z
New KB name stored in English language with 1 sources, last updated 2020-01-12T17:32:16Z
New KB name stored in English language with 1 sources, last updated 2020-01-13T00:27:46Z
Delete operation state succeeded - HTTP status 204
done

リソースをクリーンアップするClean up resources

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。Deleting the resource group also deletes any other resources associated with it.

Python 用 QnA Maker クライアント ライブラリは、次の目的で使用することができます。Use the QnA Maker client library for python to:

  • ナレッジ ベースの作成Create a knowledge base
  • ナレッジ ベースの更新Update a knowledge base
  • ナレッジ ベースの公開Publish a knowledge base
  • 発行したエンドポイント キーの取得Get published endpoint key
  • 実行時間の長いタスクの待機Wait for long-running task
  • ナレッジ ベースの削除Delete knowledge base

リファレンス ドキュメント | ライブラリのソース コード | パッケージ (pypi) | Python サンプルReference documentation | Library source code | Package (pypi) | Python samples

注意

2019 年 7 月 1 日より後に作成された新しいリソースには、カスタム サブドメイン名が使用されます。New resources created after July 1, 2019, will use custom subdomain names. リージョンのエンドポイントの詳細および全一覧については、「Cognitive Services のカスタム サブドメイン名」を参照してください。For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

前提条件Prerequisites

  • Azure サブスクリプション - 無料アカウントを作成しますAzure subscription - Create one for free
  • Python 3.xPython 3.x
  • Azure サブスクリプションを入手したら、Azure portal で QnA Maker リソースを作成し、オーサリング キーとエンドポイントを取得します。Once you have your Azure subscription, create a QnA Maker resource in the Azure portal to get your authoring key and endpoint. デプロイされたら、 [リソースに移動] を選択します。After it deploys, select Go to resource.
    • アプリケーションを QnA Maker API に接続するには、作成したリソースのキーとエンドポイントが必要です。You will need the key and endpoint from the resource you create to connect your application to the QnA Maker API. このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。You'll paste your key and endpoint into the code below later in the quickstart.
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。You can use the free pricing tier (F0) to try the service, and upgrade later to a paid tier for production.

設定Setting up

QnA Maker Azure リソースを作成するCreate a QnA Maker Azure resource

Azure Cognitive Services は、ユーザーがサブスクライブする Azure リソースによって表されます。Azure Cognitive Services are represented by Azure resources that you subscribe to. Azure portal または Azure CLI を使用して、ローカル コンピューター上に QnA Maker のリソースを作成します。Create a resource for QnA Maker using the Azure portal or Azure CLI on your local machine.

自分のリソースからキーを取得した後、QNAMAKER_KEY および QNAMAKER_HOST という名前で、そのリソースの環境変数を作成します。After getting a key from your resource, create environment variables for the resource, named QNAMAKER_KEY and QNAMAKER_HOST. Azure portal で確認したキーとエンドポイントの値を使用してください。Use the key and endpoint values found in the Azure portal.

QnA Maker 用 Python ライブラリをインストールするInstall the python library for QnA Maker

Python をインストールしたら、次を使用してクライアント ライブラリをインストールすることができます。After installing Python, you can install the client library with:

pip install azure-cognitiveservices-knowledge-qnamaker

オブジェクト モデルObject model

キーを使用して CognitiveServicesCredentials オブジェクトを作成し、それをエンドポイントと共に使用して、QnAMakerClient オブジェクトを作成します。Create a CognitiveServicesCredentials object with your key, and use it with your endpoint to create an QnAMakerClient object.

クライアントが作成されたら、ナレッジ ベースを使用して、ナレッジ ベースを作成、管理、および公開します。Once the client is created, use the Knowledge base to create, manage, and publish your knowledge base.

即時操作の場合は、通常、状態を示す JSON オブジェクトがメソッドから返されます。For immediate operations, a method usually returns a JSON object indicating status. 実行時間の長い操作の場合、応答は操作 ID になります。For long-running operations, the response is the operation ID. client.Operations.getDetails メソッドを操作 ID と共に呼び出して、要求の状態を確認します。Call the client.Operations.getDetails method with the operation ID to determine the status of the request.

コード例Code examples

以下のコード スニペットは、Python 用 QnA Maker クライアント ライブラリを使用して次のことを実行する方法を示します。These code snippets show you how to do the following with the QnA Maker client library for python:

新しい Python アプリケーションを作成するCreate a new python application

お気に入りのエディターまたは IDE で、新しい Python アプリケーションを作成します。Create a new Python application in your preferred editor or IDE. 次に、次のライブラリをインポートします。Then import the following libraries.

import os
import time

from azure.cognitiveservices.knowledge.qnamaker import QnAMakerClient
from azure.cognitiveservices.knowledge.qnamaker.models import QnADTO, MetadataDTO, CreateKbDTO, OperationStateType, UpdateKbOperationDTO, UpdateKbOperationDTOAdd
from msrest.authentication import CognitiveServicesCredentials

自分のリソースの Azure エンドポイントおよびキー用の変数を作成します。Create variables for your resource's Azure endpoint and key. アプリケーションの起動後に環境変数を作成した場合、その変数にアクセスするには、アプリケーションを実行しているエディター、IDE、またはシェルを閉じて、もう一度開く必要があります。If you created the environment variable after you launched the application, you will need to close and reopen the editor, IDE, or shell running it to access the variable.

環境変数Environment variable 可変variable Example
QNAMAKER_KEY subscription_key このキーは 32 文字の文字列で、Azure portal の [クイックスタート] ページの QnA Maker リソースで入手できます。The key is a 32 character string and is available in the Azure portal, on the QnA Maker resource, on the Quickstart page. これは、予測エンドポイント キーと同じではありません。This is not the same as the prediction endpoint key.
QNAMAKER_HOST host https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com 形式の作成エンドポイントには、実際のリソース名が含まれます。Your authoring endpoint, in the format of https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com, includes your resource name. これは、予測エンドポイントを照会するときに使用した URL と同じではありません。This is not the same URL used to query the prediction endpoint.
key_var_name = 'QNAMAKER_KEY'
if not key_var_name in os.environ:
    raise Exception('Please set/export the environment variable: {}'.format(key_var_name))
subscription_key = os.environ[key_var_name]

host_var_name = 'QNAMAKER_HOST'
if not host_var_name in os.environ:
    raise Exception('Please set/export the environment variable: {}'.format(host_var_name))
host = os.environ[host_var_name]

クライアントを認証するAuthenticate the client

次に、キーを使用して CognitiveServicesCredentials オブジェクトを作成し、それをエンドポイントと共に使用して、QnAMakerClient オブジェクトを作成します。Next, create a CognitiveServicesCredentials object with your key, and use it with your endpoint to create a QnAMakerClient object.

client = QnAMakerClient(endpoint=host, credentials=CognitiveServicesCredentials(subscription_key))

ナレッジ ベースの作成Create a knowledge base

クライアント オブジェクトを使用してナレッジ ベース操作オブジェクトを取得します。Use the client object to get a knowledge base operations object.

ナレッジ ベースには、次の 3 つのソースの CreateKbDTO オブジェクトに対する質問と回答のペアが格納されます。A knowledge base stores question and answer pairs for the CreateKbDTO object from three sources:

  • 本文の場合は、QnADTO オブジェクトを使用します。For editorial content, use the QnADTO object.
  • ファイルの場合は、FileDTO オブジェクトを使用します。For files, use the FileDTO object.
  • URL の場合は、文字列のリストを使用します。For URLs, use a list of strings.

create メソッドを呼び出した後、返された操作 ID を Operations.getDetails メソッドに渡して、状態をポーリングします。Call the create method then pass the returned operation ID to the Operations.getDetails method to poll for status.

def create_kb(client):

    qna = QnADTO(
        answer="You can use our REST APIs to manage your knowledge base.",
        questions=["How do I manage my knowledgebase?"],
        metadata=[MetadataDTO(name="Category", value="api")]
    )
    urls = ["https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs"]

    create_kb_dto = CreateKbDTO(
        name="QnA Maker FAQ from quickstart",
        qna_list=[qna],
        urls=urls
    )
    create_op = client.knowledgebase.create(create_kb_payload=create_kb_dto)
    
    create_op = _monitor_operation(client=client, operation=create_op)

    return create_op.resource_location.replace("/knowledgebases/", "")

ナレッジ ベースを適切に作成するには、上記のコードで参照されている _monitor_operation 関数を必ず含めます。Make sure the include the _monitor_operation function, referenced in the above code, in order to successfully create a knowledge base.

ナレッジ ベースの更新Update a knowledge base

ナレッジ ベースを更新するには、ナレッジ ベース ID と、addupdatedelete DTO オブジェクトを含む UpdateKbOperationDTO を、update メソッドに渡します。You can update a knowledge base by passing in the knowledge base ID and an UpdateKbOperationDTO containing add, update, and delete DTO objects to the update method. 更新が成功したかどうかを確認するには、Operation.getDetail メソッドを使用します。Use the Operation.getDetail method to determine if the update succeeded.

def update_kb(client, kb_id):
    update_kb_operation_dto = UpdateKbOperationDTO(
        add=UpdateKbOperationDTOAdd(
            qna_list=[
                QnADTO(questions=["bye"], answer="goodbye")
            ]
        )
    )
    update_op = client.knowledgebase.update(kb_id=kb_id, update_kb=update_kb_operation_dto)
    _monitor_operation(client=client, operation=update_op)

ナレッジ ベースを適切に更新するには、上記のコードで参照されている _monitor_operation 関数を必ず含めます。Make sure the include the _monitor_operation function, referenced in the above code, in order to successfully update a knowledge base.

ナレッジ ベースの公開Publish a knowledge base

publish メソッドを使用して、ナレッジ ベースを公開します。Publish the knowledge base using the publish method. これにより、ナレッジ ベース ID によって参照される、最新の保存済みおよびトレーニング済みのモデルが取得され、エンドポイントで公開されます。This takes the current saved and trained model, referenced by the knowledge base ID, and publishes that at an endpoint.

def publish_kb(client, kb_id):
    client.knowledgebase.publish(kb_id=kb_id)

ナレッジ ベースのダウンロードDownload a knowledge base

データベースを QnADocumentsDTO のリストとしてダウンロードするには、download メソッドを使用します。Use the download method to download the database as a list of QnADocumentsDTO. このメソッドの結果は TSV ファイルではないため、これは、QnA Maker ポータルの [設定] ページからのエクスポートと同等 "ではありません"。This is not equivalent to the QnA Maker portal's export from the Settings page because the result of this method is not a TSV file.

def download_kb(client, kb_id):
    kb_data = client.knowledgebase.download(kb_id=kb_id, environment="Prod")
    print("KB Downloaded. It has {} QnAs.".format(len(kb_data.qna_documents)))

ナレッジ ベースを削除するDelete a knowledge base

delete メソッドをナレッジ ベース ID のパラメーターと共に使用して、ナレッジ ベースを削除します。Delete the knowledge base using the delete method with a parameter of the knowledge base ID.

def delete_kb(client, kb_id):
    client.knowledgebase.delete(kb_id=kb_id)

操作の状態の取得Get status of an operation

create や update などのメソッドの中には、プロセスが終了するのを待つ代わりに、操作が返されるのに十分な時間がかかるものがあります。Some methods, such as create and update, can take enough time that instead of waiting for the process to finish, an operation is returned. 操作からの操作 ID を使用して、(再試行ロジックを使用して) ポーリングし、元のメソッドの状態を判別します。Use the operation ID from the operation to poll (with retry logic) to determine the status of the original method.

次のコード ブロック内の setTimeout 呼び出しは、非同期コードをシミュレートするために使用されています。The setTimeout call in the following code block is used to simulate asynchronous code. これを再試行ロジックに置き換えます。Replace this with retry logic.

def _monitor_operation(client, operation):

    for i in range(20):
        if operation.operation_state in [OperationStateType.not_started, OperationStateType.running]:
            print("Waiting for operation: {} to complete.".format(operation.operation_id))
            time.sleep(5)
            operation = client.operations.get_details(operation_id=operation.operation_id)
        else:
            break
    if operation.operation_state != OperationStateType.succeeded:
        raise Exception("Operation {} failed to complete.".format(operation.operation_id))
    return operation

アプリケーションの実行Run the application

自分のアプリケーション ディレクトリで python knowledgebase_quickstart.py コマンドを使用してアプリケーションを実行します。Run the application with python knowledgebase_quickstart.py command from your application directory.

この記事にあるすべてのコード スニペットは、入手可能であり、1 つのファイルとして実行できます。All of the code snippets in this article are available and can be run as a single file.

python knowledgebase_quickstart.py

リソースをクリーンアップするClean up resources

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。Deleting the resource group also deletes any other resources associated with it.

次のステップNext steps