👋

Azure OpenAI Service を Logic Apps から気軽に呼び出してみる

2023/04/07に公開

※こちらの記事の内容は2023年4月初旬ベースの内容になります。最新の情報は公式ドキュメントもあわせてご参照ください。

ここでやること

  • Azure OpenAI Service の API の呼び出し方を確認
  • Logic App のワークフローから Azure OpenAI Service の API を呼び出す
  • Azure OpenAI Service から返ってきた結果を利用する

Azure OpenAI Service の API の呼び出し方を確認

Azure OpenAI Service の利用開始方法については下記を参照ください。今回は「GPT-35-Turbo」モデルでの利用方法をベースに書きますが、基本的な操作は「GPT-3」モデルでも同様です。

Azure OpenAI Studio の「チャット」のプレイグラウンド画面では、実際に Web 上でチャットのセッションが体験できますが、このチャットで OpenAI のモデルが返答してくれるテキストを API で取得する方法を確認します。

「チャットセッション」の中にある「コードの表示」ボタンをクリックすると、サンプルコードが表示されます。

サンプルコードの種類にて「curl」を選択すると下記画像のような内容になり、実際に Azure OpenAI Service に API リクエストを投げる方法が出てきます。

この中で重要な部分は

  • Http エンドポイントの URL
  • ヘッダーにて API KEY を指定
  • Body にチャットの会話を配列で格納、Role プロパティで発言元を指定
  • その他パラメータと会話内容を合わせて Json で送信
    となり、これを意識して Logic App のワークフローを組んでいきます。

※API バージョンが変更され、仕様も変わる可能性があるため、最新情報は下記をご確認ください。
Azure OpenAI Service の REST API リファレンス

Logic App のワークフローから Azure OpenAI Service の API を呼び出す

まずは Logic App のリソースを一番安いプランで作成します。

今回は「繰り返し」トリガーを使ってサンプルを作り始めます。

サンプルとして今回は Teams のメッセージを取得し、その内容を要約するワークフローを作成します。(詳細な使い方は今回のスコープではないので省略します)

Logic App のワークフローから Azure OpenAI Service の API を呼び出す画面はこちらです。

※本番システムでは Api-key を直書きせず、Key Vault 等の利用を検討してください。

先ほど Azure OpenAI Studio で確認した項目を「URI」や「ヘッダー」に入れます。また「本文」については Azure OpenAI Studio のサンプルコードで「json」を選択し、そちらを参考に入力してください。

少しだけ JSON の解説をすると

  • messages の中にチャットの履歴が配列として格納
  • 配列内の各要素は role と content に分かれており、role は system と user の2つ
  • message の中の最後の発言が user からのものであれば、そこまでの会話に応じた OpenAI からの応答が返ってくる仕組み(今回は role が user のメッセージを1つだけ配列に入れる形で Logic App の設定をします)

Azure OpenAI Service から返ってきた結果を利用する

後は、Azure OpenAI Service の API から返ってきた応答を Logic App 内で扱える形式に変換した後、今回はサンプルとして Teams のチャンネルに投稿するワークフローを定義します。

JSON の解析部分ですが、実際に API から返ってくる応答を「サンプルのペイロードを使用してスキーマを生成する」に入れてスキーマを生成することも可能です。
念のため今回利用した「https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version=2023-03-15-preview」で返ってくるスキーマも置いておきます。

{
    "properties": {
        "choices": {
            "items": {
                "properties": {
                    "finish_reason": {
                        "type": "string"
                    },
                    "index": {
                        "type": "integer"
                    },
                    "message": {
                        "properties": {
                            "content": {
                                "type": "string"
                            },
                            "role": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "required": [
                    "index",
                    "finish_reason",
                    "message"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "created": {
            "type": "integer"
        },
        "id": {
            "type": "string"
        },
        "model": {
            "type": "string"
        },
        "object": {
            "type": "string"
        },
        "usage": {
            "properties": {
                "completion_tokens": {
                    "type": "integer"
                },
                "prompt_tokens": {
                    "type": "integer"
                },
                "total_tokens": {
                    "type": "integer"
                }
            },
            "type": "object"
        }
    },
    "type": "object"
}

あとは「トリガーの実行」をクリックするだけです。

問題なければすべて正常に実行され、Teams の指定したチャンネルにメッセージが投稿されるはずです。

まとめ

Logic App で手軽に Azure OpenAI Service と他サービスとの連携ができます。API 呼び出し部分で少し慣れない部分もあるかもしれませんが、コードを基本的に書かなくてよいので、いろいろなプロトタイプを爆速で作る分には良いプラットフォームだと思います。

参考リンク集

Discussion