Semantic KernelはMicrosoftが開発するオープンソースのAIエージェント構築SDK。この記事ではAIエージェントに特化して解説します。AIエージェント全般は AIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証 をご覧ください。
・Microsoft公式のAIエージェント構築SDK。C#・Python・Javaの3言語に対応し、GitHubスターは**28,331**(2026年7月19日実測)
・OpenAI・Azure OpenAI・Anthropic・Ollamaなどを同一インターフェースで切り替えられ、モデル切替のたびにコードを書き換える必要がない
・`AzureAIAgent`を使えばAzure AI Agent Service(Azure AI Foundry)上にエージェントをホストでき、会話スレッド管理やCode Interpreter・File Search・Bing Groundingといったマネージドツールをそのまま利用できる
・2026年、Microsoftは後継の企業向けフレームワーク「Microsoft Agent Framework」をバージョン1.0でリリース済み。Semantic Kernelのメンテナンスは続くが、新規プロジェクトはこの関係を理解してから選定したい
概要:Semantic Kernelとは何か
Semantic Kernelは、Microsoftが開発するオープンソースのAIエージェント構築SDKです。LLMをアプリケーションへ統合する際の煩雑さ——プロンプト管理、コンテキスト制御、外部ツール連携——を抽象化し、開発者がビジネスロジックに専念できる環境を提供します。C#・Python・Javaの3言語に対応し、Kernelというコアオブジェクトを中心に、プラグイン・メモリー・エージェントを組み立てる設計です。
[公式README(2026年7月19日時点コミット`c781da1`)](https://github.com/microsoft/semantic-kernel/blob/c781da134e38acbee57616efc8662d2cfd8130d5/README.md)には次の告知が明記されている。「Semantic Kernel is now Microsoft Agent Framework」——Microsoft Agent Framework(MAF)はSemantic Kernelの**エンタープライズ向け後継**であり、すでにバージョン1.0の本番運用可能なリリースとして提供されている。安定したAPI、長期サポート、A2A・MCPによるマルチランタイム相互運用性を備える。Semantic Kernel自体は保守が継続されるが、これから新規に大規模プロジェクトを立ち上げるチームは、[移行ガイド](https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-semantic-kernel)を確認したうえで採否を判断すべきだ。既存資産がSemantic Kernelにある場合は、当面はそのまま運用しつつ移行時期を計画するのが現実的な選択になる。
Semantic Kernelが解決する課題は明確だ。LLM APIを直接呼び出すコードは、モデルプロバイダーが変わるたびに書き直しが必要になりやすい。Semantic Kernelはこの依存をKernelが吸収し、OpenAIからAzure OpenAI、あるいはAnthropicへの切り替えを設定変更レベルに抑える。加えてプラグイン・メモリー・エージェントオーケストレーションを標準搭載するため、LangChainのような汎用フレームワークと違い、.NET/Azureエコシステムに最初から最適化されている点が最大の特徴だ。
主な機能:AIエージェント基盤としての強み
Semantic Kernelの機能群は、単体のチャットボットから複数エージェントが協調する本番システムまでを一貫してカバーするよう設計されている。
オーケストレーション"] SK --> Model["マルチモデル対応"] SK --> Multimodal["マルチモーダル対応"] SK --> Process["プロセスフレームワーク"]
・プラグインシステム:ネイティブ関数・プロンプトテンプレート・OpenAPI仕様・Model Context Protocol(MCP)のいずれでも拡張でき、LLMのスキルを再利用可能な単位として定義できる
・エージェントフレームワーク:ツール/プラグインへのアクセス、メモリー、プランニング機能を備えたモジュール型AIエージェントを構築できる
・マルチエージェントシステム:複数の専門エージェントが協調する複雑なワークフローをオーケストレーションできる。公式README「Quickstart」節の「Multi-Agent System - Python」では、ChatCompletionAgentを使った請求・返金の振り分けエージェント構成が示されている
・マルチモデル対応:OpenAI・Azure OpenAI・Hugging Face・NVIDIA NIMなど、任意のLLMに同一インターフェースで接続できる
・ベクトルDB統合:Azure AI Search・Elasticsearch・Chroma・Qdrant・Pinecone・Weaviateなど複数と連携でき、RAG構成のバックエンドを用途に応じて選べる
・マルチモーダル対応:テキスト・画像・音声を入力として処理できる
・ローカルデプロイ:Ollama・LM Studio・ONNXでのローカル実行にも対応し、クラウド依存を避けたい要件にも応えられる
・プロセスフレームワーク:複雑な業務プロセスを構造化されたワークフローとしてモデル化できる
クイックスタート:Semantic KernelのC#・Pythonでの導入手順
検証環境:microsoft/semantic-kernel main(2026年7月19日時点コミットc781da1)/Python 3.10以上/.NET 10.0以上/Java 17(JDK)以上/OS: Windows・macOS・Linux。以下のコード例はこの時点のREADME Quickstartと突き合わせ済みだ。
システム要件はPython 3.10以上、.NET 10.0以上、Java 17(JDK)以上で、Windows・macOS・Linuxのいずれでも動作する。まずAI Serviceの認証情報を環境変数にセットする。
# Azure OpenAIを使う場合
export AZURE_OPENAI_API_KEY=AAA....
# もしくはOpenAIを直接使う場合
export OPENAI_API_KEY=sk-...
パッケージのインストールはPython・C#・Javaそれぞれ以下の通り。
# Python
pip install semantic-kernel
# .NET(C#)
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Agents.Core
インストール後の最小構成は、公式READMEのQuickstartに沿うと以下のようになる。Pythonでの基本エージェント:
import asyncio
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
async def main():
# 基本的な指示を持つチャットエージェントを初期化
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="SK-Assistant",
instructions="You are a helpful assistant.",
)
# ユーザーメッセージへの応答を取得
response = await agent.get_response(messages="Write a haiku about Semantic Kernel.")
print(response.content)
asyncio.run(main())
公式README「Quickstart」節には、このコードを実行した際の出力例がそのまま記載されている。
Language's essence,
Semantic threads intertwine,
Meaning's core revealed.
C#(.NET)での同等コード:
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT"),
Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"),
Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY"));
var kernel = builder.Build();
ChatCompletionAgent agent = new()
{
Name = "SK-Agent",
Instructions = "You are a helpful assistant.",
Kernel = kernel,
};
await foreach (AgentResponseItem<ChatMessageContent> response
in agent.InvokeAsync("Write a haiku about Semantic Kernel."))
{
Console.WriteLine(response.Message);
}
公式READMEのTroubleshootingでは、詰まりやすい原因を2点挙げている。1つはAPIキー環境変数の設定漏れ、もう1つはAzure OpenAIのデプロイ名・モデルアクセス権の不一致だ。エラーメッセージとSDKバージョンを添えてGitHub IssuesかDiscordコミュニティで質問するのが公式の推奨フローになっている。
バージョンが上がるとAPIシグネチャが変わることもあるため、導入時は必ず手元のpip show semantic-kernelやdotnet list packageで実際のインストール済みバージョンを確認したい。国内SIerや金融・製造業など既存の.NET資産を抱える組織にとっては、C#の型安全性を保ったままAzure OpenAIの認証・デプロイ設定にそのまま接続できる点が、Python中心の他フレームワークには無い実務上の利点になる。社内向けにAzure OpenAIのエンドポイントをどのリージョンで運用するかは組織のデータレジデンシー要件次第だが、AZURE_OPENAI_ENDPOINTを差し替えるだけでコード側は変更不要という設計は、Kernelによる抽象化がそのまま効いている一例だ。
アーキテクチャ:KernelとAzure AI Agent Serviceの関係
Semantic Kernelの中核はKernelオブジェクトだ。ここにプラグイン・メモリー・LLM接続を登録し、その上にChatCompletionAgentのようなエージェント層を構築する。ベクトルDBはセマンティックメモリーを介して接続され、複数のLLMプロバイダーは同一インターフェースの背後に隠蔽される。
C# / Python / Java"] --> Kernel["Kernel"] Kernel --> Plugins["Plugins
Native Function / OpenAPI / MCP"] Kernel --> Memory["セマンティックメモリー"] Memory --> VectorDB["ベクトルDB
Azure AI Search / Qdrant / Pinecone"] Kernel --> LLM["LLMプロバイダー
OpenAI / Azure OpenAI / Anthropic / Ollama"] Kernel --> Agents["ChatCompletionAgent
AgentGroupChat"] Agents -->|"AzureAIAgentで接続"| AzureService["Azure AI Agent Service
Azure AI Foundry"] AzureService --> Tools["マネージドツール
Code Interpreter / File Search / Bing Grounding"]
この図の右側が、GSC実測データで検索意図が強いにもかかわらず旧記事が扱えていなかった「Azure AI Agent Service」との統合だ。Semantic KernelにはAzureAIAgentという専用のエージェント型があり、Microsoft Learnの公式ドキュメントでは次のように説明されている。「AzureAIAgentはSemantic Kernelフレームワーク内の特殊なエージェントで、高度な会話機能とシームレスなツール統合を提供するよう設計されている。ツール呼び出しを自動化し、手動でのパース・呼び出しを不要にする。会話履歴もスレッド経由で安全に管理する」。対応するマネージドツールにはCode Interpreter(サンドボックス化されたPython実行)・File Search・Azure AI Search統合・Bing Grounding・OpenAPIツール統合が含まれる。利用にはAzure AI Foundryの「Foundryプロジェクト」が必要になる。
from azure.identity.aio import DefaultAzureCredential
from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
# 1. Azure AI Agent Service上にエージェントを定義
agent_definition = await client.agents.create_agent(
model=AzureAIAgentSettings().model_deployment_name,
name="<name>",
instructions="<instructions>",
)
# 2. エージェント定義からSemantic Kernelエージェントを生成
agent = AzureAIAgent(
client=client,
definition=agent_definition,
)
Microsoft Learnの当該ページには「この機能はexperimentalステージにあり、preview・release candidateへ進む前に変更される可能性がある」という明記がある。本番導入前に必ず最新のドキュメントとAPIシグネチャを確認したい。
自前でベクトルDBやスレッド管理を運用する代わりに、会話状態・ツール実行・セキュリティ境界をAzure側に任せられる点がAzureAIAgentの価値だ。Kernel側のプラグインやプランニングロジックはそのまま流用でき、ホスティング先だけをAzure AI Agent Serviceに切り替えられる設計になっている。
競合ツールとの比較:LangChain・CrewAIとの違い
Semantic Kernel・LangChain・CrewAIはいずれもAIエージェント構築に使えるが、設計思想が異なる。用途に応じて使い分けるのが現実的だ。
| 項目 | Semantic Kernel | LangChain | CrewAI |
|---|---|---|---|
| 主な強み | エンタープライズ・型安全・Azure統合 | 汎用性・豊富なコミュニティ | マルチエージェント特化 |
| 対応言語 | C# / Python / Java | Python / JavaScript | Python |
| メモリー機能 | セマンティックメモリー標準搭載 | 別途Vector Store接続が必要 | 基本的な短期記憶のみ |
| マルチエージェント | AgentGroupChatで対応 | LangGraph経由で対応 | ネイティブ対応 |
| マネージドホスティング | Azure AI Agent Service連携 | 提供元による個別実装が必要 | 個別実装が必要 |
| 企業バックアップ | Microsoft | Anthropic / community | Community |
| ライセンス | MIT | MIT | MIT |
Semantic Kernelは.NET / Azureエコシステムとの親和性が最大の強みだ。LangChainはPythonエコシステムとの相性が良く、研究・プロトタイピング向きで、PythonチームがLangChainを使い.NETチームがSemantic Kernelを使うという棲み分けも現場ではよくある。CrewAIは「複数エージェントに役割分担させる」構成に最初から特化しており、用途が明確な場合には有力な選択肢になる。Rust製で型安全・ガードレール・WASMサンドボックスを備えるAutoAgents:Rustで構築する複数AIエージェント統合フレームワークのように、C#/.NET以外の型安全な選択肢を検討する場合の比較対象としても押さえておきたい。なお、コーディング特化型のAIエージェントを探している場合は、汎用フレームワークではなくOpenHands完全ガイド:SWE-Bench 77.6%のOSS AIコーディングエージェント徹底解説のような専用ツールの方が適している場面も多い。
実践的な使い方:Semantic KernelとAzure AI Agent Serviceの活用シーン
公式リポジトリのサンプルとドキュメントをもとに、実際にどう使われるかを3つの観点で見る。
1. C#/.NET開発者によるプラグイン拡張
既存の.NETアプリケーションにAIエージェントを組み込む場合、KernelFunction属性を付けたクラスメソッドをそのままプラグイン化できる。型安全なC#のインターフェースを保ったまま、LLMから呼び出し可能な関数として公開できるため、C#資産をそのまま活かせる。
sealed class MenuPlugin
{
[KernelFunction, Description("Provides a list of specials from the menu.")]
public string GetSpecials() =>
"""
Special Soup: Clam Chowder
Special Salad: Cobb Salad
Special Drink: Chai Tea
""";
[KernelFunction, Description("Provides the price of the requested menu item.")]
public string GetItemPrice(
[Description("The name of the menu item.")] string menuItem) =>
"$9.99";
}
2. Azureチームによる複数エージェントの協調運用
公式README「Quickstart」節の「Multi-Agent System - Python」サンプルでは、ユーザー問い合わせを振り分けるTriageAgentがBillingAgentとRefundAgentをpluginsとして保持し、内容に応じて処理を委譲する構成が示されている。これはAgentGroupChatとは別の、エージェント自体をプラグインとして合成するパターンだ。
triage_agent = ChatCompletionAgent(
service=OpenAIChatCompletion(),
name="TriageAgent",
instructions="Evaluate user requests and forward them to BillingAgent or RefundAgent"
" for targeted assistance. Provide the full answer to the user containing any"
" information from the agents",
plugins=[billing_agent, refund_agent],
)
3. マルチエージェント設計者によるAzure AI Agent Serviceの活用
自前でスレッド管理やツール実行環境を構築する代わりに、AzureAIAgent経由でAzure AI Agent Serviceにエージェントをホストすれば、Code InterpreterやFile Searchといったマネージドツールをそのまま利用できる。AIエージェント自体のキャリア・設計スキルを体系的に押さえたい場合は、バイブコーディングは終わった?2026年版Agentic AIエンジニアのロードマップと進化の全体像も合わせて参照したい。マルチエージェント・マルチツールの構成要素をどう組み合わせるかは、結局のところ「どこまでMicrosoftのマネージドサービスに委ねるか」という設計判断に帰着する。
これら3つのシーンに共通するのは、Kernelが提供する抽象化レイヤーを崩さずに、実行環境(自前ホスト/Azure AI Agent Service)とモデル(OpenAI/Azure OpenAI/Anthropic/ローカルLLM)を後から差し替えられる点だ。公式README「Key Features」節は「Enterprise Ready」を掲げ、観測性(observability)・セキュリティ・安定したAPIを前提に設計されていると明記している。監査ログや権限管理を後付けするのではなく、最初からエンタープライズ運用を前提とした設計思想がSemantic Kernel全体を貫いている。
まとめ:Semantic Kernelが向いているチーム
Semantic Kernelは、C#/.NET資産を持ちAzureエコシステムを使うチームにとって、型安全なAIエージェント基盤として最も自然な選択肢だ。プラグイン・セマンティックメモリー・マルチエージェントオーケストレーションが標準搭載されており、AzureAIAgentを使えばAzure AI Agent Serviceの会話状態管理・マネージドツールもそのまま利用できる。OpenAI・Azure OpenAI・Anthropic・ローカルLLMを同一インターフェースで切り替えられる設計は、ベンダーロックインを避けたい組織にも向く。
一方で正直に注意点も書いておく。Microsoftはすでに後継の「Microsoft Agent Framework」をバージョン1.0でリリースしており、公式README自体がそちらへの移行を案内している。新規に大規模プロジェクトを立ち上げるなら、まず移行ガイドを読み、Semantic Kernelのまま進めるかMicrosoft Agent Frameworkから始めるかを判断すべきだ。またAzureAIAgentはexperimentalステージのため、本番導入前にAPIの安定性を確認する必要がある。Pythonで研究寄りの用途ならLangChain、複数エージェントの役割分担を主眼に置くならCrewAIの方が向いている場面もある。既存資産がSemantic Kernelにあり、C#/.NET・Azureを中心に据えるチームにとっては、現時点でも十分実用的な選択肢であり続けている。
参照ソース
・microsoft/semantic-kernel(公式GitHubリポジトリ)
・Exploring the Semantic Kernel Azure AI Agent(Microsoft Learn)
・Semantic Kernel to Microsoft Agent Framework Migration Guide(Microsoft Learn)
・What is Azure AI Agent Service(Microsoft Learn)
・Semantic Kernel and Microsoft Agent Framework(Agent Framework Blog)