Claude Media
Claude Agent SDKとMicrosoft Agent Frameworkの違い — .NETでの選び方

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 SDKMicrosoft Agent Framework
位置づけClaude Agent SDKClaude Codeのエージェントを組み込むライブラリMicrosoft Agent Frameworkエージェントとワークフローの枠組み
言語Claude Agent SDKPython / TypeScriptMicrosoft Agent FrameworkC#(.NET) / Python / Go
モデルClaude Agent SDKClaudeMicrosoft 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 json

C#からはこのコマンドを子プロセスで起動し、JSONを受け取る形になります。型付きのSDKが手元に来るわけではないので、メッセージの扱いは自分で組みます。

Agent Frameworkは、C#、Python、Goの3言語に対応します。.NET向けのクイックスタートは次のとおりです。パッケージはNuGetで入れ、エージェントを作ってRunAsyncで呼びます。

dotnet add package Microsoft.Agents.AI.Foundry --prerelease
AIAgent 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経路があります。

接続先クライアントSDKNuGetパッケージ
AnthropicクライアントSDKAnthropicNuGetパッケージAnthropic、Microsoft.Agents.AI.Anthropic
Microsoft Foundry上のAnthropicクライアントSDKAnthropic FoundryNuGetパッケージ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経由)が出発点になります。

この記事を共有:XはてブLinkedIn