AI

AIエージェントフレームワーク比較:LangGraph vs CrewAI vs AutoGen 2026年版

オープンソースラボ編集部2026年6月14日

AIエージェントフレームワーク比較:LangGraph vs CrewAI vs AutoGen 2026年版

2025〜2026年のAIエージェント最前線では、LangGraph(LangChain製・ステートグラフ型)・CrewAI(役割分担型マルチエージェント)・AutoGen(Microsoft製・会話ベースマルチエージェント)の3つがOSSエージェントフレームワークのデファクトスタンダードになっています。

AIエージェントフレームワークを使う理由

  • 複雑タスクの分解: 単一LLMでは扱えない長大なタスクを複数エージェントで並列・逐次処理
  • ツール呼び出し: Web検索・コード実行・API呼び出し・データベースクエリをLLMが自律的に実行
  • 人間参加型: 重要な判断ポイントで人間にレビューを求めるHuman-in-the-Loop設計
  • 再利用性: ロールベースのエージェント定義を複数のタスクに再利用

主要フレームワークの概要

LangGraph

2024年初公開、Python製のOSSです。GitHubスター10k+。ステートマシン(グラフ)でエージェントのフローを定義するフレームワークです。ノード(処理)とエッジ(条件分岐)で複雑なエージェントフローを構造化し、チェックポイント(状態の保存・復元)で長時間実行ジョブの中断・再開が可能です。

# LangGraph: Research + Writing エージェントパイプライン
from langgraph.graph import StateGraph, END
from langchain_anthropic import ChatAnthropic
from langchain_community.tools.tavily_search import TavilySearchResults
from typing import TypedDict, Annotated
import operator

# エージェントの状態定義
class AgentState(TypedDict):
    messages: Annotated[list, operator.add]
    topic: str
    research_notes: str
    draft_article: str
    feedback: str
    revision_count: int

llm = ChatAnthropic(model='claude-sonnet-4-6', max_tokens=4096)
search_tool = TavilySearchResults(max_results=5)

def research_node(state: AgentState) -> AgentState:
    '''リサーチエージェント: トピックについてWeb検索'''
    query = f'{state["topic"]} 最新情報 2026年'
    results = search_tool.invoke(query)
    research = '
'.join([f'- {r["content"][:300]}' for r in results])
    return {'research_notes': research, 'revision_count': state.get('revision_count', 0)}

def writer_node(state: AgentState) -> AgentState:
    '''ライターエージェント: リサーチノートから記事を執筆'''
    prompt = f'''以下のリサーチノートを元に、{state["topic"]}について
SEOに強い日本語記事(1500文字以上)を書いてください。

リサーチノート:
{state["research_notes"]}

{f"前回のフィードバック: {state['feedback']}" if state.get("feedback") else ""}'''

    response = llm.invoke(prompt)
    return {'draft_article': response.content}

def reviewer_node(state: AgentState) -> AgentState:
    '''レビューエージェント: 記事の品質チェック'''
    prompt = f'''以下の記事をレビューしてください。
問題がなければ "APPROVED" とだけ答えてください。
問題があれば具体的な改善点を1〜3点箇条書きで挙げてください。

記事:
{state["draft_article"]}'''

    response = llm.invoke(prompt)
    feedback = response.content
    return {'feedback': feedback, 'revision_count': state['revision_count'] + 1}

def should_revise(state: AgentState) -> str:
    '''改訂が必要か判定する条件分岐'''
    if 'APPROVED' in state['feedback']:
        return 'end'
    if state['revision_count'] >= 3:  # 最大3回まで改訂
        return 'end'
    return 'revise'

# グラフの構築
workflow = StateGraph(AgentState)
workflow.add_node('research', research_node)
workflow.add_node('write', writer_node)
workflow.add_node('review', reviewer_node)

workflow.set_entry_point('research')
workflow.add_edge('research', 'write')
workflow.add_edge('write', 'review')
workflow.add_conditional_edges(
    'review',
    should_revise,
    {'revise': 'write', 'end': END}
)

graph = workflow.compile()

# 実行
result = graph.invoke({'topic': 'OSSベクターデータベースの選び方', 'revision_count': 0})
print(result['draft_article'])
# LangGraph + チェックポイント(長時間ジョブの中断・再開)
from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3

# SQLiteでチェックポイントを保存
with SqliteSaver.from_conn_string('checkpoints.db') as saver:
    graph_with_checkpoint = workflow.compile(checkpointer=saver)

    # 最初の実行(thread_id でセッションを識別)
    config = {'configurable': {'thread_id': 'job-001'}}
    result = graph_with_checkpoint.invoke(
        {'topic': 'Kubernetes vs Docker Swarm'},
        config=config,
    )

    # 後から同じthread_idで再開(チェックポイントから続き)
    result2 = graph_with_checkpoint.invoke(None, config=config)

CrewAI

2024年初公開、Python製のOSSです。GitHubスター28k+(急成長)。役割(Role)・目標(Goal)・バックストーリーを持つエージェントを複数定義し、チームとして協力してタスクを達成するフレームワークです。階層型プロセス(マネージャーが指揮)とシーケンシャルプロセスをサポートします。

# CrewAI: コンテンツ制作チームの定義
from crewai import Agent, Task, Crew, Process
from crewai.tools import BaseTool
from langchain_anthropic import ChatAnthropic

claude = ChatAnthropic(model='claude-sonnet-4-6', temperature=0.3)

# エージェントを定義
researcher = Agent(
    role='シニアリサーチアナリスト',
    goal='最新のAI・OSS技術トレンドを収集して正確な情報を提供する',
    backstory='''あなたは10年以上のテクノロジー調査経験を持つアナリストです。
    信頼できる情報源のみを参照し、ファクトチェックを徹底します。''',
    llm=claude,
    verbose=True,
    allow_delegation=False,
    tools=[],  # TavilySearchなどのツールを追加可能
)

writer = Agent(
    role='コンテンツストラテジスト兼ライター',
    goal='研究結果をSEOに強く読みやすい日本語記事に変換する',
    backstory='''あなたはB2B SaaSのコンテンツマーケティング専門家です。
    技術的正確さを保ちながら、非エンジニアにも分かる文章を書きます。''',
    llm=claude,
    verbose=True,
)

editor = Agent(
    role='エディター',
    goal='記事の品質・SEO・読みやすさを最終確認して改善する',
    backstory='15年のデジタルメディア経験を持つエディター。SEOとUXの両立が得意。',
    llm=claude,
    verbose=True,
)

# タスクを定義
research_task = Task(
    description='''
    "Qdrant vs Weaviate vs Milvus ベクターデータベース比較" について調査してください。
    各ツールの: パフォーマンス・スケーラビリティ・コスト・使いやすさ・ユースケースを調査し、
    主要な違いをまとめたリサーチレポートを作成してください。
    ''',
    agent=researcher,
    expected_output='500〜800語のリサーチレポート(比較表・主要機能・選択基準を含む)',
)

writing_task = Task(
    description='''
    リサーチャーのレポートを元に、SEOに強い日本語技術記事を作成してください。
    構成: 導入→概要→比較表→詳細解説(各ツール)→FAQ(4問以上)→まとめ
    文字数: 2000字以上
    ''',
    agent=writer,
    expected_output='2000字以上の日本語記事(Markdown形式)',
)

editing_task = Task(
    description='''
    ライターの記事を以下の基準でレビュー・改善してください:
    1. 検索意図との一致度(「ベクターDB 比較」「Pinecone代替」等のキーワード)
    2. 技術的正確さ
    3. 読みやすさ(文章の流れ・見出し・箇条書き)
    4. CTA(次のアクション)の追加
    ''',
    agent=editor,
    expected_output='改善済みの最終版記事(変更箇所のサマリー付き)',
)

# クルーを組んで実行
crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, writing_task, editing_task],
    process=Process.sequential,  # 順番に実行
    verbose=True,
)

result = crew.kickoff()
print(result.raw)

AutoGen (Microsoft)

2023年公開、Python製のOSSです。GitHubスター34k+。会話ベースのマルチエージェントフレームワークで、エージェント同士が自然言語で会話しながらコードを書いて実行・修正するサイクルを自律的に繰り返します。コーディング・コードレビュー・デバッグタスクに強みがあります。

# AutoGen v0.4: コーディングアシスタントペア
import asyncio
from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.anthropic import AnthropicChatCompletionClient
from autogen_agentchat.conditions import MaxMessageTermination, TextMentionTermination

async def coding_task():
    model_client = AnthropicChatCompletionClient(
        model='claude-sonnet-4-6',
        api_key=os.environ['ANTHROPIC_API_KEY'],
    )

    # コーダーエージェント
    coder = AssistantAgent(
        'Coder',
        model_client=model_client,
        system_message='''あなたは熟練のPythonエンジニアです。
タスクに応じてコードを書き、必要があれば修正してください。
コードは必ず```python ブロックで記述してください。''',
    )

    # コードレビュアーエージェント
    reviewer = AssistantAgent(
        'Reviewer',
        model_client=model_client,
        system_message='''あなたはコードレビュアーです。
提案されたコードを批判的にレビューし、改善点を具体的に指摘してください。
コードが問題なければ "LGTM" と答えてください。''',
    )

    termination = MaxMessageTermination(10) | TextMentionTermination('LGTM')
    team = RoundRobinGroupChat([coder, reviewer], termination_condition=termination)

    result = await team.run(
        task='PostgreSQLのスロークエリをpg_stat_statementsから取得してSlackに通知するPythonスクリプトを書いてください',
    )
    return result

asyncio.run(coding_task())

機能比較表

比較項目LangGraphCrewAIAutoGen
アーキテクチャステートグラフ役割ベースチーム会話ベース
コーディング強み
Human-in-the-Loop
チェックポイント
学習コスト
GitHub Stars10k+28k+34k+

AIエージェントはLLM Toolsカテゴリ/categories/llm-toolsのQdrant・Weaviateのベクターデータベースと組み合わせてRAG(検索拡張生成)付きエージェントを構築します。Low-codeカテゴリ/categories/low-codeのn8n・Temporal(ワークフロー自動化)と連携してエージェントの実行をスケジュール管理・エラーハンドリングします。

FAQ

Q. LangGraph・CrewAI・AutoGenのどれを最初に学ぶべきですか?

A. 目的によって異なりますが、初心者にはCrewAIが最もシンプルです。LangGraphを学ぶべき場合: ①エージェントのフローを精密に制御したい(条件分岐・ループ・並列実行)②長時間実行ジョブでチェックポイント・再開が必要③既にLangChainの経験がある。CrewAIを学ぶべき場合: ①役割分担型のマルチエージェント(研究者→ライター→エディター)を素早く実装したい②エージェントの定義(role・goal・backstory)がビジネス要件と直感的にマッピングできる③学習コストを最小化して結果を早く出したい。AutoGenを学ぶべき場合: ①コードを書いて実行するサイクルを自動化したい②Microsoft Azure OpenAI・Teamsとの統合が必要③会話型のデバッグ・コードレビューを自動化したい。

Q. Claude APIをLangGraph/CrewAIで使う方法は?

A. ①LangGraphとCrewAI: langchain-anthropicパッケージのChatAnthropicが標準統合(pip install langchain-anthropicANTHROPIC_API_KEYを設定)②AutoGen: autogen-ext[anthropic]パッケージのAnthropicChatCompletionClientを使用③コスト最適化: リサーチ・ドラフト生成など高精度が必要なタスクはclaude-sonnet-4-6、シンプルなレビュー・フォーマット変換はclaude-haiku-4-5-20251001を使い分けてトークンコストを削減④プロンプトキャッシュ: Claude APIのcache_controlオプションでシステムプロンプトのキャッシュを有効化して繰り返しタスクのコストを最大90%削減。

Q. マルチエージェントで並列処理を実装するにはどうしますか?

A. ①LangGraph: SendAPIで並列ノードを定義(workflow.add_conditional_edges('planner', dispatch_tasks, {'task_a': 'agent_a', 'task_b': 'agent_b'})のように複数エッジを同時実行)②CrewAI: Process.hierarchicalでマネージャーエージェントが複数エージェントに並列でタスクを割り振り③AutoGen: GroupChatspeaker_selection_method='auto'で複数エージェントが並列議論。注意: LLM APIのrate limitに注意が必要(Anthropic: 1分あたりのトークン上限)。並列エージェント数×コンテキスト長がrate limitを超えないようにasyncio.Semaphoreでリクエスト数を制御します。

Q. AIエージェントのテスト・デバッグはどうすればいいですか?

A. ①LangSmith(LangChain製): LangGraph/CrewAI のすべての実行ステップをトレース・可視化。LANGCHAIN_API_KEYLANGCHAIN_TRACING_V2=trueを設定するだけで自動収集②AgentOps: AutoGen専用の実行トレーシングツール。コスト・レイテンシ・成功/失敗を1ダッシュボードで確認③単体テスト: 各エージェントノード(LangGraph)を単独でpytestでテスト。入力→期待出力のassertで品質を担保④再現可能なデバッグ: temperature=0・シードを固定してLLMの出力を可能な限り決定的にする(Claudeはtemperature=0でもある程度の変動あり)⑤LangGraph Studio: ビジュアルデバッガーでグラフの各ノードをステップ実行できます。

まとめ

ユースケース推奨ツール
複雑フロー制御・チェックポイント・精密制御LangGraph
役割分担チーム・コンテンツ生成・MarketingCrewAI
コーディング自動化・コードレビュー・Azure統合AutoGen

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。