AIエージェントとは何か — なぜ今フレームワークが必要なのか
AIエージェントとは、LLM(大規模言語モデル)を頭脳として、外部ツールの呼び出し・計画立案・自律的な意思決定を行うソフトウェアシステムである。単純なチャットボットが「質問に答える」存在であるのに対し、エージェントは「目標を達成するために自ら行動する」存在だ。
2025年、エージェント開発は概念実証の段階を超え、プロダクション投入が本格化した。それに伴い、状態管理、エラーハンドリング、Human-in-the-Loop、マルチエージェント協調といった課題が顕在化し、これらを体系的に解決するフレームワークの重要性が急速に高まっている。
本稿では、現在最も注目される三大フレームワーク — LangGraph、CrewAI、AutoGen — を設計思想・アーキテクチャ・実装例の観点から徹底比較する。
LangGraph — グラフで制御する精密エージェント
LangGraphは、エージェントのワークフローを有向グラフ(StateGraph)として明示的に定義するフレームワークだ。各ノードが処理ステップ、エッジが遷移条件を表し、共有状態(State)を通じてノード間がデータを受け渡す。
最大の特徴は永続化(Persistence)とHuman-in-the-Loopのネイティブサポートだ。SQLiteやPostgreSQLへのチェックポイント保存により、長時間実行ワークフローの中断・再開が可能になる。
from langgraph.graph import StateGraph, START, END, MessagesState
from langgraph.checkpoint.memory import InMemorySaver
def research(state: MessagesState):
return {"messages": [{"role": "assistant", "content": "調査完了"}]}
def draft(state: MessagesState):
return {"messages": [{"role": "assistant", "content": "草稿作成完了"}]}
builder = StateGraph(MessagesState)
builder.add_node("research", research)
builder.add_node("draft", draft)
builder.add_edge(START, "research")
builder.add_edge("research", "draft")
builder.add_edge("draft", END)
graph = builder.compile(checkpointer=InMemorySaver())
result = graph.invoke({"messages": []}, {"configurable": {"thread_id": "1"}})
グラフ構造の明示性が高いため、デバッグや監査が容易な反面、単純なタスクでもボイラープレートが多くなる傾向がある。
CrewAI — 役割分担で動くAIチーム
CrewAIは「AIエージェントのチームを編成する」という比喩を設計の中核に据えたフレームワークだ。開発者はAgent(役割・目標・バックストーリーを持つ自律エージェント)、Task(具体的な作業指示)、Crew(エージェントとタスクの集合体)の3つの抽象で系を構築する。
さらに上位のFlow機構により、複数のCrewを跨いだイベント駆動ワークフローの構築も可能だ。10万人超の認定開発者コミュニティを擁し、エンタープライズ向けのデプロイ基盤も提供している。
from crewai import Agent, Crew, Task
researcher = Agent(
role="リサーチャー",
goal="最新のAI動向を調査する",
backstory="10年の経験を持つテクノロジーアナリスト"
)
task = Task(
description="2025年のAIエージェント市場を分析せよ",
expected_output="市場規模・主要プレイヤー・トレンドの概要レポート",
agent=researcher
)
crew = Crew(agents=[researcher], tasks=[task], verbose=True)
result = crew.kickoff()
宣言的なAPIにより、プロトタイピングの速度は圧倒的に速い。一方、グラフレベルの細かい制御が必要な場面では柔軟性に限界がある。
AutoGen — 会話が駆動するマルチエージェント
MicrosoftのAutoGenは、エージェント間の会話(Conversation)を制御の基本単位とする。AssistantAgentとUserProxyAgentの対話を軸に、グループチャット形式でのマルチエージェント協調を実現する。コード生成・実行のループを組み込める点が他のフレームワークと一線を画す特徴だ。
import autogen
assistant = autogen.AssistantAgent(
name="assistant",
llm_config={"config_list": config_list},
system_message="あなたは優秀なPythonエンジニアです。"
)
user_proxy = autogen.UserProxyAgent(
name="user_proxy",
human_input_mode="TERMINATE",
code_execution_config={"work_dir": "coding", "use_docker": False}
)
user_proxy.initiate_chat(assistant, message="フィボナッチ数列を計算するコードを書いてください")
研究プロジェクト由来のフレームワークであり、実験的なマルチエージェントパターンの探索に強い。ただし、プロダクション向けの状態永続化やデプロイ基盤はLangGraphやCrewAIに比べ発展途上の側面がある。
アーキテクチャパターン:シングル vs マルチエージェント
エージェントの構成パターンは大きく4つに分類できる。
- シングルエージェント(ツール呼び出し型):1つのLLMがツールを使い分けて目標を達成。シンプルで予測可能。LangGraphが最適。
- マルチエージェント(チーム型):役割の異なるエージェントがタスクを分担。複雑な業務に対応。CrewAIが最適。
- マルチエージェント(会話型):エージェント同士の議論で解を導出。創発的な成果を期待。AutoGenが最適。
- 階層型オーケストレーション:上位エージェントが下位エージェントに指示を出す。大規模系に適合。LangGraph / CrewAI Flowが最適。
フレームワーク選定ガイド
フレームワーク選定において、万能の正解は存在しない。以下の指針を参考にしてほしい。
LangGraphを選ぶべきとき:複雑な条件分岐・ループを含むワークフロー、長時間実行タスクの中断・再開が必要、プロダクション品質の状態管理と監査性を重視する場合。
CrewAIを選ぶべきとき:役割分担が明確なチーム型タスク、素早いプロトタイピング、マルチエージェントの協調をビジネスロジックとして表現したい場合。
AutoGenを選ぶべきとき:コード生成・実行を中核とするユースケース、研究・実験目的のマルチエージェント対話、Microsoftエコシステムとの親和性を重視する場合。
なお、AnthropicのClaude Agent SDKやOpenAIのAgents SDK(旧Swarm)など、LLMプロバイダ自身がエージェントフレームワークを提供する動きも加速している。特定モデルとの深い統合を求める場合は、これらも候補に加えるべきだろう。
AIエージェントフレームワークの戦国時代はまだ始まったばかりだ。重要なのは、流行に飛びつくことではなく、自身のユースケースに最も適合する設計思想を見極めることである。



