mcpField
G
gpt-researcher

gpt-researcher

github.com/assafelovic开发30.3k2.1k 次安装3 周前更新
代码仓库

关于 gpt-researcher

GPT Researcher Development Skill 是 GPT Researcher 的开发指南;GPT Researcher 是基于大模型的研究 Agent。内容涵盖架构、功能与检索器开发、配置及 MCP 数据源集成。

主要功能

  1. 01研究器架构指南
  2. 02功能实现模式
  3. 03检索器开发指南
  4. 04配置与集成参考
  5. 05MCP 数据源配置

适用场景

  1. 01为 GPT Researcher 添加功能
  2. 02实现搜索检索器
  3. 03配置研究行为
  4. 04连接 MCP 数据源

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 是一个基于大模型的自主 Agent,采用规划者-执行者-发布者模式,并通过并行化的 Agent 工作来提升速度与可靠性。

快速开始

基础 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. Provider → 在 gpt_researcher/llm_provider/my_feature/ 中创建
  3. Skill → 在 gpt_researcher/skills/my_feature.py 中创建
  4. Agent → 集成到 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

包含 Image Generation 案例研究的完整功能添加指南:参见 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


错误处理

在 Skill 中始终使用优雅降级:

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
多 Agent 系统references/multi-agents.md
添加功能指南references/adding-features.md
高级模式references/advanced-patterns.md
REST 与 WebSocket APIreferences/api-reference.md
配置变量references/config-reference.md

评论

支持 Markdown