---
title: "Semantic Kernelとは｜Microsoftの生成AIオーケストレーションSDKの仕組みとC#実装"
url: "https://www.issoh.co.jp/tech/details/4395/"
published: 2024-12-04
updated: 2026-09-27
categories: ["AIエージェント・MCP"]
publisher: "株式会社一創"
---

# Semantic Kernelとは｜Microsoftの生成AIオーケストレーションSDKの仕組みとC\#実装

Semantic Kernelは、Microsoftがオープンソースで公開する生成AIオーケストレーション用のSDKです。大規模言語モデル（LLM）と自作コードを1つのアプリケーションに組み込み、モデルに「いつ・どの関数を呼ぶか」を判断させる仕組みを、C#・Python・Javaから同じ考え方で扱えます。この記事ではSemantic Kernelの定義、中核となる概念、C#での最小実装、対応言語、そして後継として位置づけられた[Microsoft Agent Framework 1.0](https://www.issoh.co.jp/tech/details/11675/)との使い分けまでを、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](https://www.issoh.co.jp/tech/details/4631/)の仕組みをSDK側で吸収したもので、開発者は`FunctionChoiceBehavior.Auto()`を指定するだけで、プロンプト解析から関数実行、結果の再投入までの往復を任せられます。

### メモリーとベクトル検索によるRAG

Semantic Kernelは埋め込み（Embedding）とベクトルストアを扱うAPIを備え、社内文書を検索してLLMの回答根拠に使うRAG構成を組めます。ベクトル検索そのものの考え方は[ベクトル検索とセマンティック検索の違い](https://www.issoh.co.jp/tech/details/9159/)で整理していますが、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](https://www.issoh.co.jp/tech/details/11675/)を正式版として公開しました。これはSemantic Kernelのエンタープライズ向け後継と位置づけられ、エージェントの状態管理やマルチエージェント連携、A2A・MCPへの対応が組み込まれています。

選び分けの目安は明確です。**複数エージェントの協調や本格的なエージェント基盤を新規に作るなら、後継のAgent Frameworkを選ぶべき**です。Semantic Kernelを新規採用する理由は薄くなっています。一方で、**既存のSemantic Kernel資産がある、あるいは「LLMに関数を1つ2つ使わせる」程度の軽量なオーケストレーションで足りる場合は、Semantic Kernelのままで十分**です。フレームワーク選定を広く比較するなら、[LangChain v1.0](https://www.issoh.co.jp/tech/details/9663/)や、Azure上のマネージド構成である[Azure AI Agent Service](https://www.issoh.co.jp/tech/details/4297/)も候補に入ります。用途がチャット補完中心か、自律的なエージェントかで判断が分かれます。

## よくある質問

### 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を介して呼び出す構成が現実的です。

## 関連記事

- [Microsoft Agent Framework 1.0とは｜Semantic KernelとAutoGenを統合した.NET/Python共通エージェントSDK](https://www.issoh.co.jp/tech/details/11675/)
- [Azure AI Agent Serviceの概要とその統合プラットフォームとしての役割](https://www.issoh.co.jp/tech/details/4297/)
- [LangChain v1.0とは｜create\_agent・ミドルウェア・langchain-classicを実装例で解説](https://www.issoh.co.jp/tech/details/9663/)
- [Function Callingとは｜仕組みとOpenAI APIでの実装をコードで解説](https://www.issoh.co.jp/tech/details/4631/)
- [ベクトル検索とセマンティック検索の違い｜包含関係・仕組み・使い分けを実装目線で整理](https://www.issoh.co.jp/tech/details/9159/)

---

出典: [Semantic Kernelとは｜Microsoftの生成AIオーケストレーションSDKの仕組みとC\#実装](<https://www.issoh.co.jp/tech/details/4395/>)（株式会社一創）
