会話言語理解のモデルのバックアップおよび復旧
Azure portal で言語リソースを作成するときに、それを作成するリージョンを指定します。 それ以降、リソースとそれに関連するすべての操作が、指定された Azure サーバー リージョンで実行されます。 リージョン全体に影響が及ぶネットワークの問題が発生することはまれですが、まったくないわけではありません。 ソリューションを常に使用できるようにする必要がある場合は、別のリージョンにフェールオーバーするように設計する必要があります。 これには、異なるリージョンにある 2 つの Azure AI 言語リソースと、リージョン間で CLU モデルを同期する機能が必要です。
アプリまたはビジネスが CLU モデルの使用に依存している場合は、プロジェクトのレプリカを、サポートされている別のリージョンに作成することをお勧めします。 これにより、リージョンの機能停止が発生した場合は、プロジェクトをレプリケートした他のフェールオーバー リージョン内のモデルにアクセスできるようになります。
プロジェクトのレプリケートとは、プロジェクトのメタデータとアセットをエクスポートし、新しいプロジェクトにインポートすることを意味します。 これは、プロジェクトの設定、インテント、エンティティ、および発話のコピーを作成するだけです。 ランタイム API で使用できるようにするには、モデルをトレーニングしてデプロイする必要があります。
この記事では、エクスポートおよびインポート API を使用して、サポートされている別々の地理的リージョンにあるリソース間でプロジェクトをレプリケートする方法、プロジェクトの同期を維持するガイダンス、およびランタイムの使用に必要な変更について説明します。
前提条件
- 異なる Azure リージョンにある 2 つの Azure AI Language リソース。それぞれが異なるリージョンに存在します。
リソース キー エンドポイントを取得する
次の手順に従って、プライマリ リソースとセカンダリ リソースのキーとエンドポイントを取得します。 これらは、次のステップで使用します。
Azure portal でリソースの概要ページに移動します。 左側のメニューで [キーとエンドポイント] を選びます。 API 要求のエンドポイントとキーを使います
ヒント
プライマリ リソースとセカンダリ リソースの両方のキーとエンドポイントをメモしておきます。 これらの値を使用して、{PRIMARY-ENDPOINT}
、{PRIMARY-RESOURCE-KEY}
、{SECONDARY-ENDPOINT}
、および {SECONDARY-RESOURCE-KEY}
の各プレースホルダーを置き換えます。
また、プロジェクト名、モデル名、およびデプロイ名もメモしておきます。 これらの値を使用して、{PROJECT-NAME}
、{MODEL-NAME}
、および {DEPLOYMENT-NAME}
の各プレースホルダーを置き換えます。
プライマリ プロジェクト アセットをエクスポートする
まず、プライマリ リソース内のプロジェクトからプロジェクト アセットをエクスポートします。
エクスポート ジョブを送信する
次の要求のプレースホルダーを、最初の手順で取得した {PRIMARY-ENDPOINT}
と {PRIMARY-RESOURCE-KEY}
に置き換えます。
プロジェクトをエクスポートするには、次の URL、ヘッダー、JSON 本文を使って POST 要求を作成します。
要求 URL
API 要求を作るときは、次の URL を使います。 次のプレースホルダーの値を実際の値に置き換えてください。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:export?stringIndexType=Utf16CodeUnit&api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | EmailApp |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、成功を示す 202
応答が返されます。 応答ヘッダーで、operation-location
の値を抽出します。 それは次のように書式設定されています。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
この操作は非同期であるため、JOB-ID
を使って要求が識別されます。 この URL を使用し、同じ認証方法を使用して、エクスポートされたプロジェクト JSON を取得します。
エクスポート ジョブの状態を取得する
次の要求のプレースホルダーを、最初の手順で取得した {PRIMARY-ENDPOINT}
と {PRIMARY-RESOURCE-KEY}
に置き換えます。
次の GET 要求を使用して、エクスポート ジョブの状態を照会します。 前のステップで取得した URL を使うことも、下のプレースホルダーの値を実際の値に置き換えることもできます。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/export/jobs/{JOB-ID}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{JOB-ID} |
エクスポート ジョブの状態を検索するための ID。 これは、前のステップで受け取った location ヘッダーの値に含まれています。 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 説明 | 値 |
---|---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 | {YOUR-PRIMARY-RESOURCE-KEY} |
応答本文
{
"resultUrl": "{Endpoint}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/export/jobs/xxxxxx-xxxxx-xxxxx-xx/result?api-version={API-VERSION}",
"jobId": "xxxx-xxxxx-xxxxx-xxx",
"createdDateTime": "2022-04-18T15:23:07Z",
"lastUpdatedDateTime": "2022-04-18T15:23:08Z",
"expirationDateTime": "2022-04-25T15:23:07Z",
"status": "succeeded"
}
本文内の resultUrl
キーの URL を使用して、このジョブからエクスポートされたアセットを表示します。
エクスポート結果を取得する
前のステップで受け取った {RESULT-URL}
を使用して GET 要求を送信し、エクスポート ジョブの結果を表示します。
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 説明 | 値 |
---|---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 | {PRIMARY-RESOURCE-KEY} |
次のインポート ジョブの本文として使用するため、応答本文をコピーします。
新しいプロジェクトにインポートする
ここでは、先に進んで、エクスポートしたプロジェクト アセットをセカンダリ リージョン内の新しいプロジェクトにインポートし、レプリケートできるようにします。
インポート ジョブを送信する
次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
に置き換えます。
次の URL、ヘッダー、JSON 本文を使用して POST 要求を送信し、プロジェクトをインポートします。
要求 URL
API 要求を作るときは、次の URL を使います。 プレースホルダーの値は、実際の値に置き換えます。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:import?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は大文字と小文字が区別され、インポートする JSON ファイルのプロジェクト名と一致している必要があります。 | EmailAppDemo |
{API-VERSION} |
呼び出している API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
本文
送信する JSON 本文は、次の例のようになります。 JSON オブジェクトの詳細については、リファレンス ドキュメントを参照してください。
{
"projectFileVersion": "{API-VERSION}",
"stringIndexType": "Utf16CodeUnit",
"metadata": {
"projectKind": "Conversation",
"settings": {
"confidenceThreshold": 0.7
},
"projectName": "{PROJECT-NAME}",
"multilingual": true,
"description": "Trying out CLU",
"language": "{LANGUAGE-CODE}"
},
"assets": {
"projectKind": "Conversation",
"intents": [
{
"category": "intent1"
},
{
"category": "intent2"
}
],
"entities": [
{
"category": "entity1"
}
],
"utterances": [
{
"text": "text1",
"dataset": "{DATASET}",
"intent": "intent1",
"entities": [
{
"category": "entity1",
"offset": 5,
"length": 5
}
]
},
{
"text": "text2",
"language": "{LANGUAGE-CODE}",
"dataset": "{DATASET}",
"intent": "intent2",
"entities": []
}
]
}
}
キー | プレースホルダー | 値 | 例 |
---|---|---|---|
{API-VERSION} |
呼び出している API のバージョン。 | 2023-04-01 |
|
projectName |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | EmailAppDemo |
language |
{LANGUAGE-CODE} |
プロジェクトで使用される発話の言語コードを指定する文字列。 プロジェクトが多言語プロジェクトの場合は、ほとんどの発話の言語コードを選択します。 | en-us |
multilingual |
true |
データセット内に複数の言語のドキュメントを含めるブール値。 モデルがデプロイされると、サポートされている任意の言語 (トレーニング ドキュメントに含まれていない言語も含む) でモデルにクエリを実行できます。 | true |
dataset |
{DATASET} |
テスト セットとトレーニング セットの間でデータを分割する方法については、モデルをトレーニングする方法を参照してください。 このフィールドで使用できる値は Train および Test です。 |
Train |
要求が成功すると、API 応答には、インポート ジョブの状態を確認するために使用できる URL を含む operation-location
ヘッダーが含まれます。 次のように書式設定されています。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
インポート ジョブの状態を取得する
次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
に置き換えます。
プロジェクトのインポート要求の送信に成功すると、インポート ジョブの状態を確認するための完全な要求 URL (エンドポイント、プロジェクト名、ジョブ ID を含む) が応答の operation-location
ヘッダーに組み込まれます。
次の GET 要求を使用して、インポート ジョブの状態を照会します。 前のステップで取得した URL を使うことも、プレースホルダーの値を実際の値に置き換えることもできます。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{JOB-ID} |
インポート ジョブの状態を検索するための ID。 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 説明 | 値 |
---|---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 | {YOUR-PRIMARY-RESOURCE-KEY} |
応答本文
要求を送信すると、次の応答を受け取ります。 [status](状態) パラメーターが [succeeded](成功) に変更されるまで、このエンドポイントのポーリングを続けます。
{
"jobId": "xxxxx-xxxxx-xxxx-xxxxx",
"createdDateTime": "2022-04-18T15:17:20Z",
"lastUpdatedDateTime": "2022-04-18T15:17:22Z",
"expirationDateTime": "2022-04-25T15:17:20Z",
"status": "succeeded"
}
モデルをトレーニングする
プロジェクトをインポートすると、プロジェクトのアセットとメタデータ、およびアセットのみがコピーされます。 引き続きモデルをトレーニングする必要があります。これにより、アカウントに対する使用が発生します。
トレーニング ジョブの送信
次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
に置き換えます。
次の URL、ヘッダー、JSON 本文を使用して POST 要求を作成し、トレーニング ジョブを送信します。
要求 URL
API 要求を作るときは、次の URL を使います。 プレースホルダーの値は、実際の値に置き換えます。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | EmailApp |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
要求本文
要求では次のオブジェクトを使います。 トレーニングが完了すると、modelLabel
パラメーターに使用する値の後にモデルの名前が付けられます。
{
"modelLabel": "{MODEL-NAME}",
"trainingMode": "{TRAINING-MODE}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"testingSplitPercentage": 20,
"trainingSplitPercentage": 80
}
}
キー | プレースホルダー | 値 | 例 |
---|---|---|---|
modelLabel |
{MODEL-NAME} |
モデルの名前。 | Model1 |
trainingConfigVersion |
{CONFIG-VERSION} |
トレーニング構成モデルのバージョン。 既定では、最新のモデル バージョンが使用されます。 | 2022-05-01 |
trainingMode |
{TRAINING-MODE} |
トレーニングに使用するトレーニング モード。 サポートされているモードは、高速のトレーニングですが、英語でのみ使用可能な [標準トレーニング]と、他の言語や多言語プロジェクトでもサポートされていますが、トレーニング時間が長くなる [高度なトレーニング] です。 トレーニング モードの詳細を参照してください。 | standard |
kind |
percentage |
分割方法。 設定可能な値は、percentage または manual です。 詳細については、モデルのトレーニング方法に関するセクションを参照してください。 |
percentage |
trainingSplitPercentage |
80 |
トレーニング セットに含まれるタグ付きデータの割合。 推奨値は 80 です。 |
80 |
testingSplitPercentage |
20 |
テスト用セットに含めるタグ付けされたデータの割合。 推奨値は 20 です。 |
20 |
注意
trainingSplitPercentage
と testingSplitPercentage
は、Kind
が percentage
に設定されている場合にのみ必要であり、両方の割合の合計は 100 に等しくなる必要があります。
API 要求を送信すると、成功を示す 202
応答が返されます。 応答ヘッダーで、operation-location
の値を抽出します。 それは次のように書式設定されています。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
この URL を使用してトレーニング ジョブの状態を取得できます。
トレーニング状態の取得
次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
に置き換えます。
トレーニング要求の送信に成功すると、インポート ジョブの状態を確認するための完全な要求 URL (エンドポイント、プロジェクト名、ジョブ ID を含む) が応答の operation-location
ヘッダーに組み込まれます。
モデルのトレーニングの進行状況を表す状態を取得するには、次の GET 要求を使用します。 次のプレースホルダーの値を実際の値に置き換えてください。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{YOUR-ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | EmailApp |
{JOB-ID} |
モデルのトレーニングの状態を取得するための ID。 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
応答本文
要求を送信すると、次の応答を受け取ります。 [status](状態) パラメーターが [succeeded](成功) に変更されるまで、このエンドポイントのポーリングを続けます。
{
"result": {
"modelLabel": "{MODEL-LABEL}",
"trainingConfigVersion": "{TRAINING-CONFIG-VERSION}",
"trainingMode": "{TRAINING-MODE}",
"estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
"trainingStatus": {
"percentComplete": 3,
"startDateTime": "2022-04-18T15:45:06.8190649Z",
"status": "running"
},
"evaluationStatus": {
"percentComplete": 0,
"status": "notStarted"
}
},
"jobId": "xxxxx-xxxxx-xxxx-xxxxx-xxxx",
"createdDateTime": "2022-04-18T15:44:44Z",
"lastUpdatedDateTime": "2022-04-18T15:45:48Z",
"expirationDateTime": "2022-04-25T15:44:44Z",
"status": "running"
}
キー | 値 | 例 |
---|---|---|
modelLabel |
モデル名 | Model1 |
trainingConfigVersion |
トレーニング構成バージョン。 既定では、最新バージョンが使用されます。 | 2022-05-01 |
trainingMode |
選択したトレーニング モード。 | standard |
startDateTime |
トレーニングが開始された時間 | 2022-04-14T10:23:04.2598544Z |
status |
トレーニング ジョブの状態 | running |
estimatedEndDateTime |
トレーニング ジョブが完了するまでの推定時間 | 2022-04-14T10:29:38.2598544Z |
jobId |
トレーニング ジョブ ID | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx |
createdDateTime |
トレーニング ジョブの作成日時 | 2022-04-14T10:22:42Z |
lastUpdatedDateTime |
トレーニング ジョブの最終更新日時 | 2022-04-14T10:23:45Z |
expirationDateTime |
トレーニング ジョブの有効期限の日時 | 2022-04-14T10:22:42Z |
モデルをデプロイする
これは、トレーニング済みのモデルをランタイム予測 API を介してフォームに使用できるようにするための手順です。
ヒント
メンテナンスを容易にし、システムへの変更を最小限に抑えてトラフィックのリダイレクトを処理できるように、プライマリ プロジェクトと同じデプロイ名を使用します。
デプロイ ジョブを送信する
次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
に置き換えます。
会話言語理解モデルのデプロイを始めるには、次の URL、ヘッダー、JSON 本文を使って PUT 要求を作ります。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{DEPLOYMENT-NAME} |
デプロイの名前。 この値は、大文字と小文字が区別されます。 | staging |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
要求本文
{
"trainedModelLabel": "{MODEL-NAME}",
}
キー | プレースホルダー | 値 | 例 |
---|---|---|---|
trainedModelLabel | {MODEL-NAME} |
デプロイに割り当てられるモデル名。 正常にトレーニングされたモデルのみ割り当てることができます。 この値は、大文字と小文字が区別されます。 | myModel |
API 要求を送信すると、成功を示す 202
応答が返されます。 応答ヘッダーで、operation-location
の値を抽出します。 それは次のように書式設定されています。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
この URL を使用してデプロイ ジョブの状態を取得できます。
デプロイの状態を取得する
次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
に置き換えます。
プロジェクトのデプロイ要求の送信に成功すると、インポート ジョブの状態を確認するための完全な要求 URL (エンドポイント、プロジェクト名、ジョブ ID を含む) が応答の operation-location
ヘッダーに組み込まれます。
次の GET 要求を使って、デプロイ ジョブの状態を取得します。 プレースホルダーの値は、実際の値に置き換えます。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{DEPLOYMENT-NAME} |
デプロイの名前。 この値は、大文字と小文字が区別されます。 | staging |
{JOB-ID} |
モデルのトレーニングの状態を取得するための ID。 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
応答本文
要求を送信すると、次の応答を受け取ります。 [status](状態) パラメーターが [succeeded](成功) に変更されるまで、このエンドポイントのポーリングを続けます。
{
"jobId":"{JOB-ID}",
"createdDateTime":"{CREATED-TIME}",
"lastUpdatedDateTime":"{UPDATED-TIME}",
"expirationDateTime":"{EXPIRATION-TIME}",
"status":"running"
}
ランタイムの呼び出しの変更点
システム内で、ランタイム API を呼び出すステップで、送信タスク API から返された応答コードを確認します。 要求の送信中に一貫性のある障害が観察される場合は、プライマリ リージョンで機能停止が発生している可能性があります。 1 回だけの障害は機能停止を意味しているわけではなく、一時的な問題である可能性があります。 作成したセカンダリ リソースを介してジョブの送信を再試行します。 2 回目の要求では、{YOUR-SECONDARY-ENDPOINT}
とセカンダリ キーを使用します。上記手順に従った場合も {PROJECT-NAME}
と {DEPLOYMENT-NAME}
は同じになるため、要求本文を変更する必要はありません。
セカンダリ リソースの使用に戻した場合は、モデルがデプロイされているリージョンの違いにより、待機時間がわずかに増加します。
プロジェクトが同期しているかどうかを確認する
両方のプロジェクトの鮮度を維持することが、プロセスの重要な部分です。 プライマリ プロジェクトに対して更新が行われたかどうかを頻繁に確認して、それらをセカンダリ プロジェクトに移動できるようにします。 これにより、プライマリ リージョンで障害が発生し、セカンダリ リージョンに移動する場合は、最新の更新プログラムが既に含まれているため、同様のモデル パフォーマンスが期待されます。 プロジェクトが同期中の場合、チェックの頻度の設定は重要な選択です。セカンダリ モデル内のデータの鮮度を保証するために、このチェックを毎日実行することをお勧めします。
プロジェクトの詳細を取得する
次の URL を使用してプロジェクトの詳細を取得します。本文で返されるキーの 1 つは、プロジェクトの最終変更日を示します。 次の手順を 2 回繰り返します。1 回はプライマリ プロジェクト用、もう 1 回はセカンダリ プロジェクトに用です。返された両方のタイムスタンプを比較して、それらの同期が失われていないか確認します。
次の GET 要求を使用して、プロジェクトの詳細を取得します。 前のステップで取得した URL を使うことも、下のプレースホルダーの値を実際の値に置き換えることもできます。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 説明 | 値 |
---|---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 | {YOUR-PRIMARY-RESOURCE-KEY} |
応答本文
{
"createdDateTime": "2022-04-18T13:53:03Z",
"lastModifiedDateTime": "2022-04-18T13:53:03Z",
"lastTrainedDateTime": "2022-04-18T14:14:28Z",
"lastDeployedDateTime": "2022-04-18T14:49:01Z",
"projectKind": "Conversation",
"projectName": "{PROJECT-NAME}",
"multilingual": true,
"description": "This is a sample conversation project.",
"language": "{LANGUAGE-CODE}"
}
{SECONDARY-ENDPOINT}
と {SECONDARY-RESOURCE-KEY}
を使用して、レプリケートしたプロジェクトに対して同じ手順を繰り返します。 両方のプロジェクトから返された lastModifiedDateTime
を比較します。 プライマリ プロジェクトがセカンダリ プロジェクトよりも早く変更された場合は、モデルのエクスポート、インポート、トレーニング、デプロイの手順を繰り返す必要があります。
次の手順
この記事では、エクスポート API とインポート API を使用して、プロジェクトを他のリージョン内のセカンダリ言語リソースにレプリケートする方法について説明しました。 次は、API リファレンス ドキュメントを参照して、オーサリング API を使用して他にできることを確認してください。