[Azule]テキスト分類をPower Automateから呼び出す

前提条件

[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に保管するようにしましょう。