NTTドコモR&Dの技術ブログです。

M365 Copilotで「 rules / skills 」は再現できるのか?

お疲れ様です。こんにちは。データプラットフォーム部の大橋 菜津美と申します。最近AIの情報の更新が多いですね。

 先日、googleのAntigravityについて説明を受ける機会がありました。rules / skills / workflows というファイルを用いて、エージェントの振る舞いやタスク実行手順を外部定義として管理する考え方があることを知りました。このような考え方は、他の生成AIツールでもあります。
 しかし私がメインで使っているツールはM365 Copilotです。そんなM365 Copilotでもrulesやskillsと似たようなことをやれたらステキでは!?と思い、外部ファイルを使うことで、rules / skills に近い挙動を再現できるのかを検証しました。
 結果、そのものではないものの、条件付きで近いことが可能だということはわかりました。その検証内容について本記事では解説します。

そもそもrules、skillsとは何か?

 エージェントのふるまいや、個別のタスクの実行方法を記載した設定ファイルです。設定ファイルにすることで、他人と共有しやすくなります。また、必要な時に必要なだけ情報を読みに行くということで、コンテキストが膨大になることを防ぎます。
 それでは次に、rulesとskillsの違いについて説明します。
 rules:エージェントが常に守るべき「行動指針」や「制約」を定義。
  例:回答時の言語、ファイルを削除してはいけない等
 skills:タスク実行に必要な知識・手順をまとめたもの。
  例:業務固有知識 、テンプレート等

M365 Copilot chatでの検証観点

 そもそもrulesやskillsのファイルを持っていないため、ファイルは手作りします。フォーマットは問わず、「似たようなことが出来るか」という観点で検証をします。
つまり、「外部ファイルの指示が読めるか」、「外部ファイルに指定された別ファイルの中に書いてある中身をM365 Copilot chatで実行できるか」、という観点で検証してみました。

image.png

ファイルが読めるか否かの検証のため、ファイルの中身は適当でも良いことにします。

検証①:rules相当の指示は外部ファイルで管理できるか

 まずはrulesを作ります。エージェントを読んだときに必ず実行するプロンプトを外部ファイルに持たせてみます。
image.png

ファイル名は「約束」という名前にしています。ファイルの中身は分かりやすく「語尾を「にゃー」として」と命令しておきます。これならばこの文章の指示が実行されたかどうかが判断しやすいです。

検証の中で以下の事象にぶち当たりました。

  • なぜかtxtファイルがエージェントで読めない
  • なぜかExcelファイルがエージェントで読めない

なぜだ。。。

弊社環境のせいかもしれませんし、たまたまかもしれません。これらを解決するために、Wordファイルで作成しました。これでファイルを読んでくれるようになりました。

なぜだ。。。

更に、以下の問題も発生しました。

  • エージェントの指示に「起動時に約束.docxを読んで」と入れても読まない。

試行錯誤してもダメだったため、割り切って、エージェントの推奨プロンプトとして、「約束.docxを読む」を用意しました。起動時に推奨プロンプトを手入力でたたくことで、読み込ませることが出来ました。
これならばいけるか…!!

image.png語尾が「にゃー」になったので「約束.docx」の指示通りに動いていそうです!

検証②:Skills相当の分割定義は機能するか

ファイル名は「スキル.docx」という名前にしています。スキルの中身は以下の通りです。
image.png

ちなみにまたたび.docxの中身は以下です。
image.png

またたびは翻訳用のプロンプトを仕込んでおきます。最初は「またたび」ではなく、「翻訳」という指示だったのですが、キーワードで反応してうまくいったのか、翻訳しろという指示を受け取ってたまたま翻訳したのか、判別が出来なかったため、「またたび」という言葉にしました。

 それでは、スキルを読み込んだ状態で「またたび」を指示してみます。
image.png 

にゃーにゃー言っていたのに、急に真面目になってびっくりします。しかし、検証はうまくいったようで、「またたび.docx」の指示を実行してくれました。

検証③指示の追加・更新はうまくいくか?

 rulesやskillsは育てたいですよね。そこで指示を追加しても対応できるかを確認しました。
約束.docxに「「なでなで」と言われたら喜ぶ」という指示を追加し、挙動が変わるか確認してみました。一旦、なでなでしたら喜んでくれました。しかし「これって指示なしで、デフォルトでなでなでと言った喜ぶのでは」と気づきました。なでなですると猫は喜びがち……。
 もしかしてと思い、普通のCopilot chatで約束.docxを読み込ませずに試してみます。
image.png

指示が無くても喜んでしまいました……。
これでは約束.docxに書かれたことを実行したのか、たまたま喜んでいるのか判断がつきません。

なでなでして喜びがちならば、なでなでして怒るように設定しておけばよいのではときづきました。約束.docxになでなでされたら怒るように指示しました。さて、これでどう挙動が変わるか。。。
image.png

うまくいきました。Wordファイルの内容の変更も対応していそうです。しかし、そんな「指示されたからやりました」みたいなこと言わなくても。


結論

 外部のファイル指示も、最初に読み込みを指示することで何とかいけました。これにより、約束を育てて自分好みのAIにしたり、長大なプロンプトにも対応できるようになりました。またこの設定セットを他の人に共有することも可能です。
 今回分かったことをまとめます。

できたこと

  • 外部ファイルを明示的に読み込ませることで、Copilotの振る舞いに継続的な指示を与えられる
  • 指示内容をファイル単位で分割し、用途別に管理・共有できる
  • 外部ファイルの内容変更を反映させることができる

制約

  • 実行にはユーザーによる明示的な読み込み指示が必要
  • Wordファイル前提の運用となり、ファイル形式に制約がある

 

後日談

 後日、社内のCopilotの研修に参加したところ、rules(約束.docx)にあたることが、個人用設定から出来ると知りました。
image.png

約束.docxを必死に読ませようとしていたのなんだったの?となりました。一方で Skills的な分割管理は、今後も外部ファイルが有効だと思います。みなさまは色々機能を調べてから試行錯誤してくださいね。
 本記事が、「Copilotをどう使いこなすか」を考える一助になれば幸いです。それではお読みいただきありがとうございました。