Copilot Agentをノーコードで作ってみた

## はじめに
M365 CopilotのAgent開発方法が様々あることをdoc上では理解してるが、
実際に試したことがなかったので、Advent Calendarにかこつけて実際にやってみよう。
というのが本記事です。

現状(24年12月時点)、Agentは以下の方法で作成できる( はずです・・)
- Agent builder 
- Copilot Studio
- Microsoft 365 Agents SDKを使って普通に開発

今回は、一旦Agent builderとCopilot Studioを試してみます。
~~コード書く気分じゃなかった~~

## Agent builder

これは、おそらく一番早く・簡単にAgentが作れる方法だと思います。

### 実際に使ってみる

まず、TeamsやBizChat画面にて、右サイドバーの "エージェント作成"を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/ac83ac5e-9c67-fa36-fe56-0f75058dd76b.png)

すると、以下のように、Agentを作る画面が表示されます。
左パネルで、AIと対話しながらAgentを作りつつ
右パネルで、現状のAgentを試すことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/a85fce2a-3bab-6310-46e8-fa4b5e0f34a1.png)

また、AIと対話せずとも**構成タブ**を使うことで、Agentの構築も可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/0208b2bd-df69-7683-74a2-aec10b7793cf.png)

テンプレからAgentを作ることも可能ですが、せっかくなのでユーザから受けた社内の福利厚生や制度について回答するAgentを作りたいと思います。
※それっぽく言うと、"社内資料をRAGにしたAgent"って感じですね。

Agentの構成からどこのSharepointファイルとフォルダを参照して欲しいかを指定します。
フォルダ指定がOKなので、最大20件あればそれなりに使えると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/8ce60714-940a-7fc2-224c-4716a360cffd.png)

では、Agentの役割や名前やルールをプロンプトで定義していきます。
・ユーザに社内制度を教える役割
・名前の定義
・参考情報として、必ず参照元を返してください。( スクショでは切れてますが・・ )
etc..

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/79081d5a-6a8a-976d-f031-d0a25f384307.png)

実際に動かしたものが以下です。
例では、社内の休暇制度について確認していますが、社内の情報を参考にして回答されていることがわかります。
また、参照元の情報もきちんと返ってきていますね。
参照元の情報は、PDFなのにきちんと読み込んでるのヤッパリ凄い。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/464ecde4-f398-6e73-cd28-81bd484d98e1.png)

### 特徴
なんと言っても、ノーコードでAgentを作れるので非常に楽ですね。
外部情報を設定して、どういうことして欲しいと数行書いただけ使えるのはすごい。。
また、プロンプトベースでカスタム性もある程度あるので、社内情報をRAGにたい場合は結構これでいけるかも。という所感です。


## Copilot Studio

Agent builderの編集画面で、Copilot Studioって見えてたから似てるんじゃないかなと思いつつスタート

今回は、"新しいエージェント"を選択して、作成します。
( 作るものとしては、テンプレにもあありますが 天気情報を返してくれるAgent を自作で作ります。 )

![スクリーンショット 2024-12-06 10.09.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/3a83e8dc-433f-ef36-fecb-24213bff90ff.png)

まず、名前やアプリの説明と指示を記載します。
特に指示では、Agentにして欲しいことをきちんと書いておくことが大事そうです。
箇条書きで書いてますが、それがベストプラクティスなのかは分かってないです・・・
ただ、これでAgentとの基本的な会話は成立しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/07be96b8-fab0-5d8a-beb4-60742e00cd2d.png)

ただ、まだ天気情報をAgentにて把握することが出来ないので、天気情報を取得できるようにします。
Copilot Studioでは、アクションという項目でコネクタ化されたサービスと連携させることができるので、
今回は、MSN天気コネクタを用いて天気情報を取得していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/b3275cce-90bc-3a26-c702-fdc7cc2a0bde.png)

MSN天気を追加する場合は、以下のような感じです。
アクションにて、コネクタを検索する。( MSNだと、3種類のコネクタがありますね )

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/9e59b5c9-7cbe-e3f7-51ba-54939068253e.png)

続いて、Copilotに対してこのアクションをいつ使えば良いか？を教えてあげます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/0586b0db-a6aa-09a0-52f8-584b930e98e5.png)

続いて、コネクタで使用する変数を定義できます。
今回は以下のような感じにしてます。
・場所はユーザとの会話に応じて動的に設定
・単位は、C( 摂氏 )

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/916c4419-ad06-46d4-3ef6-1caaa486c4a1.png)

これで、最低限の設定は終了です。
この状態で試すと、以下のようにしっかり天気情報を探してきてくれます。

![スクリーンショット 2024-12-06 10.22.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/87f89caf-b6c0-a1e9-ce78-9e949012da85.png)

Teams上でも以下のように正しく動きました。
普通のTeams botアプリのように動かすことができるので、Copilotライセンスがなくても動かせるのは
嬉しい人も多いかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/3b39d1b5-6b4c-8290-d9db-71f67b0051db.png)


### 特徴
作るという面では、アクションやトピックを設定することができるので、
Agent builderより複雑な作り込みが現状は可能っぽいです。
あと、組織内の他のAgentとも連携させることも可能そうです。
※ 今後の宿題として、いつかやってみます。

作る面以外ですが、
Copilot Studioだと、Teams以外でも使うことができるのでそこはメリットかなと思いました。
![スクリーンショット 2024-12-06 10.24.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/67a47c8e-9bfb-7a96-ce9c-8661007a78e8.png)

また、今回は普通のCopilot Studioで作成しましたが、Azure上ではPAYGで利用することも可能なので、比較的安価に始めることもできそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430353/1ff1170b-448e-b97d-5e73-12c6c3b3165f.png)


## 感想

2種類の方法で、Agentを作成しましたが、所感としてはどちらも割と簡単にAgentを使うことができました。
その上で使い分けるなら、以下かなと思いました。

- Copilot Studio
    - 複雑な作り込みをしたい場合
    - ユーザへのレスポンスを作成側で制御したい場合
    - Teams以外のサービス上でも使いたい場合
    - Copilotライセンスを購入していない人向け
- Agent builder
    - とにかく簡単に作りたい
    - Copilotユーザ向けにだけ作りたい