AIエージェントは研究デモから本番システムへと進化しました。2026年までにエンタープライズAIアプリケーションの60%以上がエージェント型コンポーネントを含むと予想されています。しかし、エージェントをゼロから構築すること - ツールループ、状態管理、メモリ、エラーハンドリング、マルチエージェント連携の管理 - は複雑です。そこでフレームワークの出番です。
2026年に主流となっている4つのフレームワーク: LangGraph、CrewAI、OpenAI Agents SDK、Claude Agent SDK。それぞれが同じ問題に対して根本的に異なるアプローチを取っています - LLMに推論、計画、ツールの使用、そして協調の能力を与えるという問題です。
概要
| 項目 | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |
|---|---|---|---|---|
| 開発元 | LangChain | CrewAI Inc. | OpenAI | Anthropic |
| アーキテクチャ | グラフベース | ロールベース | ハンドオフベース | 自律ループ |
| 設計思想 | 最大限の制御 | チーム協調 | 最小限の抽象化 | エージェントにコンピュータを与える |
| 言語 | Python, TypeScript | Python | Python | Python, TypeScript |
| モデルサポート | 任意 (OpenAI, Claude, ローカル) | 任意 | 任意 (名前に反して) | Claudeのみ |
| GitHub stars | ~29k | ~40k | ~21k | ~6k |
| 最適な用途 | 複雑なステートフルワークフロー | マルチエージェント特化 | ルーティングとトリアージ | コーディングとファイル中心のタスク |
LangGraph: グラフビルダー
LangGraphはエージェントワークフローを有向巡回グラフとしてモデル化します。ノード(処理を行う関数)とエッジ(ノード間の遷移、条件付きも可能)を定義します。状態はグラフを通じて流れ、チェックポイントにより永続化されます。
これは最も明示的で制御可能なフレームワークです - すべてのステップを自分で配線します。
主要コンセプト
- StateGraph: 型付き状態を持つグラフ定義
- Nodes: 状態を変換するPython関数
- Edges: ノード間の接続、条件付きも可能
- Checkpointing: 長時間実行ワークフロー向けの組み込み永続化
コード例
from langgraph.graph import StateGraph, MessagesState, START, END from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-4o") def call_agent(state: MessagesState): response = llm.invoke(state["messages"]) return {"messages": [response]} def should_continue(state: MessagesState): last = state["messages"][-1] if last.tool_calls: return "tools" return END def call_tools(state: MessagesState): # Execute tool calls and return results results = [] for tool_call in state["messages"][-1].tool_calls: result = execute_tool(tool_call) results.append(result) return {"messages": results} graph = StateGraph(MessagesState) graph.add_node("agent", call_agent) graph.add_node("tools", call_tools) graph.add_edge(START, "agent") graph.add_conditional_edges("agent", should_continue, {"tools": "tools", END: END}) graph.add_edge("tools", "agent") app = graph.compile() result = app.invoke({"messages": [{"role": "user", "content": "What's the weather?"}]})
長所
- すべてのステップと遷移をきめ細かく制御可能
- チェックポイントとhuman-in-the-loopが組み込み
- TypeScript完全対応
- あらゆるLLMプロバイダーで動作
- 条件分岐やループを伴う複雑なワークフローに最適
短所
- 学習曲線が急 - グラフ理論の概念を理解する必要がある
- シンプルなユースケースでは冗長 - 基本的なエージェントでも他のフレームワークより多くのボイラープレートが必要
- LangSmithなしではグラフフローのデバッグが難しい
料金
オープンソース (MIT)。LangSmith (マネージド監視プラットフォーム) は本番モニタリング向けに有料プランあり。
CrewAI: チームアセンブラー
CrewAIは人間のメタファーを採用しています: 専門化されたエージェントのクルーを編成し、それぞれにロール、ゴール、バックストーリーを持たせます。エージェントはツールを使ってタスクに協力し、プロセス(順次、階層、合意)によって調整されます。
チームを雇って各メンバーに特定の職種と専門性を持たせるようなものです。
主要コンセプト
- Agent: ロール、ゴール、バックストーリー、ツールを持つペルソナ
- Task: 説明、期待される出力、担当エージェントを持つ割り当て
- Crew: 協力して働くエージェントのグループ
- Process: 実行戦略 (順次、階層、合意)
- Flow: 複数のクルーを接続するイベント駆動オーケストレーション層
コード例
from crewai import Agent, Task, Crew, Process researcher = Agent( role="Senior Research Analyst", goal="Find comprehensive data about the given topic", backstory="You have 10 years of experience in technology research. " "You are thorough and always verify facts from multiple sources.", tools=[web_search_tool], verbose=True, ) writer = Agent( role="Technical Writer", goal="Create clear, engaging technical content", backstory="You write for a developer audience. " "Your articles are practical and include code examples.", tools=[file_tool], verbose=True, ) research_task = Task( description="Research the latest developments in WebAssembly in 2026. " "Focus on WASI, Component Model, and production use cases.", expected_output="A structured research document with key findings and sources.", agent=researcher, ) writing_task = Task( description="Write a blog post based on the research. " "Include code examples and Mermaid diagrams.", expected_output="A complete blog post in Markdown format.", agent=writer, context=[research_task], # Writer receives researcher's output ) crew = Crew( agents=[researcher, writer], tasks=[research_task, writing_task], process=Process.sequential, verbose=True, ) result = crew.kickoff() print(result.raw)
長所
- 直感的なロールベースの抽象化 - 理解しやすい
- 100以上の組み込みツール連携
- エージェント間の共有メモリ (短期、長期、エンティティ)
- 最大のコミュニティ (~40k GitHub stars)
- 委任と検証を行う「マネージャー」エージェントによる階層プロセス
短所
- LangGraphほどのきめ細かい制御はない - 正確な実行パスではなくロールを定義する
- エージェントが意見を異にした場合、階層プロセスは予測しにくくなることがある
- マルチエージェントの会話のデバッグは、シングルエージェントのフローより難しい
料金
オープンソースコア (無料)。CrewAI Platform: $99/月 (Teams) から $120k/年 (Enterprise)。ライブクルー数と月間実行数に基づく料金体系。
OpenAI Agents SDK: ルーター
OpenAI Agents SDK (Swarmの後継) はハンドオフ - エージェントが会話を他の専門エージェントに転送すること - に焦点を当てています。最もミニマルなフレームワークで、エージェント、ツール、ハンドオフ、ガードレールだけで構成されています。それだけです。
主要コンセプト
- Agent: モデル + 指示 + ツール + ハンドオフ
- Handoff: 別のエージェントへの転送 (LLMが呼び出せるツールとしてモデル化)
- Guardrail: エージェントと並行して実行される入出力バリデーション
- Runner: エージェントループを実行
- Tracing: すべてのLLM呼び出し、ツール実行、ハンドオフの組み込みオブザーバビリティ
コード例
from agents import Agent, Runner, handoff, InputGuardrail, GuardrailFunctionOutput from pydantic import BaseModel class SafetyCheck(BaseModel): is_safe: bool reason: str async def content_safety(ctx, agent, input_text): result = await Runner.run( Agent(name="Safety", instructions="Check if input is safe. No PII."), input_text, context=ctx, ) output = SafetyCheck.model_validate_json(result.final_output) return GuardrailFunctionOutput( output_info=output, tripwire_triggered=not output.is_safe ) billing_agent = Agent( name="Billing Agent", instructions="You handle billing inquiries. Be precise with numbers.", tools=[lookup_invoice, process_payment], ) refund_agent = Agent( name="Refund Agent", instructions="You process refund requests. Always verify the order first.", tools=[lookup_order, issue_refund], ) triage_agent = Agent( name="Triage Agent", instructions="Route the customer to the right specialist. " "Ask clarifying questions if needed.", handoffs=[billing_agent, refund_agent], input_guardrails=[InputGuardrail(guardrail_function=content_safety)], ) result = await Runner.run(triage_agent, "I need a refund for order #4521") print(result.final_output) # The triage agent routes to refund_agent, which processes the refund
長所
- クリーンなハンドオフパターン - ルーティング/トリアージワークフローに自然
- ガードレールは実行と並行して動作 (fail-fast、ブロッキングなし)
- デバッグ用のトレーシングダッシュボードが組み込み
- 名前に反して、OpenAI以外のモデルもサポート
- 最小限の抽象化 - 理解しやすく拡張しやすい
短所
- LangGraphと比べて状態管理が未成熟
- 永続化やチェックポイントが組み込まれていない
- サードパーティツールのエコシステムが小さい
- ハンドオフ中心の設計がすべてのアーキテクチャに合うわけではない
料金
オープンソース (MIT)。使用するモデルに応じたトークン単位の課金。
Claude Agent SDK: デベロッパー
Claude Agent SDKは異なるアプローチを取ります: ワークフローやロールを定義する代わりに、エージェントにツールのセットを与え、タスクの達成方法を自分で判断させます。Claude Codeと同じ自律ループ - 読み取り、実行、検証、反復 - を使用しています。
主要コンセプト
- query(): エージェントループを開始するメインエントリーポイント
- 組み込みツール: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch
- MCPによるカスタムツール: インプロセスMCPサーバーとしてツールを定義
- サブエージェント: 親がタスクを委任できる専門エージェント
- Sessions: 複数のインタラクションにわたってコンテキストを維持
コード例
import { tool, createSdkMcpServer, query } from "@anthropic-ai/claude-agent-sdk"; import { z } from "zod"; const searchDocs = tool( "search_docs", "Search the internal documentation for relevant information", { query: z.string().describe("Search query") }, async ({ query }) => { const results = await vectorStore.similaritySearch(query, 5); return { content: [{ type: "text", text: results.map(r => r.pageContent).join("\n\n") }], }; } ); const docsServer = createSdkMcpServer({ name: "docs", version: "1.0.0", tools: [searchDocs], }); for await (const message of query({ prompt: "Find how authentication works in our system and write a summary", options: { mcpServers: { docs: docsServer }, allowedTools: ["Read", "Glob", "Grep", "mcp__docs__search_docs"], }, })) { if (message.type === "result" && message.subtype === "success") { console.log(message.result); } }
長所
- ファーストクラスのMCP統合 - あらゆるMCPサーバーエコシステムに接続可能
- ファイル操作、ターミナル、ウェブアクセスの組み込みツール
- 大規模コードベース向けの自動コンテキスト圧縮
- 複雑なタスクのためのサブエージェント並列処理
- Claude Codeと同じエンジン - 実際の開発ワークフローで実証済み
短所
- Claudeモデルのみ - マルチプロバイダーサポートなし
- 新しいフレームワークでコミュニティが小さい
- Python SDKでもNode.jsランタイムが必要
- LangGraphと比べてワークフロー制御が明示的でない
料金
オープンソース。標準的なClaude APIトークン料金。Managed Agents (ホスト版): トークンコストに加えてセッション時間あたり$0.08。
どれを選ぶべきか
LangGraphを選ぶ場合:
- ワークフローのすべてのステップを正確に制御する必要がある
- 複雑な条件ロジックやループを含むユースケースである
- 永続化やhuman-in-the-loopチェックポイントが組み込みで必要
- 同じワークフローで複数のLLMプロバイダーを使用する必要がある
CrewAIを選ぶ場合:
- 直感的なロールベースの抽象化が欲しい
- 異なる専門性を持つ複数のエージェントが関わるタスクである
- エージェント間でコンテキストを協力して受け渡す必要がある
- 最大のコミュニティと最も多い組み込み連携を重視する
OpenAI Agents SDKを選ぶ場合:
- 主なパターンが会話をスペシャリストにルーティングすることである
- 入出力を並行して検証するガードレールが必要
- 最小限のボイラープレートで最もシンプルな抽象化が欲しい
- 組み込みのトレーシングとオブザーバビリティが重要
Claude Agent SDKを選ぶ場合:
- エージェントがコードの読み書きと実行を行う必要がある
- ファーストクラスのMCPサーバー統合が欲しい
- 反復して自己修正する自律エージェントが必要
- すでにClaudeを使用していて、最も深い統合が欲しい
フレームワークを組み合わせることはできるか?
はい。一般的なパターンとして、あるフレームワークをオーケストレーションに使い、別のフレームワークを個別のエージェントに使います:
- LangGraph をワークフローグラフ全体に
- CrewAI をマルチエージェント協調が必要な特定のノードに
- Claude Agent SDK をMCPを介したコーディング関連のサブタスクに
- OpenAI Agents SDK を顧客対応のトリアージとルーティングに
これらのフレームワークは相互に排他的ではありません。システムの各部分に合うものを使いましょう。
まとめ
各フレームワークは明確な方向性を持っています:
- LangGraph は制御を最適化 - すべての遷移を自分で決定
- CrewAI は協調を最適化 - エージェントがチームとして働く
- OpenAI Agents SDK はシンプルさを最適化 - 最小限の抽象化、クリーンなハンドオフ
- Claude Agent SDK は自律性を最適化 - ツールを与えて作業させる
正しい選択は、あなたのワークフロー、チーム、そして既存の技術スタックに依存します。主なユースケースに合うものを選び、しっかり学び、他のフレームワークが得意な領域に遭遇したら取り入れましょう。