広告枠を募集中 ご相談ください

AgentGPTでWeb検索APIとブラウジングプラグインを設定し自律型リサーチを実現する方法

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

自律型AIエージェント(Autonomous Agents)の最大の強みは、与えられた複雑な目標を細分化されたサブタスクへと自動分解し、試行錯誤しながら反復実行できる点にあります。しかし、エージェントを大規模言語モデル(LLM)の静的な学習データだけに依存させておくと、最新の製品価格、リアルタイムの技術ドキュメント、直近のニュースなどを調査することができません。オープンソースのブラウザ型エージェント基盤「AgentGPT」において、実用的な自律リサーチ環境を構築するには、Web検索APIの接続とWebページ解析ツールの拡張が不可欠です。

検索ツールが未設定のAgentGPTはモデル内の古い記憶から推測するしかなく、ハルシネーション(もっともらしい嘘)を引き起こしやすくなります。一方で、検索APIとブラウジング連携を正しく構成すれば、エージェントは自ら検索クエリを生成し、Google検索のリアルタイム結果を取得して、外部サイトのコンテンツを精査した上で構造化レポートを作成できるようになります。本記事では、クラウド環境およびDockerローカル環境でのSerper API設定手順、バックエンド拡張によるWebページ本文抽出ツールの組み込み方、そしてタスク逸脱(Task Drift)を防ぐプロンプト設計を詳しく解説します。


1. AgentGPTが外部Webと接続する基本アーキテクチャ

AgentGPTは、「思考(Think)- 計画(Plan)- 実行(Act)- 評価(Evaluate)」の再帰ループによって動作します。例えば「2026年時点の主要ベクトルデータベースの最新価格体系を調査する」といった課題を与えられると、エージェントは内部メモリ上でタスクを順次生成します。

外部の最新情報を必要とするタスクを実行する際、AgentGPTはPythonバックエンド(platform/reworkd_platform/web/api/agent/tools/)内に用意されたツールレイヤーを呼び出します。この内部実装にはLangChainのツール抽象化基盤が活用されています。

なぜSerper APIが標準採用されているのか

検索エンジンのHTMLを直接スクレイピングする手法は、CAPTCHA(人間検証)や頻繁なDOM構造変更により容易に停止してしまいます。そのため、AgentGPTは高速なGoogle検索APIサービスである Serper(serper.dev)を標準で推奨・採用しています。Serperには以下の利点があります:


2. 検索APIの設定手順:クラウド版とセルフホスト版

Web検索機能の有効化は、クラウド版(ホスト環境)を利用するか、ローカル環境でDockerを用いてセルフホストするかによって設定方法が異なります。

方法A:Web UI(クラウド版:agentgpt.reworkd.ai)

  1. APIキーの発行:
    • Serper でアカウントを作成し、APIキーを取得します(無料枠で2,500クエリが提供されます)。
    • OpenAIのダッシュボードからAPIキーを用意します。
  2. 設定画面を開く:画面左側のサイドバーにある**設定(Settings)**アイコンをクリックします。
  3. モデルとAPIキーの入力:
    • Model には GPT-4 または gpt-4o を選択することを強く推奨します。GPT-3.5に比べ、上位モデルの方が「どのような検索キーワードを発行し、どの結果を引用すべきか」を正確に判断できます。
    • OpenAI API Key を入力します。
    • Serper API Key 欄に取得したキーを貼り付けます。
  4. ループ制限(Loop Limit)の設定:実行上限回数を5〜15回程度に設定します。これにより、十分な調査深度を確保しながら、無限ループによるAPI利用料の高騰を防ぎます。

方法B:セルフホスト(Dockerローカル環境)

自社サーバーやローカルPC上で動作させる場合の手順です:

  1. リポジトリのクローン:
    git clone https://github.com/reworkd/AgentGPT.git
    cd AgentGPT
    
  2. 環境変数ファイルの作成: プロジェクトルートにあるテンプレートファイルをコピーします:
    cp .env.example .env
    
  3. キーと実行制限の記述: .env ファイルを開き、以下の重要項目を設定します:
    # LLM認証
    OPENAI_API_KEY=sk-your-openai-api-key-here
    
    # Web検索連携
    SERPER_API_KEY=your-serper-api-key-here
    
    # エージェント最大反復回数
    NEXT_PUBLIC_MAX_LOOPS=15
    REWORKD_PLATFORM_MAX_LOOPS=15
    
  4. コンテナのビルドと起動: 付属のセットアップスクリプトまたはDocker Composeを実行します:
    ./setup.sh
    # または手動で起動:
    docker compose up --build
    
    コンテナが起動したら、ブラウザで http://localhost:3000 にアクセスします。FastAPIで構築されたバックエンド(ポート 8000)が環境変数から SERPER_API_KEY を自動的に読み込み、検索ツール(search.py)にマウントします。

3. 発展:フルページブラウジングとスクレイピング機能の拡張

標準設定のSerper APIが返す検索スニペットは、通常100〜200文字程度です。APIの詳細仕様、ベンチマーク数値表、論文の本文などを詳しく検証する必要がある場合、スニペット情報だけでは不十分です。

検索スニペットと本文ブラウジングの違い

カスタムブラウジングツールの実装パターン

AgentGPTのバックエンドツールディレクトリ(platform/reworkd_platform/web/api/agent/tools/)に独自のスクレイピングツールを追加することで、より深い調査が可能になります。 実装時に考慮すべき重要ポイント:

  1. 不要タグの除去:ヘッダー、ナビゲーション、フッター、広告スクリプトを削除し、本文のみを抽出する(BeautifulSoup や trafilatura の活用)。
  2. Markdown変換:見出し構造やテーブル形式を保ちながらプレーンなMarkdownに変換する。
  3. トークン数の制限(トランケーション):長大なHTMLによってLLMのコンテキストウィンドウが溢れないよう、抽出文字数を一定量(例:3,000〜4,000文字)に制限する。

Pythonによる簡易ブラウジングツールの実装例:

from pydantic import BaseModel, Field
import httpx
from bs4 import BeautifulSoup

class BrowseInput(BaseModel):
    url: str = Field(..., description="アクセスして本文を読み込む対象のHTTPS URL")

async def browse_page(url: str) -> str:
    headers = {"User-Agent": "AgentGPT-ResearchBot/1.0"}
    async with httpx.AsyncClient(timeout=10.0, follow_redirects=True) as client:
        response = await client.get(url, headers=headers)
        if response.status_code != 200:
            return f"エラー: HTTPステータス {response.status_code} が返されました。"
            
        soup = BeautifulSoup(response.text, "html.parser")
        
        # 本文以外の要素を削除
        for tag in soup(["script", "style", "nav", "footer", "header", "aside"]):
            tag.decompose()
            
        text = soup.get_text(separator="\n", strip=True)
        # トークン消費を抑えるため先頭4000文字を返却
        return text[:4000]

このツールを search.py と併せて登録することで、「SerperでURLを特定」→「ブラウジングツールで本文を精読」→「総合レポートを出力」という高精度なリサーチパイプラインが完成します。


4. 構造化プロンプト設計:タスク逸脱(Task Drift)の防止

自律型エージェント運用で最も頻発するトラブルが**タスク逸脱(Task Drift)**です。エージェントが些細な枝葉の検索クエリを生成し続けたり、同じサイトを何度も検証して無限ループに陥ったりします。これを防ぐには、制約条件を明記した初期ゴールプロンプトの設定が不可欠です。

優れたリサーチプロンプトの構成要素

実践プロンプトのサンプル

エージェント名: クラウドアーキテクチャ調査員
目標: Pinecone、Qdrant Cloud、Weaviate Cloud のベクトル検索課金モデルを横断比較調査する。
1. Web検索を使用し、2026年時点の最新無料枠、Serverless読み書き単価、月額クラスター費用を収集してください。
2. 各サービスのストレージ容量およびクエリユニット(Read/Write Units)の計算ロジックを確認してください。
3. 必要な情報を収集したら追加のタスク生成を停止し、結果をMarkdown比較表にまとめ、各サービスの公式URLを記載してください。

このゴールを与えられたAgentGPTは、無駄なタスクを増殖させることなく、以下の順序で着実に実行します:


5. トラブルシューティングと技術的留意点

症状主な原因対処方法
検索実行時に 403 Forbidden エラーSERPER_API_KEY の未設定、誤字、または無料クレジットの枯渇。.env 内のキーに余計な引用符やスペースがないか確認。serper.dev 管理画面で残高を確認。
検索が無限ループして終わらない終了条件の指定漏れ、または最大ループ数が未設定。設定画面または .env で MAX_LOOPS を10〜15に制限。「3サイト確認後に要約」とプロンプトに明記。
検索結果の誤読やハルシネーション推論能力の低いモデル(GPT-3.5など)によるJSONパースの失敗。エージェントの基盤モデルを GPT-4 や上位モデルに変更。
Docker環境で .env の変更が反映されないコンテナ再作成時に古いイメージやキャッシュが使用されている。docker compose down && docker compose up --build で再ビルドを実行。

プロジェクトのメンテナンス状況について

開発元のReworkd社は2026年1月に reworkd/AgentGPT リポジトリをアーカイブ(読み取り専用化)し、現在はエンタープライズ向けのWebデータスクレイピング基盤事業にリソースを集中しています。AgentGPT自体への新規機能追加は停止していますが、ブラウザ上で動作する自律エージェントの代表的アーキテクチャとしての学習価値は依然として高いままです。商用環境で同様のシステムを新規構築する場合は、本構成の設計思想を参考にしつつ、LangGraph や CrewAI といった最新フレームワークへ移行し、スクレイピング層に Firecrawl などを組み合わせる構成が推奨されます。


参考資料