Claude Agent SDKとMicrosoft Agent Frameworkの違い — .NETでの選び方
Claude Agent SDKはClaude Codeのエージェントを組み込むライブラリで、Microsoft Agent Frameworkはモデルを差し替えられるワークフローの枠組みです。言語・束ね方・モデルの持ち方を並べます。
違いは「完成した1体を借りるか、枠組みで組むか」
Claude Agent SDKとMicrosoft Agent Frameworkは、どちらもエージェントをコードから動かす道具です。ただ、手渡されるものが違います。
Claude Agent SDKは、Claude Codeが使っているエージェントループ・ツール・コンテキスト管理を、PythonとTypeScriptから使えるようにしたライブラリです。Claude Codeの機能(ビルトインツール、フック、サブエージェント、MCP、権限、セッション)がそのまま付いてきます。
Microsoft Agent Frameworkは、エージェント、ワークフロー、各種連携を束ねた枠組みです。モデルの提供元は選べて、Claudeもその選択肢の1つです。
| 比べる軸 | Claude Agent SDK | Microsoft Agent Framework |
|---|---|---|
| 位置づけ | Claude Agent SDKClaude Codeのエージェントを組み込むライブラリ | Microsoft Agent Frameworkエージェントとワークフローの枠組み |
| 言語 | Claude Agent SDKPython / TypeScript | Microsoft Agent FrameworkC#(.NET) / Python / Go |
| モデル | Claude Agent SDKClaude | Microsoft Agent FrameworkFoundry、Azure OpenAI、OpenAI、Anthropic、Ollamaなど |
| 複数エージェントの束ね方 | Claude Agent SDKサブエージェントに委譲 | Microsoft Agent Frameworkグラフ型ワークフローで経路を明示 |
| 横断的な制御 | Claude Agent SDKフックと権限 | Microsoft Agent Frameworkミドルウェア |
「どちらが高機能か」ではなく、「言語とクラウドの前提」「モデルをClaudeに固定するか」「手順を自分で描くか」で分かれます。この3つの軸で、以降を順に見ます。
言語で決まる場面 — .NETからはどう使うか
.NETで書いているチームにとって、最初の分かれ目は言語です。Agent SDKの提供言語はPythonとTypeScriptです。概要ページには、それ以外の言語から同じエージェントループを使うなら、CLIを-pフラグ付きのサブプロセスとして動かす手があると書かれています。
claude -p "このリポジトリのテスト失敗を調べて" \
--output-format jsonC#からはこのコマンドを子プロセスで起動し、JSONを受け取る形になります。型付きのSDKが手元に来るわけではないので、メッセージの扱いは自分で組みます。
Agent Frameworkは、C#、Python、Goの3言語に対応します。.NET向けのクイックスタートは次のとおりです。パッケージはNuGetで入れ、エージェントを作ってRunAsyncで呼びます。
dotnet add package Microsoft.Agents.AI.Foundry --prereleaseAIAgent agent = new AIProjectClient(
new Uri("https://your-foundry-service.services.ai.azure.com/api/projects/your-foundry-project"),
new AzureCliCredential())
.AsAIAgent(
model: "gpt-5.4-mini",
instructions: "You are a friendly assistant. Keep your answers brief.");
Console.WriteLine(await agent.RunAsync("What is the largest city in France?"));これは概要ページの例で、モデルにはFoundry上のgpt-5.4-miniが指定されています。パッケージ名に--prereleaseが付いている点にも注意が必要です。Goは公開プレビュー扱いで、宣言型エージェントやRAGなどはまだ使えないと、同じページに書かれています。
モデルの持ち方 — 固定するか、差し替えるか
Agent SDKはClaudeのエージェントを動かすためのものなので、モデルはClaudeです。Agent Frameworkは逆で、提供元の差し替えを前提にしています。概要ページは、Microsoft Foundry、Anthropic、Azure OpenAI、OpenAI、Ollamaなどを挙げています。
.NETのモデルプロバイダー一覧には、AnthropicのほかAmazon Bedrock、Google Gemini、ONNXなどがあります。IChatClientの実装があれば、ChatClientAgentの裏に置けるという説明です。Python版のAnthropicプロバイダーは、Anthropic、Foundry、Amazon Bedrock、Vertex AIのいずれか経由でClaudeを呼べるとされています。
Claudeを使いたい場合、.NETには次の2経路があります。
| 接続先 | クライアントSDK | NuGetパッケージ |
|---|---|---|
| Anthropic | クライアントSDKAnthropic | NuGetパッケージAnthropic、Microsoft.Agents.AI.Anthropic |
| Microsoft Foundry上のAnthropic | クライアントSDKAnthropic Foundry | NuGetパッケージAnthropic.Foundry、Microsoft.Agents.AI.Anthropic |
ここで混同しやすい点があります。Agent FrameworkのAnthropicプロバイダーが担うのは、Claudeモデルの推論呼び出しです。Agent SDKが提供するClaude Codeのビルトインツールやエージェントループとは別のものです。ドキュメントの記述から読み取れる範囲では、Agent FrameworkでClaudeを選んでも、ツールの実行やループはAgent Frameworkの側の仕組みで回ります。
会話履歴の持ち方も違います。Agent FrameworkのAnthropic接続は、サービス側で履歴を持つ方式に非対応で、メモリ上かカスタムの履歴プロバイダーで持つ方式のみ対応です。OpenAI ResponsesやFoundry Responsesは両方に対応しているので、履歴をサービスに預けたい構成ではこの差が効きます。
オーケストレーション — 委譲か、経路の明示か
複数のエージェントやステップをどう束ねるかが、設計上いちばん大きな違いです。
Agent SDKは、サブエージェントへ委譲する
Agent SDKの能力一覧には、焦点を絞った副タスクのために専門化したエージェントを起動するサブエージェントが入っています。親のClaudeが、どの副タスクを誰に渡すかをループの中で決めます。開発者が書くのは、使ってよいツールと上限です。
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
async def main():
options = ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Bash", "Glob", "Grep"],
max_turns=30, # 暴走防止の上限
)
async for message in query(
prompt="auth モジュールのテスト失敗の原因を直して",
options=options,
):
if isinstance(message, ResultMessage):
print(message.result)
asyncio.run(main())順序を決めるコードはどこにもありません。「読む、直す、テストする」の流れは、Claudeがその場で組み立てます。
Agent Frameworkは、グラフで経路を描く
Agent Frameworkのワークフローは、コード・エージェント・状態・イベント・人の入力をつなぐ、明示的で検査できる実行経路です。.NETではグラフ型のWorkflowBuilderを使い、型付きのエグゼキューターをエッジと条件でつなぎます。ファンアウト・ファンインにも対応し、スーパーステップの境界でチェックポイントを取ります。
Pythonにはもう1つ、実験段階の関数型ワークフローAPIがあります。ifやループ、asyncio.gatherといった普通の制御構文で書けるAPIです。固定のグラフを型検査つきで組むならグラフ型、逐次処理やカスタムループなら関数型、という使い分けが比較表に示されています。
どこまでをLLMに任せるかについて、概要ページには判断表があります。
| エージェントを使う場面 | ワークフローを使う場面 |
|---|---|
| タスクに決まった終わり方がなく、対話的 | ワークフローを使う場面手順がはっきり決まっている |
| 自律的なツール利用と計画が要る | ワークフローを使う場面実行順序を明示的に制御したい |
| LLMを1回(ツール込みで)呼べば足りる | ワークフローを使う場面複数のエージェントや関数を協調させる |
表の後には、関数で書けるならAIエージェントではなく関数で書くこと、という注記も付いています。
つまり、Agent SDKは「ループを任せる側」、Agent Frameworkは「任せる範囲と経路を自分で区切る側」に寄っています。同じ論点でLangGraphと比べた整理はClaude Agent SDKとLangGraphの違いにあります。
安全制御 — 権限とフックか、ミドルウェアか
エージェントの動きに割り込む仕組みも、考え方が違います。
Agent SDKには権限があり、どのツールを自動で通し、どれに承認を求めるかを制御します。フックは、エージェントのライフサイクルの要所で自分のコードを走らせます。
Agent Frameworkのミドルウェアは3種類です。
- エージェント実行のミドルウェア: すべての実行の入出力を検査・変更する
- 関数呼び出しのミドルウェア: エージェントが実行するすべての関数呼び出しを横取りする
IChatClientのミドルウェア: 推論呼び出しを横取りする
登録した順に連鎖し、各ミドルウェアがnextを呼んで次へ渡します。ログ、セキュリティ検証、エラー処理、結果の変換といった横断的な関心事を、エージェント本体に手を入れずに足せます。
実装の入口は違っても、「ツール呼び出しの前後でコードを挟む」という目的は共通しています。Claudeの権限モデルに寄せたいか、.NETの依存注入やパイプラインの流儀に寄せたいかで選ぶ部分です。
長く走るタスク — セッションかハーネスか
Agent SDKのセッションは、やり取りをまたいで文脈を保ち、あとから再開したり分岐したりできます。
Agent Frameworkにはハーネスエージェントがあります。計画とToDo管理、コンテキスト圧縮、ファイルアクセスとメモリ、承認の記憶、オブザーバビリティを最初から備えた、長い複数ステップ作業向けのエージェントです。ハーネスの中身を見ると、ToDo追跡とPlan/Executeモード、セッション単位のファイルメモリ、標準で有効なOpenTelemetryなどが並びます。
Agent SDKが「Claude Codeそのものを部品にする」のに対し、Agent Frameworkのハーネスは「既存の部品を組み合わせた、自前の長期タスク用ランタイム」です。ハーネスも通常のAgent Frameworkのエージェントとして扱えると、ドキュメントは説明しています。
選び方の早見表
| 状況 | 向く選択 | 理由 |
|---|---|---|
| コードを読み書きし、コマンドも実行するエージェントがほしい | 向く選択Agent SDK | 理由Claude Codeのツール一式がそのまま使える |
| 実装言語がC#で、プロセスを増やしたくない | 向く選択Agent Framework | 理由.NETのパッケージで完結する |
| モデルをClaudeに限定せず切り替えたい | 向く選択Agent Framework | 理由プロバイダーを差し替える設計 |
| 手順が決まった業務フローに、LLMの判断を挟みたい | 向く選択Agent Framework | 理由グラフで経路を明示でき、チェックポイントもある |
| 自走させて、止める条件と権限だけ決めたい | 向く選択Agent SDK | 理由ループを任せる設計 |
| Python/TypeScriptで、Claudeに最適化した構成にしたい | 向く選択Agent SDK | 理由Claude Codeの機能をそのまま継承する |
両者は排他ではありません。たとえばワークフロー全体はAgent Frameworkで組み、Claudeを推論に使う箇所だけAnthropicプロバイダーにする、という分け方は成り立ちます。ただしその場合に動くのはAgent Frameworkのエージェントであり、Agent SDKの組み込みツール群ではない点を押さえておくと、設計の食い違いを避けられます。Azureの認証側はWIFをMicrosoft Entra IDと連携するの手順が参考になります。
使う前に押さえたい注意点
Agent SDKの側には、認証の制約があります。事前の承認がない限り、第三者の開発者が自分の製品でclaude.aiのログインやレート制限を提供することは認められていません。APIキーによる認証を使うよう、概要ページに書かれています。また、パートナーが自社製品に組み込むときの表示では、「Claude Code」や「Claude Code Agent」という呼称は使えません。
Agent Frameworkの側には、サードパーティ連携の責任範囲の注意書きがあります。第三者のサーバー・エージェント・コード・非AzureダイレクトのモデルはMicrosoft製品ではなく、それぞれの利用条件に従い、コストも利用者の負担になります。データがAzureのコンプライアンス境界の外へ出る可能性は、利用者が管理する前提です。Claudeを選ぶ場合も、この注意書きの対象になります。
この比較の入口にあたる、Agent SDKとManaged Agents・Claude Codeの違いはClaude Managed Agentsの使い分けで整理しています。ループの進み方そのものはAgent SDKのエージェントループに詳しくあります。
まとめ
Claude Agent SDKは、Claude Codeのエージェントをそのまま組み込みたいPython/TypeScriptの開発者向けで、ループは任せて権限と上限だけ決める道具です。Microsoft Agent Frameworkは、C#を含む複数言語で、モデルを差し替えながらワークフローを明示的に組む枠組みです。.NET中心のチームでClaudeのモデルだけ使いたいならAgent FrameworkのAnthropicプロバイダー、Claude Codeの作業能力まで取り込みたいならAgent SDK(.NETからはCLI経由)が出発点になります。