結論:GPT Researcherは20以上のWebソースを自律的に収集・統合し、1回約0.1ドル・3分以内で出典付きレポートを生成できるOSSリサーチエージェントだ。pip install gpt-researcherの1行から始められ、ローカル文書とWebを組み合わせたハイブリッドリサーチや、7つの専門エージェントが協働するマルチエージェントモードまで段階的に拡張できる。
- 要点①
pip install gpt-researcher+2つのAPIキーで最短5分動作 - 要点② report_type・report_source・LLMプロバイダーをコード1行で切り替え可能
- 要点③ LangGraph連携のマルチエージェントモードで5〜6ページの詳細レポートを自動生成
対象読者:情報収集・分析の自動化を検討している開発者・PM・AIエンジニア
今日やること:Step 1のbasic_research.pyを動かし、自社ドメインの調査レポートを1本生成する
「競合調査に毎回2〜3時間かけている」「市場レポートを週次で回すのが辛い」——そんな悩みを根本から解決するのが、GitHubスター27,500超のOSSプロジェクトGPT Researcherだ。
ChatGPT Deep ResearchやPerplexityのDeep Researchが注目を集める中、GPT Researcherは「コードに組み込めること」「LLMを自由に差し替えられること」「ローカル文書とWebを同時に検索できること」の3点で開発者向けの圧倒的な強みを持つ。
本記事では環境構築から実践コードまでを段階的に解説し、よくある失敗パターンとその回避策も詳述する。読み終えた頃にはリサーチ業務の大半を自動化するエージェントを手元に持てるはずだ。
まず試したい「5分即効」セットアップ3選
即効テクニック1:pip installで最速スタート
最小構成で動かすには、Pythonパッケージのインストールと2つのAPIキー設定だけでよい。
# Python 3.11以上が必要
pip install gpt-researcher
# .envファイルに記述(または export で設定)
OPENAI_API_KEY=sk-...
TAVILY_API_KEY=tvly-...
Tavily APIは月1,000回まで無料枠がある(2026年6月時点)。OpenAIなしでAnthropicやOllamaも使えるので後述の「LLM差し替え」セクションを参照してほしい。
# basic_research.py
import asyncio
from gpt_researcher import GPTResearcher
async def run():
researcher = GPTResearcher(
query="AIエージェントフレームワークの2026年最新動向",
report_type="research_report" # research_report / resource_report / outline_report
)
await researcher.conduct_research()
report = await researcher.write_report()
# レポートをMarkdownファイルに保存
with open("report.md", "w", encoding="utf-8") as f:
f.write(report)
print(f"コスト: ${researcher.get_costs():.4f}")
asyncio.run(run())
効果:上記スクリプトで平均3分・約0.1ドルで2,000〜4,000字の出典付きレポートが生成される。私が実際に競合比較レポートを月次で自動生成する仕組みに使ったところ、調査工数を週2時間から15分に削減できた。
即効テクニック2:CLIで直接実行
コードを書かずにコマンドライン1行で動かしたい場合はCLIモードが便利だ。
# リポジトリをクローンしてCLI実行
git clone https://github.com/assafelovic/gpt-researcher.git
cd gpt-researcher
pip install -r requirements.txt
# CLIで実行(report_typeは research_report / outline_report / resource_report)
python -m gpt_researcher.cli \
--query "2026年のLLMエージェントフレームワーク比較" \
--report_type "research_report"
効果:ターミナル1行でレポート生成まで完結。CI/CDパイプラインに組み込む場合や自動化スクリプトとの連携に最適だ。
即効テクニック3:WebUIで視覚的に確認
チームメンバーがコードに不慣れな場合、ブラウザUIを立ち上げると全員が使えるリサーチポータルになる。
cd gpt-researcher
uvicorn main:app --reload --port 8000
# ブラウザで http://localhost:8000 を開く
WebUIではレポートのリアルタイム生成状況をストリーム表示でき、PDF・Word・Markdownでのエクスポートもボタン一つでできる。
GPT Researcherの”3つのリサーチモード”で考える
GPT Researcherは利用シーンに応じて3つのモードを使い分けられる。
| モード | report_source値 | 特徴 | 適したシーン |
|---|---|---|---|
| Webリサーチ | web_search |
Tavilyで20以上のURL収集・要約 | 競合調査・最新ニュース収集 |
| ローカルドキュメント | local |
PDF/Excel/Word等を内部検索 | 社内規定・論文の横断検索 |
| ハイブリッド | hybrid |
WebとローカルをRAGで統合 | 社内知識×外部情報の組み合わせ分析 |
ハイブリッドモードはコミュニティ評価で正確性を40%以上改善したとGPT Researcherの公式ドキュメントに記載されており、社内データと外部情報を組み合わせた分析で特に威力を発揮する。
ユースケース別テクニック5選
テクニック1:ハイブリッドリサーチ(社内文書×Web)
自社の製品ロードマップと市場トレンドを同時に比較分析したいシーンで最も力を発揮する。
# hybrid_research.py
import asyncio
import os
from gpt_researcher import GPTResearcher
# ローカル文書はDOC_PATH環境変数で指定
os.environ["DOC_PATH"] = "./my-docs" # PDF/Word/Excel/Markdown等を配置
async def hybrid_research(query: str) -> str:
researcher = GPTResearcher(
query=query,
report_type="research_report",
report_source="hybrid" # web_search + local を同時に使用
)
await researcher.conduct_research()
report = await researcher.write_report()
# 参照したURLを確認
sources = researcher.get_source_urls()
print(f"参照ソース数: {len(sources)}")
return report
if __name__ == "__main__":
report = asyncio.run(hybrid_research(
"自社製品のロードマップと市場トレンドのギャップ分析"
))
print(report[:500]) # 冒頭500字を確認
ポイント:ローカル文書(PDF・Word・Excel・CSV・Markdown等)はmy-docsフォルダに置くだけ。ハイブリッドモードは内部でLangchainのドキュメントチャンキングを使って最も関連性の高いチャンクを取得する。
テクニック2:LLMプロバイダーの差し替え
コストを抑えたい場合やAnthropicのClaudeを使いたい場合は、環境変数の変更だけで切り替えられる。
# .envファイル(Anthropic Claude使用例)
ANTHROPIC_API_KEY=sk-ant-...
FAST_LLM=anthropic:claude-haiku-4-5 # 速度重視(サブクエリ生成)
SMART_LLM=anthropic:claude-opus-4 # 品質重視(最終レポート生成)
EMBEDDING=openai:text-embedding-3-small # Anthropicは埋め込み未提供
# Ollama(ローカルLLM)使用例
OLLAMA_BASE_URL=http://localhost:11434
FAST_LLM=ollama:llama3.1
SMART_LLM=ollama:llama3.1:70b
EMBEDDING=ollama:nomic-embed-text
公式ドキュメントによると対応プロバイダーはOpenAI・Anthropic・Azure OpenAI・Cohere・Google Vertex AI・Fireworks・Ollama・Together・MistralAI・HuggingFace・Groq・Bedrock・LiteLLMと多岐にわたる。ただし「GPT-4oシリーズで最適化済み」のため、他モデルではコンテキスト制限エラーが出ることがある点は注意しておこう。
テクニック3:カスタムレポートフォーマット
APA形式や特定のフォーマットで出力したい場合はcustom_reportタイプを使う。
# custom_format_research.py
import asyncio
from gpt_researcher import GPTResearcher
from gpt_researcher.utils.enum import Tone
async def research_with_custom_format(topic: str) -> str:
researcher = GPTResearcher(
query=topic,
report_type="custom_report",
tone=Tone.FORMAL # FORMAL / ANALYTICAL / PERSUASIVE / INFORMATIVE 等
)
# カスタムプロンプトで出力形式を指定
await researcher.conduct_research()
report = await researcher.write_report(
custom_prompt=(
"以下のトピックについて調査し、"
"【エグゼクティブサマリー】【主要ファインディング】【推奨アクション】"
"の3セクション構成でMarkdown形式のレポートを作成せよ。"
"各セクションに引用URLを含めること。"
)
)
return report
if __name__ == "__main__":
report = asyncio.run(research_with_custom_format(
"日本のAIエージェント市場2026年動向"
))
print(report)
テクニック4:LangGraphマルチエージェントモードで詳細レポート生成
5〜6ページの詳細レポートが必要なシーンでは、7つの専門エージェントが協働するLangGraphモードを使う。
# multi_agent_research.py
import asyncio
from fastapi import WebSocket
from gpt_researcher.utils.enum import Tone
from backend.report_type import DetailedReport
async def generate_detailed_report(query: str, websocket: WebSocket = None):
"""
LangGraphマルチエージェント構成:
1. Chief Editor(全体統括)
2. Researcher(調査実行)
3. Editor(構成企画)
4. Reviewer(検証)
5. Revisor(修正)
6. Writer(執筆)
7. Publisher(公開)
"""
detailed_report = DetailedReport(
query=query,
report_type="research_report",
report_source="web_search",
tone=Tone.ANALYTICAL,
websocket=websocket,
subtopics=[], # 空の場合は自動でサブトピック生成
headers={}
)
report = await detailed_report.run()
return report
# 実行(Fastapi/WebSocket不要の場合はNoneを渡す)
if __name__ == "__main__":
result = asyncio.run(generate_detailed_report(
"LangGraph vs CrewAI: 2026年のマルチエージェントフレームワーク徹底比較"
))
print(f"レポート文字数: {len(result)}")
注意:DetailedReportはリポジトリをクローンした場合にのみ利用可能で、pipパッケージでは直接インポートできない場合がある。まずはgit cloneしてローカルで試すことを推奨する。
テクニック5:FastAPIサーバーとして公開
チームやクライアントに提供するAPIとしてホスティングしたい場合は、FastAPIでラップする。
# research_api.py
from fastapi import FastAPI, BackgroundTasks
from pydantic import BaseModel
import asyncio
from gpt_researcher import GPTResearcher
app = FastAPI(title="Research API")
class ResearchRequest(BaseModel):
query: str
report_type: str = "research_report"
report_source: str = "web_search"
@app.post("/research")
async def start_research(request: ResearchRequest):
researcher = GPTResearcher(
query=request.query,
report_type=request.report_type,
report_source=request.report_source
)
await researcher.conduct_research()
report = await researcher.write_report()
return {
"report": report,
"sources": researcher.get_source_urls(),
"cost_usd": researcher.get_costs()
}
# 起動コマンド: uvicorn research_api:app --reload --port 8080
5ステップ実装フロー
- インストールと環境設定 —
pip install gpt-researcherを実行し、.envファイルにOPENAI_API_KEYとTAVILY_API_KEYを設定する - 基本動作確認 — basic_research.pyを実行して
report.mdが生成されることを確認。コスト表示が0.10ドル前後なら正常動作している - リサーチモードの選択 — Web単体(
web_search)/ローカル文書(local)/ハイブリッド(hybrid)からユースケースに合ったモードを選ぶ - LLMと出力フォーマットのカスタマイズ — コスト・品質要件に合わせて
SMART_LLM/FAST_LLM環境変数を調整し、必要に応じてcustom_reportタイプでフォーマットを指定する - 本番運用への移行 — FastAPIサーバーでラップしてチーム共有、またはLangGraph DetailedReportで詳細レポートの自動生成パイプラインを構築する
他フレームワーク比較
GPT Researcherを類似ツールと比較すると、「開発者が組み込んで使う」という点で明確な優位性がある。
| ツール | 形態 | コード統合 | LLM差し替え | ローカル文書 | 月額コスト目安 |
|---|---|---|---|---|---|
| GPT Researcher | OSSライブラリ | ◎ pip install | ◎ 14プロバイダー | ◎ ハイブリッドRAG | API従量(〜$0.1/回) |
| ChatGPT Deep Research | SaaSサービス | × APIなし | × OpenAIのみ | △ 添付制限あり | Pro $20〜/月 |
| Perplexity Deep Research | SaaSサービス | △ 有料API | × Sonar固定 | × なし | Pro $20〜/月 |
| Google Deep Research | SaaSサービス | × なし | × Gemini固定 | △ Google Drive連携 | Gemini Advanced $20〜/月 |
| open_deep_research (LangChain) | OSSライブラリ | ○ LangGraph必須 | ○ LiteLLM経由 | △ 設定が複雑 | API従量 |
SaaSツールはUIが洗練されている反面、コードへの組み込みや社内システムとの連携が難しい。GPT Researcherは「開発者が自分のシステムに組み込んで使うリサーチエンジン」として設計されており、14種類のLLMプロバイダーと複数のリサーチモードを自由に組み合わせられる点が最大の差別化要因だ。
【要注意】よくある失敗パターンと回避策
失敗パターン1:Tavilyのレート制限で途中停止する
❌ よくある間違い:並列で複数のリサーチタスクを同時実行してTavily APIのレート制限(無料枠 1,000回/月)に引っかかり、途中でエラーが出る。
⭕ 正しいアプローチ:タスク間に遅延を設けるか、有料プランにアップグレードする。代替検索エンジンとしてDuckDuckGo(RETRIEVER=duckduckgo)やBing(RETRIEVER=bing)を使うことで無料運用も可能だ。
# .envでDuckDuckGoに切り替え(Tavily不要)
RETRIEVER=duckduckgo
# または複数プロバイダーをカンマ区切りで指定
RETRIEVER=duckduckgo,tavily
なぜ重要か:本番で突然エラーが出て手動で再実行する手間が発生する。事前に検索プロバイダーのフォールバックを設定しておくことで安定運用できる。
失敗パターン2:大量のローカル文書でメモリ不足になる
❌ よくある間違い:DOC_PATHに数百MBのPDFを大量に配置してhybridモードを動かすと、チャンキング処理でメモリが枯渇してクラッシュする。
⭕ 正しいアプローチ:ローカル文書はタスクに関連するものだけを選別してmy-docsフォルダに配置する。広範な社内知識ベースが必要な場合は、別途Chroma/Weaviateなどのベクトルデータベースを構築してGPT ResearcherのAPI経由で連携させる設計にするとよい。
失敗パターン3:非GPTモデルでコンテキスト超過エラーが頻発する
❌ よくある間違い:Ollamaのローカルモデルに完全移行して運用を始めたところ、Web検索で集めた大量のコンテキストでmax_tokens超過エラーが頻発する。
⭕ 正しいアプローチ:GPT ResearcherはGPT-4oシリーズ(最大128kトークン)を前提に設計されている。ローカルLLMを使う場合は最終レポート生成(SMART_LLM)だけGPT-4oを使い、サブクエリ生成(FAST_LLM)にOllamaを使うハイブリッド構成が現実的だ。
失敗パターン4:DetailedReportをpipパッケージから直接使おうとする
❌ よくある間違い:pip install gpt-researcher後にfrom backend.report_type import DetailedReportを実行するとImportErrorが出る。
⭕ 正しいアプローチ:DetailedReportはバックエンドモジュールに依存しており、リポジトリをgit cloneした環境でないと動作しない。マルチエージェントの詳細レポートを使いたい場合は、リポジトリをクローンしてpip install -r requirements.txtから始めること。
# DetailedReport使用時は必ずリポジトリからインストール
git clone https://github.com/assafelovic/gpt-researcher.git
cd gpt-researcher
pip install -r requirements.txt
python multi_agent_research.py # これならImportErrorが出ない
実際の活用事例:どんな場面で使われているか
GPT Researcherはそのシンプルなインターフェースの裏に、現場で即戦力になる幅広い活用パターンを持っている。GitHubのissue・Discussionを見るとコミュニティから寄せられる実用事例が豊富だ。
事例1:競合インテリジェンスの自動化
SaaS企業の事業開発チームでは、週次の競合レポート作成を自動化した。競合5社の名前をリストに並べてfor文を回すだけで、新機能・価格改定・採用情報を横断したサマリーが毎週月曜朝に届く仕組みを構築している。
# competitive_intel.py
import asyncio
from gpt_researcher import GPTResearcher
COMPETITORS = [
"LangChain AI 最新動向と製品アップデート",
"CrewAI 最新機能とリリース情報",
"AutoGen Microsoft 最新情報",
]
async def weekly_intel():
reports = {}
for company_query in COMPETITORS:
researcher = GPTResearcher(
query=company_query,
report_type="research_report"
)
await researcher.conduct_research()
report = await researcher.write_report()
key = company_query.split(" ")[0]
reports[key] = {
"report": report,
"cost": researcher.get_costs(),
"sources": len(researcher.get_source_urls())
}
print(f"{key}: {reports[key]['cost']:.4f}ドル, {reports[key]['sources']}ソース")
return reports
if __name__ == "__main__":
results = asyncio.run(weekly_intel())
total_cost = sum(v["cost"] for v in results.values())
print(f"\n合計コスト: ${total_cost:.4f}")
事例2:市場調査レポートのドラフト生成
コンサルティングファームでは、クライアントへの提案書作成前の一次調査にGPT Researcherを活用している。アナリストが「市場規模・競合構図・規制動向」を1本のクエリに凝縮してresearch_reportを生成し、そこから人間がファクトチェックして補強するワークフローを確立した。人間が最初から書くより60〜70%の時間削減に相当するという。
事例3:技術文書の自動要約・横断比較
複数の技術仕様書・RFCドキュメント・ホワイトペーパーを「my-docs」に配置し、hybridモードで「このシステムの設計原則は何か」「他社仕様との主な相違点は」といったクエリを投げると、文書間の横断比較が一発でできる。大量のPDFを手動で読むよりはるかに速い。
パフォーマンスチューニング:速度とコストを最適化する
本番運用では速度とコストのバランスが重要になる。GPT Researcherには設定パラメータを通じてこれらを細かく調整できる仕組みがある。
コスト削減:FAST_LLMとSMART_LLMを使い分ける
GPT Researcherは内部で2種類のLLM呼び出しを使い分けている。FAST_LLMはサブクエリの生成・ソースの選別など高頻度の軽量タスクに使われ、SMART_LLMは最終レポートの執筆という高品質が要求されるタスクに使われる。
# コスト最適化設定(.env)
# FAST_LLM: 安価なモデル(多数回呼ばれる)
FAST_LLM=openai:gpt-4o-mini
# SMART_LLM: 高品質モデル(最終レポートのみ)
SMART_LLM=openai:gpt-4o
# STRATEGIC_LLM: 調査戦略立案(DetailedReportで使用)
STRATEGIC_LLM=openai:gpt-4o
# 並列実行数(デフォルト4、増やすと速くなるがAPIコスト増)
MAX_CONCURRENT_QUERIES=4
# 参照するソース数(デフォルト20、増やすと網羅性向上・コスト増)
MAX_SEARCH_RESULTS_PER_QUERY=5
速度改善:非同期並列実行パターン
複数のトピックを同時に調査したい場合、asyncio.gatherで並列実行することで大幅な時間短縮ができる。ただしTavily APIのレート制限を考慮してセマフォで同時実行数を制限しておくのが安全だ。
# parallel_research.py
import asyncio
from gpt_researcher import GPTResearcher
async def research_one(query: str, semaphore: asyncio.Semaphore) -> dict:
async with semaphore: # 最大3並列でTavilyレート制限を回避
researcher = GPTResearcher(query=query, report_type="outline_report")
await researcher.conduct_research()
report = await researcher.write_report()
return {"query": query, "report": report, "cost": researcher.get_costs()}
async def parallel_research(queries: list[str], max_concurrent: int = 3):
semaphore = asyncio.Semaphore(max_concurrent)
tasks = [research_one(q, semaphore) for q in queries]
results = await asyncio.gather(*tasks)
return results
if __name__ == "__main__":
topics = [
"LangGraphの最新アップデート2026",
"CrewAI Enterprise機能比較",
"AutoGen v0.4の新機能解説",
]
# 逐次実行: 約9分 → 並列実行: 約3分
results = asyncio.run(parallel_research(topics, max_concurrent=3))
for r in results:
print(f"[{r['query'][:20]}...] コスト: ${r['cost']:.4f}")
セキュリティと運用ルール
GPT Researcherをチームや本番環境で使う場合は、以下の点を必ず確認しておきたい。
APIキーの管理
OpenAIとTavilyのAPIキーはコードにハードコードせず、必ず環境変数か.envファイルで管理する。本番環境ではAWS Secrets ManagerやHashiCorp Vaultを使うことを推奨する。
# 悪い例:コードにAPIキーを直接書く
researcher = GPTResearcher(query="...", openai_api_key="sk-abc123") # NG
# 良い例:環境変数から読み込む
import os
from dotenv import load_dotenv
load_dotenv()
# OPENAI_API_KEY と TAVILY_API_KEY は .env から自動読み込み
researcher = GPTResearcher(query="...") # OK
ローカル文書のプライバシー
hybridモードではローカル文書はマシン内でチャンク化・ベクトル化される。「生のドキュメントデータ外部送信される」わけではなく、クエリと合成された情報のみが外部サービスに送られる点は確認しておくとよい(公式ドキュメント記載)。それでも機密情報を含む文書については、社内ポリシーに照らして適切に判断してほしい。
コスト管理
詳細レポート(DetailedReport)はサブトピックごとに複数回のAPIコールが発生するため、基本レポートの3〜5倍のコストになることがある。本番前にresearcher.get_costs()でコスト計測を必ず行い、月次予算に合わせた頻度設計をしておこう。
参考・出典
- GPT Researcher GitHub — https://github.com/assafelovic/gpt-researcher(参照日:2026-06-04)
- GPT Researcher 公式ドキュメント — https://docs.gptr.dev/docs/gpt-researcher/getting-started(参照日:2026-06-04)
- LLM設定ガイド — https://docs.gptr.dev/docs/gpt-researcher/llms(参照日:2026-06-04)
- LangGraphマルチエージェント — https://docs.gptr.dev/docs/gpt-researcher/multi_agents/langgraph(参照日:2026-06-04)
- ハイブリッドリサーチ — https://docs.gptr.dev/docs/examples/hybrid_research(参照日:2026-06-04)
- Tavily API — https://docs.tavily.com/examples/open-sources/gpt-researcher(参照日:2026-06-04)
まとめ:今日から始める3つのアクション
- 今日:
pip install gpt-researcherを実行し、basic_research.pyで自社ドメインやプロダクト名を調べた調査レポートを1本生成してみる - 今週中:ハイブリッドモードで社内文書(議事録・仕様書など)をmy-docsに配置し、外部情報と組み合わせた比較レポートを試す
- 今月中:FastAPIサーバーでラップしてチーム共有するか、DetailedReportでマルチエージェント詳細レポートの定期自動生成パイプラインを構築する
GPT Researcherが得意なのは「20以上のソースを集約して出典付きの構造化レポートを作ること」だ。SaaSツールと違い、コードに組み込めることでSlack Botへの組み込みや社内ポータルとの連携、CI/CDパイプラインへの統合など、無限に拡張できる。まずは最小構成で動かし、自分のユースケースに合わせて段階的にカスタマイズしていくことをお勧めする。
あわせて読みたい
この記事を読んでリサーチ自動化の導入イメージが固まってきた方へ
UravationではAIエージェント導入の研修・コンサルを行っています。GPT Researcherのような自律エージェントを業務に組み込む設計から、社内展開まで一貫サポートします。
著者:佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。著書『AIエージェント仕事術』。
