gpt-researcher by assafelovic/gpt-researcher
npx skills add https://github.com/assafelovic/gpt-researcher --skill gpt-researcherGPT Researcher 是一款基于 LLM 的自主智能体,采用规划者-执行者-发布者模式,并利用并行化的智能体工作流程来提升速度和可靠性。
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())
# 后端
python -m uvicorn backend.server.server:app --reload --port 8000
# 前端
cd frontend/nextjs && npm install && npm run dev
| 需求 | 主要文件 | 关键类 |
|---|---|---|
| 主协调器 | gpt_researcher/agent.py |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
GPTResearcher |
| 研究逻辑 | gpt_researcher/skills/researcher.py | ResearchConductor |
| 报告撰写 | gpt_researcher/skills/writer.py | ReportGenerator |
| 所有提示词 | gpt_researcher/prompts.py | PromptFamily |
| 配置 | gpt_researcher/config/config.py | Config |
| 配置默认值 | gpt_researcher/config/variables/default.py | DEFAULT_CONFIG |
| API 服务器 | backend/server/app.py | FastAPI 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
gpt_researcher/config/variables/default.pygpt_researcher/llm_provider/my_feature/ 中创建gpt_researcher/skills/my_feature.py 中创建gpt_researcher/agent.py 中集成gpt_researcher/prompts.pystream_output() 处理事件useWebSocket.ts 中处理事件docs/docs/gpt-researcher/gptr/my_feature.md查看包含图像生成案例的完整功能添加指南 : 参见 references/adding-features.md
# 1. 创建: 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]:
# 返回: [{"title": str, "href": str, "body": str}]
pass
# 2. 在 gpt_researcher/actions/retriever.py 中注册
case "my_retriever":
from gpt_researcher.retrievers.my_retriever import MyRetriever
return MyRetriever
# 3. 在 gpt_researcher/retrievers/__init__.py 中导出
查看完整的检索器文档 : 参见 references/retrievers.md
配置键在访问时需转为小写:
# 在 default.py 中: "SMART_LLM": "gpt-4o"
# 访问方式: self.cfg.smart_llm # 小写!
优先级:环境变量 → JSON 配置文件 → 默认值
查看完整的配置参考 : 参见 references/config-reference.md
class WebSocketHandler:
async def send_json(self, data):
print(f"[{data['type']}] {data.get('output', '')}")
researcher = GPTResearcher(query="...", websocket=WebSocketHandler())
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", # 触发递归的树状探索
)
查看深度研究配置 : 参见 references/deep-research.md
在技能中始终使用优雅降级:
async def execute(self, ...):
if not self.is_enabled():
return [] # 不要崩溃
try:
result = await self.provider.execute(...)
return result
except Exception as e:
await stream_output("logs", "error", f"⚠️ {e}", self.websocket)
return [] # 优雅降级
| ❌ 错误做法 | ✅ 正确做法 |
|---|---|
config.MY_VAR | config.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 API | references/api-reference.md |
| 配置变量 | references/config-reference.md |
每周安装量
341
代码库
GitHub 星标数
26.0K
首次出现
Jan 31, 2026
安全审计
安装于
codex308
opencode308
gemini-cli298
github-copilot292
amp291
kimi-cli288
GPT Researcher is an LLM-based autonomous agent using a planner-executor-publisher pattern with parallelized agent work for speed and reliability.
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
| Need | Primary File | Key Classes |
|---|---|---|
| Main orchestrator | gpt_researcher/agent.py | GPTResearcher |
| Research logic | gpt_researcher/skills/researcher.py | ResearchConductor |
| Report writing | gpt_researcher/skills/writer.py | ReportGenerator |
| All prompts | gpt_researcher/prompts.py | PromptFamily |
| Configuration | gpt_researcher/config/config.py | Config |
| Config defaults | gpt_researcher/config/variables/default.py | DEFAULT_CONFIG |
| API server | backend/server/app.py | FastAPI app |
| Search engines | gpt_researcher/retrievers/ | Various 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
For detailed architecture diagrams : See references/architecture.md
gpt_researcher/config/variables/default.pygpt_researcher/llm_provider/my_feature/gpt_researcher/skills/my_feature.pygpt_researcher/agent.pygpt_researcher/prompts.pystream_output()useWebSocket.tsFor complete feature addition guide with Image Generation case study : See 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
For complete retriever documentation : See references/retrievers.md
Config keys are lowercased when accessed:
# In default.py: "SMART_LLM": "gpt-4o"
# Access as: self.cfg.smart_llm # lowercase!
Priority: Environment Variables → JSON Config File → Default Values
For complete configuration reference : See references/config-reference.md
class WebSocketHandler:
async def send_json(self, data):
print(f"[{data['type']}] {data.get('output', '')}")
researcher = GPTResearcher(query="...", websocket=WebSocketHandler())
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"
)
For MCP integration details : See references/mcp.md
researcher = GPTResearcher(
query="Comprehensive analysis of quantum computing",
report_type="deep", # Triggers recursive tree-like exploration
)
For deep research configuration : See references/deep-research.md
Always use graceful degradation in skills:
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
| ❌ Mistake | ✅ Correct |
|---|---|
config.MY_VAR | config.my_var (lowercased) |
| Editing pip-installed package | pip install -e . |
| Forgetting async/await | All research methods are async |
websocket.send_json() on None | Check if websocket: first |
| Not registering retriever | Add to retriever.py match statement |
| Topic | File |
|---|---|
| System architecture & diagrams | references/architecture.md |
| Core components & signatures | references/components.md |
| Research flow & data flow | references/flows.md |
| Prompt system | references/prompts.md |
| Retriever system | references/retrievers.md |
| MCP integration | references/mcp.md |
| Deep research mode | references/deep-research.md |
| Multi-agent system |
Weekly Installs
341
Repository
GitHub Stars
26.0K
First Seen
Jan 31, 2026
Security Audits
Gen Agent Trust HubFailSocketPassSnykWarn
Installed on
codex308
opencode308
gemini-cli298
github-copilot292
amp291
kimi-cli288
AI Elements:基于shadcn/ui的AI原生应用组件库,快速构建对话界面
56,200 周安装
Nuxt UI v4 组件库 | Vue 3 & Nuxt 4+ 开发必备 | 基于 Tailwind CSS
3,300 周安装
UI/UX Pro Max 设计指南:避免AI生成感,打造高级SaaS/着陆页设计原则与实现
3,400 周安装
Three.js 动画教程 - 从程序化动画到关键帧系统完整指南
3,300 周安装
Angular v20+ 测试指南:使用 Vitest 测试信号组件与最佳实践
3,300 周安装
后端架构模式与最佳实践 - REST/GraphQL API设计、仓储模式、服务层优化
3,400 周安装
Deep Agents Memory:LangChain AI 智能体内存管理 - 临时与持久化存储解决方案
3,500 周安装
docs/docs/gpt-researcher/gptr/my_feature.md| references/multi-agents.md |
| Adding features guide | references/adding-features.md |
| Advanced patterns | references/advanced-patterns.md |
| REST & WebSocket API | references/api-reference.md |
| Configuration variables | references/config-reference.md |