Tracks
AIエージェントは、タスクを実行し世界と相互作用できるアシスタントです。固定のルールに従う従来型のシステムと異なり、新しい状況を学習して適応できます。環境を知覚し、行動を選択できるソフトウェアだと考えてください。
では、世間でよく耳にする 言語モデル などの他のAIと、AIエージェントは何が違うのでしょうか?
本記事ではこの疑問に答え、マルチエージェントAIシステムの開発を簡素化する、無料かつオープンソースのPythonフレームワーク CrewAI を紹介します。エージェントと言語モデルの違いを整理し、AIアプリケーションの構築 においてエージェントフレームワークが重要である理由を述べ、CrewAIがどのようにエージェント同士の協調を実現し優れた成果につなげるかを示します。
AIエージェントとLLMの違い
エージェントと大規模言語モデル(LLM)の違いについて、よくある誤解を解いておきましょう。どちらも人工知能の一種ですが、能力は明確に異なります。

例えば ChatGPT や Gemini のような言語モデルは、言語の扱いに非常に長けています。膨大なテキストやコードで訓練されており、人間のコミュニケーションに近い形で言語を理解・生成できます。
LLMはAI界の巧みなストーリーテラーであり、翻訳、要約、創作的な物語、詩など幅広いコンテンツを生み出します。対象は通常、言語関連のタスク に限定されます。
一方でエージェントの主眼は行動 にあります。環境を移動し、対象と相互作用し、知覚に基づいて意思決定することができます。
要するに、言語モデルは「頭脳」、エージェントは「手足」です。両者が合わさることで強力な組み合わせになります。
では、エージェントがAIアプリケーションで重要な役割を担う中、複数のエージェントが連携する際の複雑さはどのように管理すればよいでしょうか。そこで登場するのがエージェントフレームワークです。
エージェントフレームワークが必要な理由
エージェントフレームワークの必要性は、AIアプリケーションの複雑化、特に共通の目標達成に向けて複数エージェントが協調するケースの増加から生じます。なぜ不可欠なのかを見ていきましょう。
オーケストレーションと調整
AIシステムの規模が拡大すると、多様な能力を持つ多数のエージェントが組み込まれることが一般的です。これらの相互作用を管理し、調和して機能させるのはますます困難になります。
エージェントフレームワークは、エージェント活動のオーケストレーション、役割と責任の定義、コミュニケーションの改善を可能にする構造化された環境を提供します。
マルチエージェントシステムでは、最適なエージェントへのタスク割り当てや共有リソースの効率的な管理が重要です。フレームワークは、動的なタスク配分、リソース交渉、競合解消の仕組みを提供します。
モジュール性と再利用性
エージェントフレームワークは、エージェントを独立したコンポーネントとして設計・実装するモジュール型の開発を促進します。これによりコードの整理が進み、さまざまなプロジェクト間でエージェントモジュールを再利用でき、複雑なシステムの開発や保守が容易になります。このコンポーネントベースの構造により、開発者は大規模システムに影響を与えずに個々のエージェントに集中できます。
さらに、多くのフレームワークはロールベースのアーキテクチャを採用しており、開発者はエージェントに特定の役割を割り当てて能力や権限を定義できます。この設計により、エージェントの追加・削除・変更を全体構造へ最小限の影響で行える、整理された管理しやすいシステムが実現します。これにより、大規模な再設計なしに新たな要件へ柔軟に適応できます。
適応性と学習
実世界の環境は動的で予測不能、かつ継続的に変化します。フレームワークは、周囲の変化を知覚し行動を適応させる能力をエージェントに与えます。これにより、複雑で変化の激しい状況でも効果的に機能し、実世界の課題に強くなります。
さらに、多くのフレームワークは学習メカニズムを組み込み、エージェントが時間とともに性能を向上できるようにします。フィードバックや経験から学ぶことで、意思決定を継続的に最適化し、新たな課題へ適応できます。この継続的改善は、長期的なシステム効率と成功に貢献します。
さて、エージェントフレームワークといえば、AIコミュニティで注目を集めるCrewAIを紹介しましょう。
CrewAIとは?
CrewAIは、次の2つの補完的な構成要素を中心に設計されたオープンソースのPythonフレームワークです。
- Crews — 役割ベースの意思決定を通じて自律的に協調するAIエージェントのチーム — と
- Flows — 自動化を制御できる、本番対応のイベント駆動ワークフロー。
これらを組み合わせることで、シンプルなリサーチパイプラインから、完全自律のマルチエージェントシステムまで構築できます。

このフレームワークには、ウェブ検索エンジンや言語モデルなど多様なツールが含まれ、エージェントが外界とやり取りし、情報を収集し、目的達成のために行動できるようにします。
CrewAIの設計とスケーラビリティは、基礎的から高度なマルチエージェントアプリケーションまでの開発に最適で、AIシステム内で課題解決や意思決定を協働的に進める方法を促します。
ここからは、CrewAIがマルチエージェント構築に強力な理由となる主な機能を見ていきます。
- エージェントのオーケストレーション: CrewAIは各エージェントが自分の役割を正確に把握できるようにします。行動の定義と調整のためのツールを提供し、全体が足並みを揃えることを可能にします。
- ロールベースのアーキテクチャ: 楽器を奏者に割り当てるように、エージェントに役割を割り当てて能力と権限を定義できます。状況が複雑でも、モジュール化され整然としたシステムを実現します。
- 柔軟なコミュニケーション: CrewAIは多様な通信チャネルをサポートし、エージェント間の情報交換を円滑にします。プライベートチャット、グループディスカッション、拡声器が一体になったようなものだと考えてください。
- ツール統合: CrewAIは各種ツールを介してエージェントが世界と相互作用できるようにします。ウェブ検索、言語理解、データ分析、カスタムタスクの実行を可能にします。
- スケーラビリティ: CrewAIはスケールを意識して設計されており、システムが拡大しても応答性と効率性を維持します。
では、CrewAIはどのような利点をもたらすのでしょうか。見ていきましょう。
CrewAIのFlowsとCrews
CrewAIは、単純なエージェントタスクから複雑な本番パイプラインまでを扱える、2つの補完的な構成要素を中心に作られています。
Crews は自律的に協調するAIエージェントのチームです。各エージェントには役割・目標・背景設定があり、互いにタスクを分担・委任し、すべての手順をスクリプト化しなくても意思決定して連携します。何かを「どう進めるか」をエージェントに考えさせたいときに使います。
Flows はCrewsの上位にあるオーケストレーション層です。複数のCrewを連結したり、ステップ間の条件分岐を追加したり、パイプライン全体の状態を管理したり、イベントに基づいてアクションをトリガーできます。Crewが自律性を与える一方で、Flowは制御を与えます。
| Crews | Flows | |
|---|---|---|
| 最適な用途 | 自律的で協調的なエージェントタスク | 制御可能な実行を伴う多段パイプライン |
| 制御レベル | エージェント主導 | 開発者が定義 |
| 使用タイミング | エージェントに「どう進めるか」を考えさせたいとき | 「何を・いつ・条件次第で」を制御する必要があるとき |
多くの初心者は、まずCrewsから始めるとよいでしょう。本番級の信頼性が必要になってはじめてFlowsを使います。スケールさせる際に使うのがFlowsです。
CrewAIを使うメリット
CrewAIは、複数のAIエージェントが知識を共有し、行動を調整しながら共通の目標に向かって協働することを可能にします。
タスク配分やリソース管理を自動化することで、エージェントは最小限のオーバーヘッドで自分の役割に集中できます。
また、状況や目標の変化に応じてエージェントの行動を調整できるよう、適応性もサポートします。
さらに、マルチエージェントシステムの作成と管理を容易にするユーザーフレンドリーな基盤を提供します。

CrewAIのもう一つの強みは、幅広いツールとの統合です。これにより、エージェントは外界とやり取りし、情報を収集する能力を拡張できます。
CrewAIは、ウェブ検索エンジン、言語モデル、データ分析ツール、さらにはカスタム機能にも対応します。これにより、ウェブからの情報取得や複雑なデータ分析など、コア能力を超えたタスクも実行できます。
ハンズオン:CrewAIでウェブ検索ツールを作る
それでは、CrewAIのツールを使ってウェブサイトからコンテンツをスクレイピングし、その後でRAGを実行するワークフローを構築してみましょう。
まず、ツールを動かすコードを書く必要があります。始める前に、pipで crewai-tools と crewai パッケージをインストールします。
# Install CrewAI with tools support
pip install 'crewai[tools]'
# Or using uv (recommended by CrewAI for dependency management)
uv add 'crewai[tools]'
パッケージのインストールが完了したら、次の手順に従ってください。この例では、ウェブサイトをスクレイピングする ScrapeWebsiteTool、ファイルを書き出す FileWriterTool、RAGのためにコンテキストを検索する TXTSearchTool の3つを使います。さっそく始めましょう。
ステップ1:ウェブサイトをスクレイピングする
まず必要なライブラリをインポートし、ScrapeWebsiteTool を初期化します。このツールはウェブサイトからコンテンツを抽出します。ここではWikipediaの「Artificial Intelligence」ページを対象に設定しています。
from crewai_tools import ScrapeWebsiteTool, FileWriterTool, TXTSearchTool
import requests
# Initialize the tool, potentially passing the session
tool = ScrapeWebsiteTool(website_url='https://en.wikipedia.org/wiki/Artificial_intelligence')
# Extract the text
text = tool.run()
print(text)
ステップ2:抽出したテキストをファイルに書き込む
次に、FileWriterTool を使って抽出したテキストを ai.txt という名前のファイルに保存します。
# Initialize the tool
file_writer_tool = FileWriterTool()
# Write content to a file in a specified directory
result = file_writer_tool._run(filename='ai.txt', content = text, directory = '', overwrite=True)
print(result)
ステップ3:テキスト検索ツールを設定する
先ほど保存した ai.txt の内容を検索するための別のツールを設定します。併せて、OpenAI APIキーの環境変数も設定します。
import os
from crewai_tools import TXTSearchTool
os.environ['OPENAI_API_KEY'] = 'API-KEY'
# Initialize the tool with a specific text file, so the agent can search within the given text file's content
tool = TXTSearchTool(txt='ai.txt')
ステップ4:タスク用のエージェントを作成して実行する
教育者の役割を持つデータアナリストのエージェントを作成します。このエージェントのタスクは、ファイル内を検索したテキストに基づいて「自然言語処理とは何か?」に答えることです。
from crewai import Agent, Task, Crew
context = tool.run('What is natural language processing?')
data_analyst = Agent(
role='Educator',
goal=f'Based on the context provided, answer the question - What is Natural Language Processing? Context - {context}',
backstory='You are a data expert',
verbose=True,
allow_delegation=False,
tools=[tool]
)
test_task = Task(
description="Using the provided context, answer the question: What is Natural Language Processing?",
tools=[tool],
agent=data_analyst,
expected_output='A clear, 2-3 paragraph explanation of Natural Language Processing, covering its definition, key techniques, and common applications.'
)
crew = Crew(
agents=[data_analyst],
tasks=[test_task]
)
output = crew.kickoff()

CrewAIはLangGraphやAutoGenとどう違うか
CrewAIの主な代替はLangGraphとMicrosoftのAutoGenです。CrewAIの最大の利点は、ロールベースのエージェントというパラダイムです。すなわち、エージェントに役割・目標・背景を定義することで、人間のチームが協働する様子に近い振る舞いを得られます。
LangGraphはグラフベースの手法により実行フローをより厳密に制御できますが、有向グラフや状態管理の理解が必要です。マルチエージェントに不慣れな多くの開発者にとっては、CrewAIの方が動くプロトタイプに到達するまでが速いでしょう。
まとめ
CrewAIはマルチエージェントシステムを実践的に管理できるプラットフォームです。スクレイピングからタスクの委任まで、エージェント同士の協調を支え、適応と改善を促します。
ツール統合と整理された構造により、開発者はエージェント間のやり取りを管理し、タスクを配分し、最適なパフォーマンスを確保しやすくなります。