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を入手します。
メッセージの抽出
今回のプロンプトでは以下のような情報を取得することができました。
コピーしました!
{
"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
となっていることがわかります。




以下のように入力します。
コピーしました!
body('HTTP')?['choices'][0]['message']['content']
再びテストを実行します。
正しくメッセージのみ取得できたことがわかります。

テキストについては完成しました。
次は画像も取り扱えるようにしてみます。
Power Apps トリガーに入力を追加します。

HTTPアクションの本文を以下のように変更します。
コピーしました!
{
"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さんの素晴らしい関数を参考にさせていただきました。
コピーしました!
Substitute(JSON(UploadedImage1.Image,JSONFormat.IncludeBinaryData),"""","")
Power Apps アプリの作成
以下のようなレイアウトのアプリを作成しました。

ボタンには以下のような関数を埋め込んでいます(OnSelect)。
コピーしました!
Set(output, 'CallGPT-4o'.Run( Substitute(JSON(UploadedImage1.Image,JSONFormat.IncludeBinaryData),"""",""), prompt.Text).result)
実行すると以下のように結果が返ってきました。

画像について正確に説明できているかと思います!
利用例
利用例を紹介いたします。





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