AI Copilot の時代が到来 - Copilot stack による LLM 中心アプリ開発

Microsoft は 5 月 23 日、Build 2023「[The era of the AI Copilot](https://build.microsoft.com/en-US/sessions/bb8f9d99-0c47-404f-8212-a85fffd3a59d)」のセッションにおいて、「Copilot Stack」開発フレームワークを発表しました。

https://news.microsoft.com/ja-jp/features/230524-microsoft-outlines-framework-for-building-ai-apps-and-copilots-expands-ai-plugin-ecosystem/

「**マイクロソフト、AI アプリや Copilot の構築フレームワークを明らかにし、AI プラグインエコシステムを拡充**」

https://youtu.be/cEynsEWpXdA?t=453

Copilot stack の具体的な話はコチラ↑

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/f26133c1-faf0-ed43-97c0-5b3ae35acbe1.png)
## 開発者が独自のコパイロットを構築するための AI 開発フレームワークの概説

Copilot stack のコンポーネントは大きく分けて 3 層に分かれており、
 - アプリケーション
 - AI オーケストレーション
 - 基盤モデル
です。

アプリケーション層はフロントエンドで、ChatGPT と連携するプラグインや、企業のアプリケーションに統合する独自の Copilot です。このプラグイン開発に Github Copilot と  Visual Studio を利用して簡単にプラグインを開発し、ChatGPT UI に統合するデモが披露されました。

<img width="500" alt="bing.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/3de720eb-61ab-8e4d-7f9a-5b2af890e312.png">

# AI オーケストレーション on Azure
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/dab39a67-ae1c-14ac-cbeb-d878dc2ad65c.png)

先月、[Semantic Kernel](https://qiita.com/nohanaga/items/430b59209b02c298ef2a) を用いて GPT モデルを様々なデータソース、アプリのオーケストレーターとして利用する[アーキテクチャ例](https://qiita.com/nohanaga/items/2691f64bd1fb418295b8)を紹介しましたが、今回 Azure Machine Learning にプロンプトフローという初のプロンプトエンジニアリングツールが搭載され、UI を用いて LLM オーケストレーター開発ができるようになりました。

https://www.youtube.com/watch?v=DaIYrlMOj7I

さらにこのプロンプトフローは、Azure OpenAI Service の Chat playground などと共に、**Azure AI Studio** に統合されました。

## プロンプトとメタプロンプト
"メタプロンプト"は、例えば ChatGPT に対するキャラ付けであったり、ルール、安全性、Responsible AI に関する制限などを記述するプロンプトとして、解決すべきタスクを指示する"プロンプト"と区別しています。

![031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/bb2c4a57-7282-e39a-0a94-f6e75980c263.png)

メタプロンプトはモデルを Fine-tuning しなくても簡単にモデルのルールや振る舞いを適用できる手段ですが、本当にルールに従っているかどうかを本番適用前に十分にテストする必要があります。Azure AI Studio には、このメタプロンプトをテストする仕組みが搭載されています。さらに Azure AI Content Safety 機能によってコンテンツ管理基準を満たさないプロンプトや生成からコンテンツを検出し、削除することができます。

## Grounding
Grounding によってプロンプトに対してベクトルデータベースに保管した記憶や Web API 経由の外部データ、プラグインの実行結果などを付加して、モデルの知らない内容も答えさせることができます。この Grounding を UI 上で簡単に行えるのが Azure AI Studio です。

![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/ba9f8cf1-b8c9-ca51-ae58-7099d4ed7d72.png)

## プラグイン
Microsoft は、OpenAI 社が ChatGPT に導入したのと同じオープンなプラグイン規格を採用することを発表しており、ChatGPT と Microsoft が提供する幅広い Copilot の相互運用を可能にします。プラグインは単に Grounding 用途で用いるだけでなく、Bing、Dynamics 365 Copilot、Microsoft 365 Copilot、Windows Copilot などの Copilot からも機能します。

![028_mini.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/5f974610-1f93-b0b5-ce95-02bd300fe3d7.png)

注目はやはり Azure AD によるアクセスコントロールが使える点ですね。アクセスコントロールは例えば Chat UI からのドキュメント検索リクエストに対して、表示するべきドキュメントをユーザーごとに出し分ける（フィルタリング）するのに必要不可欠な要素です。

ここに、**エンタープライズにおけるプラグイン開発エコシステム、爆誕**です。

### プラグイン開発
https://qiita.com/nohanaga/items/afcff2bf4ab95089267d

https://qiita.com/nohanaga/items/3c9446375491f46e4aae

https://qiita.com/nohanaga/items/c850947e0196bf2987ae

### Microsoft 365 Copilot 用プラグイン開発
Microsoft 365 Copilot 用のプラグインは、早期アクセス プレビュー段階であり、参加するには[開発者プレビュープログラム](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR06na7ADVcFBoFXEJ5M8YD1UNkdQODE5VDNKOUQ2UlBSVUJJRlJDVktTVS4u)への申請が必要です。Microsoft 365 Copilot では、Teams メッセージ拡張機能や [Microsoft Graph コネクタ](https://developer.microsoft.com/en-us/graph/connectors)が提供されます。

https://developer.microsoft.com/en-us/microsoft-teams/ai

# Azure AI Studio
https://www.youtube.com/watch?v=DaIYrlMOj7I

## Chat playground
Azure AI Studio 内の Chat playground に「Add your data」が追加されました。
![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/7ce34e24-bcb0-9146-64b5-28f213aebe68.png)

https://qiita.com/nohanaga/items/a3e236fdbb3ef5878012

こちらでは Azure Cognitive Search のインデックスからドキュメントの情報を取得して回答させることが簡単にできるようになります。

![044.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/56e7af92-947a-d93b-3064-4aa82c28311b.png)

Chat playground 上からプラグインを呼び出し、Grounding することもできます。

## プロンプトフロー
Azure Machine Learning に統合された、プロンプトエンジニアリングツールです。
![016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/0017b748-0244-e85d-b86f-36e4dd6686b6.png)

プロンプトフローではグラフを用いてプロンプトチェーンを構成できます。

![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/f3b161c7-e319-3d72-13b4-c10251a6fa2d.png)

図の上部を見てください、LangChain や Semantic Kernel の LLM 開発ライブラリが統合されています！さらに、様々な LLM、プロンプト、Python コードを統合し、複数のデータソースも統合されています。

上図の `retrieve_cart` のツール定義にあるように、社内システムの API からのデータ取得結果を Grounding して、ChatGPT から回答させることができます。

<img width="400" alt="043.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/af70979d-61b0-d0db-6484-4ba45b4aa8ae.png">

そして、プロンプトフロー側にも Azure Cognitive Search のベクトルインデックスが統合されました。BM25 ベースの全文検索エンジンである Azure Cognitive Search は今日、ベクトルデータベースとして利用できるようになったのです。

https://qiita.com/nohanaga/items/f710cac82072b63bc73f

Azure OpenAI の Embeddings API を利用する場合、ベクトルインデックスへのテキスト（ドキュメントチャンク）の格納時とユーザークエリーの変換時に API を呼ぶ必要がありますが、このアクションを簡単にフローに挿入できると非常に便利になります。

# 基盤モデル
LLM 中心アプリ開発のベースとなる基盤モデルは、GPT-3/4 だけでなく、様々なオープンソースのモデルも統合することができます。

![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/aec505f8-7fb3-0291-fdb1-335278f52269.png)

Azure Machine Learning のモデルカタログでは様々なオープンソースモデルを選択して、利用したりファインチューニングしたりできます。

![029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/610f6581-9b6a-a332-e674-e4029a227409.png)

Build では、様々なモデルや API を接続して、最終的に Linkedin に投稿するデモが披露されました。このデモの時点で、LLM 中心アプリの開発のためには GPT モデルだけにこだわっていないことが分かります。

![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/1672fedd-2b33-1828-7bee-64f8020a6f53.png)

https://github.com/microsoft/PodcastCopilot

Azure AI Studio やプラグインと連携すれば、企業内でこのような高度な LLM 中心アプリを開発することができます。

# Microsoft Build 2023 Book of News
https://news.microsoft.com/build-2023-book-of-news/ja/