Copilot Studio の自律型エージェント作成機能を触ってみた


# はじめに

2025 年 3 月27 日に Microsoft の AI Tour が東京でありました。そちらにて、改めて、Copilot Studio に対する注目度の高さ、期待の大きさを感じました。

最近以下の記事にも書きましたが、最近の Copilot Studio の熱い機能は、自律型エージェントです。

https://qiita.com/Takashi_Masumori/items/8f4f638005203ce09912

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6c441a23-51a2-418f-9c18-5572bd4dd2f3.png)

これまで Copilot Studio で作成できたのは、従来型チャットボット (Power Virtual Agents 時代)、生成 AI チャットボット (初期 Copilot Studio）等であり、入口はチャットでした。

自律型エージェントは、チャットベースで動作するものではなく、Power Automate のトリガーやアクション、公開 Web サイト、SharePoint サイト、ファイルのアップロード、Dataverse、その他のデータベースやサービスなど、さまざまなナレッジを組み合わせて、うまくオーケストレーションしてくれるものだと思います。
その結果、より人間のアシスタントに近い形で、業務を代行してくれるエージェントを構築できるイメージでしょうか。

こちらを踏まえ、改めてどのようなことができそうかを検証してみます。

:::note

自律型のエージェントを作成する場合、こちらの機能をオンにする必要がある認識ですが、以下の通り、現状英語のみのようです。そのため、言語を英語にしてエージェントを作成して、日本語で検証しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0b8ccd80-acde-4138-a880-49b2df5c6778.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c8ef2ce3-6fc5-40ce-af9d-32b756c2d7d7.png)

:::

私の検証方法や指示の書き方に課題があるのかもしれませんし、現時点では日本語が厳密にはサポートされていないという認識もあるため、うまく動作しなかったケースもすくなからずあります。

それでも、この自律型エージェントの今後の機能進化により、AI が人間の役割を担える領域は大きく広がっていくと確信しています。

そこで今回は、あくまで個人的な意見にはなりますが、自律型エージェントを作成する上でのポイントや、今後この領域が進化すればより実用的になると感じる点等について、整理してみたいと思います。

また、この記事を書くことで、同じ関心を持つ方々から情報が集まることも、少し期待しています。

# トリガー

Copilot Studio では、Power Automate のようにトリガーを指定できるようになりました。こちらにより、チャットをしなくても自動で動き出すエージェントを作成できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c79146f0-a84d-4ee2-94f5-211c31987f9a.png)

※ 記事執筆時点では 44 件のトリガーが利用できるようです。今後更に増えると思いますが、現時点でもそれなりのことはできそうです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0a6641dd-0cb6-473a-af4e-7674b6775e7e.png)

トリガーを追加すると、Power Automate の画面が立ち上がり、こんな感じで、いつものように Power Automate のフローを作成し、Copilot Studio のプロンプトを呼ぶ感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0ae42afe-01aa-404c-9da7-59b01f8b7e00.png)

こちらを利用することで、例えば、スケジュールトリガーで、動き出し、ナレッジに追加している Web サイトから最新の情報を検索して、結果を通知するようなエージェントを作成できそうと考えました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8ae98280-bf74-46e9-9ee1-2d7e1606781b.png)

個人的に、定期的に、Web サイトから最新の情報を取得して社内向けにニュースレターを出すような業務あると思います。これらの業務を自動化する際、以下のようなアプローチが考えられますが、いずれに関しても難しいというケースもそれなりにあるという認識です。

* RSS の対応してれば Power Automate で自動化
※ただし、RSS で取得できる情報は限られる認識

* API で情報取得できる場合は Power Automate で自動化

* RPA で定期的に Web サイトを訪問して情報を取得
※ロボットでの操作を禁止している場合があるため、注意が必要

そのため、Copilot Studio でいい感じにナレッジから最新の情報を取得して、アクションで通知したり DB に保存をしてくれたりしたら非常に助かるケースもあると思います。

試しに、以下のように最新の生成 AI に関する情報を取得するようなエージェントを作成してみました。

今回チャレンジポイントは、エージェントを動かした日の前日に公開された記事のみ取得することです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e2271a5b-03ce-4a81-81d2-0577a16461e0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/094b2b51-65ff-48a3-9d99-c6b165593aaa.png)

指示文に関数が入れるため、関数を入れたり、トリガーからエージェントを呼ぶ際に前日の日付を入れてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2ece0371-f5fb-4584-ae20-7cdab21f7016.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/fcd72a9e-4bb8-4ef5-b4bd-a5b4dfdc2736.png)

しかし、トリガーのテストをしてみると、ナレッジから比較的最近の記事を取得できているのですが、前日公開された以外の記事が沢山返されてしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b195f240-b00d-4a98-b915-a6b472dddb6d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f175bd48-0fb5-4302-a6bb-77324c13f22a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dcbee33a-e6e5-4d3b-9b4d-a84024bd712c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/1448e850-1533-4882-b958-ac03ee2ab791.png)

こちらは、ナレッジの Web サイト上の情報検索結果、つまりインデックスのクオリティに影響されるため、個人的には「ピンポイントで、トリガーを実行した日の前日に公開された記事のみを取得する」といったことは、そう簡単ではないと感じています。

ただし、検証を重ねていると、上手く、公開日を基に情報を取得できてそうな時もありました。

※以下は、2025-3-19 の日付にして検証

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dcfc3882-782d-4da0-bdae-39c3cb2a9fc7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/89ff44b6-8fe5-4971-b5b5-323241c1791b.png)

なお、こちらのブログ記事は上手く取得できていませんでした。この辺は Web サイトに対する検索との相性もあると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/eb8364f1-8440-41cd-a866-b84d29c5c800.png)

最終的にどのようなキーワードで検索しているかは分かりませんが、試しに、私のブログの記事に対して、日付の情報を添えて検索すると、検索結果が返ってきませんでした。そのため、上手く情報が見つからないのかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f697a4a4-4c7e-4f73-ba31-255ebee2c807.png)

この辺について、もう少しナレッジのパートで深堀しようと思いますが、質問をしてナレッジから回答をすることだけではなく、こういった用途で、情報の公開日を基に記事を取得できるようになると、Copilot Studio で作成するエージェントの活用が広がると思います。

# アクション

Copilot Studio では、各種アクションを追加できます。分かりやすいところでいうと、Power Automate で作成したフローやコネクタのアクションです。そのため、複数のアクションを追加して、臨機応変に呼び出させるようなことが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2d141f12-d49b-498c-b3f5-e0eefee1f910.png)

ご存じの人も多いと思いますが、Power Automate のフローやコネクタでは、様々なクラウドサービスと連携をすることができます。そのため、これにより、エージェントができることが大幅に広がります。

とりあえず、ナレッジから取得した最新情報を受け取って通知をする簡易的なフローを作成してアクションに追加しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/9eaa10f1-a039-411e-a48f-5fe349ef6edc.png)

アクションを呼び出す方法は指示に書いています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/047d0147-60eb-46d2-bea8-9f4b81df0bd6.png)

トリガーのテストを実行してみると、上手く実行されたようです。ただ、たまに呼ばれないときもありました。

また、アクションが複数になるなど、もっと複雑な構成になった際、上手く柔軟に呼び出してくれるか、上手く入力を渡してくれるかなど、引き続き検証が必要かなと思っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/971dbe2b-854f-4f8a-9037-0513ae902383.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/adc11468-329a-434e-b1a5-96f11b7b356c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6bd15ab2-dba4-45ba-b79e-9e644029b83a.png)

# ナレッジ

トリガーやアクションを構成できることで自律型のエージェントの作成ができるようになりましたが、やはり、Copilot Studio の肝は、ナレッジから期待する情報を取得できるかだと思います。

また、以下の記事で言及したように、ロジック化、つまり、条件分岐などを組み合わせてプログラム化が難しい大量のナレッジから情報を取得できることが Copilot Studio の強みというか、Copilot Studio で作成する理由になると思っています。

https://qiita.com/Takashi_Masumori/items/8f4f638005203ce09912

現状、ナレッジとして追加できるソースは以下のような感じです。恐らく、最も手軽に追加できるのは、公開 Web サイト、SharePoint、ファイルのアップロードあたりだと思います。それぞれのポイントを整理してみたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/acc71751-7786-4915-9b56-8b97fcb092ff.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8e11b5e3-afa6-4e21-8ad0-cac4a76a2391.png)

## 公開 Web サイト

公開 Web サイトを追加してそちらのサイト内の情報から回答を得ることができます。こちらは鉄板ですね。

個人的には、階層の深さが 2 階層以下までのため、例えば、以下のようなリンクは追加できません。個人的にはもう少し深い階層まで追加できると嬉しいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/58d3cf5a-241b-405b-a103-c5ba5bce765c.png)

なお、最近追加された以下の箇所について、どういう時にチェックを入れる、トグルをオンにするべきか、そうすることでどのように挙動が変わるのか、情報を確認できませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4ab1e141-9e20-4454-a297-26b43502300a.png)

また、回答の精度に関しては、上述の通り、Web サイトのページに対する検索結果が影響します。つまり、インデックスのクオリティの影響を受けると思います。そのため、Copilot Studio 側だけではハンドリングが難しい部分もあります。

しかし、個人的には、演算子を上手く使うことで、微調整はできそうな気がしております。

ChatGPT に聞いてみたところ、Bing 検索では、以下のような演算子が使えるようです。これらを使って、該当の Web サイトで取得したい情報を得るための精度が高い検索手法を調べていくのがよいかと思います。

例えば、該当のサイト内で情報を取得したい箇所の URL に「news」が含まれ、新しい記事に「新着や new」といったワードが含まれる場合、以下のように検索するよう指示する感じです。

```
site:サイト名 inurl:news 新着 OR new
```


| 演算子               | 意味                         | 使用例                                           | 備考                                       |
|----------------------|------------------------------|--------------------------------------------------|--------------------------------------------|
| `site:`              | 特定のサイト内検索           | `site:qiita.com Power Apps`                     | サブドメインも対象に含まれる              |
| `intitle:`           | タイトルに含まれる           | `intitle:Power Apps`                            | Bingでは部分一致で使える                  |
| `inurl:`             | URLに含まれる                | `inurl:PowerApps`                               | 特定カテゴリなどの抽出に便利              |
| `filetype:`          | 指定のファイル形式           | `filetype:pdf Power Platform`                   | PDF, DOCX, PPT など                        |
| `OR`                 | いずれかを含む               | `"Power Apps" OR "Power Automate"`              | 複数語をカバー                             |
| `AND`                | 両方を含む（省略可能）       | `"Power Apps" AND "初心者"`                     | ANDは省略してもAND検索になる              |
| `-`（ハイフン）      | 特定語を除外                 | `Power Apps -Dynamics`                          | 除外フィルター                             |
| `"`（ダブルクォート）| 完全一致のフレーズ検索       | `"Power Apps 入門"`                              | 複数語をまとめて検索                      |
| `define:`            | 用語の定義を検索             | `define:Power Platform`                         | 英語では有効、日本語では弱め              |

なお、上記には記載していませんが、`after:`演算子を使うと、上述のケースにて、指定した指定した日付以降に更新された記事のみ取得する精度が上がると考えました。

しかし、Bing の場合は、`after:`を使っても古い記事が出てしまいました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c4fbf18f-1993-40a4-ad1d-292f6f41733d.png)

なお、試しに、Google で以下のようにすると、指定した日付以降に更新された記事のみ取得できました。bing でも Google のように指定した日付以降に更新された記事のみ取得できると嬉しいです。

```
site:qiita.com/Takashi_Masumori after:2025-03-18
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/01db499e-a33d-46a9-875d-13c8fbb11ebc.png)

いずれにせよ、この辺を試行錯誤することで少なからず調整ができそうなため、例えば、指示やトリガーから渡す情報にも演算子を入れてみるのはありかもと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6e18d9a9-9b15-41b7-8906-881d536eddc3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/542b63ca-4dcb-4df0-aa32-5f5f7a38a345.png)

## SharePoint サイト

SharePoint サイト、フォルダー、ファイル等を直接指定できるため、既に SharePoint を利用していてナレッジが蓄積している場合は、そちらのサイトやフォルダーを指定するだけでいいので楽です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c7fb153a-d7b8-4f90-bc31-d8cd54f07aaf.png)

複数のファイルがある場合、フォルダー等を指定すればいいので、メンテナンスも楽です。

:::note warn
サイト全体を指定する場合を含め、以下のような管理を行っていると、回答の精度が低下する可能性があるため、注意が必要です。

* ファイル名が「doc1.pdf」「newfile_final2.docx」など、ファイル名からどのような情報が記載されているか分からないファイル

* 複数のテーマが混在した巨大な Word ファイル

* 古い版と新しい版がサイト内に沢山ある

* パスワード付きやアクセス制限があるファイル

:::

また、SharePoint サイトを指定している際は、Microsoft 365 Copilot のライセンスを保有していると、検索精度が向上します。そのため、Microsoft 365 Copilot のライセンスを保有している場合、こちらをオンにして試してみることをお勧めします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/69bf1c57-8f3a-4c39-80eb-f671f6a8b3ad.png)

https://learn.microsoft.com/ja-jp/microsoft-copilot-studio/knowledge-copilot-studio#enhanced-search-results

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5240aaba-ec74-4530-afea-b9a63f44a6fc.png)

## ファイルアップロード

ファイルを直接アップロードしてナレッジを追加できます。個人的に、こちらの機能、インデックス精度が高くお勧めです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/646eb0ca-9dbc-41ae-a5b1-2b0dc65720ba.png)

少数のファイルであり、変更が少ないファイルであればこちらの機能を使えるのですが、ファイルが多数ある、変更もそれなりにある場合、メンテナンスが大変という難点があります。

こちらの対策として、以下の方法を以前記事に書いてますので、興味がある方は読んでみてください。

https://qiita.com/Takashi_Masumori/items/c5b7008332b7ed5df32d

## Dataverse テーブル

ナレッジとして Dataverse テーブルも追加できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5f02d696-bd1e-4b04-975d-158893dab6c3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/837ae331-1ab4-4d22-ada1-f288c2092a68.png)

既に Power Apps でアプリを作って運用しており Dataverse にナレッジがある場合はそのまま使えますし、 他のデータベースにデータを既に持っている場合、そちらのデータを Datavese にデータフローで移すこともできますし、今後 Dataverse にデータをためていくことで、Copilot Studio のナレッジとして有効活用できるため、個人的にこちらの機能に注目しています。

現状プレビュー機能であり、日本語の検索精度に課題があると感じています。ただし、今後 Dataverse のインデックス精度が向上すれば、かなり活用されるようになると考えています。そのため、今のうちに Dataverse にデータを蓄積して、こちらの機能を試してみることをお勧めします。

# 指示

生成 AI 機能を活用する上で、指示文に記載する内容は非常に重要です。どのようなタイミングでアクションを呼び出すのか、アクションにどのような情報を渡すのかなど、正確に記述する必要があると認識しています。

エージェントの精度を高めるための指示の書き方については、ChatGPT や Copilot にプロンプトを入力する際のコツとどう異なるのか、現時点分かりませんが、今後何か分かったら、本記事に追記するか、別の記事としてまとめる予定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/acc76151-545b-4ff3-8f37-466e9aaee51f.png)

# まとめ

Copilot Studio の自律型エージェント作成機能を試してみました。その上で、自律型エージェントを構築する際のポイントや、今後ここが進化すればさらに実用性が高まると感じた点を整理してみました。

特に今後の日本語対応の強化や、インデックス機能の進化には大きな期待を寄せています。引き続き、日々試行錯誤しながら、具体的なユースケースの可能性も模索していきたいと思います。