マイクロソフトは、 大規模言語モデル(LLM)と従来のプログラムとの統合を可能にするlightweight SDK「Semantic Kernel(SK)」をオープンソース化し、プロンプトのテンプレート化、ベクトル化メモリ、インテリジェント・プランニングなどの機能を活用を可能にした。
Semantic Kernelは、最新のAI研究のデザインパターンをサポートし、カプセル化するように設計されており、開発者は、プロンプト連鎖、再帰的推論、要約、zero shot(またはfew shot)学習、文脈記憶、長期記憶、エンベッディング、意味インデックス、計画、外部知識ストアや自分のデータへのアクセスなどの複雑なスキルをアプリケーションに任せられるようになる。
プロンプトのテンプレート化は、プレーンテキストを使用してAI関数を定義し、構成するために使用されるメカニズムである。プロンプトを構築するために、開発者は中括弧を使用してプロンプト内に式を埋め込む。例えば、このように引数を渡して外部関数を呼び出す。
The weather today in {{$city}} is {{weather.getForecast $city}}.
エンベッディングは、語彙の各単語を、その意味と単語間の関係を表す高次元空間の点に対応づけることを可能にする。これは、感情分析、文書分類、推薦システムなどのソリューションに不可欠だ。
SKでは、エンベッディングを利用してsemantic memoryを作成する。これは、人間の脳が概念間の距離に基づいて世界に関する知識を保存・検索する方法を模倣している。開発者は、あらかじめ訓練されたエンベッディングモデルを使用するか、Word2Vec、GloVe、FastTextなどの方法を使用して独自のエンベッディングモデルを訓練する。
SKが提供するもうひとつの重要な機能は、ユーザーが提示したゴールから逆算して計画を立てるインテリジェント・プランニングだ。プランナーは、このように逆順のステップを構築し、各ステップでskill libraryで利用可能な事前定義されたskillを活用できる。必要なskillが存在しない場合プランナーはそのskillを作成する開発者を提案して、不足しているskillの作成を支援できる。
より低い抽象度では、skillは単に関数または関数の集合のためのコンテナである。SKでは、core skills、semantic skills(LLMプロンプト)、ネイティブコードで実装されるnative skillsの3つのカテゴリがある。マイクロソフトは、開発者がskillの作成方法を学ぶために、チャット、コーディング、分類、要約skillsなど、多数のsample skillsも提供している。
マイクロソフトSemantic Kernelを試してみたいという方は、サンプルアプリや公式のGetting Started notebookで、セマンティック関数やエンベッディングなどを作成するための基本的なコードを学べる。