Udemy 新コース: 作って学ぶAI Builder!

Azure OpenAI Service に接続するカスタムコネクタを作成する | Power Platform

AI Builder でGPTのモデルを利用できますが、より柔軟性が高いAzure OpenAI のモデルに接続したいケースが有るかと思います。

そこで今回は接続方法の一つとしてカスタムコネクタの作成方法をご紹介します。

接続方法の比較

Azure OpenAI への様々な接続方法がありますが、そのうち代表的な方法についてご紹介します。

接続方法特長デメリット
カスタムコネクタ・コネクタとして利用することができ再利用し易い
・閉域網からの接続にも利用することができる
最初に誰かがコネクター定義を
作成する必要がある
HTTPコネクタ・簡単に利用開始することができる
・接続情報は環境変数などに格納することができる
閉域網の接続に対応することができない
HTTP with Entra ID・Azure OpenAI を管理するAPI Management 等でEntra ID での認証を行っている場合に有効
閉域網からの接続にも利用することができる
利用者がエンドポイントの情報などを
自分で入力しなければならないため、配布しにくい
図1 :接続方法の比較

利用ケースに合った接続方法を選択してください。

今回はカスタムコネクタの作成方法をご紹介します。

Azure OpenAI のモデルをデプロイする

Azure OpenAI のモデルがない方はデプロイを実行しておきます。

ポータルはこちらからアクセスできます。 https://oai.azure.com/

カスタムコネクタの起動

Power Automate の作成者ポータルから起動します。

https://make.powerautomate.com

カスタムコネクタを選択します。

今回は1から作成してみようと思います。

なにか名前をつけて実行します。

Azure OpenAI Studio から情報を取得し、以下のように設定します。

認証タイプを設定します。ヘッダーにKey vaultの情報を入力できるようにしたいので認証なしとしておきます。

ヘッダーに入力することで、キーの管理を環境変数であったりAzure Key Vault にて実施することができます。

新しいアクションを設定します。

こちらがコネクターのアクションになります。

赤枠の部分については補足をしております。

補足説明

ここでいう、「概要」というのは以下の部分です。

また、「説明」はアクション単位ではインフォメーションアイコンにて表示されたり、フィールド単位ではそのフィールド内に透かして表示される部分です。

  • important 操作とパラメーターは常に、最初にユーザーに表示されます。
  • advanced 操作とパラメーターは追加メニューで非表示になります。
  • internal 操作とパラメーターはユーザーに対して非表示になります。

要求についての公式リファレンスはこちらにあります。

Quickstart – Get started using GPT-35-Turbo and GPT-4 with Azure OpenAI Service – Azure OpenAI Service | Microsoft Learn

コピーしました!

サンプル要求
{
    "messages": [
        {
            "role": "user",
            "content": "Does Azure OpenAI support customer managed keys?"
        }
    ],
    "max_tokens": 800,
    "temperature": 0.7
}

api-versionは以下のようにしておきます。

2024-05-13

応答のインポート

以下を参考に応答を受け取れるようにしておきます。こちらを設定することで、Parse JSON を行わなくて良いようになります。

サンプルからのインポートを選択し、以下を読み込ませます。

コピーしました!

サンプル応答
{
    "statusCode": 200,
    "headers": {
        "request-id": "48802067-1a07-4c3b-aa6a-776d41eb7506",
        "x-ms-region": "East US",
        "apim-request-id": "48802067-1a07-4c3b-aa6a-776d41eb7506",
        "x-ratelimit-remaining-requests": "149",
        "x-accel-buffering": "no",
        "x-ms-rai-invoked": "true",
        "X-Request-ID": "7907b159-86e2-48c3-84c5-71b2825cb504",
        "Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
        "azureml-model-session": "d010-20240713213025",
        "X-Content-Type-Options": "nosniff",
        "x-envoy-upstream-service-time": "1708",
        "x-ms-client-request-id": "5e91c62e-8770-4508-80b2-e1804c34afcd",
        "api-supported-versions": "1",
        "x-ratelimit-remaining-tokens": "148188",
        "Date": "Mon, 02 Sep 2024 06:49:45 GMT",
        "Content-Length": "1048",
        "Content-Type": "application/json; charset=utf-8"
    },
    "body": {
        "choices": [
            {
                "content_filter_results": {
                    "hate": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "self_harm": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "sexual": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "violence": {
                        "filtered": false,
                        "severity": "safe"
                    }
                },
                "finish_reason": "stop",
                "index": 0,
                "logprobs": null,
                "message": {
                    "content": "工場 作業員 溶接 火花 作業服",
                    "role": "assistant"
                }
            }
        ],
        "created": 1725259785,
        "id": "chatcmpl-A2vAfQ0BsJAfDQYmYlYktbIW5SRnJ",
        "model": "gpt-4o-2024-05-13",
        "object": "chat.completion",
        "prompt_filter_results": [
            {
                "prompt_index": 0,
                "content_filter_result": {
                    "jailbreak": {
                        "filtered": false,
                        "detected": false
                    },
                    "custom_blocklists": {
                        "filtered": false,
                        "details": []
                    }
                }
            },
            {
                "prompt_index": 1,
                "content_filter_result": {
                    "sexual": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "violence": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "hate": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "self_harm": {
                        "filtered": false,
                        "severity": "safe"
                    },
                    "custom_blocklists": {
                        "filtered": false,
                        "details": []
                    }
                }
            }
        ],
        "system_fingerprint": "fp_abc28019ad",
        "usage": {
            "completion_tokens": 14,
            "prompt_tokens": 696,
            "total_tokens": 710
        }
    }
}

content には返答が入っていて重要なため、こちらを編集してimportantにしておきましょう。

他にも活用したい項目があったら、importantにしておきます。

カスタムコネクタの作成

カスタムコネクタをこのタイミングで作成しておきます。

もし、このあとで更新した場合、コネクタの更新を行いましょう。

カスタムコネクタのテスト

早速テストしてみます。

接続情報を問われます。

クリックするだけで作成できるはずです。

api-key はAzure OpenAI Studio から入手しましょう。

デプロイのメニューから取得することができます。

カスタムで絞ってカスタムコネクタを探してみます。

先ほど定義したアクションが利用できるようになっていることがわかります。

接続することができました。

以上、ご参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index