Udemy 新コース: 作って学ぶPower BI!

Power Automate を利用してAzure OpenAI GPT-4o に接続するPower Apps アプリを作成する

Azure OpenAI GPT-4o が一般提供されましたので、早速Power Automate からアクセスしてみます。

デプロイ方法はこちらで説明しています。

コミュニティ

作成した感想などはぜひギークのXまでお寄せください。


SNS等での説明

こちらのアプリはYouTubeで作成方法を共有しております。

GitHubでソリューションを公開しております。

Azure OpenAI Studio

API の情報を入手

Chat にアクセスします。

デプロイしたモデルのチャットからコードにアクセスします。

curlを選択してAPIのエンドポイントとAPI Keyを入手します。

Power Automate

テスト用のインスタントフロー

Power Apps (V2) のトリガーで作成しておき、Power Apps からも接続できるようにしておきましょう。

組み込みからHTTPコネクタを選択します。続けてHTTPアクションを選択します。

HTTPアクションに先ほど入手したAPI情報を記載します。

本文の情報を入力します。

本文には以下の情報を登録します。

コピーしました!

本文
{
  "messages": [
    {
      "role": "system",
      "content": "You are an AI assistant that helps people find information."
    },
    {
      "role": "user",
      "content": ""
    }
  ],
  "temperature": 0.7,
  "top_p": 0.95,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "max_tokens": 800,
  "stop": null
}

manualに入力のテキストを設定します。

続けて、その入力をHTTPアクションに渡します。

発行とテスト

発行してテストしてみます。

手動で実行してみます。

このように質問してみます。

正しく実行されました。ここで、出力結果のうちメッセージだけを取得するためにbodyを入手します。

メッセージの抽出

今回のプロンプトでは以下のような情報を取得することができました。

コピーしました!

json
{
  "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": "Microsoft(マイクロソフト)は、アメリカ合衆国に本社を置く多国籍テクノロジー企業で、世界最大級のソフトウェアメーカーです。1975年にビル・ゲイツとポール・アレンによって設立されました。以下は、Microsoftについての主要な情報です:\n\n1. **製品とサービス**:\n   - **Windows**: 世界で最も普及しているパソコン用オペレーティングシステム。\n   - **Microsoft Office**: Word、Excel、PowerPointなどの生産性向上ソフトウェアのスイート。\n   - **Azure**: クラウドコンピューティングサービス。\n   - **Surface**: ノートパソコンやタブレットなどのハードウェア製品。\n   - **Xbox**: ゲームコンソール。\n   - **LinkedIn**: プロフェッショナルネットワーキングサービス。\n   - **GitHub**: ソフトウェア開発プラットフォーム。\n\n2. **ビジネスモデル**:\n   - ソフトウェアのライセンス販売。\n   - クラウドサービスの提供。\n   - ハードウェアの販売。\n   - 広告収入(特にLinkedInやBing検索エンジン)。\n\n3. **市場での位置づけ**:\n   - 世界の主要なテクノロジー企業の一つであり、Apple、Google、Amazonと並んで「ビッグテック」と称されることが多いです。\n\n4. **社会貢献と企業文化**:\n   - Microsoftは多様性とインクルージョンを重視し、様々な社会貢献活動も行っています。\n   - 環境への取り組みとして、カーボンニュートラルや再生可能エネルギーの使用を推進しています。\n\n5. **経営陣**:\n   - 現在のCEOはサティア・ナデラ(Satya Nadella)で、彼のリーダーシップの下、クラウドコンピューティングなどの新たな分野での成長が加速しています。\n\nMicrosoftは、技術革新とビジネス戦略の両面で非常に影響力のある企業であり、世界中で多くの人々や企業に利用されています。",
        "role": "assistant"
      }
    }
  ],
  "created": 1716320099,
  "id": "chatcmpl-9RPYBn7Xhr2epwxvAK7K5ye70I1CY",
  "model": "gpt-4o-2024-05-13",
  "object": "chat.completion",
  "prompt_filter_results": [
    {
      "prompt_index": 0,
      "content_filter_results": {
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ],
  "system_fingerprint": "fp_5f4bad809a",
  "usage": {
    "completion_tokens": 539,
    "prompt_tokens": 31,
    "total_tokens": 570
  }
}

jsonの階層構造として、choices > 0 > message > content となっていることがわかります。

以下のように入力します。

コピーしました!

Power Automate
body('HTTP')?['choices'][0]['message']['content']

再びテストを実行します。

正しくメッセージのみ取得できたことがわかります。

テキストについては完成しました。

次は画像も取り扱えるようにしてみます。

Power Apps トリガーに入力を追加します。

HTTPアクションの本文を以下のように変更します。

コピーしました!

json
{
  "messages": [
    {
      "role": "system",
      "content": "You are an AI assistant that helps people find information."
    },
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "",
            "detail": "high"
          }
        },
        {
          "type": "text",
          "text": ""
        }
      ]
    }
  ],
  "temperature": 0.7,
  "top_p": 0.95,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "max_tokens": 800,
  "stop": null
}

さらに入力を設定します。

この結果をPower Apps へ返答するようにしてフローを完成させます。

Powe Apps

Base64への変換は Hiroさんの素晴らしい関数を参考にさせていただきました。

コピーしました!

Base64への変換
Substitute(JSON(UploadedImage1.Image,JSONFormat.IncludeBinaryData),"""","")

Power Apps アプリの作成

以下のようなレイアウトのアプリを作成しました。

ボタンには以下のような関数を埋め込んでいます(OnSelect)。

コピーしました!

Power Fx
Set(output, 'CallGPT-4o'.Run( Substitute(JSON(UploadedImage1.Image,JSONFormat.IncludeBinaryData),"""",""), prompt.Text).result)

実行すると以下のように結果が返ってきました。

画像について正確に説明できているかと思います!

利用例

利用例を紹介いたします。

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

コメントを残す

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

Index