CrewAI(クルーAI)入門として、役割を持った複数のAIエージェントを「クルー(船の乗組員)」のように協調させるPython製マルチエージェントフレームワークの基本を解説します。
CrewAIは、調査担当・執筆担当・レビュー担当といった役割を自然言語で定義し、それぞれにツールと目標を与えてチームとしてタスクを完了させる仕組みです。GitHubで53,000star超、月間検索数も急上昇しており、2026年のマルチエージェント入門の定番になりつつあります。
本記事は、Crew/Agent/Task/Processの4概念・最小コード・主要機能・LangGraphやAutoGenとの違い・本番運用・落とし穴までを一枚で俯瞰できる入門ガイドとしてまとめます。
AIエージェントそのものの仕組み(計画・記憶・ツール実行)や種類の全体像は AIエージェントとは?仕組み・種類・代表的OSSフレームワークを初心者向けに解説【2026年版】 をご覧ください。本記事はその中の「マルチエージェント協調」を担うCrewAIに絞った各論です。
- ・CrewAIとは、役割(role)を持つエージェントを「クルー」として協調させるPython製マルチエージェントフレームワーク。
- ・中核はAgent(役割)・Task(仕事)・Crew(チーム)・Process(進め方)の4概念。
- ・LangChainから独立した軽量実装で、`pip install crewai`だけで動く。
- ・進め方はSequential(順次)とHierarchical(マネージャーが委譲)の2種類。
- ・LangGraphが「厳密な制御」、AutoGenが「会話ベース」なのに対し、CrewAIは「宣言的な役割分担」が強み。
30秒で理解するCrewAI入門
細部に入る前に、まず最短で要点を押さえます。
・CrewAI=役割を持ったエージェントを「クルー(乗組員)」として協調させるマルチエージェントフレームワーク
・4つの概念だけ覚えればよい:Agent(誰が)・Task(何を)・Crew(チーム)・Process(どう進めるか)
・LangChain非依存の軽量Python実装。pip install crewaiで即スタート
・進め方はSequential(定義順に実行)とHierarchical(マネージャーが動的委譲)の2モード
・本番向けにはイベント駆動の「Flows」、運用基盤として有償の「CrewAI Enterprise」がある
この5点が頭に入っていれば、以降はそれを掘り下げる内容です。順に見ていきましょう。
CrewAIとは何か:Crew/Agent/Task/Processの4概念
CrewAIの定義はシンプルです。「役割を与えた複数のLLMエージェントを1つのチーム(Crew)として編成し、分担してタスクを完了させる」フレームワークです。
名前のとおり、Crew(乗組員)という比喩が設計の中心にあります。船に船長・航海士・機関士がいるように、AIエージェントにも調査役・執筆役・校正役を割り当て、それぞれが自分の専門範囲で働きます。
公式は CrewAI を「LangChainや他のエージェントフレームワークから完全に独立した、ゼロから作られた軽量で高速なPythonフレームワーク」と説明しています。依存が軽く、起動が速いのが実装上の特徴です。
4つの基本概念
CrewAIは、たった4つの概念を理解すれば全体像が掴めます。
・Agent(エージェント):役割(role)・目標(goal)・背景設定(backstory)を持つ自律ユニット。ツールを装備でき、自分の担当タスクを判断しながら実行する
・Task(タスク):エージェントに渡す具体的な仕事。説明(description)と期待する成果物(expected_output)、担当エージェントを指定する
・Crew(クルー):エージェントとタスクをまとめたチーム。kickoff()で実行を開始する
・Process(プロセス):クルーがタスクをどの順序・体制で進めるか。SequentialとHierarchicalの2種類がある
この4つの関係は「Agentが人、Taskが仕事、Crewがチーム、Processが進め方のルール」と覚えると直感的です。
Crews と Flows
CrewAIにはもう一段上のレイヤーとして「Flows」があります。CrewとFlowsは目的が異なります。
・Crews:自律的に協調するエージェントのチーム。役割ベースで柔軟に判断する。”任せる”側
・Flows:イベント駆動の本番向けワークフロー。状態の永続化・条件分岐・実行制御をPythonで厳密に書ける。”制御する”側
実務では、Flowsで全体の流れ(入力→Crew実行→保存)を管理し、判断が要る部分だけCrewに委譲する組み合わせが定石です。入門段階ではまずCrewだけで十分動きます。
同じ「制御フローを書く」系のフレームワークである LangGraph入門ガイド も合わせて読むと、CrewAIの「宣言的な役割分担」とLangGraphの「グラフで厳密に状態遷移を書く」設計思想の違いがはっきりします。Microsoftの統合エージェント基盤を知りたい場合は Microsoft IQ(Work/Web/Foundry/Fabric)4層解説 も参考になります。
CrewAIのアーキテクチャ
CrewAIの動作を1枚の図で押さえます。ユーザーが目標を渡すと、Crewが各Agentに割り当てられたTaskをProcessのルールに従って実行し、成果物を返します。
kickoff inputs] --> C[Crew
チームの司令塔] C -->|Processに従い割当| P{Process} P -->|sequential| S[定義順に1つずつ実行] P -->|hierarchical| H[Manager Agentが動的委譲] S --> A1[Agent 1
role / goal / tools] H --> A1 H --> A2[Agent 2
role / goal / tools] A1 --> T1[Task 1
description / expected_output] A2 --> T2[Task 2] T1 -->|出力を文脈に| T2 A1 -.参照.-> K[Knowledge
外部資料] A1 -.記憶.-> M[Memory
短期/長期/エンティティ] T2 --> R[最終成果物
CrewOutput]
図のポイントは3つです。
・Crewが入力を受け取り、Processの種類に応じてタスクをエージェントに割り当てる
・Sequentialなら定義順、Hierarchicalならマネージャーエージェントが動的に委譲先を決める
・各AgentはTaskをこなしながらToolsで外部に働きかけ、KnowledgeとMemoryを参照する
このループを通じて、単一LLMでは難しい「分業による複雑タスクの完遂」を実現するのがCrewAIの本質です。
CrewAIの最小コード例
ここからは実際にCrewAIを動かします。インストールから2エージェントの協調までを、コードブロック3つで示します。
1. インストール
CrewAIはpipまたは高速パッケージマネージャのuvで入ります。ツール群(検索やファイル読み込み等)を一緒に入れる場合は[tools]を付けます。
# 基本インストール
pip install crewai
# ツール群も含める場合(推奨)
pip install 'crewai[tools]'
# uvを使う場合(高速)
uv pip install 'crewai[tools]'
LLMのAPIキーは環境変数で渡します。OpenAIを使う例ではexport OPENAI_API_KEY=sk-...を設定しておきます。
2. エージェントとタスクを定義する
次に、調査担当のエージェントと、その仕事(タスク)を定義します。Agentは役割・目標・背景を自然言語で与えるだけです。
from crewai import Agent, Task, Crew, Process
# 調査担当エージェント
researcher = Agent(
role="シニアAIリサーチャー",
goal="{topic} に関する最新動向を正確に調べる",
backstory="あなたは技術トレンドの調査に長けた専門家です。",
verbose=True,
)
# 執筆担当エージェント
writer = Agent(
role="技術ライター",
goal="調査結果を初心者向けの日本語記事にまとめる",
backstory="あなたは難しい技術を平易に書くのが得意なライターです。",
verbose=True,
)
{topic}のような変数は、後述のkickoff(inputs=...)で実行時に埋め込まれます。テンプレート化しておくと、同じクルーを別テーマで再利用できます。
3. タスクを割り当ててクルーを実行する
最後に、各エージェントにタスクを割り当て、Crewとしてkickoff()で起動します。
# タスク定義(担当エージェントを指定)
research_task = Task(
description="{topic} について主要な動向を3点調べる",
expected_output="箇条書き3点のリサーチメモ",
agent=researcher,
)
write_task = Task(
description="リサーチメモをもとに初心者向け記事を書く",
expected_output="見出し付きのMarkdown記事",
agent=writer,
)
# クルーを編成して実行
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
verbose=True,
)
result = crew.kickoff(inputs={"topic": "CrewAI"})
print(result)
この十数行で、「リサーチャーが調べ、その出力を受けてライターが記事を書く」分業が動きます。Sequentialなのでresearch_taskの出力が自動的にwrite_taskの文脈に渡るのがポイントです。
CrewAIの主要機能
入門の最小例を超えて、実務で使う4つの主要機能を押さえます。Process・Tools・Memory・Knowledgeです。
Sequential / Hierarchical Process
Processはクルーの進め方を決めます。2種類あります。
・Process.sequential:タスクを定義した順に1つずつ実行し、前のタスクの出力を次の文脈に渡す。手順が固定の分業に最適
・Process.hierarchical:マネージャーエージェントがどのエージェントに何を任せるかを動的に判断して委譲する。manager_llmまたはmanager_agentの指定が必須
Hierarchicalの例は次のように書きます。マネージャー役のLLMを指定するだけで、タスクの割り当てが自動化されます。
crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, write_task, review_task],
process=Process.hierarchical,
manager_llm="gpt-4o", # マネージャー役のLLM
)
エージェント数が増え、割り当てを動的に最適化したいときはHierarchicalが効きますが、その分トークン消費と非決定性が増えます。最初はSequentialから始めるのが無難です。
Tools(ツール)
エージェントに「手足」を与えるのがツールです。tools=[...]でAgentに装備させます。crewai_toolsパッケージにWeb検索・ファイル読み込み・コード実行など多数が用意されています。
from crewai_tools import SerperDevTool
search_tool = SerperDevTool() # Web検索(要APIキー)
researcher = Agent(
role="シニアAIリサーチャー",
goal="最新情報をWebから集める",
backstory="あなたは検索のプロです。",
tools=[search_tool], # ツールを装備
)
独自関数を@toolデコレータでツール化することもでき、社内APIやDBへの接続も自由に追加できます。
Memory(記憶)
Memoryを有効にすると、エージェントは過去のタスク結果や会話を覚えて次の判断に活かせます。最も簡単な有効化はmemory=Trueです。
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
memory=True, # 記憶を有効化
)
CrewAIの記憶は、短期記憶(直近の文脈)・長期記憶(永続的な知見)・エンティティ記憶(登場人物や対象の追跡)を扱います。新しいバージョンではこれらを単一のMemory APIに統合し、remember()/recall()で保存・検索する設計に整理されています。
Knowledge(知識)
Knowledgeは、エージェントが作業中に参照する「外部の参考資料」です。Memoryが「過去の経験」なのに対し、Knowledgeは「事前に与える専門資料」という違いがあります。
from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource
policy = StringKnowledgeSource(
content="社内ルール:回答は必ず日本語。専門用語には注釈を付ける。"
)
crew = Crew(
agents=[writer],
tasks=[write_task],
knowledge_sources=[policy], # クルー全体で共有
)
文字列のほか、PDFKnowledgeSource・CSVKnowledgeSource・JSONKnowledgeSource・TextFileKnowledgeSourceなど多様なソースに対応します。Crewレベルで渡すと全エージェントが、Agentレベルで渡すとその特定エージェントだけが参照します。
実践Tips
CrewAIを実務で安定して回すための要点をまとめます。
・まずSequentialで動かす:いきなりHierarchicalにせず、定義順の分業で挙動を確かめてから複雑化する
・roleとgoalを具体的に書く:「優秀なライター」より「IT初心者向けに専門用語を噛み砕く技術ライター」のほうが出力が安定する
・expected_outputを明示する:成果物の形式(Markdown・箇条書き3点・JSON等)を書くと、後続タスクが扱いやすくなる
・verbose=Trueでログを見る:どのエージェントがどう判断したかを追えると、デバッグが一気に楽になる
・トークン上限と実行回数を制御する:自律ループは想定の数倍トークンを消費しうる。max_iterや予算アラートを最初から入れる
・ローカルLLMは設計確定後に:まずクラウドの高性能モデルで設計を固め、コスト要件に応じてOllama等へ置き換える
特に「roleとgoalの具体性」は出力品質を最も左右します。エージェント定義は自然言語のプロンプトそのものだと意識して書くのがコツです。
CrewAI と LangGraph / AutoGen / Mastra / OpenAI Agents SDK の比較
主要なエージェントフレームワークとCrewAIを比較します。どれも「マルチエージェント」を謳いますが、設計思想と得意分野が異なります。
| フレームワーク | 提供元 | 言語 | GitHub Stars | 設計思想 | 得意分野 |
|---|---|---|---|---|---|
| CrewAI | CrewAI Inc. | Python | 約53K | 役割ベースの宣言的な協調(Crew) | 調査→執筆→レビュー等の分業を最短コードで |
| LangGraph | LangChain | Python | 約29K | グラフで状態遷移を厳密に定義 | 分岐・ループ・中断再開を細かく制御する本番フロー |
| AutoGen | Microsoft | Python / .NET | 約50K | 会話ベースのマルチエージェント(GroupChat) | エージェント同士の対話で解を探索(※保守モード移行) |
| Mastra | Mastra | TypeScript | 約23K | TSネイティブのワークフロー | TS/Next.jsアプリにエージェントを組み込む |
| OpenAI Agents SDK | OpenAI | Python / TS | 約19K | handoffs(委譲)とguardrails(検証) | OpenAIモデル中心の軽量な委譲型エージェント |
ざっくり選び分けると次の通りです。
・役割分担を宣言的に最短で組みたい → CrewAI
・制御フローを厳密に書きたい → LangGraph
・エージェント同士の会話で解かせたい → AutoGen(新規はMicrosoft Agent Frameworkも検討)
・TypeScript/フロント統合 → Mastra
・OpenAIモデル中心で軽量に → OpenAI Agents SDK
AutoGenは2026年初頭にMicrosoftが保守モードへ移行し、新規プロジェクトには後継のMicrosoft Agent Frameworkを推奨しています。AutoGen自体はバグ修正とコミュニティ貢献で継続中ですが、これから学ぶならその位置づけを踏まえて選択してください。
なお各フレームワークのStar数・ライセンス・実コードの比較は別記事で詳しく扱っています。本記事はCrewAIを軸にした概観に絞っています。
CrewAIの本番運用
検証から本番に進むときに押さえるべき3点です。
CrewAI Enterprise(AMP)
OSS版(pip install crewai)はMITライセンスで無料ですが、チームでの運用にはデプロイ・監視・スケーリングをマネージドで提供する有償のCrewAI Enterprise(Agent Management Platform)があります。クルーをAPIとしてデプロイし、実行履歴やバージョンを一元管理できます。
可観測性(Observability)
エージェントは非決定論的に動くため、「なぜその判断をしたか」を追える可観測性が本番では必須です。verbose=Trueの実行ログに加え、外部のトレーシングツール(AgentOps等)と連携して、各タスクのトークン消費・実行時間・ツール呼び出しを可視化するのが定石です。
料金の考え方
CrewAIの本番コストは大きく2系統です。
・LLM API課金:OpenAIやAnthropic等の従量課金。自律ループは消費が読みにくいので、上限とアラートを必ず張る
・CrewAI Enterprise:マネージド運用を使う場合の有償プラン。OSS版を自前インフラで動かす限りCrewAIへの課金は発生しない
個人開発や検証はOSS版+API従量で十分です。チーム運用や可観測性が必要になった段階でEnterpriseを検討する流れが現実的です。
CrewAIでよくある落とし穴
入門者がつまずきやすいポイントを先回りで挙げます。
・roleやgoalが曖昧で出力がブレる:抽象的な役割定義は出力品質を直接下げる。具体的なペルソナとして書く
・いきなりHierarchicalにして制御不能:マネージャー委譲は便利だが非決定性が増す。まずSequentialで挙動を固める
・トークン消費の暴走:自律ループや多エージェントは想定の数倍消費しうる。max_iter・予算アラート・キャッシュを最初から組み込む
・MemoryとKnowledgeの混同:Memoryは「過去の経験」、Knowledgeは「事前に渡す参考資料」。役割が違うので使い分ける
・外部入力を無条件に信頼:Web検索やユーザー入力をそのままプロンプトに流すとプロンプトインジェクションの的になる。検証を挟む
・バージョン差での書き方の食い違い:CrewAIは更新が速く、Memory周りなどAPIが変わる。pip show crewaiでバージョンを確認し、そのバージョンの公式ドキュメントを参照する
特に最後の「バージョン差」は実害が出やすい点です。記事やチュートリアルのコードが動かないときは、まず自分の環境のCrewAIバージョンを疑うと早く解決します。
CrewAIは、役割を持つエージェントを「クルー」として協調させるマルチエージェントフレームワークです。覚えるべきはAgent・Task・Crew・Processの4概念だけで、`pip install crewai`から数十行で分業タスクが動きます。制御を厳密に書きたいならLangGraph、会話で解かせたいならAutoGen、TS統合ならMastra、という棲み分けを押さえつつ、まずはSequentialな最小クルーで「分業が動く」感覚を掴むのが最短の入門ルートです。
FAQ:CrewAI入門のよくある質問
Q. CrewAIとLangGraphはどちらを選ぶべきですか?
CrewAIは役割ベースの分業を宣言的に最短で組めます。LangGraphは状態遷移をグラフで厳密に定義し、分岐・ループ・中断再開を細かく制御したい本番ワークフロー向きです。動かして掴むならCrewAI、制御を書くならLangGraph。両者は排他ではなく組み合わせも可能です。
Q. CrewAIはLangChainに依存していますか?
していません。公式に「LangChainから完全に独立したゼロから作られた軽量Pythonフレームワーク」と説明されています。LLM接続にはlitellmを使い、OpenAI・Anthropic・Google・ローカルLLMを同じ書き方で切り替えられます。
Q. プログラミング初心者でも使えますか?
Pythonの基礎(クラス・関数・pip)があれば使えます。エージェントをrole/goal/backstoryという自然言語で定義するため、複雑なグラフを書く必要がありません。researcherとwriterの2エージェントのsequentialな例から始めるのがおすすめです。
Q. CrewとFlowsの違いは何ですか?
Crewは自律協調するエージェントのチーム(”任せる”)、Flowsはイベント駆動の本番ワークフロー(”制御する”)です。実務ではFlowsで全体を管理し、判断が要る部分だけCrewに委譲します。
Q. Sequential / Hierarchical Processの使い分けは?
Sequentialは定義順に実行し前の出力を次に渡す素直な方式、Hierarchicalはマネージャーエージェントが動的に委譲する方式でmanager_llmが必須です。まずSequential、複雑化したらHierarchicalが基本です。
Q. CrewAIの料金はかかりますか?
OSS本体はMITライセンスで無料、コストはLLM APIの従量課金が中心です。マネージド運用のCrewAI Enterprise(AMP)は有償。個人・検証はOSS版+API従量で十分です。
Q. ローカルLLMは使えますか?
使えます。内部のlitellm経由でLLM(model="ollama/llama3.1")のように指定すればAPIコストゼロで動きます。ただし小型モデルはツール呼び出し精度が落ちるため、設計はクラウドモデルで固めてから置き換えるのが現実的です。
参照ソース
・CrewAI 公式サイト — フレームワークの概要・Enterprise情報
・CrewAI 公式ドキュメント(Introduction / Concepts) — Crew/Agent/Task/Process・Memory・Knowledgeの一次情報
・crewAIInc/crewAI(GitHubリポジトリ) — ソースコード・README・リリースノート
・Microsoft AutoGen(GitHub) — 比較対象。会話ベースのマルチエージェント実装
・OpenAI Agents SDK(GitHub) — 比較対象。handoffs/guardrails設計