Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Semantic Kernel でみんなのアプリに LLM の恩恵を!

Semantic Kernel でみんなのアプリに LLM の恩恵を!

TechFeed Experts Night #22 の同題の LT の補足資料として提示したプレゼンテーションです。Semantic Kernel の各機能の簡単な説明と、それぞれの機能に C# でアクセスするときの書き方のサンプルについて解説しています。

Takashi Okawa

July 05, 2023
Tweet

Other Decks in Programming

Transcript

  1. 今日お伝えしたいこと、達成したいこと  Semantic Kernel とは何か知っていただく  Semantic Kernel の基本的な概念を知っていただく 

    Semantic Kernel を C# から呼び出す方法を知っていただく Semantic Kernel を使ったアプリを 開発しようと思っていただく
  2. What’s Semantic Kernel 大規模言語モデル (LLM) を、 皆様のアプリケーションに 素早く簡単に統合するための SDK Microsoft

    が OSS として発表 従来のプログラミング言語と LLM の 「プロンプト」を簡単に組み合わせ可能に!
  3. Announcing One plugin extensibility model ChatGPT Bing Chat Microsoft 365

    Copilot Power Platform Copilot Dynamics 365 Copilot Windows Copilot Your copilots on Azure AI
  4. Copilot stack Visual Studio + Plugin extensibility Copilots Apps AI

    orchestration Foundation models AI infrastructure
  5. 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
  6. Semantic Kernel による拡張性  コネクタ  メモリやモデル(シミュレートされた頭脳)の追加  OpenAI のモデル

     Hugging Face のモデル  プラグイン  現実世界・アプリケーションとの対話  ChatGPT  Bing  Microsoft 365 人気のある AI サービスをそれぞれ個別にアプリに 統合するのは開発者の学習コストが高い ⇓ AI オーケストレーターを活用することで 開発のシンプルさ、スピード感と拡張性を両立
  7. 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
  8. Semantic Kernel における “Kernel” とは?  プラグインを組み合わせてユーザーの要求を満たす処理エンジンのインスタンス  全体の処理のオーケストレーションを行う OS

    の Kernel に似たもの  AI モデルの追加やログ機能の追加もこの Kernel の機能 明日はバレンタインデーなので、フランス人 の彼女に喜んでもらえるようなデートのアイ ディアを考える必要があります。そのプランを 彼女のネイティブの言語で書いてください。
  9. Semantic Kernel における “Plugin” とは  AI アプリやサービスに公開できる Function のグループ

     OpenAI プラグイン仕様に基づいて実装  Semantic Kernel 内では手動で呼ぶことも、プランナーから呼ぶことも出来る
  10. 二種類の “Function”  Semantic Function  Semantic Function の実体 

    自然言語で書かれたプロンプト  GPT4/ChatGPT に対する呼び出し  Completion API のパラメータ  LLM モデルの耳と口にあたる機能  Native Function  既存の開発言語で記述された Function  C# や Python で外部 API を呼び出すためのコードなど  LLM に処理させるのに適さない作業の実行  算術演算  データの取得や保存
  11. Chaining Functions  複数の関数を一つのパイプラインとして呼び出す  UNIX のパイプとフィルタの機能に近いイメージのもの  Kernel の

    Context Object に $input という特別な変数が定義されている  この $input を Function 内から参照することで、前段の Functions の出力を参照可能 Azureについてのジョークを考えて、 それをポエムに変換し、 最終的にそれを題材にした レストランのメニューを考えてください。 Copilot : 1. 雲 (Cloud) の上にある Azure 2. 空よりも青く広く無限大の可能性 3. ブルーハワイのメガクラウド綿菓子添え
  12. Semantic Kernel における “Planner” とは  ユーザーの要求を受け取り、要求を達成するプランを返す機能  AI を利用して

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

    は基本的にステートレスなので、過去のやり取りを覚えておく必要がある  Context に残す履歴がトークン制限に納まるように過去の情報を忘れる必要もある  モデルのトークン制限を超すような長文を小分けにして、コンテキストとして利用したいというニーズもある  これを実現する方法が “Memory”  以下の三種類の実現方法が現状提供されている  Key-Value ペアによる Lookup  ローカルストレージに保存してファイル名でアクセス  テキストを Embeddings に変換してセマンティック検索
  14. 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 で使う機能の実体を定義
  15. この先のデモで使うソリューションのディレクトリ構成  Plugin 置き場  MyPluginsDirectory  Semantic Function のディレクトリ

     FunSkill  RouteSkill  Native Function のディレクトリ  SampleNativeSkill.cs  メインのアプリケーションコード  Program.cs サンプルコード https://github.com/tokawa-ms/20230705_SKDemo
  16. 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
  17. さあ Semantic Kernel をはじめよう!  Semantic Kernel についてのドキュメント  https://learn.microsoft.com/en-us/semantic-kernel/overview/

     いまのところ英語だけれども… ブラウザの翻訳機能を使えば余裕で読めます!