Deep Research ✨ NEW ✨
With the latest "Deep Research" trend in the AI community, we're excited to implement our own Open source deep research capability! Introducing GPT Researcher's Deep Research - an advanced recursive research system that explores topics with unprecedented depth and breadth.
Each deep research takes around 5 minutes to complete and costs around $0.4 (using o3-mini
on "high"
reasoning effort)
How It Works
Deep Research employs a fascinating tree-like exploration pattern:
- Breadth: At each level, it generates multiple search queries to explore different aspects of your topic
- Depth: For each branch, it recursively dives deeper, following leads and uncovering connections
- Concurrent Processing: Utilizes async/await patterns to run multiple research paths simultaneously
- Smart Context Management: Automatically aggregates and synthesizes findings across all branches
- Progress Tracking: Real-time updates on research progress across both breadth and depth dimensions
Think of it as deploying a team of AI researchers, each following their own research path while collaborating to build a comprehensive understanding of your topic.
Process Flow
Quick Start
from gpt_researcher import GPTResearcher
from gpt_researcher.utils.enum import ReportType, Tone
import asyncio
async def main():
# Initialize researcher with deep research type
researcher = GPTResearcher(
query="What are the latest developments in quantum computing?",
report_type="deep", # This triggers deep research modd
)
# Run research
research_data = await researcher.conduct_research()
# Generate report
report = await researcher.write_report()
print(report)
if __name__ == "__main__":
asyncio.run(main())
Configuration
Deep Research behavior can be customized through several parameters:
deep_research_breadth
: Number of parallel research paths at each level (default: 4)deep_research_depth
: How many levels deep to explore (default: 2)deep_research_concurrency
: Maximum number of concurrent research operations (default: 4)total_words
: Total words in the generated report (recommended: 2000)
You can configure these parameters in multiple ways:
- Environment Variables:
export DEEP_RESEARCH_BREADTH=4
export DEEP_RESEARCH_DEPTH=2
export DEEP_RESEARCH_CONCURRENCY=4
export TOTAL_WORDS=2500
- Config File:
deep_research_breadth: 4
deep_research_depth: 2
deep_research_concurrency: 4
total_words: 2500
researcher = GPTResearcher(
query="your query",
report_type="deep",
config_path="path/to/config.yaml" # Configure deep research parameters here
)
Progress Tracking
The on_progress
callback provides real-time insights into the research process:
class ResearchProgress:
current_depth: int # Current depth level
total_depth: int # Maximum depth to explore
current_breadth: int # Current number of parallel paths
total_breadth: int # Maximum breadth at each level
current_query: str # Currently processing query
completed_queries: int # Number of completed queries
total_queries: int # Total queries to process
Error Handling
The deep research workflow is designed to be resilient:
- Failed queries are automatically skipped
- Research continues even if some branches fail
- Progress tracking helps identify any issues
Best Practices
- Start Broad: Begin with a general query and let the system explore specifics
- Monitor Progress: Use the progress callback to understand the research flow
- Adjust Parameters: Tune breadth and depth based on your needs:
- More breadth = wider coverage
- More depth = deeper insights
- Resource Management: Consider concurrency limits based on your system capabilities
Limitations
- Usage of reasoning LLM models such as
o3-mini
- Deep research may take longer than standard research
- Higher API usage and costs due to multiple concurrent queries
- May require more system resources for parallel processing
Happy researching! 🎉