第2章:AIに武器(Tools)を装備し、無敵のクローラーエージェントを構築する
前章では、2つのAgent(研究者とライター)が対話しながら記事を執筆する様子を見ました。しかし、彼らの会話記録を注意深く観察すると、致命的な問題が浮かび上がります: 彼らは現在「頭の中だけで考えている」だけなのです! もし「今日のTSMCの終値は?」と尋ねたら、彼らは適当な数字をでっち上げるか、「AIモデルとして、私は今日のデータを持っていません」と答えるでしょう。
Multi-Agentの世界では、脳に手足がなければ、それはただのおしゃべりおもちゃに過ぎません。 この章では、Agentに「ツール(Tools)」を装備させ、Google検索やウェブページの読み取り、外部APIの操作さえ可能にする方法を学びます!これこそが真のビジネス破壊力を発揮する出発点です。
🎯 本章の目標
- CrewAIのTool(ツール)コアメカニズムと動作原理を理解する
- AIに公式組み込みの検索ツール(Search Tool)を使用させる方法を学ぶ
- Vibe Codingを使って「専用クローラーツール(Custom Tool)」を作成し、特定ウェブページから財務報告を取得させる
- Agentが「いつどのツールを使うべきか」を自主的に判断する様子を観察する
🛠️ ステップ1:組み込み武器の配布(Google検索)
CrewAI公式は非常に親切で、crewai_toolsパッケージに多数の実用的な即戦力ツールを提供しています。例えばSerperDevToolを使えば、AgentにGoogle検索能力を与えられます。
🔥【Vibe Prompt実戦呪文】
CrewAIを使用しています。Researcher Agentに"SerperDevTool"を追加してGoogle検索能力を持たせる方法を教えてください。1. どこで登録し、どの環境変数(例:SERPER_API_KEY)を取得する必要があるか2. このツールをインスタンス化し、tools=[]配列に追加する完全なAgent定義コード例3. 詳細な日本語コメントを追加してください
AIはまずserper.dev(AI向けGoogle検索APIを提供するサイト)で無料アカウント登録しAPI Keyを取得するよう指示し、次のようなコードに修正します:
import os
from crewai import Agent
from crewai_tools import SerperDevTool
# 1. 検索エンジンの鍵を挿入(通常は.envに記載、ここではデモ用)
os.environ["SERPER_API_KEY"] = "あなたの_Serper_キー"
# 2. 検索武器のインスタンスを作成
search_tool = SerperDevTool()
# 3. 従業員を作成し、武器を配布
researcher = Agent(
role='テクノロジーマーケットシニアリサーチャー',
goal='最新トレンドの発見',
backstory='Google検索結果から価値あるビジネス情報をフィルタリングするのが得意です。',
verbose=True,
tools=[search_tool] # 重要!武器をリストに追加
)
これで、このResearcherが知らない問題に遭遇すると、ターミナルに驚くべき思考プロセスが表示されます:
「思考:今日のテスラの株価を知る必要があるが、私は知らない。検索ツールを使うべきだ」
アクション:インターネット検索
アクション入力:"2026 テスラ 最新株価 ニュース"
そして検索結果を元にさらに思考を続けます!これが真の「行動力」を持つAgentです!
🕷️ ステップ2:専用武器の作成(Custom Tool)
組み込みツールは便利ですが、ビジネス実戦では不十分です。 例えば金融業のクライアントが、「指定された財務報告URL」から最新の株主総会記録をクロールし要約するようAgentに要求した場合。 ここでは、Pythonクローリングとクラスカプセル化を含む**専用カスタムツール(Custom Tool)**を作成する必要があります。
初心者には本来非常に難しいですが、Vibe Coding時代ではたった一言で可能です!
🔥【Vibe Prompt実戦呪文】
PythonでCrewAIのCustom Toolを作成してください。1. ツール名:StockReportScraperTool2. コア機能:URL(文字列)を受け取り、requestsとBeautifulSoupで<p>タグのテキストを取得し、長い文字列として返す3. CrewAI公式推奨の@toolデコレータスタイル(関数形式)で記述4. 【非常に重要】関数内に極めて詳細なDocstring(三連引用符コメント)を記載し、いつこのツールを使うべきか、URLの形式などをAgentに説明
AIはこの強力なカスタムクローラーツールを作成します:
from crewai.tools import tool
import requests
from bs4 import BeautifulSoup
@tool("StockReportScraperTool")
def scrape_report(url: str) -> str:
"""
特定の財務報告やニュースURLの内容をクロールするツールです。
タスクが「特定URLの内容を読む」ことを要求する場合、必ずこのツールを呼び出してください。
有効なURL文字列(例:https://example.com/report)を渡すと、
ウェブページの本文を自動的にクロールし文字列を返します。
"""
try:
# ブラウザを装備し、簡単なブロックを回避
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers, timeout=10)
# BS4でHTMLを解析
soup = BeautifulSoup(response.text, 'html.parser')
paragraphs = soup.find_all('p')
# 全段落を結合して返す
return "\n".join([p.text for p in paragraphs])
except Exception as e:
return f"クロール失敗、エラーメッセージ:{str(e)}"
あとはscrape_report関数をAgentのtools=[]に追加するだけで、Agentは瞬時にクローリングスキルを習得します!
💼 [ビジネス応用シナリオ] Docstringが生死を分ける理由
Custom Tool作成において最も重要な部分は、requestsによるクローリングではなく、三連引用符で囲まれた日本語コメント(Docstring)です。
初心者が陥りやすい落とし穴です。Agentに多数の武器(検索、クローリング、メール送信など)を与えた場合、Agentはどの武器を使うべきかどう判断するのでしょうか? Agentは実際にツール内のDocstringを「読む」のです!
明確に記載していないと、Agentは混乱し、データ検索にメール送信ツールを使おうとするなどして、最終的にタスクが失敗します。 そのため、クライアントへの提案時には「当社が開発するAI従業員のコア技術は『ツール決定ロジックの最適化』にあり、AIがツールを誤用してシステムクラッシュを引き起こさないことを保証します」と説明できます。この技術の背後にあるのが、精密なDocstringの作成です。
✅ 本章のまとめ
これが「デジタル従業員」構築の最も魅力的な点です:単なるプログラミングではなく、脳と外部世界ツールの相互作用ロジックを設計しているのです。 ツールを装備したAIは、手足を得たようなもの。次章では、彼らがチーム内で「互いに交流しタスクを委任」する方法と、メモリ(Memory)システムの秘密を探求します!