gpt-researcher

安装量: 280
排名: #3206

安装

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

GPT Researcher Development Skill GPT Researcher is an LLM-based autonomous agent using a planner-executor-publisher pattern with parallelized agent work for speed and reliability. Quick Start Basic Python Usage 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 ( ) ) Run Servers

Backend

python -m uvicorn backend.server.server:app --reload --port 8000

Frontend

cd
frontend/nextjs
&&
npm
install
&&
npm
run dev
Key File Locations
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
Architecture Overview
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
Core Patterns
Adding a New Feature (8-Step Pattern)
Config
→ Add to
gpt_researcher/config/variables/default.py
Provider
→ Create in
gpt_researcher/llm_provider/my_feature/
Skill
→ Create in
gpt_researcher/skills/my_feature.py
Agent
→ Integrate in
gpt_researcher/agent.py
Prompts
→ Update
gpt_researcher/prompts.py
WebSocket
→ Events via
stream_output()
Frontend
→ Handle events in
useWebSocket.ts
Docs
→ Create
docs/docs/gpt-researcher/gptr/my_feature.md
For complete feature addition guide with Image Generation case study
See references/adding-features.md Adding a New Retriever

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 Configuration 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 Common Integration Points WebSocket Streaming class WebSocketHandler : async def send_json ( self , data ) : print ( f"[ { data [ 'type' ] } ] { data . get ( 'output' , '' ) } " ) researcher = GPTResearcher ( query = "..." , websocket = WebSocketHandler ( ) ) MCP Data Sources 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 Deep Research Mode 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 Error Handling 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

Critical Gotchas ❌ 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 Reference Documentation 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 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

返回排行榜