概要
Semantic Kernelは、Microsoftが開発するオープンソースのAIエージェント構築SDKです。LLMをアプリケーションへ統合する際の煩雑さ——プロンプト管理、コンテキスト制御、外部ツール連携——を抽象化し、開発者がビジネスロジックに専念できる環境を提供します。
あるスタートアップのCTOが「LangChainで書いたコードが、モデル変更のたびに壊れる」と嘆いていたのを機に、Semantic Kernelへの移行を試みました。モデルを抽象化する統一インターフェースのおかげで、OpenAIからAzure OpenAIへの切り替えが設定変更のみで完了。チームは「モデルの違い」を気にせずエージェント設計に集中できるようになりました。
2026年3月時点でスター数は27,600超。Python・.NET・Javaの3言語に対応しており、エンタープライズから個人開発まで幅広い現場で採用が進んでいます。
主な機能
- プラグインシステム:LLMのスキルを再利用可能なプラグインとして定義できます。複数モデルや外部APIに対して同一インターフェースで接続できます。
- セマンティックメモリー:会話履歴やドキュメントをベクトル化して保存し、LLMが文脈を保ちながら応答できる長期記憶機能を標準提供します。
- マルチエージェントオーケストレーション:複数のAIエージェントが協調して動作するシステムを構築できます。AgentGroupChatを使ったグループ対話も可能です。
- マルチモデル対応:OpenAI・Azure OpenAI・Anthropic・Hugging Face・Ollamaなどを同一インターフェースで切り替えられます。
- プロンプトテンプレート:変数埋め込みと条件分岐を使ったテンプレートで、プロンプト管理を構造化・バージョン管理できます。
- ハイブリッド検索:PostgreSQLやSQL ServerでのRAGを、ベクトル検索とキーワード検索の組み合わせで実装できます(v1.74.0〜)。
- マルチモーダル対応:テキスト・画像・音声を入力として扱えます。GPT-4oなどのビジョンモデルともシームレスに連携します。
技術スタック
- 対応言語:C#(メイン実装)、Python(1.41.1系列)、Java
- フレームワーク:.NET 8+(dotnet-1.74.0系列)、ASP.NET Core
- LLMプロバイダー:OpenAI、Azure OpenAI、Anthropic、Hugging Face、Ollama、LM Studio、ONNX
- ベクトルDB対応:Azure AI Search、Elasticsearch、Chroma、Qdrant、Pinecone、Weaviate、PostgreSQL
- パッケージ配布:NuGet(C#)、pip(Python)、Maven(Java)
導入方法
C#(.NET)の場合:
dotnet add package Microsoft.SemanticKernel
Pythonの場合:
pip install semantic-kernel
C#での基本的な初期化とエージェント実行:
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
var kernel = Kernel.CreateBuilder()
.AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey)
.Build();
// プラグインの追加
kernel.Plugins.AddFromType<FileIOPlugin>();
// チャット完了エージェントの定義
var agent = new ChatCompletionAgent
{
Name = "AssistantAgent",
Instructions = "You are a helpful assistant.",
Kernel = kernel
};
// 実行
await foreach (var message in agent.InvokeAsync(thread))
{
Console.WriteLine(message.Content);
}
Pythonの場合:
from semantic_kernel import Kernel
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
kernel = Kernel()
kernel.add_service(AzureChatCompletion(
deployment_name="gpt-4o",
endpoint=endpoint,
api_key=api_key
))
agent = ChatCompletionAgent(
kernel=kernel,
name="AssistantAgent",
instructions="You are a helpful assistant."
)
競合比較
| 項目 | Semantic Kernel | LangChain | CrewAI |
|---|---|---|---|
| 主な強み | エンタープライズ・型安全 | 汎用性・豊富なコミュニティ | マルチエージェント特化 |
| 対応言語 | C# / Python / Java | Python / JavaScript | Python |
| メモリー機能 | セマンティックメモリー標準搭載 | 別途Vector Store接続が必要 | 基本的な短期記憶のみ |
| マルチエージェント | AgentGroupChatで対応 | LangGraph経由で対応 | ネイティブ対応 |
| 企業バックアップ | Microsoft | Anthropic / community | Community |
| 型安全性 | C#で非常に強い | Python中心で弱め | Python中心で弱め |
| ベクトルDB統合 | 10種以上をネイティブ対応 | 多数だが設定が複雑 | 限定的 |
Semantic Kernelは.NET / Azureエコシステムとの親和性が最大の強みです。LangChainはPythonエコシステムとの相性が良く、研究・プロトタイピング向きです。PythonチームがLangChainを使い、.NETチームがSemantic Kernelを使うという使い分けも現場では一般的です。RAG構築の詳細はHelixDBも参照してください。CrewAIは「複数エージェントに役割分担させる」構成に特化しており、用途が明確な場合に有力な選択肢になります。
こんな人におすすめ
- C# / .NET開発者:型安全なAPIとネイティブ統合により、エンタープライズ品質のAIアプリを効率よく構築できます。
- Azure環境を使うチーム:Azure OpenAI・AI Search・Bot Frameworkとの統合が密で、既存インフラをそのまま活かせます。
- 複数のLLMを使い分けたい組織:モデル抽象化により、OpenAI・Anthropic・ローカルLLMを同一コードで切り替えられます。ベンダーロックインを避けられます。
- マルチエージェントシステムを設計したい開発者:AgentGroupChatを使った協調エージェント構成が標準サポートされており、複雑なAIワークフローを整理して実装できます。
- エンタープライズでAIを導入したいアーキテクト:セキュリティ強化・監査ログ・テスト可能な設計が組み込まれており、本番運用に耐えるAI基盤を構築できます。