Semantic Kernel(セマンティックカーネル)はMicrosoftが開発するオープンソースのAIエージェント構築SDK。この記事ではAIエージェントに特化して解説します。AIエージェント全般は AIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証 をご覧ください。

microsoft/semantic-kernel のGitHubリポジトリカード
microsoft/semantic-kernel はMITライセンスで公開されているMicrosoft公式リポジトリ(出典: GitHub、2026年8月10日時点でスター28,439・フォーク4,713)
30秒でわかるSemantic Kernel
・Microsoft公式のAIエージェント構築SDK。C#・Python・Javaの3言語に対応し、GitHubスターは28,439(2026年8月10日実測)
・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とは何か

Microsoft Semantic Kernelは、Microsoftが開発するオープンソースのAIエージェント構築SDKです。LLMをアプリケーションへ統合する際の煩雑さ——プロンプト管理、コンテキスト制御、外部ツール連携——を抽象化し、開発者がビジネスロジックに専念できる環境を提供します。C#・Python・Javaの3言語に対応し、Kernelというコアオブジェクトを中心に、プラグイン・メモリー・エージェントを組み立てる設計です。

重要な最新事情:後継フレームワークへの移行
公式README(2026年8月10日時点コミット76b5464)には次の告知が明記されている。「Semantic Kernel is now Microsoft Agent Framework」——Microsoft Agent Framework(MAF)はSemantic Kernelのエンタープライズ向け後継であり、すでにバージョン1.0の本番運用可能なリリースとして提供されている。安定したAPI、長期サポート、A2A・MCPによるマルチランタイム相互運用性を備える。Semantic Kernel自体は保守が継続されるが、これから新規に大規模プロジェクトを立ち上げるチームは、移行ガイドを確認したうえで採否を判断すべきだ。既存資産がSemantic Kernelにある場合は、当面はそのまま運用しつつ移行時期を計画するのが現実的な選択になる。

Semantic Kernelが解決する課題は明確だ。LLM APIを直接呼び出すコードは、モデルプロバイダーが変わるたびに書き直しが必要になりやすい。Semantic Kernelはこの依存をKernelが吸収し、OpenAIからAzure OpenAI、あるいはAnthropicへの切り替えを設定変更レベルに抑える。加えてプラグイン・メモリー・エージェントオーケストレーションを標準搭載するため、LangChainのような汎用フレームワークと違い、.NET/Azureエコシステムに最初から最適化されている点が最大の特徴だ。

Semantic Kernel公式ロゴ
公式リポジトリdocs/images/sk_logo.pngとして配布されているSemantic Kernelのロゴ(出典: microsoft/semantic-kernel)

主な機能:AIエージェント基盤としての強み

Semantic Kernelの機能群は、単体のチャットボットから複数エージェントが協調する本番システムまでを一貫してカバーするよう設計されている。

Semantic Kernel

プラグインシステム

セマンティックメモリー

マルチエージェント
オーケストレーション

マルチモデル対応

マルチモーダル対応

プロセスフレームワーク

・プラグインシステム:ネイティブ関数・プロンプトテンプレート・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年8月10日時点コミット76b5464)/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
MITライセンスバッジ PyPIバージョンバッジ NuGetバージョンバッジ
PyPI・NuGetの両パッケージレジストリで正式配布されている(出典: 公式README badge、2026年7月時点)

インストール後の最小構成は、公式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# Semantic Kernelの型安全性を保ったままAzure OpenAIの認証・デプロイ設定にそのまま接続できる点が、Python中心の他フレームワークには無い実務上の利点になる。社内向けにAzure OpenAIのエンドポイントをどのリージョンで運用するかは組織のデータレジデンシー要件次第だが、AZURE_OPENAI_ENDPOINTを差し替えるだけでコード側は変更不要という設計は、Kernelによる抽象化がそのまま効いている一例だ。

実際に使ってみた結果:Semantic Kernelのインストールと動作確認

公式Quickstartの手順をそのまま実行し、インストール・インポート・出力の3点を検証した(2026年8月10日実施)。

Yes(実測)

No

pip install semantic-kernel

pip show semantic-kernel
1.44.1を確認

ChatCompletionAgent /
AzureAIAgent をimport

インポート成功?

公式README通りの
クラス構成を確認

依存関係エラーを調査

認証情報があれば
Quickstartがそのまま動く状態

1. pip installの実行結果
pip install semantic-kernelを実行すると、依存関係を含めてsemantic-kernel 1.44.1(2026年8月10日時点のPyPI最新版)がインストールされた。Azure AI Foundry連携に必要なazure-ai-agents・azure-ai-projects・azure-identity、MCP連携用のmcpパッケージまで自動解決される点が確認できる。

$ pip install semantic-kernel
...
Successfully installed ... semantic-kernel-1.44.1

$ pip show semantic-kernel
Name: semantic-kernel
Version: 1.44.1
Home-page: https://learn.microsoft.com/en-us/semantic-kernel/overview/

2. インポートと主要クラスの確認
記事内で扱ったChatCompletionAgent・AzureAIAgentの2クラスが、追加設定なしでインポートできることを確認した。

>>> import semantic_kernel
>>> semantic_kernel.__version__
'1.44.1'
>>> from semantic_kernel.agents import ChatCompletionAgent, AzureAIAgent
>>> ChatCompletionAgent, AzureAIAgent
(<class '...ChatCompletionAgent'>, <class '...AzureAIAgent'>)

3. 出力の突き合わせ
APIキーを使った実推論はこの検証環境では行っていないが(Azure OpenAI/OpenAIのクレデンシャルが必要)、前章のクイックスタートで示したWrite a haiku about Semantic Kernel.への応答は、公式READMEのQuickstart節に出力例としてそのまま記載されているものだ。ライブラリのインポート・クラス構成が公式ドキュメント通りであることは実機で確認済みであり、認証情報を用意すれば同じコードがそのまま動く状態にある。

つまずきやすいポイント(実測)
pip installは追加設定なしで完走したが、依存パッケージ数は100を超える(mcp・aiortc・opentelemetry関連など)。企業のプロキシ環境やオフラインビルド環境では、事前にプライベートPyPIミラーへのミラーリングを検討したほうがよい。

アーキテクチャ:KernelとAzure AI Agent Serviceの関係

Semantic Kernelの中核はKernelオブジェクトだ。ここにプラグイン・メモリー・LLM接続を登録し、その上にChatCompletionAgentのようなエージェント層を構築する。ベクトルDBはセマンティックメモリーを介して接続され、複数のLLMプロバイダーは同一インターフェースの背後に隠蔽される。

AzureAIAgentで接続

開発者コード
C# / Python / Java

Kernel

Plugins
Native Function / OpenAPI / MCP

セマンティックメモリー

ベクトルDB
Azure AI Search / Qdrant / Pinecone

LLMプロバイダー
OpenAI / Azure OpenAI / Anthropic / Ollama

ChatCompletionAgent
AgentGroupChat

Azure AI Agent Service
Azure AI Foundry

マネージドツール
Code Interpreter / File Search / Bing Grounding

この図の右側が、Azure AI Agent Service Semantic Kernel連携——GSC実測データで検索意図が強いにもかかわらず旧記事が扱えていなかった統合ポイントだ。Semantic KernelにはAzureAIAgentという専用のエージェント型があり、Microsoft Learnの公式ドキュメントでは次のように説明されている。「AzureAIAgentはSemantic Kernelフレームワーク内の特殊なエージェントで、高度な会話機能とシームレスなツール統合を提供するよう設計されている。ツール呼び出しを自動化し、手動でのパース・呼び出しを不要にする。会話履歴もスレッド経由で安全に管理する」。対応するマネージドツールにはCode Interpreter(サンドボックス化されたPython実行)・File Search・Azure AI Search統合・Bing Grounding・Azure Functions・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,
    )
experimentalステージである点に注意(サービス名の改称も進行中)
Microsoft Learnの当該ページには「この機能はexperimentalステージにあり、preview・release candidateへ進む前に変更される可能性がある」という明記がある。本番導入前に必ず最新のドキュメントとAPIシグネチャを確認したい。加えて、参照先のMicrosoft Learnページ自体が「Azure AI Agent Service」から「Microsoft Foundry Agent Service」への改称を進めている(2026年8月時点でcanonical URLが/azure/foundry/agents/overviewに変更済み)。Semantic Kernel側のAzureAIAgentという型名・API自体は本記事執筆時点で維持されているが、Microsoft公式ドキュメントを直接参照する際はサービス名の変更に注意したい。

自前でベクトル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 LangChain, Inc. crewAI, Inc.
ライセンス MIT MIT MIT

C#/.NET・Azure中心のチーム

Pythonで研究・プロトタイピング

複数エージェントに役割分担させたい

新規プロジェクトで長期サポートが欲しい

どのフレームワークを選ぶか

Semantic Kernel

LangChain

CrewAI

Microsoft Agent Framework

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とは別の、エージェント自体をプラグインとして合成するパターンだ。

"RefundAgent""BillingAgent""TriageAgent""ユーザー""RefundAgent""BillingAgent""TriageAgent""ユーザー""二重請求の相談""請求記録を確認""重複請求を検出""返金要否を判定""返金ポリシー適用可""返金対応を回答"
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 Microsoft Foundry Agent Service(旧: Azure AI Agent Service、Microsoft Learn)
・Semantic Kernel and Microsoft Agent Framework(Agent Framework Blog)