[2025/06/26追記:一部入力パラメータの困難が解消されてました (Teamsコネクタで確認)]
前回の投稿では、Copilot Studioを利用して外部サービスから自動呼出しされるエージェントを作成する際の、トリガーに関する注意点をご紹介しました。 mofumofupower.hatenablog.com
今回はトリガーした後、エージェントが利用する「ツール」(ちょっと前までアクションと書かれていたもの)について躓きポイントと対処法をご紹介します。
エージェントの「ツール(アクション)」
Copilot Studioで、作成したエージェントの概要中ほどを表示すると「ツール」と書かれたセクションがあります。 ツールとは文字通り、AIエージェントがその動作の中で各種サービスのAPIを呼び出したり、Power Automateで作るエージェントフロー(≒クラウドフロー)を実行できるようになる機能です。
トリガーと同様、ここにはPower Apps, Automateでよく見る各種サービスのコネクターが表示されています。
例えばナレッジに何らかの社内規定文章が入っていて、それを参照して稟議を上げる (データベースへのアイテム追加と 承認アクション)や、単純に問い合わせ内容を記録する、あるいはTeamsで通知するなどの用途が考えれます。 ※実際に複雑なオペレーションがある場合にはエージェントフローの呼び出しを行うほうがよいパターンもある
ツールを追加すると、次にツールの入力(Apps, Automateの意味ではアクションの入力)画面に移動します。
ツールの入力パラメータは、作成者が明示的に値を指定するカスタム値 のほかに、AIにいい具合に値を設定してもらうモードも標準で提供されています。
人間語で「この入力パラメータには何をセットするのか」を指定してあげます。
と、大まかにはそれでいいのですが、ここからちょっと躓きポイントが2点ほど出てきます。(少なくとも2025/6 初旬時点)
躓きポイント1: 追加の入力は「保存」後に表示される
例としてSharePointリストへのアイテム追加を見てみます。
下図で左はPower Automateでの入力パラメータ、右はCopilot Studioの入力パラメータです。
赤枠部分を比較すると、リストの列に関する詳細(なんの列があるのか)がCopilot Studioでは不足していることがわかります。
-- 困った。アイテムを指定できない。まさかJSON書くのか??
実はこの追加で読み込まれるパラメータは一度ツールの設定を保存することで表示されます。
実際保存を押すと、リストの構造が読み込まれて追加のパラメータが表示されるようになりました。
ということで躓きポイントと対処は
必要なパラメータが表示されなかったら、一度保存してみよう
です。
躓きポイント2:動的な入力は手で指定 (dynamicInputSchemaの問題)
ポイント2はもう少し厄介です。
最初にツールの活用例として書いたTeamsで通知のパターンで直面したので、Teamsの「チャットまたはチャネルでメッセージを投稿する」アクションを見ていきましょう。
このアクションはPower Automateのアクションを見てもわかりますが、赤枠部分の入力パラメータが上2つの選択内容によって変化します。
このような動的な入力パラメータを持つアクション(ツール)の場合、残念ながらCopilot Studioは正常にパラメータを解釈できません。
まず初手。躓きポイント1と同様に、投稿者と投稿先までは設定できますが、その下の内容が表示されていません。
教訓を生かして一度保存してみます。確かに受信者とメッセージの入力欄は出てきます。
しかしここに値を入れてみると・・・
InvalidPropertyPath でエラー!!!!!
間違ってないのに。何も間違ってないのにエラーが表示されています。エラーを無視してアクションを実行させてみましょう。
しかしながら結果は・・・
「パラメータ body がないからリクエスト失敗したよ」と表示されます。
InvalidPropertyPath エラーの原因
さて、教訓1を活かしても解決しないこのInvalidPropertyPath、いったい何が原因なのでしょうか?
これを知るためにはツールをコード表示してみます。(保存ボタン左にある・・・をクリック)
すると、ツールの設定がyaml形式で表示されます。
表示されたyamlを詳しく見てみると、なんと指定した入力値 はパスが (body.recipient) であるのに対して、 入力パラメータのスキーマ(送るデータの構造)部分は body しかないんです。
これが InvalidPropertyPathの正体です。つまり要求されたパラメータはbody (JSONオブジェクト)なのに対して、ユーザーが指定したのは body.recipient (文字列型)なんです。これにより「プロパティのパスがおかしいよ」というエラーが表示されたというわけです。
InvalidPropertyPathエラーの解消
ではどうするか。UIではうまく値を指定できませんので、仕方がないのでコード表示でyamlをいじります。
問題の原因は body.recipient なんて知らないプロパティを指定しようとしたからなので、要求されたスキーマにある通り bodyそのものを指定してあげます。
このあたりはPower Apps側での知見がいきてきます。(Appsも同じような入力のため)
Teamsに関しては以下のブログがよくまとまっていたので、ご確認ください。
Copilot Studioではというと、次のようにyamlを書きます。
kind: TaskDialog inputs: - kind: ManualTaskInput propertyName: poster value: Flow bot - kind: ManualTaskInput propertyName: location value: Chat with Flow bot - kind: ManualTaskInput propertyName: body value: =ParseJSON("{""recipient"":""nagao@contoso.com"",""messageBody"":""以下の質問が投稿されました:"&System.Activity.Text&"""}") modelDisplayName: Post message in a chat or channel modelDescription: Posts a message to a chat or a channel
ParseJSON()
関数を使って、JSONオブジェクトを表す文字列をJSONオブジェクトに変換してbodyに設定するわけです。
これを施してあげると、正常にTeamsにメッセージが投稿されるようになります。
ということで、躓きの2つ目
InvalidPropertyPathのエラーが表示されたら、コード表示で頑張ってyamlを修正せよ
という教訓が得られました。 ちょっと厳しいんですが、これはdynamicInputSchemaが、他の2つの選択によって正しく読み込み・書き換えされていないことが原因なので、おそらくそのうち修正されるのではと期待しています。
まとめ
今回は Copilot Studioでエージェントにツール(Power Platformコネクターのアクション)を追加した際の挙動のおかしさについて、原因と対処方法を2つご紹介しました。
あくまでも2025年6月初時点での問題なので、今後ツールのアップデートで改善されるのではと期待します。その際はこちらのブログでお知らせします。
エージェントに追加できるツールは、リッチな機能を有するCopilot エージェントを作成するためのカギになる機能です。
ぜひ躓きポイントに気を付けながら、足を踏み入れてみてください。