【Azure OpenAI】Power Automate クラウド フローで実装するOpenAI 外部API連携 ⑤(Power Automate実装例:tool実行)

Azure OpenAI(AOAI)を用いる時、GPTで柔軟に外部APIと連携して情報を得たり操作を行いたいケースがあります。
この時、AOAIの関数呼び出し(toolsパラメータ)を用いて実装する事が考えられます。
本記事ではこれをPower Automate フローで実装する方法について全6回に分けて掲載します。
本ブログは第5回です。長い記事になりましたがお付き合いいただければ幸いです。
【掲載内容一覧】
No |
内容 |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
tool実行の全体像
tool実行周辺処理のイメージは下図の通りです。
指定されたfunctionを全て実行し、結果をmessages変数に追加します。
今回定義された関数はsearchWebのみですが、複数の関数が定義されている場合は条件の箇所が関数の数だけ存在することになります。
個別設定
作成 toolCalls
AOAIの回答からtool_callsの内容を取り出します。

Apply to each Toolループ
tool_calls配列をループ処理します。
作成 toolName
ループ値から関数名を取り出します。
作成 toolsId
ループ値から関数呼び出しのidを取り出します。
idはGPTが付与するもので、messagesに関数実行結果を追加する時にこの情報を付与します。
条件 searchWeb
関数名が「searchWeb」であるかを確認します。いいえの場合は何もしません。
はいの場合は後続処理を行います。
HTTP bingSearch
ループ値から検索ワードを取り出しbingSearchで検索を実行します。
配列変数に追加 messages
tool_call_id :outputs('作成_toolsId')
name :outputs('作成_toolName')
content :body('HTTP_bingSearch')?['webPages']?['value']
今回のまとめ
今回はtool実行周りのフローについてまとめました。
関数実行結果はmessagesに追加され、メインループで再度AOAIに問い合わせを行います。
関数結果の情報を得たAOAIのGPTは次の関数を指定する事もあればユーザーへの回答を返す事もあります。
今回は関数がsearchWebのみなので不要に見える実装もありますが、toolsの関数構成が複雑化してもある程度柔軟に対応可能な構成にしています。
次回は回答処理についてまとめます。
システム開発・構築でお困りの問題や弊社が提供するサービス・ソリューションにご興味を抱かれましたら、是非一度 お問い合わせ ください。
※このブログで参照されている、Microsoft、Microsoft 365、Microsoft Copilot for Microsoft 365、Microsoft Teams、Azure OpenAI、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。
※その他の会社名、製品名は各社の登録商標または商標です。