Skip to main content

title: open research-lite colorFrom: red colorTo: crimson sdk: gradio sdk_version: 4.44.0 app_file: app.py pinned: false license: mit short_description: Autonomous Deep Research Agent with Differential Knowledge Graphs and Dual-Model Architecture tags:

  • deep-research
  • llm-agents
  • gpt-researcher
  • knowledge-graph
  • agentic-rag
  • token-optimization
  • dual-model
  • paper:10.5281/zenodo.22168098

open research-lite

Autonomous Deep Research Agent with Differential Knowledge Graphs and Dual-Model Pipeline
Slashes 70–85% token bloat, extracts atomic fact assertions, catches metric contradictions deterministically, and synthesizes executive research dossiers.

PyPI version Tests License: MIT Python 3.10+ DOI Token Savings


Why open research-lite over GPT-Researcher?

In conventional research agents (such as GPT-Researcher), over 70% to 85% of prompt tokens are consumed ingesting repetitive introductory fluff, boilerplate history, and SEO prose across multi-page web search streams. Furthermore, GPT-Researcher's "Fast LLM" is only used for generating search sub-queries, while raw scraped web pages (50,000+ tokens) are dumped directly into the expensive "Smart LLM". When two sources present divergent metrics (for example, 26W vs 31W peak package power), conventional agents silently average or hallucinate.

open research-lite introduces an architectural layer add-on with Session Knowledge-State Tracking ($G_t = G_{t-1} \cup \Delta G_t$) that supercharges the Fast LLM & Smart LLM pipeline:

  1. Fast LLM (fast_llm / extractor_model): A fast, cost-efficient model (e.g., gemini-2.5-flash, gpt-4o-mini, claude-3-5-haiku, llama-3.1-8b) acts as an intelligent gatekeeper. It sifts raw web scrapes, isolates Subject-Predicate-Object triplets and quantitative metrics, prunes 70%+ redundant text, and detects metric contradictions.
  2. Smart LLM (smart_llm / writer_model): A flagship reasoning model (e.g., claude-3-5-sonnet, gpt-4o, gemini-2.5-pro, o1, deepseek-r1) receives only the high-signal, distilled differential graph assertions (~1,200 tokens instead of 50,000+ raw tokens) and writes a comprehensive, structured research dossier.
Capability GPT-Researcher open research-lite Why It Matters
Ingestion Pipeline Raw document stuffing (50k+ tokens) Dual-Model Differential Graph 70%+ Cheaper API costs and sub-second synthesis
Fast LLM Role Search sub-query generator only Fact Extractor & Contradiction Radar Converts raw scrapes into verified fact graph
Contradiction Detection None (silently averages) Deterministic Contradiction Radar Flags real metric disputes across sources
Visual Knowledge Graph None Interactive HTML / Mermaid Dossier Visual entity relationship mapping
Interactive Terminal UI Basic stdout Crimson Terminal Dashboard (Claude Code-inspired) Full model dropdowns, live progress, metric scorecards
Multi-Tenancy & Isolation Varies Thread-Safe Session Isolation Zero state leakage between concurrent runs
Drop-in Compatibility GPTResearcher from open_research_lite import GPTResearcher 1-line seamless replacement

Quickstart

1. Installation

pip install open-research-lite

2. Launch the Terminal Wizard

After installing via pip, launch the interactive crimson TUI:

# Universal command (works on any OS, no PATH setup needed):
python -m open_research_lite

# Direct CLI command:
open-research

# Or pass a research topic directly:
open-research "High-Bandwidth Memory HBM4 Architecture and Interconnect Scaling"

Automatically generates both a clean Markdown dossier (research_report.md) and a standalone visual HTML report (research_report.html) with embedded interactive Mermaid knowledge graphs!


3. Supported Production Models

open research-lite supports 18+ production models selectable directly from interactive dropdowns:

  • Google: Gemini 2.5 Flash, Gemini 2.5 Pro
  • OpenAI: GPT-4o, GPT-4o Mini, GPT-4.1, o1, o3-mini
  • Anthropic: Claude 3.5 Sonnet, Claude 3.5 Haiku, Claude 3 Opus
  • DeepSeek: DeepSeek-R1, DeepSeek-V3
  • Meta / Groq: Llama 3.3 70B, Llama 3.1 8B, Mixtral 8x7B
  • Mistral: Mistral Large, Mistral Small

4. Python API (Drop-in GPT-Researcher Replacement)

Use open research-lite as a drop-in replacement for GPT-Researcher with identical fast_llm and smart_llm parameters:

import asyncio
from open_research_lite import GPTResearcher, Researcher

async def main():
    # 1. Initialize Researcher with Fast LLM and Smart LLM
    researcher = GPTResearcher(
        query="High-Bandwidth Memory HBM4 Architecture Trends",
        report_type="research_report",
        fast_llm="gpt-4o-mini",               # Fast LLM for fact extraction & graph building
        smart_llm="claude-3-5-sonnet-latest", # Smart LLM for analytical dossier writing
        search_api="tavily",                  # Or "duckduckgo" for free search
        max_results=5
    )

    # 2. Conduct research (extracts facts and updates session graph)
    await researcher.conduct_research()

    # 3. Synthesize structured report
    report = await researcher.write_report()
    print(report)

    # 4. Export visual HTML dossier and Markdown
    researcher.export_markdown("hbm4_report.md")
    researcher.export_html("hbm4_dossier.html")

    # 5. Inspect telemetry & graph stats
    stats = researcher.get_stats()
    print(f"Token reduction: {stats['telemetry']['token_reduction_pct']}%")
    print(f"Verified assertions: {stats['graph']['total_facts']}")

if __name__ == "__main__":
    asyncio.run(main())

5. Standalone Middleware Usage (for LangGraph, CrewAI, AutoGPT)

You can use the core ConceptDiffEngine as gatekeeper middleware for existing agent architectures:

import asyncio
from open_research_lite import ConceptDiffEngine

async def main():
    engine = ConceptDiffEngine(model_name="gemini-2.5-flash")

    raw_scrape = """
    High-Bandwidth Memory (HBM) stacks integrate multiple DRAM dies via TSVs.
    In 2026, engineers validated an HBM4 memory stack delivering 2.8 TB/s peak bandwidth per stack.
    Operating power consumption is measured at 26W under full saturation.
    """

    # Intercept raw scrape and convert into dense diff payload
    diff_payload = await engine.process_observation(
        raw_text=raw_scrape,
        source_url="https://semiconductor-audit.org/hbm4-2026",
        source_title="HBM4 Interface Milestone"
    )

    print(diff_payload)

if __name__ == "__main__":
    asyncio.run(main())

Interactive Visual HTML Dossier

Every research mission exports an interactive dark-mode HTML dossier containing:

  1. Mermaid.js Knowledge Graph: Pan, zoom, and inspect verified entity links and relationships.
  2. Contradiction Radar: Callout cards highlighting conflicting claims between sources.
  3. Efficiency Scorecard: Raw input tokens, pruned redundant tokens, and unique mapped entities.
  4. Structured Executive Dossier: Executive summary, key metrics, and linked source citations.

Repository Structure

open-research-lite/
├── src/
│   └── open_research_lite/         # Production package (v0.3.1)
│       ├── __init__.py             # Top-level exports (Researcher, GPTResearcher, exceptions)
│       ├── __main__.py             # Interactive crimson TUI wizard
│       ├── researcher.py           # Core orchestrator with bounded async concurrency
│       ├── diff_engine.py          # Differential fact extraction & contradiction engine
│       ├── knowledge_graph.py      # Thread-safe SessionKnowledgeGraph (RLock)
│       ├── models.py               # Multi-provider LLM factory (Google, OpenAI, Anthropic, etc.)
│       ├── exceptions.py           # Typed exception hierarchy
│       └── telemetry.py            # Token cost and latency metrics
├── docs/                           # Whitepapers, technical specifications & proposals
│   ├── RESEARCH_PAPER.md           # Formal paper on Concept-Diffing architecture
│   ├── paper.tex                   # LaTeX preprint
│   └── proposals/                  # Platform integration proposals
├── benchmarks/                     # GAIA & deep research benchmarks and verified results
│   ├── results/                    # Benchmark scorecards and evaluation outputs
│   └── legacy_eval/                # Historical benchmark harnesses
├── examples/                       # Developer guides & quickstart scripts
│   ├── quickstart_researcher.py    # Complete Python API walkthrough
│   └── reports/                    # Domain-specific sample reports
├── tests/                          # Production unit & integration test suites (16/16 passing)
│   ├── test_researcher.py          # Researcher API, dual models, custom search tests
│   └── test_concept_diff.py        # Fact diffing and knowledge graph tests
├── cli.py                          # Direct launcher
├── open-research.cmd               # Custom Windows terminal command
└── pyproject.toml                  # Package configuration (v0.3.1)

Enterprise Production Features (v0.3.1)

  • Zero Silent Fallback: Web search failures and credential gaps explicitly raise typed ConfigurationError or SearchProviderError rather than silently degrading.
  • Structured Search Ingestion: DuckDuckGo and Tavily ingest discrete per-source records with real URLs, page titles, and snippets instead of single monolithic text blobs.
  • Native Model Output Ceilings: Dynamic resolution sets exact physical output limits (64k for Claude 3.7, 8,192 for Claude 3.5 Sonnet/Haiku, 4,096 for Opus), preventing HTTP 400 Bad Request errors.
  • Automatic Provider Resolution: get_default_models() auto-detects configured environment keys (Gemini $\to$ OpenAI $\to$ Anthropic $\to$ Groq $\to$ DeepSeek $\to$ Mistral) for true zero-config operation.
  • Bounded Asynchronous Concurrency: Parallel source processing via asyncio.Semaphore(max_concurrency) prevents API rate limits and thread starvation during web crawls.
  • Custom Search Provider Injection: Supply your own search callback (search_func) to query internal enterprise databases, vector indices, or proprietary APIs seamlessly.
  • Structured JSON Export: Call export_json("output.json") or to_dict() to ingest research graph nodes, facts, contradiction warnings, and telemetry directly into microservice pipelines.
  • Strongly-Typed Exceptions: Catch granular errors (ConfigurationError, SearchProviderError, FactExtractionError, ReportSynthesisError) without unhandled crashes or silent mock fallbacks.
  • Thread-Safe Multi-Tenancy: SessionKnowledgeGraph and TelemetryTracker employ reentrant locking (threading.RLock) to guarantee complete thread safety across parallel worker threads.

Testing & Verification

# Run the complete test suite (16 tests)
pytest tests/ -v

# Or run individual test scripts
python tests/test_concept_diff.py
python tests/test_researcher.py

# Run quickstart demo
python examples/quickstart_researcher.py

Citation

@article{openresearchlite2026,
  title={Differential Knowledge-State Tracking for Token-Efficient Autonomous Deep Research Agents},
  author={open research-lite Team},
  year={2026},
  doi={10.5281/zenodo.22168098}
}

License

MIT License. Open source and production ready.

Metadata

Release files for open-research-lite 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for open-research-lite 0.3.3
File Size Uploaded
open_research_lite-0.3.3.tar.gz 40.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for open-research-lite 0.3.3
File Interpreter ABI Platform
open_research_lite-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 75.2 kB

Release files / open_research_lite-0.3.3.tar.gz

Download URL open_research_lite-0.3.3.tar.gz
Size 40.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c6995016880f0b051c3d00e5e943d2c92b6b239b17e9a82f88bafee515dc4fe2
BLAKE2b-256 checksum
How to use checksums
723411e315ca3808305fdf0e3e4b54748200448505be9bbbdbce8ba7019ac5bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / open_research_lite-0.3.3-py3-none-any.whl

Download URL open_research_lite-0.3.3-py3-none-any.whl
Size 34.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a8e6265dc105d5aa8d8de5c571da6f6ab2e97b4b6aca88a94d8059dc0bbbcc0
BLAKE2b-256 checksum
How to use checksums
90fb25be855404df411c6e9f3b5ded77af459b4f32a90fefaf344c4dcf7dff94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page