1. システムとオフィスの融合
  2. media
  3. マイクロソフトソリューション Teams Microsoft 365 Copilot
  4. 【Copilot for Microsoft 365】Copilot拡張プラグインを作成してみた!③

QESブログ

【Copilot for Microsoft 365】Copilot拡張プラグインを作成してみた!③

  • LINEで送る
  • このエントリーをはてなブックマークに追加
本記事では、Copilot for Microsoft 365の拡張プラグインを作成します。
今回は第3回目となります。

これまでの記事については以下リンクをご参照ください。
【Copilot for Microsoft 365】Copilot拡張プラグインを作成してみた!①
【Copilot for Microsoft 365】Copilot拡張プラグインを作成してみた!②

前回までの記事で、ユーザーがチャットで入力したキーワードから社員情報を検索する拡張機能を作成しました。
質問に対しておおよそ正しく回答してくれたように思われたのですが、以下の課題が残りました。

  • 複数の条件で検索する質問の場合、検索キーワードが一つのパラメータにまとめて渡される。
    (例)「基本情報技術者を持っていて、果物が好きな人を探して」という質問の場合
       「基本情報技術者 果物 好き」や「basic information technology skills and like fruits」
       という検索キーワードが渡される。

これは、前回記載した通り、実装が1つのパラメータ用になっていたことが原因です。それにより、検索側の実装が複雑になる可能性もありましたので、複数のパラメータを受けられる構成を試してみます。

改修内容

実装方針

今回の実装では、「名前」「所属」「役職」「一言」「スキル」「取得資格」と言う項目を用意していました。まずは、これらの項目を検索キーとして用意できれば良いのでは?と考えています。

コマンド定義の変更

前回までに使用していたコマンド定義は、以下のようになっていました。前回紹介したように、[manifest.json] 内に記載されているコマンドのパラメータは [searchQuery] が1つという定義になります。

今回アダプティブカードに記載する内容は、項目が6個ありますので全て定義してみたのですが、怒られました。5個までのようです。

仕方がないので、ライセンスとスキルは一つにまとめて、以下のように定義しました。

この定義がうまく動けば、「資格」や「役職」で検索しやすくなるのでは?と考えています。

パラメータの確認

今回も Copilotで入力した質問が、プラグイン側にどのようなパラメータとして渡ってくるか確認します。比較しやすいように、前回試した質問を使って試してみました。確認方法は、プラグイン側のコードをデバッグで止めて、変数の内容を確認してみます。パラメータは、[MessageExtensionQuery] の [query]変数に入ってきます。

山上さんを探して

「山上さん」が名前であることを認識して、[Name]パラメータに [山上] と入りました。期待通りです。

Microsoftの資格を持っている人を探して

資格であることを明示していることもあり、資格またはスキルを想定していた[LicenseSkill] パラメータに [Microsoft] という値が設定されました。こちらも期待通りです。

③ 好きな食べ物を教えて

人の名前ではありませんが、[Name] に [好きな食べ物] が設定されてしまいました。[Keyword] に入って欲しかったので、これは残念。

質問を「好きな食べ物がある人を探して」に変更して試してみました。
[Keyword] に [好きな食べ物] が入るようになりました!!

基本情報技術者を持っていて、果物が好きな人を探して

複数パラメータが認識されました。「基本情報技術者」は資格を想定していましたが、部署の [Department]に入ってしまいました。「果物」の方は 期待通り[Keyword] に入りました。

こちらも質問を変えて、「基本情報技術者資格を持っていて、果物が好きな人を探して」としてみました。無事、[LicenseSkill] パラメータに入りました。ただし、「基本情報技術者資格」と入ってしまいました。ユーザーがどのような名称で質問をするか分からないので、検索処理側での工夫も必要になってくるかと思います。また、「果物」の方は、「果物が好きな人」と変わってしまいました。このあたりは、実行のたびに変わる可能性がありますので、検索時に考慮が必要になってきそうですね。

動き的には、OpenAI の Function Calling に近いですね。パラメータの説明をもう少し詳しく指定すれば精度が上がるかもしれません。

質問を変えることで、期待するパラメータに入ることは確認できました(とはいえ、ユーザーが期待する質問をしてくれるとは限りませんが、、、)

検索処理の実装

実際にパラメータを受けて、検索処理を実装してみます。現在のテストデータでは、部署が「システム営業本部」と「システム開発部」のユーザーがいますので、部署名でフィルタリングすることを試してみます。

検索処理を実装する前でも動きますが、こんな感じになりました。
「山上 彩加」さんは(Copilotも言っている通り)「システム営業本部」なので余計ですね。(山上 彩加さんを返さず正しい応答の場合もあります。)また、他のメンバーがいるかもしれないとも言ってます。


検索処理を実装した後は、以下の通りです。システム開発部のメンバーしか渡っていないため、他にもいるかものようなメッセージも出ていません。


検索処理をうまく実装することで、ユーザー数が増えた場合でも対応できそうです。
ただし、どのようなパラメータが渡ってくるか分からないので、検索処理を工夫する必要があります。例えば、「果物」というキーワードが来たら、「メロン」の情報を持つユーザー情報を返せないと、フィルタ実装前と同じ動きが実現できません。このあたりはベクトル検索等が有効になるかもしれません。

まとめ

いかがだったでしょうか。
【Copilot for Microsoft 365】Copilot拡張プラグインを作成してみた!②」のままでは検索処理が実装しにくい課題がありましたが、少しは解消されたかと思います。ただし、検索部分は検討する部分が多いです。また、無理に絞り込んでしまうよりは、ある程度の精度で抽出し、Copilotに質問に該当するネタでまとめてもらう形が良いかと思います。

現在は、部分的な検証でしたので、ダミーデータを単純に返すだけの実装でした。今後はDBに蓄積されたデータを活用する形に改善していければと考えています。
  • DBからの検索
  • Azure AI Search を使用し、ベクトル検索やセマンティックランカーを使った検索

また、Copilot for Microsoft365 の具体的な活用方法等のブログもたくさんありますのでご覧ください!

QUICK E-Solutionsでは、「AIチャットボット構築サービス」をはじめとして、各AIサービスを利用したシステム導入のお手伝いをしております。それ以外でも QESでは様々なアプリケーションの開発・導入を行っております。提供するサービス・ソリューションにつきましては こちら に掲載しております。
システム開発・構築でお困りの問題や弊社が提供するサービス・ソリューションにご興味を抱かれましたら、是非一度 お問い合わせ ください。

※このブログで参照されている、Microsoft、Microsoft 365、Microsoft Copilot for Microsoft 365、Microsoft Teams、Azure OpenAI、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。
※その他の会社名、製品名は各社の登録商標または商標です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

お気軽にお問い合わせください。

ページのトップへ