GPT Researcher

自主 AI 研究代理系统 - 架构与功能文档

v0.14.5

项目概览

GPT Researcher 是一个开源的自主 AI 研究代理,能够对任何给定主题进行全面的在线研究。 它通过并行搜索、智能抓取和多智能体协作,生成专业级的研究报告。

175
Python 文件
16
检索引擎
8
抓取器
7
智能体角色
10+
LLM 提供商
3
输出格式

系统架构图

👤 用户 研究查询输入
🌐 Web UI HTML/JS 界面
📱 CLI 命令行接口
⚡ FastAPI REST API :8000
🔌 WebSocket 实时消息流
🧠 GPTResearcher 核心研究代理
研究技能模块
🔍 研究员 ResearchConductor
✍️ 写作 ReportGenerator
📚 上下文 ContextManager
🌐 浏览器 BrowserManager
外部服务
🤖 LLM API DeepSeek/OpenAI
🔎 搜索引擎 DuckDuckGo/Tavily
🌍 目标网站 抓取内容源
📄 Markdown
📕 PDF
📘 DOCX

单 Agent 研究流程

1
📝 接收研究查询
用户输入研究主题,系统初始化 GPTResearcher 实例,加载配置、LLM 和检索器
2
🔀 查询分解
使用 LLM 将复杂主题分解为多个子查询,生成针对性的搜索关键词列表
3
🔍 并行搜索
同时执行多个搜索引擎查询,获取网页链接和摘要,评估源的相关性和可信度
4
🕷️ 网页抓取
智能选择合适的抓取器(BeautifulSoup/Firecrawl/浏览器自动化),提取并清理主要内容
5
🧩 信息综合
LLM 合并多个来源的信息,消除重复和矛盾内容,验证事实准确性
6
📊 生成报告
结构化组织研究发现,添加参考链接,输出 Markdown/PDF/DOCX 格式报告

多智能体协作系统 (LangGraph)

基于 LangGraph 框架的多智能体协调系统,通过专业分工和流水线协作生成高质量研究报告

👑
ChiefEditor
总编协调者
🔬
Researcher
研究员
📋
Editor
编辑规划
✍️
Writer
内容写手
🔎
Reviewer
质量评审
🔧
Reviser
修订改进
📤
Publisher
发布输出

多智能体工作流程

Browser → Planner → [Human Feedback] → Researcher → Writer → Reviewer → Reviser → Publisher │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ 格式化输出 │ │ │ │ │ │ └─ 修订改进 │ │ │ │ │ └─ 质量检查 │ │ │ │ └─ 内容撰写 │ │ │ └─ 深度研究 │ │ └─ 用户确认 (可选) │ └─ 研究规划 └─ 初始搜索

核心功能模块

检索引擎 (16种)

🦆

DuckDuckGo

免费搜索引擎,无需 API 密钥,隐私保护

免费
🔮

Tavily

AI 优化搜索 API,专为研究任务设计

付费
🔴

Google

完整网络索引,最全面的搜索覆盖

付费
📚

arXiv

学术论文预印本,科研文献检索

免费
🏥

PubMed

医学生命科学文献数据库

免费
🎓

Semantic Scholar

AI 驱动的学术搜索引擎

免费

网页抓取器 (8种)

抓取器 适用场景 特点
BeautifulSoup 静态 HTML 页面 轻量、快速、稳定
Firecrawl JavaScript 动态网站 云端渲染、高成功率
Browser 复杂交互页面 Playwright/Selenium 自动化
PyMuPDF PDF 文档 精确文本提取
arXiv 学术论文 专用论文解析

支持的 LLM 提供商

🟢 DeepSeek

deepseek-chat, deepseek-reasoner

当前配置

🔵 OpenAI

GPT-4o, GPT-4-turbo, GPT-3.5

🟣 Anthropic

Claude 3.5 Sonnet, Claude 3 Opus

🔴 Google

Gemini Pro, Gemini Ultra

⚫ Ollama

本地部署开源模型

🟠 Groq

超快推理加速

用户旅程

💡

1. 确定研究主题

用户输入想要研究的主题,例如:"2024年人工智能在医疗领域的最新应用"

⚙️

2. 配置研究参数

选择报告类型(基础/详细/深度)、输出格式(MD/PDF/DOCX)、报告字数等

🚀

3. 启动研究任务

点击"开始研究",系统自动开始执行多轮搜索和信息收集

📊

4. 实时查看进度

通过 WebSocket 实时接收研究进度更新,查看正在访问的网站和提取的信息

📝

5. 获取研究报告

研究完成后,获得结构化的报告,包含摘要、详细分析、参考来源

💬

6. 深度对话探索

基于研究结果进行追问,获取更详细的解释或探索相关子主题

API 端点参考

方法 端点 描述
GET / 提供 Web UI 前端页面
GET /health 健康检查接口
POST /api/research 启动新的研究任务
GET /api/status/{task_id} 查询研究任务状态
WS /ws WebSocket 实时消息流
POST /api/chat 基于研究结果的对话
POST /api/upload 上传本地文档作为研究源
POST /api/export/{format} 导出报告为指定格式

研究请求示例

POST /api/research Content-Type: application/json { "query": "人工智能在医疗诊断中的应用", "report_type": "detailed_report", "report_format": "markdown", "tone": "objective", "max_iterations": 5, "source_urls": [] // 可选:指定特定来源 }

配置说明

环境变量 (.env)

# LLM 配置 (当前使用 DeepSeek) DEEPSEEK_API_KEY=sk-*** FAST_LLM=deepseek:deepseek-chat # 快速任务 SMART_LLM=deepseek:deepseek-chat # 智能任务 STRATEGIC_LLM=deepseek:deepseek-reasoner # 战略推理 # 检索配置 RETRIEVER=duckduckgo # 搜索引擎 MAX_SEARCH_RESULTS_PER_QUERY=5 # 每次搜索结果数 # 报告配置 TOTAL_WORDS=2000 # 报告字数 REPORT_FORMAT=markdown # 输出格式

核心文件路径

文件 路径 说明
主 Agent gpt_researcher/agent.py GPTResearcher 类定义
研究引擎 gpt_researcher/skills/researcher.py 核心研究逻辑
后端服务 backend/server/app.py FastAPI 应用
多智能体编排 multi_agents/agents/orchestrator.py LangGraph 协调
提示模板 gpt_researcher/prompts.py 所有提示词定义
项目入口 main.py 服务启动脚本

快速启动命令

# 启动后端服务 cd /home/ccp/gpt-researcher python main.py # 服务运行在 http://0.0.0.0:8000 # 使用 PM2 管理 pm2 start "python main.py" --name gpt-researcher # CLI 命令行使用 python cli.py "你的研究主题" --report_type detailed_report # 多智能体模式 cd multi_agents && python main.py