MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

【Copilot Studio】躓きポイント!ツールでの入力パラメータについて

[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に関しては以下のブログがよくまとまっていたので、ご確認ください。

powerplatformnikki.com

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 エージェントを作成するためのカギになる機能です。

ぜひ躓きポイントに気を付けながら、足を踏み入れてみてください。