本記事はなんでもCopilot アドベントカレンダー12/10の記事です。
SNSに共有するときは
Xのハッシュタグ、 #なんでもCopilot を付けてPostしてください。
目次
はじめに
Copilot Studio の自律型エージェント機能がパブリックプレビューしました。
これまで、チャットで話しかけてリアクティブに動いていたエージェントが、バックグラウンドでプロアクティブに動いてくれるようになりました。
Event triggers overview (preview) – Microsoft Copilot Studio | Microsoft Learn
多くのトリガーが利用できるようになっています。

シナリオ
今回は、以下のシナリオでの作成方法を利用して、これまでのアプリケーション開発と何が違うかについて説明しようと思います。
自律型エージェントの特長
自律型エージェントを単純に説明すると、トリガー、ナレッジ、アクション、それをオーケストレーションする指示から構成されます。
- トリガーはエージェントに対して複数設定することができ、エージェントが起動する開始操作にあたります。
- アクションはエージェントが行える操作にあたります。例えば、データの登録や削除、更新などが該当します。特定のデータソースンドに対するコネクタやPower Automate のフローを利用することができます。
- ナレッジはエージェントの持つLLMの知識を拡張するデータソースです。
- アクションの実行順番、その条件やふるまいの定義など、どのように動作するかを指示 (Instruction) に記述して、全体的な振る舞いを定義します。
Power Automate のフローではアクションを繋げていき、全体的な指示は必要なく、一つ一つの順番をデザイナー上で具体的に定義しました。
Power Automate クラウドフローとは違い、動作順や条件など、そのままエージェントにやってほしいことを基本的には書くだけです。それに、追加でエージェントが実行できるアクションを準備します。
このように指示の位置づけが非常に重要になっています。
自律型エージェントの仕組み
Copilot Studio が自律的に起動するきっかけを担うのはPower Automate です。Power Automate がトリガーとなり、自動化したクラウドフローやスケジュール済みクラウドフローからの実行ができます。

エージェント名は公開すると表示されるようになります。
前提条件
Copilot Studio には4種類のライセンス形態があります。
Copilot Studio 自律型エージェント機能は 生成型オーケストレーションを利用するため、そのうちの2種類で利用可能です。
ライセンス | 説明 | 自律型 エージェント |
---|---|---|
Copilot Studio スタンドアローン | テナント単位で メッセージ容量を サブスクリプションする | |
Copilot Studio 従量課金 | テナント単位で メッセージ容量を 利用した分だけ後払いする | |
Microsoft 365 Copilot | ユーザー単位で一部の機能を サブスクリプションする | |
Microsoft 365 | ユーザー単位で一部の機能を サブスクリプションする |
Copilot Studio にはトライアルも用意されています。トライアルでも自律型エージェントを利用可能です。
ライセンスの他に、現時点ではCopilot Studio のベースの言語は英語である必要があります。こちらは作成編にて実施方法を説明します。
自律型エージェントの作成方法
自律型エージェントは以下のような手順で作成することができます。
Copilot Studio のサイトに移動し、エージェントを作成します。
新しくエージェントを作成します。今回のエージェントの名称はマーケットニーズ
としておきます。

言語は現時点で英語に対応しているため英語とします。

エージェントの説明は以下の通りとします。

自動車のマーケットのニーズを判断して、影響について指摘し、対応策を提案するエージェントです。
指示は以下の通りとします。
あなたは、自動車のマーケットのニーズを判断して、影響について指摘し、対応策を提案するエージェントです。Webサイトから取得したニュースは後で確認できるようにDataverse に保存する必要があります。マーケットのニーズと対応策はTeams に投稿してマーケティングチームに知らせる必要があります。そのために、以下の手順を漏れなく実行してください。すべてのアクションが完了したら、作業は終了です。あなたは上から順番に以下のタスクを実行します:
自動車 おすすめというキーワードに基づき、内部のナレッジ を検索し、タイトル、本文、カテゴリ、引用URL の情報を解析します。
そのニュースの検索結果は Agent | Dataverse に登録 というアクションを利用して登録します。出力言語は日本語です。フォーマットは見出しを含めHTML形式とします。ニュースの本文の見出しは、記事の概要、マーケットのニーズ、対応策とします。記事がなかった場合は、記事なしと登録し、作業は終了し、3は実行しません。複数ある場合は複数の記事を要約して登録します。
その結果は Agent | Teams に投稿する というアクションを利用してTeams に投稿します。出力言語は日本語です。フォーマットは見出しを含めHTML形式とします。見出しは、 記事の概要、マーケットのニーズ、対応策、引用URL とします。
作業を終了します。
指示が最も重要なので、注意深く伝わるように書きます。これでフローを作っているという意識で書くといいでしょう。
ナレッジには公開Webサイトとして以下を追加します。

ここまで設定できたら作成とします。
自律型エージェント機能を利用するにはオーケストレーションを有効にします。

さらにトリガーを有効化します。

今回はスケジュール済みクラウドフローを連携します。

ウイザードのとおりに進めます。

1日一回実行するようにします。こちらの頻度はニュースサイトの更新タイミングに合わせるといいでしょう。

Copilot Studio が実際に実行できるように、指示の文章に記載したアクションを設定します。

フローを選択して追加します。

最初にフロー名をつけます。フローの名称を一度保存してからでは変更ができなくなりますので、注意しましょう。

指示で指定した、Agent | Dataverse に登録
という名称にします。
入力を以下のように指定します。

事前に上記のような列をもつDataverse を作成しておきます。今回はCopilot Studio のレクチャーなので割愛します。
Dataverse のアクションを追加して行を登録できるようにします。

以下のように設定して新しい行を追加します。

これで公開してCopilot Studio に連携します。Copilot Studio で更新してフローをアクションとして追加します。

フローへの入力する値をCopilot Studio 側で調整します。調整の仕方も自然言語で行います。この調整は説明に記載します。
これによって、値が正しく入力されるようになります。
皆さんもぜひどのように書けば値が正しく入力されるか試してみてください。
こちらも指示の一部です。
私は以下のように説明しました。





さらにアクションを追加します。追加でフローを作成して連携します。

入力にTeams 本文を追加します。

入力を指定します。

Teams に投稿する本文を入力します。出力言語は日本語です。フォーマットは見出しを含めHTML形式とします。見出しは、「設計上の変更点」と「対応策」とします。
ここまででフローを公開してCopilot Studio に連携します。
エージェントのテストから接続を追加します。

必要な接続を追加します。接続から追加することができます。

接続済みになったら完了です。タブを閉じます。

ここまででCopilot Studio が作成されたかどうかをテストしてみます。

テストを開始します。

ナレッジソースの検索が開始しました。

Dataverse の登録が自動的に処理されます。

Teams にも投稿されました。

結果として、以下の3ステップを実行しました。

Teamsには以下のようにポストされました。

実際に公開すると自動トリガーされるようになります。

作成したエージェント
このように毎日自動的にニュースを調べてくれて、自社の自動車エンジンに対する影響について考え、その結果について提案してくれるエージェントを作成することができました。
実際にモデル駆動型アプリにもエージェントによって登録されたデータが保存されています。

以上、これまでの自動化処理と全く作成方法が異なるエージェントですが、ユースケース次第では人の可能性を広げてくれるように思います!
ぜひ試してみてください。