このチュートリアルでは、次のことを学びます:
- CrewAIとは何か、他のAIエージェントライブラリとの違いは何か。
- その最大の限界と、RAGワークフローでそれを克服する方法。
- スクレイピングAPIと統合し、AIエージェントにSERPデータを提供することで、より正確なレスポンスを実現する方法。
さあ、飛び込もう!
CrewAIとは何か?
CrewAIはオープンソースのPythonフレームワークで、複雑なタスクを完了するために協働する自律的なAIエージェントをオーケストレーションし、管理するためのものです。Browser Useのような単一エージェントシステムとは異なり、CrewAIはエージェントの集合である「クルー」を中心に構築されています。
クルーでは、各エージェントは、定義された役割、目標、ツールのセットを持っています。詳細には、ウェブスクレイピング、データベース接続などのような特殊なタスクのためのカスタムツールをAIエージェントに装備させることができます。このアプローチは、AIを活用した専門的な問題解決と効果的な意思決定への扉を開きます。
CrewAIのマルチエージェントアーキテクチャは、効率性と拡張性の両方を促進します。Qwenモデルや並列関数呼び出しのサポートなど、新機能が定期的に追加され、急速に進化するエコシステムとなっています。
CrewAIの限界と新鮮なウェブデータで克服する方法
CrewAIは、マルチエージェントシステムを構築するための機能豊富なフレームワークである。しかし、LLMからいくつかの重要な制限を受け継いでいる。LLMは通常、静的なデータセットで事前に訓練されているため、リアルタイムの認識に欠け、最新のニュースやライブのウェブコンテンツにアクセスできない。
その結果、時代遅れの回答や、最悪の場合、幻覚を見ることになりかねない。このような問題は、検索-拡張生成のセットアップにおいて、エージェントに制約がなかったり、最新の信頼できるデータが提供されていない場合に特に起こりやすい。
このような制限に対処するためには、エージェント(ひいてはそのLLM)に信頼できる外部データを提供する必要がある。ウェブは最も包括的で動的なデータソースであり、理想的なターゲットです。従って、一つの効果的なアプローチは、CrewAIエージェントがGoogleや他の検索エンジンのようなプラットフォームでライブ検索クエリを実行できるようにすることです。
これは、エージェントが学習するために関連するウェブページを取得することができるカスタムCrewAIツールを構築することによって行うことができます。しかし、SERP(検索エンジンの結果ページ)をスクレイピングすることは、JavaScriptのレンダリング、CAPTCHAの解決、IPローテーション、常に変化するサイト構造などの必要性から、技術的に困難である。
そのすべてを社内で管理することは、CrewAIのロジックそのものを開発するよりも複雑になる可能性があります。より良い解決策は、Bright DataのSERP APIのような、トップクラスのSERPスクレイピングAPIに頼ることです。これらのサービスは、ウェブからクリーンで構造化されたデータを抽出する重労働を処理します。
このようなAPIをCrewAIのワークフローに統合することで、エージェントは運用のオーバーヘッドなしに新鮮で正確な情報にアクセスできるようになります。エージェントをドメイン固有のスクレイピングAPIに接続することで、同じ戦略を他のドメインに適用することもできます。
CrewAIとSERP APIを統合してリアルタイムでデータにアクセスする方法
このガイドセクションでは、CrewAIで構築したAIエージェントに、Bright Data SERP APIを介してSERPエンジンから直接データを取得する機能を与える方法を説明します。
このRAGの統合により、CrewAIエージェントは、より文脈に沿った最新の結果を、さらに読むための実際のリンクとともに提供することができます。
以下のステップに従って、Bright DataのSERP API統合で強力なスタッフを構築してください!
前提条件
このチュートリアルについて行くには、以下を確認してください:
- Bright Data APIキー。
- LLMに接続するためのAPIキー(このチュートリアルではGeminiを使用します)。
- Python 3.10以上をローカルにインストール。
詳細については、CrewAIのドキュメントのインストールページをご覧ください。最新の前提条件が記載されています。
Bright Data APIキーをまだお持ちでない方も、次のステップで作成方法をご案内しますのでご安心ください。LLM APIキーについては、お持ちでない場合は、Googleの公式ガイドに従ってGemini APIキーを設定することをお勧めします。
ステップ1:CrewAIのインストール
ターミナルで以下のコマンドを実行し、CrewAIをグローバルにインストールすることから始めます:
注:いくつかのパッケージをダウンロードして設定するので、少し時間がかかるかもしれません。
インストール中や使用中に問題が発生した場合は、公式ドキュメントのトラブルシューティングのセクションを参照してください。
インストールされると、crewai
CLIコマンドにアクセスできるようになります。ターミナルで以下を実行して確認してください:
次のような出力が表示されるはずだ:
素晴らしい!これでプロジェクトを初期化するCrewAI CLIの準備ができました。
ステップ2:プロジェクトのセットアップ
以下のコマンドを実行して、serp_agent
という新しい CrewAI プロジェクトを作成します:
セットアップ中に、ご希望のLLMプロバイダーを選択するよう促されます:
今回は、API経由の統合が無料であるGeminiのオプション「3」を選択する。
次に、使用するジェミニのモデルを選択します:
この例では、無料のgemini/gemini-1.5-flash
モデルで十分です。ですから、”1 “を選択すればよいのです。
次に、Gemini APIキーの入力を求められます:
これを貼り付けると、期待通りにいけば、次のような出力が表示されるはずだ:
この手順により、以下のようなプロジェクト構造が生成される:
ここだよ:
main.py
はプロジェクトのメインエントリーポイントです。crew.pyは
クルーのロジックを定義する場所です。config/agents.yamlは
AIエージェントを定義します。config/tasks.yamlは
エージェントが処理するタスクを定義します。tools/custom_tool.py
は、エージェントが使用できるカスタムツールを追加します。.envには
APIキーやその他の環境変数が格納される。
プロジェクトフォルダに移動し、CrewAIの依存関係をインストールします:
最後のコマンドは、プロジェクトディレクトリ内にローカル仮想環境.venv
フォルダを作成します。これでCrewAIをローカルで実行できるようになります。
完璧です!これで、Gemini APIを使ったCrewAIプロジェクトが完全に初期化されました。これで、インテリジェントなSERPエージェントを構築し、実行する準備が整いました。
ステップ#3: SERP APIを使い始める
前述の通り、我々はBright DataのSERP APIを使って検索エンジンの結果ページからコンテンツを取得し、CrewAIのエージェントに供給する。具体的には、ユーザーの入力に基づいて正確なGoogle検索を行い、エージェントの応答を改善するためにライブスクレイピングデータを活用します。
SERP APIを設定するには、公式ドキュメントを参照してください。または、以下の手順に従ってください。
まだの方は、ブライト・データにアカウントを登録してください。そうでなければ、ログインしてください。ログインしたら、”My Zones “セクションに行き、”SERP API “の行をクリックします:
テーブルにその行がない場合は、SERP APIゾーンをまだ設定していないことを意味します。その場合は、下にスクロールして「SERP API」セクションの下にある「Create zone」をクリックしてください:
SERP API製品ページで、”Activate “スイッチを切り替えて製品を有効にします:
次に、公式ガイドに従ってBright Data APIキーを生成します。そして、以下のように.env
ファイルに追加します:
プレースホルダを プレースホルダを Bright Data API キーの実際の値に置き換えてください。
これです!これでCrewAIとの連携でBright DataのSERP APIが使えるようになりました。
ステップ#4: CrewAI SERP検索ツールの作成
Bright Data SERP APIと対話し、検索結果データを取得するためにエージェントが使用できるSERP検索ツールを定義する時が来ました。
そのためには、tools/
フォルダ内のcustom_tool.py
ファイルを開き、その内容を以下のように置き換える:
このCrewAIツールは、ユーザークエリを受け取り、 リクエットを介して
Bright Data SERP APIからSERPの結果を取得する関数を定義しています。
brd_json=1
クエリパラメータが使用され、フォーマットがjsonに
設定されている場合、SERP APIはこの構造で応答することに注意してください:
特に、JSON文字列を含むbody
フィールドをパースすると、次のようなデータ構造になる:
だから、あなたは主にオーガニック・フィールドに
興味がある。これは、コードでアクセスされ、JSON文字列に解析され、ツールによって返されるフィールドである。
素晴らしい!あなたのCrewAIエージェントは、このツールを使って新鮮なSERPデータを取得することができます。
ステップ5:エージェントの定義
このタスクを達成するためには、2つのCrewAIエージェントが必要です:
- リサーチャー:グーグルから検索結果を収集し、有用なインサイトをフィルタリングする。
- 報告アナリスト:調査結果を構造化し、読みやすい要約にまとめる。
agents.yml
ファイルに次のように記入することで定義できる:
この構成がいかに各エージェントのやるべきことを捉えているか、注目してほしい。ただ、彼らの役割
、ゴール
、バックストーリーを
定義するだけだ。とても良い!
ステップ#6: 各エージェントのタスクを指定する
ワークフロー内での各エージェントの役割を明確に示す具体的なタスクを定義する準備をしましょう。CrewAIのドキュメントによると、正確な結果を得るためには、エージェントの定義よりもタスクの定義の方が重要です。
したがって、tasks.ymlでは
、エージェントが何をする必要があるのかを、以下のように正確に伝える必要がある:
このセットアップでは、2つのタスクを定義している:
research_task
:クエリに基づいて動的に API パラメータを構築する方法など、ツールを介して Bright Data SERP API を使用する方法を研究者に伝えます。report_task
:最終的な出力が、収集されたデータから厳密に作成された、読みやすく、有益なレポートであることを指定する。
このtasks.yml
定義は、CrewAIエージェントがSERPデータを収集し、実際の検索結果に基づいたレポートを作成するために必要なものです。
CrewAIエージェントをコードに統合し、仕事をさせる時が来ました!
ステップ7:クルーを作る
これですべてのコンポーネントが揃ったので、crew.py
ファイルですべてをつなげて完全に機能するクルーを作りましょう。具体的には、このようにcrew.pyを
定義します:
crew.pyでは
、CrewAIデコレーター(ここでは@agent
、@task
、@crew
)を使って、YAMLファイルからロジックをリンクし、実際の機能を配線する必要があります。
この例では
リサーチャーエージェントは
SerpSearchToolに
アクセスし、Bright DataのSERP APIを使用して実際のGoogle検索クエリを実行することができます。reporting_analyst
エージェントは、研究者からの出力を使用して、最終レポートを生成するように構成されている。- 各タスクは
tasks.ymlで
定義されたものに対応し、適切な出力ファイルに明示的に結びつけられている。 - プロセスは
シーケンシャルに
設定され、リサーチャーが
最初に実行され、そのデータをreporting_analystに
渡す。
いくぞSerpAgentの
クルーは、実行の準備が整いました。
ステップ#8: メインループの作成
main.pyで
、ユーザーのクエリを入力として渡してクルーにトリガーをかけます:
ミッション完了!あなたのCrewAI + SERP API統合(LLMとしてGeminiを使用)はこれで完全に機能します。main.pyを
実行し、検索クエリを入力するだけで、クルーがSERPデータを収集・分析し、レポートを作成します。
ステップ#9: AIエージェントの実行
プロジェクトのフォルダで、以下のコマンドでCrewAIアプリケーションを実行します:
さて、次のようなクエリーを入力する:
これは、典型的なLLMが正確に答えるのに苦労するような質問だ。なぜなら、CMP、A2A、AGP、ACPといった最新のAIプロトコルのほとんどは、モデルが最初にトレーニングされたときには存在していなかったからだ。
何が起こるのか、詳しく説明しよう:
上にあるように、CrewAIはこのようにリクエストを処理する:
研究
エージェントは実行される:- ユーザー入力を構造化されたクエリー
"新しいAIプロトコル "
に変換する。 SerpSearchTool
を介して Bright Data の SERP API にクエリを送信します。- APIから結果を受け取り、
output/serp_data.json
ファイルに保存する。
- ユーザー入力を構造化されたクエリー
- その後、
reporting_analyst
エージェントが起動する:serp_data.json
ファイルから構造化データを読み込む。- その新鮮な情報を使って、コンテキストを意識したレポートをMarkdownで作成する。
- 最終的な構造化レポートを
output/report.mdに
保存する。
Markdownビューアーを使ってreport.mdを
開くと、次のように表示される:
レポートには、関連する文脈情報や、より深く掘り下げるためのリンクも含まれている。
出来上がり!SERP APIとの統合により、CrewAIにRAGワークフローが実装されました。
次のステップ
Crewに統合されたBright Data SERP APIツールにより、エージェントは新鮮な検索エンジンの結果を受け取ることができます。これらのSERPのURLがあれば、他のスクレイピングAPIを呼び出して、リンクされたページから生のコンテンツを抽出することができます。
このアイデアは、エージェントが信頼できるソースを自動的に発見し、そこから最新の情報を取得することを可能にします。さらに、エージェントブラウザのようなソリューションを統合することで、エージェントはライブのウェブページと動的に対話することができます。
これらはほんの一例に過ぎないが、潜在的なシナリオやユースケースは事実上無限である。
結論
このブログポストでは、Bright DataのSERP APIを使用してRAGセットアップを統合することで、CrewAIエージェントをよりコンテキストに対応したものにする方法を学びました。
説明したように、これはエージェントを外部のスクレイピングAPIや自動化ツールと接続することで探求できる多くの可能性の一つに過ぎません。特に、Bright Dataのソリューションは、インテリジェントなAIワークフローのための強力なビルディングブロックとして機能します。
ブライトデータのツールでAIインフラをレベルアップ:
- 自律型AIエージェント:強力なAPIセットを使って、あらゆるウェブサイトをリアルタイムで検索、アクセス、対話。
- 業種別AIアプリ:信頼性の高いカスタムデータパイプラインを構築し、業種固有のソースからウェブデータを抽出します。
- 基礎モデル:ウェブスケールのデータセットにアクセスし、事前学習、評価、微調整を行うことができます。
- マルチモーダルAI:AIに最適化された世界最大の画像、動画、音声のリポジトリを利用できます。
- データプロバイダー:信頼できるプロバイダーと接続し、高品質でAIに対応したデータセットを大規模に調達。
- データパッケージ:キュレーションされた、すぐに使える、構造化された、エンリッチされた、注釈付きのデータセットを入手。
詳しくはAIハブをご覧ください。
ブライトデータのアカウントを作成し、AIエージェント開発のためのすべての製品とサービスをお試しください!