前提条件
[Azule]Language Studioを利用したテキスト分類AIの導入手順 による分類AIの導入が完了していること。
やりたいこと
Power Automateからテキスト分類AIを呼び出し、その結果を取得する。
フロー全体
必須パラメータの確認
AIをHTTPに呼び出すにあたり、そのAIの情報を埋め込む必要がある。
それは、Language Studioから確認をすることができる。
確認手順
Language Studioへログイン
テキスト分類AIプロジェクトを選択
「モデルのデプロイ」 > 「モデル」の選択 > 「予測URLの取得 」を選択
そうすると、curl形式でのエンドポイントが表示されるため、これをjson形式に変換する。
HTTPでリクエストを送信(カテゴリ分類処理の依頼)
REST API のフォーマット
リクエストを投げる際のパラメータはMicrosoft(モデルにテキスト分類要求を送信する)を参照
本文はJSON形式で設定をする必要がある
{
"displayName": "Classifying documents",
"analysisInput": {
"documents": [
{
"id": "1",
"language": "{LANGUAGE-CODE}",
"text": "Text1"
},
{
"id": "2",
"language": "{LANGUAGE-CODE}",
"text": "Text2"
}
]
},
"tasks": [
{
"kind": "CustomSingleLabelClassification",
"taskName": "Single Classification Label",
"parameters": {
"projectName": "{PROJECT-NAME}",
"deploymentName": "{DEPLOYMENT-NAME}"
}
}
]
}
パラメータ埋め込み後のコネクタ
■URI
@{variables('EndPoint')}/language/analyze-text/jobs?api-version=@{variables('APIVersion')}
■ヘッダー
Ocp-Apim-Subscription-Key:@variables('SubscriptionKey')
■本文
{
"displayName": "Classifying documents",
"analysisInput": {
"documents": [
{
"id": "1",
"language": "ja-jp",
"text": "ログインができません"
},
{
"id": "2",
"language": "ja-jp",
"text": "物価高ですが、これから値上げする予定とかありますか"
}
]
},
"tasks": [
{
"kind": "CustomSingleLabelClassification",
"taskName": "Single Classification Label",
"parameters": {
"projectName": "@{variables('ProjectName')}",
"deploymentName": "@{variables('DeployName')}"
}
}
]
}
HTTPでリクエストを送信(カテゴリ分類結果の取得)
カテゴリ分類処理は非同期で行われるため、都度リクエストを投げながら、ステータスが完了となっていたらレスポンスを解析する流れ。本来はループ処理でステータスを監視すべきだが、面倒くさいので適当に5秒待機させている。
結果確認に利用するURLは1回目のリクエストで返却したレスポンスに含まれる「operation-location」を利用する
■URI
@{outputs('HTTP')['headers']['operation-location']}
結果の参照
無事、カテゴリ分類処理が完了したら、その結果を取得する。
[N]は質問の数の配列になっている。
■カテゴリ名
@{body('HTTP_2')['tasks']['items'][0]['results']['documents']['class'][N]['category']
■信頼度
@{body('HTTP_2')['tasks']['items'][0]['results']['documents']['class'][N]['confidenceScore']
改善点
分類結果確認のリクエストはループを使って処理することで待機時間を短縮する。
サブスクリプションキーもPower Automateに直接設定するのはあまりよろしくないので、Azuleに保管するようにしましょう。