4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

衝撃!Power Automateのドキュメント作成がAzure OpenAIとGPT-4oで実現できる!?

Last updated at Posted at 2024-06-30

衝撃!衝撃!衝撃!

今回の記事は、詳しい解説というよりも感動を書きます!
昨日「やーい、おまえんPower Automate、ごみやーしきー!」とマウントをとられないためにという記事の中でPower Automate Managementに触れました。

コチラはフローの詳細までJSONで取得できるコネクタです。

「あれ?フローの詳細をJSON??」これ渡せばGPT-4oMarkdownのドキュメント作れるのでは?と感じました。

やってみたレポートをササっと書きます!

読んでくださった方からみて使えそうなアイディアかどうか、考えていただくきっかけになると凄く嬉しいです!

Power Automateフローのドキュメント作成

あらためてPower Automateのドキュメント作成を考えると、市民開発者からサクっと自動化が構築できる反面、ドキュメントの残し方が非常に悩みます。

  • IT職のスタンダードがキャッチアップできない
  • 接続や各コネクタの情報まで拾うことが大変
    • フローの内容だけでもかなり手間

昨今、GPT-4oを中心に、Claude 3.5Geminiといった凄まじいモデルによって、Code to Documentは、使われている可能性が高いのでは?と感じています。

実態を正確に把握していないため、ご容赦ください。
著者の想像です。

しかしながら、Power Automate Managementコネクタのアクション、フローを取得するはフローに関する詳細、接続、アクションなどあらゆる情報が返ってきます。

コチラをプロンプトとして突っ込めば、Markdownのドキュメントはいけるのでは?🧐

Azure OpenAI GPT-4oで試す

考える時間より試したほうが早いので、下記のステップで実行することにしました。

image.png

フローは手動トリガーです。

  1. フローを手動でトリガーする
  2. フローの取得 今回は手で対象を選択しています
  3. 作成(Compose)GPT-4oに渡すプロンプトを定義
  4. RetrieveEnvironmentVariableSecretValue - Dataverseからエンドポイントの取得
  5. RetrieveEnvironmentVariableSecretValue - DataverseからAPIキーの取得
  6. RetrieveEnvironmentVariableSecretValue - Dataverseからモデル名の取得
  7. HTTP要求Azure OpenAI GPT-4oを実行
  8. ファイルの作成 - OneDrive for Businessでマークダウン形式のテキストファイルを作成
  9. 【非推奨】共有リンクの作成
  10. チャットやチャネルにカードを投稿する

凄くワクワクします・・・🐟

共有リンクの作成はアダプティブカードでサクっと結果を見るためだけに使っています。
自分しかいない環境で使っている操作です。
対象のファイルは共有を既に切っています。

試すフローはコチラ!

Office Scriptsを使ってCopilot風のサンプルデータ作成機能をExcelに搭載するで紹介したExcelからGPT-4oを使い、サンプルデータを返すフローのドキュメントを作成してもらいます。

  • Excel Online
  • Azure Key Vault

上記の接続を利用していますね。

image.png

概要は記事を見ていただければ幸いです!

フロー詳細

フローを取得するで中身を取得します。

image.png

今回の記事で実行していることは、プロンプトの中身だけが肝です。

image.png

プロンプト
下記はPower Automate フローの詳細、接続、アクションを列挙したJSONです。解析し、その内容をア日本語にローカライズし、レポート形式にして返してください。形式はMarkdown文字列で表示を返してください。

### JSON
@{body('フローの取得')}

下記はDataverseに格納したAzure OpenAIのシークレットを呼び出しています。

image.png

Azure OpenAIGPT-4oを使用するアクションです。

image.png

■ HTTP

キー
URI body('GetSecret_ENDPOINT')?['EnvironmentVariableSecretValue']}openai/deployments/@{body('GetSecret_DEPLOYMENT')?['EnvironmentVariableSecretValue']}/chat/completions?api-version=2024-02-15-preview
Method POST

■ ヘッダー

キー
Content-Type application/json
api-key body('GetSecret_APIKEY')?['EnvironmentVariableSecretValue']
Body
{
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "@{outputs('プロンプト')}"
        }
      ]
    }
  ],
  "max_tokens": 4096,
  "temperature": 0.7,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "top_p": 0.95
}

max_tokensを最大まで上げています

戻り値はbody('AzureOpenAI_GPT-4o')?['choices'][0]?['message']?['content']

OneDrive for Businessに格納した場合、ブラウザでMarkdownを見ることができます。

image.png

共有リンクは今回だけの検証用です

最後にチャットやチャネルにカードを投稿するを使って、Teamsに作成完了通知が来るようにしています。

image.png

Adaptive Card
{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{outputs('フローの取得')?['body/properties/displayName']}のレポート",
            "weight": "Bolder",
            "size": "Medium"
        },
        {
            "type": "TextBlock",
            "text": "OneDrive for Businessにレポートの準備ができました",
            "wrap": true
        }
    ],
    "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "レポートを開く",
            "url": "@{outputs('共有リンクを作成する')?['body/WebUrl']}"
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4"
}

結果はいかに・・・!

ドキドキ・・・!

image.png

おお👀✨

image.png

うおおおお!!

image.png

image.png

image.png

image.png

感動しました!!!
GPT-4o最高です!

  • 見せたくないものは黒塗りしています
  • Markdownで必ず返すためには、プロンプトの工夫やfunction callingの設定が必要だと思います
  • さらなる領域に踏み込む場合、Azure Functionsが適しているように感じます
  • 今回は実験目的であり、セキュリティを十分に検討しない方法を採用しています
  • 実運用に適するためには課題がある前提です

おわりに

夢がありますね!
夢をみるきっかけになると何よりです!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?