Local Deep Research - Programmatic API Examples
This directory contains examples demonstrating how to use Local Deep Research programmatically without requiring authentication or database access.
Quick Start
All examples use the programmatic API that bypasses authentication:
from local_deep_research.api import quick_summary, detailed_research
from local_deep_research.api.settings_utils import create_settings_snapshot
# Create settings for programmatic mode
settings = create_settings_snapshot({
"search.tool": "wikipedia"
})
# Run research
result = quick_summary(
"your topic",
settings_snapshot=settings,
programmatic_mode=True
)
Examples Overview
| Example | Purpose | Key Features | Difficulty |
|---|---|---|---|
| minimal_working_example.py | Simplest possible example | Basic setup, minimal code | Beginner |
| simple_programmatic_example.py | Common use cases with the new API | quick_summary, detailed_research, generate_report, custom parameters | Beginner |
| search_strategies_example.py | Demonstrates search strategies | source-based vs focused-iteration strategies | Intermediate |
| hybrid_search_example.py | Combine multiple search sources | Multiple retrievers, web + retriever combo | Intermediate |
| advanced_features_example.py | Advanced programmatic features | generate_report, export formats, result analysis, keyword extraction | Advanced |
| custom_llm_retriever_example.py | Custom LLM and retriever integration | Ollama, custom retrievers, FAISS | Advanced |
| searxng_example.py | Web search with SearXNG | SearXNG integration, error handling | Advanced |
Example Details
minimal_working_example.py
Purpose: Show the absolute minimum code needed to use LDR programmatically.
- Creates a simple LLM and search engine
- Runs a basic search
- No external dependencies beyond Ollama
simple_programmatic_example.py
Purpose: Demonstrate the main API functions with practical examples.
quick_summary()- Fast research with summarydetailed_research()- Comprehensive research with findingsgenerate_report()- Create full markdown reports- Custom search parameters
- Different search tools (Wikipedia, SearXNG, etc.)
search_strategies_example.py
Purpose: Explain and demonstrate the two main search strategies.
- source-based: Comprehensive research with detailed citations
- focused-iteration: Iterative refinement of research questions
- Side-by-side comparison of strategies
- When to use each strategy
hybrid_search_example.py
Purpose: Show how to combine multiple search sources for comprehensive research.
- Multiple named retrievers for different document types
- Combining custom retrievers with web search
- Source analysis and tracking
advanced_features_example.py
Purpose: Demonstrate advanced programmatic features and analysis capabilities.
generate_report()- Create comprehensive markdown reports- Export formats - JSON, Markdown, custom formats
- Result analysis - Extract insights and patterns
- Keyword extraction - Identify key terms and concepts
- Batch research - Process multiple queries efficiently
custom_llm_retriever_example.py
Purpose: Advanced integration with custom components.
- Custom LLM implementation (using Ollama)
- Custom retriever with embeddings
- Vector store integration (FAISS)
- Direct use of AdvancedSearchSystem
searxng_example.py
Purpose: Web search integration using SearXNG.
- SearXNG configuration
- Error handling and fallbacks
- Real-time web search
- Direct use of search engines
Key Concepts
Programmatic Mode
All examples use programmatic_mode=True as an explicit parameter to bypass authentication:
result = quick_summary(
query="your topic",
settings_snapshot=settings,
programmatic_mode=True
)
Search Strategies
- source-based: Best for academic research, fact-checking
- focused-iteration: Best for exploratory research, complex topics
Search Tools
Available search tools include:
wikipedia- Wikipedia searcharxiv- Academic paperssearxng- Web search via SearXNG (recommended default)
With the default langgraph-agent strategy, the research agent can also call
other enabled engines dynamically per query — the former auto/meta
engines were removed in favor of this.
Custom Retrievers
You can provide your own retrievers:
result = quick_summary(
query="topic",
retrievers={"my_docs": custom_retriever},
search_tool="my_docs",
settings_snapshot=settings,
programmatic_mode=True
)
API Functions
quick_summary()
Generate a quick research summary:
from local_deep_research.api import quick_summary
from local_deep_research.api.settings_utils import create_settings_snapshot
settings = create_settings_snapshot({})
result = quick_summary(
query="Your research question",
settings_snapshot=settings,
search_tool="wikipedia",
iterations=2,
programmatic_mode=True
)
detailed_research()
Perform in-depth research with multiple iterations:
from local_deep_research.api import detailed_research
result = detailed_research(
query="Your research question",
settings_snapshot=settings,
search_strategy="source-based",
iterations=3,
questions_per_iteration=5,
programmatic_mode=True
)
generate_report()
Generate comprehensive markdown reports with structured sections:
from local_deep_research.api import generate_report
from local_deep_research.api.settings_utils import create_settings_snapshot
settings = create_settings_snapshot(overrides={"programmatic_mode": True})
result = generate_report(
query="Your research question",
settings_snapshot=settings,
output_file="report.md",
searches_per_section=3
)
Requirements
- Python 3.8+
- Local Deep Research installed
- Ollama (for most examples)
- SearXNG instance (for searxng_example.py)
Running the Examples
-
Install Local Deep Research:
pip install -e . -
Start Ollama (if using Ollama examples):
ollama serve ollama pull gemma3:12b ollama pull nomic-embed-text # For embeddings -
Run any example:
python minimal_working_example.py python simple_programmatic_example.py python search_strategies_example.py
Troubleshooting
"No settings context available" Error
Make sure to pass settings_snapshot and programmatic_mode to all API functions:
settings = create_settings_snapshot({})
result = quick_summary(
"topic",
settings_snapshot=settings,
programmatic_mode=True
)
Ollama Connection Error
Ensure Ollama is running:
ollama serve
SearXNG Connection Error
Start a SearXNG instance or use the fallback in the example:
docker run -p 8080:8080 searxng/searxng
Contributing
When adding new examples:
- Focus on demonstrating specific features
- Include clear comments explaining the code
- Handle errors gracefully
- Update this README with the new example
License
See the main project LICENSE file.