AI Azure

Logic Apps でAzure OpenAIのChatGPTを取り扱う

はじめに

Logic Apps ではAzure OpenAIを取り扱うコネクタはまだ用意されていません。

そこでコネクタがなくても簡単に利用できるので一例を紹介します。

また、これは一問一答なので会話が続くわけではありません。

Logic Apps

消費モデルで作成しておきます。

事前準備はそれだけです。

デザイナー

今回はブラウザでGETでPrompt受けとった場合に回答するように設計します。

全体像は以下

最初にHTTP 要求の受信時と応答のテンプレートを利用して作成します。

メソッドをGETに設定します。

GETで受け取ったクエリを抽出します。

抽出されたJSON を解析します。

bodyの値を取り出します。

取り出した値をAzure OpenAIのAPIにPOSTします。

方法はPOST、URL、ヘッダーはAzure OpenAI Studioから参照しましょう。

Keyはポータルから確認します。

 

URIの確認

 

Keyの確認

 

本文です。

messagesの中は下記のように改行するる必要があります。\nだと失敗しました。どうやら使えないようです。

{
  "frequency_penalty": 0,
  "max_tokens": 800,
  "messages": [
    {
      "content": "@{body('JSON_の解析')?['body']}",
      "role": "user"
    }
  ],
  "presence_penalty": 0,
  "stop": null,
  "temperature": 0.7,
  "top_p": 0.95
}

 

次にOpenAI から帰ってきたJSON を分析します。

コンテンツに本文をします。

スキーマには下記を貼り付けます。

{
    "properties": {
        "choices": {
            "items": {
                "properties": {
                    "finish_reason": {},
                    "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"
}

 

次にJSONから値を取り出します。

回答はcontentに入っています。

trimは改行が文頭に入ることを避けるためです。

通常、contentを取り出そうとすると、logic apps はfor earchで回そうとします。そこで一つ目の回答を取り出すように指定しています。

trim(outputs('JSON_の解析_2')?['body']?['choices'][0]?['message']?['content'])

 

あとは応答として返すだけです。

確認

ブラウザやCURLコマンドで確認しましょう。

URLが生成されるので確認します。

生成されたURLの後ろにbodyをクエリとして追加します。

 

あとは返答があることを確認します。

まとめ

Logic AppsでもAzure OpenAIを簡単に取り扱うことができる紹介でした。

-AI, Azure
-,