21
14

More than 1 year has passed since last update.

Microsoft 365 Copilot System と Semantic Kernel による実装

Last updated at Posted at 2023-04-28

Microsoft は 3月16日、「Microsoft 365 Copilot」を発表しました。Microsoft 365 Copilot は、これまで皆さんがお使いの Word、Excel、PowerPoint、Outlook、Teams と大規模言語モデル (LLM) のパワー、Microsoft Graph や Microsoft 365 アプリ内のデータを組み合わせて、これまでになかった体験ができるようになります。

公式動画でも紹介されているように、Microsoft 365 Copilot の中枢は Copilot System と呼ばれるオーケストレーターです。勘のいい方はすでに気づかれているかと思いますが、このアーキテクチャ、Semantic Kernel で簡単に実現できるじゃないか・・・と。

1. Copilot System

ではまず Copilot System の処理の流れについて簡単に紹介しましょう。システムの構成要素は Copilot System、Microsoft 365 Apps、Microsoft Graph、LLM(GPT-4) です。

1.1. 前処理 Grounding

002.png

Copilot System はまず、Microsoft 365 の Word、Excel、PowerPoint、Outlook、Teams 等からユーザーのプロンプト入力(指示)を受け取ります。その指示はプロンプトとしてそのまま GPT-4 へ送られるのではなく、Microsoft Graph を通じて必要なコンテキストを付加します。これを Grounding と言い、例えばメールの返信プロンプトであれば、自分のメールアカウント情報などです。

1.2. プロンプトを LLM へ送信

003.png

Grounding によってコンテキストが付加されたプロンプトは、Copilot System を通じて LLM に送信されます。

1.3. 後処理

004.png

Copilot System は、LLM からの応答を受け取り、後処理を行います。この後処理には、Microsoft Graph の追加の呼び出し、責任ある AI チェック、セキュリティ、コンプライアンス、プライバシーのレビュー、Microsoft 365 アプリ操作のためのコマンド生成などが含まれます。

1.4. レスポンス+アプリ操作実行

005.png

後処理工程を通過した処理結果とアプリ操作コマンドが Microsoft 365 の呼び出し元アプリへ返却されます。

アプリ操作コマンドは例えば、PowerPoint に図を追加したり、文字サイズを整えたりといった機能の操作を行うための内部のコマンドです。

008_.png

2. Semantic Kernel での実装

さて、このようなアーキテクチャを自分の組織のシステムに対して実装するにはどのようにしたらよいでしょうか。

2.1. Grounding

Semantic Kernel における Grounding の例では、私が動画で解説しているように、デフォルトでビルトインされている Microsoft Graph コネクターを通じて以下のようなプロンプトにコンテキスト情報を付加します。コネクタースキルの一部ですが、以下では分けて説明しています。

007.png

また、メモリー機能を使ってインメモリ Key-value ストアやベクトルデータベースから記憶や事前知識を検索して付加することも可能です。もちろんスキルやコネクターはご自分でカスタマイズが可能です。Azure Cognitive Search とつなげてもいいですね。

2.2. Planning

Business Chat のような Microsoft 365 アプリやユーザーデータ (カレンダー、メール、チャット、ドキュメント、ミーティング、連絡先) を横断して機能するようなアプリの場合、バックエンドにユーザーの質問意図を判断して、タスクに分解し、アクションと紐づけるプランナーの機能が必要になってきます。
009.png

「Mona との次の会議の準備を手伝ってくれ!製品のリード タイムに関連することを教えて!」 (“Help me prep for my upcoming meeting with Mona and bring up anything related to product lead times”) 的な自然言語のプロンプト (指示) を入力すると、会議、メール、チャットのスレッドに基づいて、ステータスアップデートが生成されます。

Semantic Kernel にはユーザーからの複雑な指示をタスクに分解するためのプランナー機能が搭載されています。プランナーを使って、企業内のシステムのそれぞれの機能をスキルにマッピングしましょう。
010.png
プランナーの実体は GPT-3 によるプロンプトの処理によって実現しており、詳しい内部動作については動画の解説を見ていただくとして、スキルの開発方法についてはこちらの記事も参照ください。

スクリーンショット 2023-04-28 17.00.30.png

Build 2023 上記のアーキテクチャを「プラグイン」として実装できるようになりました

Microsoft 365 Copilot 用のプラグインは、早期アクセス プレビュー段階であり、参加するには開発者プレビュープログラムへの申請が必要です。Microsoft 365 Copilot では、Teams メッセージ拡張機能や Microsoft Graph コネクタが提供されます。

このアーキテクチャは「Copilot stack」フレームワークとして整備されました

さいごに

LLM をシステムのオーケストレーションに使用する例について解説しました。Semantic Kernel を使うと企業内の様々なシステムをオーケストレーションするためのコアをスピーディに開発可能です。ぜひ使用するモデルはエンタープライズセキュリティが充実した Azure OpenAI Service をご利用ください。

21
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
14