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

Semantic Kernelのすすめ

tomokusaba
January 17, 2024

Semantic Kernelのすすめ

.NET の 2 日間 2024 冬 (1 日目) ~3 コミュニティ合同イベント~
Semantic Kernelのすすめ
https://dotnet-communities.connpass.com/event/294588/

tomokusaba

January 17, 2024
Tweet

More Decks by tomokusaba

Other Decks in Programming

Transcript

  1. Semantic Kernelとは? • 既存のアプリケーションにLLMエージェントを簡単に追加できる オープンソースのSDK。 • 現在は、OpenAI、Azure OpenAI、Hugging Faceなどのモ デルで使用可能。

    • C#、Python、Javaで使用可能。 • AIモデルと組み合わせ質問に答えプロセスを自動化するエージェ ントを構築できる。
  2. Jupyter Notebooks • 前提 • .NET7 SDK • Visual Studio

    Code • “polyglot” VSCode Extension • OpenAIまたはAzure OpenAI ServiceのAPIキーを取得済み • Semantic Kernelリポジトリ (https://github.com/microsoft/semantic-kernel)を クローン • /dotnet/notebooks/に移動して配下のREADME.mdを参照してウエ から順番に実行
  3. プラグイン using Microsoft.SemanticKernel; using System.ComponentModel; namespace ConsoleApp17; public class ColorMode

    { public bool IsOn { get; set; } = false; [KernelFunction, Description("画面モードの状態を取得します。")] public string GetMode() { return IsOn ? "ON" : "OFF"; } [KernelFunction, Description("画面モードを切り替えます。")] public string ToggleMode() { IsOn = !IsOn; if (IsOn) { Console.ForegroundColor = ConsoleColor.DarkBlue; } else { Console.ResetColor(); } return GetMode(); } } • AIにコードを呼び出させたいときは説明文をつ けてその関数の使い方をAIに理解させる必要 があります。(Description) • AIは説明文を読み取り適切な関数を実行します。 (複数該当すれば複数実行することも!)
  4. 呼び出し側 using Microsoft.SemanticKernel.Connectors.OpenAI; using Microsoft.SemanticKernel; using ConsoleApp17; Kernel kernel =

    Kernel.CreateBuilder() .AddAzureOpenAIChatCompletion( “デプロイ名”, “エンドポイント”, “APIキー”).Build(); kernel.Plugins.AddFromType<ColorMode>(); OpenAIPromptExecutionSettings? setting = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions, }; while (true) { Console.Write("User > "); string input = Console.ReadLine()!; if (input == "exit") { break; } else { var result = await kernel.InvokePromptAsync(input, new(setting)); Console.WriteLine($"Assistant > {result}"); } } • Semantic KernelのKernelに先ほど作った プラグインと使用するモデルを渡します。 • ToolCallBehavior.AutoInvokeKernelF unctionで関数を説明文に従って自動的に呼 び出します。 使用するモデル 使用するプラグイン 自動的に関数を呼び 出す LLMと会話する
  5. 参考文献 • What is Semantic Kernel? https://learn.microsoft.com/ja-jp/semantic-kernel/overview/ • .NET Conf

    2023 Recap Japan ~ 最新の.NETを学ぶ https://info.microsoft.com/JA-ModApps-WBNR-FY24-12Dec-19- NET-Conf-2023-Recap-Japan-Latest-Learn-NET- SREVM25677_LP01-Registration---Form-in-Body.html • .NET Conf Japan 2023「.NET + AI」補足記事 https://zenn.dev/microsoft/articles/231219-dot-net- conf?redirected=1 • semantic-kernel https://github.com/microsoft/semantic-kernel