mcpField
G
gpt-researcher

gpt-researcher

github.com/assafelovic開発30.3k2.1k 回インストール3 週間前に更新
リポジトリ

gpt-researcher について

GPT Researcher Development Skillは、LLMベースの研究エージェントであるGPT Researcherの開発ガイドです。アーキテクチャ、機能やリトリーバーの開発、設定、MCPデータソース連携を扱います。

主な機能

  1. 01研究エージェントの構成案内
  2. 02機能実装パターン
  3. 03リトリーバー開発の案内
  4. 04設定と連携の参考資料
  5. 05MCPデータソースの設定

活用シーン

  1. 01GPT Researcherへの機能追加
  2. 02検索リトリーバーの実装
  3. 03リサーチ動作の設定
  4. 04MCPデータソースへの接続

MCP 対応

GPTResearcherの初期化時に`mcp_configs`でMCPデータソースを設定する方法を説明し、個別のMCP連携資料を案内します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/assafelovic/gpt-researcher --skill gpt-researcher

インストール後、Claude Code で/gpt-researcherを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
adding-features.md
advanced-patterns.md
api-reference.md
architecture.md
components.md
config-reference.md
deep-research.md
flows.md
mcp.md
multi-agents.md
prompts.md
retrievers.md

詳細

GPT Researcher 開発スキル

GPT Researcher は、速度と信頼性を高めるためにエージェントの作業を並列化する、プランナー・エグゼキューター・パブリッシャーのパターンを採用した LLM ベースの自律エージェントです。

クイックスタート

Python の基本的な使い方
from gpt_researcher import GPTResearcher
import asyncio

async def main():
    researcher = GPTResearcher(
        query="What are the latest AI developments?",
        report_type="research_report",  # or detailed_report, deep, outline_report
        report_source="web",            # or local, hybrid
    )
    await researcher.conduct_research()
    report = await researcher.write_report()
    print(report)

asyncio.run(main())
サーバーの実行
# Backend
python -m uvicorn backend.server.server:app --reload --port 8000

# Frontend
cd frontend/nextjs && npm install && npm run dev

主要なファイルの場所

用途主なファイル主なクラス
メインオーケストレーターgpt_researcher/agent.pyGPTResearcher
リサーチロジックgpt_researcher/skills/researcher.pyResearchConductor
レポート作成gpt_researcher/skills/writer.pyReportGenerator
すべてのプロンプトgpt_researcher/prompts.pyPromptFamily
設定gpt_researcher/config/config.pyConfig
設定のデフォルト値gpt_researcher/config/variables/default.pyDEFAULT_CONFIG
API サーバーbackend/server/app.pyFastAPI app
検索エンジンgpt_researcher/retrievers/各種リトリーバー

アーキテクチャの概要

User Query → GPTResearcher.__init__()
                │
                ▼
         choose_agent() → (agent_type, role_prompt)
                │
                ▼
         ResearchConductor.conduct_research()
           ├── plan_research() → sub_queries
           ├── For each sub_query:
           │     └── _process_sub_query() → context
           └── Aggregate contexts
                │
                ▼
         [Optional] ImageGenerator.plan_and_generate_images()
                │
                ▼
         ReportGenerator.write_report() → Markdown report

アーキテクチャの詳細な図については、references/architecture.md を参照してください。


コアパターン

新機能の追加(8 ステップパターン)
  1. 設定 → gpt_researcher/config/variables/default.py に追加します
  2. プロバイダー → gpt_researcher/llm_provider/my_feature/ に作成します
  3. スキル → gpt_researcher/skills/my_feature.py に作成します
  4. エージェント → gpt_researcher/agent.py に統合します
  5. プロンプト → gpt_researcher/prompts.py を更新します
  6. WebSocket → stream_output() 経由でイベントを送信します
  7. フロントエンド → useWebSocket.ts でイベントを処理します
  8. ドキュメント → docs/docs/gpt-researcher/gptr/my_feature.md を作成します

画像生成のケーススタディを含む、新機能追加の完全ガイドについては、references/adding-features.md を参照してください。

新しいリトリーバーの追加
# 1. Create: gpt_researcher/retrievers/my_retriever/my_retriever.py
class MyRetriever:
    def __init__(self, query: str, headers: dict = None):
        self.query = query
    
    async def search(self, max_results: int = 10) -> list[dict]:
        # Return: [{"title": str, "href": str, "body": str}]
        pass

# 2. Register in gpt_researcher/actions/retriever.py
case "my_retriever":
    from gpt_researcher.retrievers.my_retriever import MyRetriever
    return MyRetriever

# 3. Export in gpt_researcher/retrievers/__init__.py

リトリーバーの詳細なドキュメントについては、references/retrievers.md を参照してください。


設定

設定キーは、アクセス時に小文字に変換されます。

# In default.py: "SMART_LLM": "gpt-4o"
# Access as: self.cfg.smart_llm  # lowercase!

優先順位:環境変数 → JSON 設定ファイル → デフォルト値

設定の完全なリファレンスについては、references/config-reference.md を参照してください。


主な統合ポイント

WebSocket ストリーミング
class WebSocketHandler:
    async def send_json(self, data):
        print(f"[{data['type']}] {data.get('output', '')}")

researcher = GPTResearcher(query="...", websocket=WebSocketHandler())
MCP データソース
researcher = GPTResearcher(
    query="Open source AI projects",
    mcp_configs=[{
        "name": "github",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github"],
        "env": {"GITHUB_TOKEN": os.getenv("GITHUB_TOKEN")}
    }],
    mcp_strategy="deep",  # or "fast", "disabled"
)

MCP 統合の詳細については、references/mcp.md を参照してください。

ディープリサーチモード
researcher = GPTResearcher(
    query="Comprehensive analysis of quantum computing",
    report_type="deep",  # Triggers recursive tree-like exploration
)

ディープリサーチの設定については、references/deep-research.md を参照してください。


エラー処理

スキルでは、常に適切な縮退処理を使用してください。

async def execute(self, ...):
    if not self.is_enabled():
        return []  # Don't crash
    
    try:
        result = await self.provider.execute(...)
        return result
    except Exception as e:
        await stream_output("logs", "error", f"⚠️ {e}", self.websocket)
        return []  # Graceful degradation

重要な注意点

❌ 誤り✅ 正しい方法
config.MY_VARconfig.my_var(小文字)
pip でインストールしたパッケージを編集するpip install -e .
async/await を忘れるすべてのリサーチメソッドは非同期です
None に対して websocket.send_json() を呼び出す先に if websocket: を確認します
リトリーバーを登録しないretriever.py の match 文に追加します

リファレンスドキュメント

トピックファイル
システムアーキテクチャと図references/architecture.md
コアコンポーネントとシグネチャreferences/components.md
リサーチフローとデータフローreferences/flows.md
プロンプトシステムreferences/prompts.md
リトリーバーシステムreferences/retrievers.md
MCP 統合references/mcp.md
ディープリサーチモードreferences/deep-research.md
マルチエージェントシステムreferences/multi-agents.md
機能追加ガイドreferences/adding-features.md
高度なパターンreferences/advanced-patterns.md
REST および WebSocket APIreferences/api-reference.md
設定変数references/config-reference.md

コメント