オープンソースAIエージェントフレームワーク比較:LangChain vs AutoGen vs CrewAI で自律AIを構築する
オープンソースラボ編集部 ・ 2026年6月13日
オープンソースAIエージェントフレームワーク比較:LangChain vs AutoGen vs CrewAI で自律AIを構築する
「AIが自分でタスクを計画・実行・修正する」AIエージェントの時代が来ています。LangChain・AutoGen・CrewAIはオープンソースでAIエージェントを構築するためのフレームワークです。単純なチャットボットを超えた自律的なAIシステムを構築しましょう。
AIエージェントが従来のLLMアプリと違う点
- ツール使用: ウェブ検索・コード実行・ファイル操作を自律的に実行
- 計画立案: タスクを複数のステップに自動分解
- メモリ: 過去の会話・実行結果を記憶して参照
- マルチエージェント: 複数のAIが協力して複雑なタスクを解決
主要ツールの概要
LangChain
最も広く使われているLLMアプリケーションフレームワークです。プロンプト管理・ツール連携・RAG・エージェント・チェーンをコンポーネントとして組み合わせて使えます。
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools import DuckDuckGoSearchRun, WikipediaQueryRun
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o", temperature=0)
tools = [
DuckDuckGoSearchRun(),
WikipediaQueryRun(),
]
prompt = ChatPromptTemplate.from_messages([
("system", "あなたは調査エージェントです。ツールを使って正確な情報を提供してください。"),
("placeholder", "{chat_history}"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({
"input": "Ollamaの最新バージョンとその主な新機能を調べてください",
"chat_history": [],
})
print(result["output"])
AutoGen
MicrosoftResearchが開発したマルチエージェントフレームワークです。複数のAIエージェントが会話形式で協力してタスクを解決します。
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
llm_config = {"model": "gpt-4o", "api_key": "your-key"}
# 役割を持つエージェントを定義
planner = AssistantAgent(
name="Planner",
system_message="あなたはタスクを計画するエージェントです。",
llm_config=llm_config,
)
coder = AssistantAgent(
name="Coder",
system_message="あなたはPythonコードを書くエージェントです。",
llm_config=llm_config,
)
reviewer = AssistantAgent(
name="Reviewer",
system_message="あなたはコードをレビューするエージェントです。",
llm_config=llm_config,
)
user_proxy = UserProxyAgent(
name="User",
human_input_mode="NEVER",
code_execution_config={"use_docker": False},
)
# グループチャットでエージェントを連携
groupchat = GroupChat(
agents=[user_proxy, planner, coder, reviewer],
messages=[],
max_round=10,
)
manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
user_proxy.initiate_chat(
manager,
message="Pythonでフィボナッチ数列を計算する効率的な関数を作成してください",
)
CrewAI
「チーム(Crew)として協力するAIエージェント」の概念を実装したフレームワークです。役割(Role)・目標(Goal)・バックストーリー(Backstory)を定義したエージェントがタスクを分担します。
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, WebsiteSearchTool
search_tool = SerperDevTool()
# エージェントの定義
researcher = Agent(
role="シニアリサーチャー",
goal="最新のAI/OSSトレンドを調査して正確な情報を提供する",
backstory="10年のリサーチ経験を持つ専門家。常に最新情報を追う",
tools=[search_tool],
llm="gpt-4o",
)
writer = Agent(
role="コンテンツライター",
goal="技術的に正確でSEOに最適化された記事を書く",
backstory="技術系ライターとして5年の経験を持つ",
llm="gpt-4o",
)
# タスクの定義
research_task = Task(
description="Ollamaの最新機能と競合ツールとの比較を調査する",
agent=researcher,
expected_output="800字以上の調査レポート",
)
write_task = Task(
description="調査結果を基に日本語記事を書く",
agent=writer,
expected_output="1500字以上のSEO記事",
)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
)
result = crew.kickoff()
機能比較表
| 比較項目 | LangChain | AutoGen | CrewAI |
|---|---|---|---|
| ターゲット | 汎用LLMアプリ | マルチエージェント | チーム型エージェント |
| シングルエージェント | ✅ | ✅ | ✅ |
| マルチエージェント | ⚠️ | ✅ 高機能 | ✅ |
| コード実行 | ✅ | ✅ サンドボックス | ✅ |
| RAG統合 | ✅ | ✅ | ✅ |
| ツール使用 | ✅ 100+ | ✅ | ✅ |
| ストリーミング | ✅ | ✅ | ✅ |
| ヒューマンインザループ | ✅ | ✅ | ✅ |
| ローカルLLM対応 | ✅ | ✅ | ✅ |
| トレーシング(LangSmith) | ✅ | ❌ | ❌ |
| プロダクション実績 | ★★★★★ | ★★★☆☆ | ★★★☆☆ |
| 学習コスト | 中程度 | 高い | 低い |
| ライセンス | MIT | CC BY 4.0 | MIT |
| GitHub Stars | 100k+ | 35k+ | 23k+ |
LangGraph:ステートフルなAIエージェントワークフロー
LangChain v0.2以降のエージェント構築にはLangGraphの使用が推奨されています。LangGraphはDAGではなくサイクルのあるグラフとしてエージェントのフローを定義でき、条件分岐・ループ・人間の承認ステップを自然に表現できます。
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator
class AgentState(TypedDict):
messages: Annotated[list, operator.add]
tool_calls: list
workflow = StateGraph(AgentState)
workflow.add_node("agent", call_model)
workflow.add_node("tools", call_tools)
workflow.add_conditional_edges(
"agent",
should_continue,
{"continue": "tools", "end": END},
)
workflow.add_edge("tools", "agent")
workflow.set_entry_point("agent")
app = workflow.compile()
LLMエージェント・AI自動化ツールはLLMツールカテゴリ(/categories/llm-tools)で一覧でき、ワークフロー自動化ツールはDevOpsカテゴリ(/categories/devops)でも探せます。
FAQ
Q. LangChainとLangGraphの違いは何ですか?
A. LangChainはコンポーネント(LLM・PromptTemplate・OutputParser・Tool)を「チェーン」として繋ぐフレームワークです。LangGraphはLangChainの上に構築されたエージェントオーケストレーション層で、サイクルのあるワークフロー(ループ・条件分岐・ステート管理)をグラフとして表現します。2024年以降の新規プロジェクトではLangGraphを使うことが推奨されています。
Q. AutoGenのマルチエージェントはどんなユースケースに使いますか?
A. 「コードを書く→テストする→バグを修正する→レビューする」のような複数のロールが必要なタスクに最適です。実際のユースケースとして: ソフトウェアチームのシミュレーション(PM・デベロッパー・QA)・研究論文の査読・複雑な数学的証明の生成などがあります。
Q. ローカルLLM(Ollama)でエージェントを動かせますか?
A. はい。LangChain・CrewAIともにOllama経由でローカルLLMをバックエンドとして使えます。ただし複雑なツール使用・マルチエージェント連携には指示追従能力が高いモデル(Llama 3.1 70B以上・Mistral Large等)を推奨します。7Bモデルは簡単なタスクには使えますが、複雑なエージェントタスクでは信頼性が低下します。
Q. AIエージェントの実行コストをコントロールするには?
A. トークン使用量の上限設定(LangChainのmax_tokens)、ループの最大反復回数の設定(AutoGenのmax_consecutive_auto_reply)、安価なモデルをツール呼び出しに使いGPT-4oを最終回答のみに使う「モデル階層化」が効果的です。LangSmithでトークン使用量をモニタリングすることも重要です。
Q. CrewAIはLangChainより使いやすいですか?
A. CrewAIはより宣言的なAPIで、エージェントの「役割・目標・バックストーリー」を定義するだけでチームが動き始めます。LangChainは柔軟性が高い分、学習コストも高いです。プロトタイピングの速度ならCrewAI、本番環境での柔軟なカスタマイズや詳細なトレーシングならLangChainが優れています。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| 汎用LLMアプリ・RAG | LangChain |
| マルチエージェント・コード生成 | AutoGen |
| チーム型タスク自動化 | CrewAI |
| ステートフルエージェント | LangGraph |