Slide 1

Slide 1 text

Semantic Kernel で みんなのアプリに LLM の恩恵を! 日本マイクロソフト株式会社 クラウド ソリューション アーキテクト 大川 高志 2023/07/05

Slide 2

Slide 2 text

今日お伝えしたいこと、達成したいこと  Semantic Kernel とは何か知っていただく  Semantic Kernel の基本的な概念を知っていただく  Semantic Kernel を C# から呼び出す方法を知っていただく Semantic Kernel を使ったアプリを 開発しようと思っていただく

Slide 3

Slide 3 text

Semantic Kernel とその周辺知識

Slide 4

Slide 4 text

What’s Semantic Kernel 大規模言語モデル (LLM) を、 皆様のアプリケーションに 素早く簡単に統合するための SDK Microsoft が OSS として発表 従来のプログラミング言語と LLM の 「プロンプト」を簡単に組み合わせ可能に!

Slide 5

Slide 5 text

全てのアプリ は AI によって再発明される 以前は実現不可能だった 新しいアプリ が実装される

Slide 6

Slide 6 text

Announcing One plugin extensibility model ChatGPT Bing Chat Microsoft 365 Copilot Power Platform Copilot Dynamics 365 Copilot Windows Copilot Your copilots on Azure AI

Slide 7

Slide 7 text

API にアクセスするための AI 機能の拡張 有用な情報の取得 AI によるコンピューティングの拡張 ユーザーに代わって安全に行動する Plugins

Slide 8

Slide 8 text

The digital world Plugins Copilot

Slide 9

Slide 9 text

Copilot stack Visual Studio + Plugin extensibility Copilots Apps AI orchestration Foundation models AI infrastructure

Slide 10

Slide 10 text

Semantic Kernel = Copilot Stack の中心  開発者が AI プラグイン上に 独自の Copilot Experience を 構築するための軽量の OSS SDK (AI Orchestration Layer)  Semantic Kernel のメリット  既存の開発スキルと投資を最大限に活用  ひとつのプラグインで様々な環境に展開  Microsoft 365 Copilot  Bing Chat  ChatGPT  皆様の独自のアプリケーションにも… Plugin extensibility Copilots Apps AI orchestration Foundation models AI infrastructure

Slide 11

Slide 11 text

Semantic Kernel による拡張性  コネクタ  メモリやモデル(シミュレートされた頭脳)の追加  OpenAI のモデル  Hugging Face のモデル  プラグイン  現実世界・アプリケーションとの対話  ChatGPT  Bing  Microsoft 365 人気のある AI サービスをそれぞれ個別にアプリに 統合するのは開発者の学習コストが高い ⇓ AI オーケストレーターを活用することで 開発のシンプルさ、スピード感と拡張性を両立

Slide 12

Slide 12 text

Semantic Kernel の機能と用語に入門!

Slide 13

Slide 13 text

ernel K Planner 1 2 3 … ステップのパイプラインを実行 結果 準備完了 1 2 3 … ステップの 実行 APIs Connector の取得 Plugin の収集 Plugins Memory 情報の取得 ユーザーまたは開発者の いずれかによって達成 したいゴール設定をする ASK 処理結果の取得 GET Semantic Kernel で出来ること  OpenAI、Azure OpenAI、Hugging Face などの AI サービスと、C# や Python, Java などの従来のプログラミング言語を簡単に組み合わせることが できるオープンソースの SDK プランナーは、使用可能な スキルを使用するステップを 自動生成 aka.ms/semantic-kernel

Slide 14

Slide 14 text

Semantic Kernel における “Kernel” とは?  プラグインを組み合わせてユーザーの要求を満たす処理エンジンのインスタンス  全体の処理のオーケストレーションを行う OS の Kernel に似たもの  AI モデルの追加やログ機能の追加もこの Kernel の機能 明日はバレンタインデーなので、フランス人 の彼女に喜んでもらえるようなデートのアイ ディアを考える必要があります。そのプランを 彼女のネイティブの言語で書いてください。

Slide 15

Slide 15 text

Semantic Kernel における “Plugin” とは  AI アプリやサービスに公開できる Function のグループ  OpenAI プラグイン仕様に基づいて実装  Semantic Kernel 内では手動で呼ぶことも、プランナーから呼ぶことも出来る

Slide 16

Slide 16 text

二種類の “Function”  Semantic Function  Semantic Function の実体  自然言語で書かれたプロンプト  GPT4/ChatGPT に対する呼び出し  Completion API のパラメータ  LLM モデルの耳と口にあたる機能  Native Function  既存の開発言語で記述された Function  C# や Python で外部 API を呼び出すためのコードなど  LLM に処理させるのに適さない作業の実行  算術演算  データの取得や保存

Slide 17

Slide 17 text

Chaining Functions  複数の関数を一つのパイプラインとして呼び出す  UNIX のパイプとフィルタの機能に近いイメージのもの  Kernel の Context Object に $input という特別な変数が定義されている  この $input を Function 内から参照することで、前段の Functions の出力を参照可能 Azureについてのジョークを考えて、 それをポエムに変換し、 最終的にそれを題材にした レストランのメニューを考えてください。 Copilot : 1. 雲 (Cloud) の上にある Azure 2. 空よりも青く広く無限大の可能性 3. ブルーハワイのメガクラウド綿菓子添え

Slide 18

Slide 18 text

Semantic Kernel における “Planner” とは  ユーザーの要求を受け取り、要求を達成するプランを返す機能  AI を利用して Kernel に登録されている Plugin を組み合わせ、一連のステップに再結合する  例えば…  以下のプラグインがあったとする  タスク管理用のプラグイン  オンラインカレンダーを読み取れるプラグイン  「出かけるときについでの買い物を通知して欲しい」 という要求から以下のワークフローを構築  外出予定がカレンダーにあるときに  タスクリストに書いてある夕飯の足りない食材を読み取り  外出の道すがらにスーパーで買い物が出来るよう通知する

Slide 19

Slide 19 text

Semantic Kernel における “Memory” とは  ユーザーのクエリに対してより広範なコンテキストを提供するための方法  Completion API は基本的にステートレスなので、過去のやり取りを覚えておく必要がある  Context に残す履歴がトークン制限に納まるように過去の情報を忘れる必要もある  モデルのトークン制限を超すような長文を小分けにして、コンテキストとして利用したいというニーズもある  これを実現する方法が “Memory”  以下の三種類の実現方法が現状提供されている  Key-Value ペアによる Lookup  ローカルストレージに保存してファイル名でアクセス  テキストを Embeddings に変換してセマンティック検索

Slide 20

Slide 20 text

Semantic Kernel における “Connector” とは  Semantic Kernel の外にある外部 API などにアクセスするための実装  Connectors.AI.OpenAI – Azure OpenAI や本家の OpenAI にあるモデルを利用するための実装  Connectors.AI.HuggingFace – HuggingFace にあるモデルを利用するための実装  Connectors.Memory.Redis – Redis を Memory として利用するための実装  Skills.Web.Bing – Bing 検索 API に接続するための実装  Skills.Core - 現在時刻の取得やファイルの入出力、Web アクセス等の基本的な実装  上記の例の様に、Kernel や Plugin や Memory で使う機能の実体を定義

Slide 21

Slide 21 text

コードを書いて試してみる!

Slide 22

Slide 22 text

この先のデモで使うソリューションのディレクトリ構成  Plugin 置き場  MyPluginsDirectory  Semantic Function のディレクトリ  FunSkill  RouteSkill  Native Function のディレクトリ  SampleNativeSkill.cs  メインのアプリケーションコード  Program.cs サンプルコード https://github.com/tokawa-ms/20230705_SKDemo

Slide 23

Slide 23 text

Semantic Kernel の初期化

Slide 24

Slide 24 text

Plugin の読み込みと手動での利用

Slide 25

Slide 25 text

Plugin をチェーンしてみる & Plugin のインライン定義

Slide 26

Slide 26 text

自動で Plan を立てさせて実行してみる

Slide 27

Slide 27 text

まとめ

Slide 28

Slide 28 text

ernel K Planner 1 2 3 … ステップのパイプラインを実行 結果 準備完了 1 2 3 … ステップの 実行 APIs Connector の取得 Plugin の収集 Plugins Memory 情報の取得 ユーザーまたは開発者の いずれかによって達成 したいゴール設定をする ASK 処理結果の取得 GET Semantic Kernel についておさらい  AI サービスと、従来のプログラミング言語を簡単に組み合わせることが可能  Copilot Stack の AI Orchestration Layer の中心となる OSS  これで書いておけば、Azure でも Microsoft 365 でも、本家 OpenAI でも活用可能なプラグインに…!? プランナーは、使用可能な スキルを使用するステップを 自動生成 aka.ms/semantic-kernel

Slide 29

Slide 29 text

さあ Semantic Kernel をはじめよう!  Semantic Kernel についてのドキュメント  https://learn.microsoft.com/en-us/semantic-kernel/overview/  いまのところ英語だけれども… ブラウザの翻訳機能を使えば余裕で読めます!

Slide 30

Slide 30 text

© Copyright Microsoft Corporation. All rights reserved.