AIエージェント開発フレームワークは、状態管理の柔軟性が必要ならLangGraph、ロールベースで直感的にマルチエージェントを組み立てたいならCrewAI、会話駆動型の協調が主役ならAutoGenが第一候補となります。プロトタイプから本番へ移行する際にはフレームワーク選定を見直すことが多いため、最初から成熟度と保守性を視野に入れておくのが賢明です。

AIエージェントフレームワークの全体像

AIエージェントを素手で実装するのは、自動車をネジから作るようなものです。状態管理、ツール呼び出し、ループ検出、エラーハンドリング、メモリ管理――これらを毎回ゼロから書いていたら、本題のビジネスロジックに辿り着く前に疲弊します。そこで登場したのがエージェント開発フレームワークです。2024年以降、LangGraph、CrewAI、AutoGen、Semantic Kernel、Agno、Mastraなど多くの選択肢が生まれ、それぞれが異なる思想と強みを持っています。

選定を誤ると、あとからのリファクタリングコストが莫大になります。フレームワークは「LLMを呼び出す薄いラッパー」ではなく、アーキテクチャそのものを規定する存在です。以降では代表的な3つを実装例とともに比較していきます。

LangGraph

LangGraphは、LangChainの開発元であるLangChain社が提供する、グラフベースのエージェントフレームワークです。エージェントの処理を有向グラフとして表現し、各ノードが状態を更新しながら次のノードへ遷移していきます。特徴的なのは、循環グラフを許容している点です。ReActループのような「Thought→Action→Observation」の繰り返し構造を素直に表現できます。

from langgraph.graph import StateGraph, END
from typing import TypedDict
from langchain_openai import ChatOpenAI

class AgentState(TypedDict):
    input: str
    output: str
    iterations: int

llm = ChatOpenAI(model="gpt-4o")

def think(state: AgentState):
    response = llm.invoke(state["input"]).content
    return {"output": response, "iterations": state["iterations"] + 1}

def should_continue(state: AgentState):
    if state["iterations"] >= 3:
        return END
    return "think"

graph = StateGraph(AgentState)
graph.add_node("think", think)
graph.set_entry_point("think")
graph.add_conditional_edges("think", should_continue)
app = graph.compile()

result = app.invoke({"input": "売上予測モデルの設計", "output": "", "iterations": 0})
print(result["output"])

LangGraphの強みは、状態の型安全性と、条件分岐・ループを明示的に扱える点です。一方で、学習コストはやや高く、シンプルなタスクではオーバースペックに感じられる場合があります。複雑なワークフローや、本番運用での観測可能性を重視するなら第一候補です。

CrewAI

CrewAIは、マルチエージェントの構築を「人間のチーム編成」のメタファーで抽象化したフレームワークです。エージェントに役割(role)、目標(goal)、背景(backstory)を与えるだけで、驚くほど直感的にマルチエージェントが組み上がります。LangGraphが「グラフを書く」のに対し、CrewAIは「チームを作る」感覚です。

from crewai import Agent, Task, Crew, Process

analyst = Agent(
    role="Data Analyst",
    goal="売上データから改善ポイントを抽出",
    backstory="BIツールに精通したアナリスト",
    allow_delegation=False
)

strategist = Agent(
    role="Business Strategist",
    goal="分析結果から施策を提案",
    backstory="マーケティング戦略のベテラン",
    allow_delegation=False
)

analyze_task = Task(
    description="Q3の売上データを分析",
    agent=analyst,
    expected_output="改善ポイント3点"
)

strategy_task = Task(
    description="改善ポイントから施策を3つ提案",
    agent=strategist,
    expected_output="実行可能な施策リスト"
)

crew = Crew(
    agents=[analyst, strategist],
    tasks=[analyze_task, strategy_task],
    process=Process.sequential
)
result = crew.kickoff()

CrewAIは書き味が非常に軽く、プロトタイプを数十分で作れる点が魅力です。ただし、細かい状態管理や複雑な条件分岐は苦手で、エージェントが勝手に暴走することもあります。小〜中規模のマルチエージェントを素早く立ち上げたい場合に最適です。

AutoGen(Microsoft)

AutoGenはMicrosoft Researchが開発した、会話ベースのマルチエージェントフレームワークです。エージェント同士が自然言語で会話しながらタスクを進めるという、非常にユニークなアプローチを採用しています。人間も会話の途中に介入できる「Human-in-the-loop」の設計が組み込まれており、実験的なエージェント設計や、人間の判断を挟みたい業務に向いています。

from autogen import AssistantAgent, UserProxyAgent

config_list = [{"model": "gpt-4o", "api_key": "YOUR_KEY"}]

assistant = AssistantAgent(
    name="assistant",
    llm_config={"config_list": config_list}
)

user_proxy = UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=5,
    code_execution_config={"work_dir": "coding", "use_docker": False}
)

user_proxy.initiate_chat(
    assistant,
    message="Pythonで売上データのCSVを読み込み、月次集計してグラフに出力してください"
)

AutoGenは会話駆動の柔軟さが強みですが、裏を返せば「どこで処理が終わるかコードから読みにくい」欠点も抱えています。本番運用には追加の制御層が必要です。

その他のフレームワーク

3大フレームワークの他にも有力な選択肢があります。Semantic Kernelは.NET/Java/Pythonに対応し、エンタープライズ環境で採用が広がっています。Agnoは軽量・高速を謳うPythonフレームワークで、ミニマルな構成が魅力です。MastraはTypeScript製で、フロントエンドエンジニアに馴染みやすい開発体験を提供します。

名前提供元言語マルチエージェント状態管理ツール連携学習コスト成熟度特徴
LangGraphLangChainPython/JS対応強力豊富グラフベース
CrewAICrewAI Inc.Python特化ロールベース
AutoGenMicrosoftPython対応会話駆動
Semantic KernelMicrosoftC#/Py/Java対応豊富エンタープライズ
AgnoAgno Inc.Python対応軽量高速・軽量
MastraMastraTypeScript対応TS特化
ユースケース推奨FW理由
複雑な分岐・ループ・本番運用LangGraph状態管理と観測可能性が強力
マルチエージェントの素早い試作CrewAIロール記述だけで動く直感性
Human-in-the-loopの実験AutoGen会話駆動設計が柔軟
エンタープライズ.NET環境Semantic KernelMSエコシステムと親和性
軽量・低レイテンシ要件Agno最小限のオーバーヘッド
フロントエンド統合MastraTypeScriptネイティブ

フレームワーク選定の判断基準

選定は、ユースケース・チームスキル・運用要件の3軸で決まります。下記はその判断フローです。

Q1. 主要言語は何ですか?
├── TypeScript → Mastra
├── C#/.NET    → Semantic Kernel
└── Python     → Q2へ

Q2. マルチエージェントが必須ですか?
├── Yes → Q3へ
└── No  → LangGraph(単一エージェントでも高機能)

Q3. 複雑な状態管理や本番運用の観測性が必要ですか?
├── Yes → LangGraph
└── No  → Q4へ

Q4. ロール記述で素早くプロトタイプしたいですか?
├── Yes → CrewAI
└── No  → Q5へ

Q5. 会話駆動やHuman-in-the-loopが主目的ですか?
├── Yes → AutoGen
└── No  → Agno(軽量シンプル構成)

最初から完璧を目指す必要はありません。多くの実プロジェクトは、プロトタイプをCrewAIで作り、本番移行時にLangGraphへ載せ替える、という二段構えで進んでいます。

まとめ

  • LangGraphは複雑なワークフローと本番運用に強く、選定の第一候補になりやすい
  • CrewAIはロール記述で直感的に書けるため、プロトタイプ段階で圧倒的な生産性を発揮する
  • AutoGenは会話駆動とHuman-in-the-loopの柔軟性が魅力だが、本番制御には追加工夫が必要
  • フレームワーク選定はチームの言語スキルと運用要件を軸に、プロトタイプと本番で分けて考えるのが現実的

よくある質問

AIエージェント開発に最適なフレームワークは

用途により異なります。柔軟なワークフローが必要ならLangGraph、マルチエージェントを直感的に構築したいならCrewAI、会話ベースの協調が必要ならAutoGenが適しています。

LangGraphとLangChainの違いは

LangChainはLLMアプリケーション全般の開発フレームワーク、LangGraphはLangChainの上に構築されたエージェント特化のフレームワークです。LangGraphはグラフベースの状態管理により、複雑なエージェントワークフローを定義できます。

フレームワークなしでAIエージェントを構築できますか

技術的には可能ですが、状態管理、ツール連携、エラーハンドリング、ループ検出など多くの機能を自前実装する必要があります。プロトタイプではフレームワークなしでも良いですが、本番システムではフレームワークの利用を推奨します。