Semantic Kernelとは|Microsoftの生成AIオーケストレーションSDKの仕組みとC#実装
Semantic Kernelは、Microsoftがオープンソースで公開する生成AIオーケストレーション用のSDKです。大規模言語モデル(LLM)と自作コードを1つのアプリケーションに組み込み、モデルに「いつ・どの関数を呼ぶか」を判断させる仕組みを、C#・Python・Javaから同じ考え方で扱えます。この記事ではSemantic Kernelの定義、中核となる概念、C#での最小実装、対応言語、そして後継として位置づけられたMicrosoft Agent Framework 1.0との使い分けまでを、2026年7月時点の情報で整理します。
まとめ:Semantic Kernelの要点
- Semantic Kernelは、LLMと自作関数を統合するMicrosoft製のオープンソースSDK。中核は「Kernel」「プラグイン」「コネクタ」の3要素。
- 現行の標準は自動関数呼び出し(FunctionChoiceBehavior.Auto)。旧来のPlanner(SequentialPlanner等)は非推奨に変わった。
- 第一級でサポートされる言語はC#・Python・Java。JavaScript/TypeScriptは第一級サポートではない。
- 新規のエージェント開発は、AutoGenとSemantic Kernelを統合した後継Microsoft Agent Framework 1.0が推奨。Semantic Kernelは既存資産や軽量なオーケストレーションで引き続き有効。
Semantic Kernelの定義とMicrosoftでの位置づけ
位置づけ:LLMと自作コードをつなぐオーケストレーションSDK
Semantic Kernelは、OpenAIやAzure OpenAIなどのLLMを呼び出す処理と、社内APIやデータベースを操作する自作コードを、1つの実行フローにまとめるためのSDKです。MITライセンスのオープンソースとしてGitHubで開発され、C#版のNuGetパッケージ名はMicrosoft.SemanticKernel、2026年7月時点の最新安定版は1.78.0です。フレームワーク単体でチャットUIやサーバーを提供するものではなく、既存の.NET/Python/Javaアプリケーションに「AIを判断役として組み込む」ための部品という位置づけになります。
中核となる3要素:Kernel・プラグイン・コネクタ
設計を理解する鍵は次の3つです。Kernelは、AIサービスと関数群を保持する実行コンテナで、プロンプトや関数呼び出しの入り口になります。プラグインは、LLMから呼び出せる関数の集まりで、C#では通常のメソッドに[KernelFunction]属性を付けて公開します。コネクタは、OpenAI・Azure OpenAI・Amazon Bedrockなど各AIサービスへの接続を担い、モデルを差し替えても呼び出し側のコードは変えずに済みます。この3要素の組み合わせで、モデルとアプリケーションを疎結合に保ちます。
Semantic Kernelでできること
自動関数呼び出しによるツール委譲
Semantic Kernelの中心的な機能が自動関数呼び出しです。プラグインとして登録した関数の名前・引数・説明をSDKがLLMへ渡し、モデルが必要と判断した関数を自動的に選んで実行します。これはFunction Callingの仕組みをSDK側で吸収したもので、開発者はFunctionChoiceBehavior.Auto()を指定するだけで、プロンプト解析から関数実行、結果の再投入までの往復を任せられます。
メモリーとベクトル検索によるRAG
Semantic Kernelは埋め込み(Embedding)とベクトルストアを扱うAPIを備え、社内文書を検索してLLMの回答根拠に使うRAG構成を組めます。ベクトル検索そのものの考え方はベクトル検索とセマンティック検索の違いで整理していますが、Semantic Kernel側ではコネクタを差し替えることで、Azure AI SearchやQdrantなど複数のベクトルストアを同じインターフェースで利用できます。
旧Plannerの非推奨化と移行先
以前のSemantic Kernelは、複数スキルの実行順序をLLMに組み立てさせるSequentialPlannerやStepwisePlannerといったPlanner機能を中心に据えていました。これらは現行バージョンで非推奨(deprecated)となり、公式ドキュメントは自動関数呼び出しへの移行を案内しています。Plannerを前提にした古い解説記事やサンプルは、そのままでは動かない場合があるため注意が必要です。
C#での導入と最小実装
NuGetパッケージと対応ランタイム
C#で始める場合は、Microsoft.SemanticKernelパッケージを追加します。対応ランタイムは.NET 8(および.NET Standard 2.0)で、コンソールアプリからASP.NET Coreまで同じAPIで組み込めます。
| 項目 | 内容 |
|---|---|
| パッケージ名 | Microsoft.SemanticKernel |
| 最新安定版 | 1.78.0(2026年7月時点) |
| 対応ランタイム | .NET 8 / .NET Standard 2.0 |
| 主なコネクタ | OpenAI / Azure OpenAI / Amazon Bedrock ほか |
| ライセンス | MIT(オープンソース) |
dotnet add package Microsoft.SemanticKernel --version 1.78.0
Kernelの構築と最小呼び出し
最小構成は、Kernelにチャットモデルのコネクタをつないでプロンプトをそのまま投げるだけです。
using Microsoft.SemanticKernel;
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion("gpt-4o", apiKey);
Kernel kernel = builder.Build();
var result = await kernel.InvokePromptAsync("東京の明日の天気を一言で");
Console.WriteLine(result);
プラグイン(KernelFunction)と自動関数呼び出し
自作関数を[KernelFunction]で公開し、実行設定でFunctionChoiceBehavior.Auto()を渡すと、LLMが必要に応じてその関数を呼びます。説明(Description)は、モデルが関数を選ぶ判断材料になるため具体的に書きます。
using System.ComponentModel;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
public class WeatherPlugin
{
[KernelFunction, Description("指定した都市の現在の天気を返す")]
public string GetWeather([Description("都市名")] string city)
=> $"{city}は晴れ、最高28度";
}
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion("gpt-4o", apiKey);
Kernel kernel = builder.Build();
kernel.Plugins.AddFromType<WeatherPlugin>();
OpenAIPromptExecutionSettings settings = new()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
};
var answer = await kernel.InvokePromptAsync(
"大阪の天気を教えて", new(settings));
Console.WriteLine(answer);
この例では、モデルが「天気を聞かれた」と解釈するとGetWeatherを自動的に呼び、その戻り値を踏まえた回答を生成します。関数の追加・削除だけで、LLMが使えるツールを増減できるのがSemantic Kernelの利点です。
対応言語とエコシステム
Semantic Kernelが第一級でサポートする言語はC#・Python・Javaの3つです。中でもC#実装が最も成熟しており、機能追加も先行します。Pythonは同等のAPIを持ち、Javaはエンタープライズ向けに提供されています。なお、一部の古い解説にある「JavaScript対応」は正確ではありません。JavaScript/TypeScript版は第一級のサポート対象ではなく、公式にプロダクション利用が推奨される言語はC#・Python・Javaです。フロントエンドからは、これらの言語で作ったバックエンドAPI経由で利用するのが基本構成になります。
後継のMicrosoft Agent Frameworkとの使い分け
2026年、MicrosoftはSemantic KernelとマルチエージェントOSSのAutoGenを統合したMicrosoft Agent Framework 1.0を正式版として公開しました。これはSemantic Kernelのエンタープライズ向け後継と位置づけられ、エージェントの状態管理やマルチエージェント連携、A2A・MCPへの対応が組み込まれています。
選び分けの目安は明確です。複数エージェントの協調や本格的なエージェント基盤を新規に作るなら、後継のAgent Frameworkを選ぶべきです。Semantic Kernelを新規採用する理由は薄くなっています。一方で、既存のSemantic Kernel資産がある、あるいは「LLMに関数を1つ2つ使わせる」程度の軽量なオーケストレーションで足りる場合は、Semantic Kernelのままで十分です。フレームワーク選定を広く比較するなら、LangChain v1.0や、Azure上のマネージド構成であるAzure AI Agent Serviceも候補に入ります。用途がチャット補完中心か、自律的なエージェントかで判断が分かれます。
よくある質問
Semantic Kernelは無料で使えますか?
SDK自体はMITライセンスのオープンソースで無料です。ただし呼び出すLLM(OpenAIやAzure OpenAIなど)の利用料は別途発生します。課金対象はモデルのトークン消費であり、Semantic Kernelの利用に追加ライセンス料はかかりません。
Semantic KernelとLangChainの違いは何ですか?
どちらもLLMオーケストレーション用のフレームワークですが、Semantic KernelはMicrosoft製でC#・.NETエコシステムとの親和性が高い点が特徴です。LangChainはPython/JavaScript中心で連携先が広く、プロトタイピングの事例が豊富です。.NET中心の開発ならSemantic Kernel、Python中心ならLangChainが選ばれやすい傾向にあります。
Plannerはもう使えないのですか?
SequentialPlannerなどの旧Plannerは非推奨となり、公式は自動関数呼び出し(FunctionChoiceBehavior.Auto)への移行を推奨しています。既存コードは当面動作する場合がありますが、新規実装では自動関数呼び出しを使うのが適切です。
Semantic Kernelは今から学ぶ価値がありますか?
後継のMicrosoft Agent Frameworkが登場したため、大規模なエージェント基盤を新規に作るならAgent Frameworkの学習を優先する価値があります。ただしSemantic Kernelの中核概念(Kernel・プラグイン・自動関数呼び出し)はAgent Frameworkにも引き継がれており、基礎として学んだ知識は無駄になりません。
JavaScriptやTypeScriptで使えますか?
第一級のサポート対象はC#・Python・Javaで、JavaScript/TypeScriptはプロダクション利用が推奨される言語ではありません。フロントエンドから使う場合は、これらの言語で構築したバックエンドAPIを介して呼び出す構成が現実的です。