コンテンツにスキップ
LinkedInX

AIエージェントフレームワーク比較

対象読者: AIエージェントの基本概念を理解しており、実際にエージェントを構築したい初中級者の方

AIエージェントフレームワークとは、エージェントの設計・実装を効率化するためのライブラリ・ツールキットです。ゼロから実装すると数百行必要なオーケストレーションロジック・ツール管理・メモリ管理を、フレームワークが提供するAPIで簡潔に記述できます。

フレームワークを使う理由

ゼロから実装 vs フレームワーク活用

エージェントを独自実装する場合、以下のすべてを自前で構築する必要があります。

  • ReActループの実装(Reason→Act→Observe のサイクル管理)
  • ツールの定義・呼び出し・エラーハンドリング
  • コンテキスト管理(長さの制御・要約)
  • エージェント間の情報受け渡し
  • Human-in-the-loopの承認フロー
  • 実行ログ・デバッグ機能

フレームワークはこれらをあらかじめ提供しており、開発者はタスク固有のロジックに集中できます。

観点ゼロから実装フレームワーク活用
柔軟性最大フレームワークの範囲内
開発速度遅い速い
学習コストフレームワーク不要フレームワーク学習が必要
メンテナンス自己管理フレームワーク更新に追従
推奨ケース独自要件が強い場合標準的なエージェントの構築
この表は横方向にスクロールできます。キーボードでは、表にフォーカスして左右の矢印キーを使用してください。

代表的なフレームワーク

1. LangGraph

LangGraph は LangChain エコシステムの一部として開発された、グラフベースのエージェントフレームワークです。公式ドキュメントでは、長期実行・ステートフルなエージェントの構築に向いた基盤として説明されています。[1]

# Python - LangGraph の最小構成例(概念的)
from langgraph.graph import StateGraph, END
from typing import TypedDict

class AgentState(TypedDict):
    messages: list
    next_step: str

# グラフの定義
workflow = StateGraph(AgentState)

# ノード(処理ステップ)の追加
workflow.add_node("reason", reason_node)     # 思考ステップ
workflow.add_node("tool_use", tool_node)     # ツール実行
workflow.add_node("observe", observe_node)   # 結果観察

# エッジ(遷移)の定義
workflow.add_edge("reason", "tool_use")
workflow.add_conditional_edges(
    "observe",
    should_continue,  # 条件関数
    {"continue": "reason", "finish": END}
)

# グラフのコンパイル・実行
app = workflow.compile()
result = app.invoke({"messages": [("user", "調査タスクを実行してください")]})

StateGraph とは、エージェントの状態(State)を型定義し、各ノードが状態を更新する形式でワークフローを管理する仕組みです。[1] 複雑な条件分岐や状態管理が必要なエージェントに適しています。

向いている用途

  • 複雑な状態管理が必要なエージェント
  • 条件分岐・ループが多いワークフロー
  • LangChain エコシステムをすでに使用している場合

2. CrewAI

CrewAI は「クルー(チーム)」として複数エージェントを定義し、各エージェントに役割(Role)と目標(Goal)を設定するフレームワークです。公式ドキュメントは、agents、crews、flowsを中核概念として説明しています。[2]

# Python - CrewAI の最小構成例(概念的)
from crewai import Agent, Task, Crew

# エージェントの定義(役割・目標・バックストーリーを指定)
researcher = Agent(
    role="リサーチアナリスト",
    goal="最新のEV市場動向を包括的に調査する",
    backstory="10年の市場調査経験を持つアナリスト。データの正確性を重視する。",
    tools=[web_search_tool, data_analysis_tool],
    verbose=True
)

writer = Agent(
    role="テクニカルライター",
    goal="調査結果を分かりやすいレポートにまとめる",
    backstory="技術文書の専門家。複雑な情報を明確に伝えることが得意。",
    tools=[file_write_tool]
)

# タスクの定義
research_task = Task(
    description="EV市場の最新データを収集・分析する",
    agent=researcher,
    expected_output="市場シェア・成長率・主要プレイヤーを含む分析レポート"
)

writing_task = Task(
    description="調査結果をもとに読みやすいレポートを作成する",
    agent=writer,
    expected_output="1500字程度の市場動向レポート",
    context=[research_task]  # research_taskの結果を入力として使用
)

# クルーの組成・実行
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    verbose=True
)
result = crew.kickoff()

向いている用途

  • 役割分担が明確なマルチエージェント(リサーチ→ライティング→レビューなど)
  • ビジネスプロセスの自動化
  • コンテンツ生成パイプライン

3. AutoGen(Microsoft)

AutoGen は Microsoft のエージェント構築フレームワークです。現行ドキュメントでは、AgentChatを会話型の単一・マルチエージェントアプリを構築するためのプログラミングフレームワークとして説明しています。[3]

# Python - AutoGen の最小構成例(概念的)
import autogen

# LLM設定
llm_config = {"model": "MODEL_NAME", "api_key": "YOUR_API_KEY"}

# エージェントの定義
assistant = autogen.AssistantAgent(
    name="コーディングアシスタント",
    llm_config=llm_config,
    system_message="Python コードを書いて問題を解決するエージェントです。"
)

# 人間プロキシエージェント(Human-in-the-loop を実現)
user_proxy = autogen.UserProxyAgent(
    name="ユーザープロキシ",
    human_input_mode="TERMINATE",  # 終了条件が満たされたら人間に確認
    code_execution_config={"work_dir": "workspace"}
)

# 会話の開始(エージェント同士が対話してタスクを解決)
user_proxy.initiate_chat(
    assistant,
    message="フィボナッチ数列を計算するPythonスクリプトを書いてテストしてください"
)

このコードは旧系統のAutoGen APIを使った概念例です。現行のAutoGenはAgentChat、Core、Extensionsに分かれているため、実装時は利用バージョンの公式ドキュメントを確認してください。[3]

向いている用途

  • 対話型のタスク解決
  • コード生成・実行・デバッグの自動化
  • 研究目的のマルチエージェント実験

4. Mastra

Mastra は TypeScript スタック上でAIアプリやエージェントを構築するためのフレームワークです。公式ドキュメントは、agents、workflows、tools、memory、evalsなどを扱うTypeScript向け基盤として説明しています。[4]

// TypeScript - Mastra の最小構成例(概念的)
import { Mastra, Agent } from "@mastra/core";

// エージェントの定義
const researchAgent = new Agent({
  name: "ResearchAgent",
  instructions: "Web検索を使って最新情報を収集する専門エージェント。",
  model: {
    provider: "ANTHROPIC",
    name: "claude-sonnet-4-5",
  },
  tools: {
    webSearch: webSearchTool,
    fileWrite: fileWriteTool,
  },
});

// Mastraインスタンスの作成
const mastra = new Mastra({
  agents: { researchAgent },
});

// エージェントの実行
const agent = mastra.getAgent("researchAgent");
const result = await agent.generate(
  "AIエージェント市場の最新規模を調査してください"
);

console.log(result.text);

向いている用途

  • Next.js・Nuxt などのWebフレームワークへの組み込み
  • TypeScript プロジェクトでのエージェント開発
  • フロントエンドとエージェントを密結合させたいケース

5. OpenAI Agents SDK(旧Swarm)

OpenAI Agents SDK は OpenAI が提供するエージェントSDKです。ドキュメントでは、Agents、Tools、Handoffs、Guardrails、Tracingなどを中核機能として案内しています。[5]

# Python - OpenAI Agents SDK の最小構成例(概念的)
from openai import OpenAI
from agents import Agent, Runner, handoff

client = OpenAI()

# 各専門エージェントの定義
triage_agent = Agent(
    name="トリアージエージェント",
    instructions="ユーザーの質問を分析して、適切な専門エージェントに転送する。",
    model="MODEL_NAME"
)

coding_agent = Agent(
    name="コーディングエージェント",
    instructions="コードに関する質問を担当する。",
    model="MODEL_NAME",
    handoffs=[handoff(triage_agent)]  # 処理完了後にトリアージに戻す
)

research_agent = Agent(
    name="リサーチエージェント",
    instructions="情報収集・調査タスクを担当する。",
    model="MODEL_NAME",
    handoffs=[handoff(triage_agent)]
)

# トリアージエージェントにハンドオフ先を設定
triage_agent.handoffs = [
    handoff(coding_agent),
    handoff(research_agent)
]

# 実行
result = Runner.run_sync(triage_agent, "Pythonでソートアルゴリズムを実装してください")

ハンドオフ(Handoff)とは、あるエージェントから別のエージェントへ会話や制御を委譲する仕組みです。[6] コールセンターで担当部署を転送するイメージに近く、専門性に応じて適切なエージェントが処理を引き継ぎます。

向いている用途

  • OpenAI APIを中心に使うプロジェクト
  • シンプルなマルチエージェントのハンドオフ実装
  • カスタマーサポート・トリアージシステム

6. Claude Code(Anthropic)

Claude Code は Anthropic が提供するコーディング向けAIエージェントです。公式ドキュメントでは、ターミナルから使うエージェント型コーディングツールとして案内されています。[7]

Claude CodeはMCP連携をサポートし、カスタムサブエージェントで専門化した作業単位を定義できます。[8][9]

# Claude Code の基本的な使い方(コマンドライン)

# 単一タスクの実行
claude -p "src/auth.ts のバグを調査して修正してください"

# サブエージェントを使った並列タスク(概念的な例)
claude -p "以下を並列で実行してください:
  1. フロントエンドのユニットテストを書く
  2. バックエンドのAPIドキュメントを生成する
  3. CIの設定ファイルを最適化する"

# MCP サーバーと連携した操作
# (MCPサーバーを設定済みの場合)
claude -p "GitHubのissue #123を参照して、対応するコードを修正してください"

Claude Codeと同じエージェントループをアプリケーションから使いたい場合は、次に紹介するClaude Agent SDKを選びます。[10]

向いている用途

  • ソフトウェア開発・コードベース操作
  • 大規模リファクタリング・テスト自動生成
  • MCP経由での外部サービス連携

7. Claude Agent SDK(Anthropic)

Claude Agent SDK は、Claude Codeと同じ組み込みツール、エージェントループ、コンテキスト管理をPythonまたはTypeScriptから利用するためのSDKです。Claude Codeが対話的な開発ツールであるのに対し、Claude Agent SDKは自分のアプリケーション内でエージェントを実行するときに使います。[10]

# Python - Claude Agent SDK の最小構成例
import asyncio
from claude_agent_sdk import ClaudeAgentOptions, query

async def main():
    options = ClaudeAgentOptions(
        allowed_tools=["WebSearch"],
        system_prompt="調査結果を出典とともに整理するエージェントです。",
    )

    async for message in query(
        prompt="AIエージェントの評価方法を調査してください",
        options=options,
    ):
        print(message)

asyncio.run(main())

組み込みツールに加えて、MCP、サブエージェント、権限制御、セッションなどをコードから構成できます。[10]

向いている用途

  • Claude Codeのエージェント機能を独自アプリケーションに組み込む
  • ファイル操作・コマンド実行・Web検索を含む自律的なタスク
  • ツール権限や実行状況をPython・TypeScriptから制御したい場合

8. Google ADK(Gemini)

Google Agent Development Kit(Google ADK) は、Googleが提供するオープンソースのエージェント開発フレームワークです。Geminiを簡単に利用できるほか、他社モデルにも接続できます。Python、TypeScript、Go、Java、Kotlinに対応し、ツール、セッション、マルチエージェント、グラフ型ワークフロー、評価、デプロイを扱います。[11]

# Python - Google ADK で Gemini を使う最小構成例
from google.adk import Agent
from google.adk.tools import google_search

root_agent = Agent(
    name="researcher",
    model="gemini-flash-latest",
    instruction="根拠を確認しながら調査するエージェントです。",
    tools=[google_search],
)

Gemini APIを直接呼び出すGoogle GenAI SDKはモデル用のクライアントSDKです。エージェントのツール実行、状態管理、複数エージェントの協調まで設計する場合は、Google ADKがこの比較ページの対象になります。[11][12]

向いている用途

  • GeminiとGoogle Cloudを中心にエージェントを構築する
  • 複数言語で同じエージェント設計を展開する
  • マルチエージェント、評価、デプロイまで一つの枠組みで扱う

フレームワーク比較表

フレームワーク言語主な特徴学習コスト向いている用途
LangGraphPythonグラフ定義、状態管理複雑なワークフロー
CrewAIPython役割・目標ベース設計低〜中役割分担型マルチエージェント
AutoGenPython対話型エージェント研究・コード実行自動化
MastraTypeScriptWeb統合、型安全Webアプリ統合
OpenAI Agents SDKPythonハンドオフ、シンプルOpenAI中心のマルチエージェント
Claude CodeCLIコーディング特化、MCP統合対話的なソフトウェア開発
Claude Agent SDKPython / TypeScript組み込みツール、権限制御Claudeベースのカスタムエージェント
Google ADKPython / TypeScript / Go / Java / KotlinGemini連携、ワークフロー、評価Gemini・Google Cloud中心のエージェント
この表は横方向にスクロールできます。キーボードでは、表にフォーカスして左右の矢印キーを使用してください。

フレームワーク選び方フローチャート

graph TD
    Start["フレームワーク選択"] --> Use{"主な要件は?"}

    Use -->|"対話的なコーディング"| ClaudeCode["Claude Code\n(コーディング特化)"]
    Use -->|"Claudeのツール実行をアプリに組み込む"| ClaudeSDK["Claude Agent SDK\n(組み込みツール・権限制御)"]
    Use -->|"Gemini・Google Cloudを中心に構築"| GoogleADK["Google ADK\n(マルチ言語・評価・デプロイ)"]
    Use -->|"OpenAI APIを中心に構築"| OpenAI["OpenAI Agents SDK\n(ハンドオフ)"]
    Use -->|"複雑な状態管理"| LangGraph["LangGraph\n(グラフベース)"]
    Use -->|"役割分担が明確なチーム型"| CrewAI["CrewAI\n(役割・目標ベース)"]
    Use -->|"対話型の実験"| AutoGen["AutoGen\n(対話型エージェント)"]
    Use -->|"TypeScriptのWebアプリ統合"| Mastra["Mastra\n(TypeScript-first)"]

まとめ

  • フレームワークを使うと、ReActループ・ツール管理・エージェント間通信を自前実装せずに済む
  • 比較した8つの選択肢には、それぞれ設計思想と得意な用途がある
  • Claudeのエージェント機能を組み込むなら Claude Agent SDK、Gemini中心なら Google ADK、対話的なコーディング支援なら Claude Code が候補になる
  • 複雑な状態管理には LangGraph、役割分担型には CrewAI、TypeScriptのWeb統合には Mastra が適している
  • まず小さなプロトタイプで試してから本番導入を判断することを推奨する

よくある質問

Q: 初心者に最も入門しやすいフレームワークはどれですか?

A: CrewAI または OpenAI Agents SDK が入門向きです。役割(Role)とゴール(Goal)を自然言語で定義するだけでマルチエージェントを構築できるCrewAIは、特に直感的です。LangGraphは機能が豊富ですが、グラフの概念に慣れるまでに時間がかかります。

Q: LangChainとLangGraphは何が違いますか?

A: LangChain はLLMアプリケーション全般のための汎用フレームワークです。LangGraph はLangChainの上に構築されたエージェント特化のフレームワークで、グラフ構造によるフロー制御が中心です。エージェントを構築する場合は LangGraph が推奨されています。

Q: 複数のフレームワークを組み合わせて使えますか?

A: 技術的には可能ですが、複雑になるため推奨しません。まず1つのフレームワークで要件を満たせるか検討し、どうしても足りない場合にのみ組み合わせを検討してください。

Q: フレームワークを使わずに直接Anthropic APIを呼び出す方法はありますか?

A: はい、可能です。Anthropic Python SDK(anthropic パッケージ)を使えば、フレームワークなしでエージェントを構築できます。シンプルなエージェントや独自要件が強い場合はこの方法が適しています。詳細はAIエージェントとMCPを参照してください。

Q: Google GenAI SDKとGoogle ADKは何が違いますか?

A: Google GenAI SDKはGemini APIを直接呼び出すためのクライアントSDKです。Google ADKは、そのモデル呼び出しに加えて、ツール、セッション、複数エージェント、ワークフローなどを構成するエージェント開発フレームワークです。単発の生成処理ならGoogle GenAI SDK、エージェント全体を設計するならGoogle ADKが候補になります。[11][12]

関連リンク

参考文献

  1. LangChain, LangGraph overview
  2. CrewAI, Agents
  3. Microsoft, AutoGen
  4. Mastra, Get started with Mastra
  5. OpenAI, OpenAI Agents SDK
  6. OpenAI, Handoffs
  7. Anthropic, Claude Code overview
  8. Anthropic, Connect Claude Code to tools via MCP
  9. Anthropic, Create custom subagents
  10. Anthropic, Agent SDK overview
  11. Google, Agent Development Kit
  12. Google, Gemini API libraries

最新のリリースやアップデートの詳細は、公式サイト・公式ドキュメントを確認してください。

クイズ