Skip to content

OpenProbe is an advanced agent-based search system that performs deep web searches to answer complex questions. It uses a graph-based approach with LangGraph to orchestrate different components and deliver comprehensive answers.

License

Notifications You must be signed in to change notification settings

Open-Probe/Open-Probe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

56 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OpenProbe - Advanced Agent-Based Search System

OpenProbe is an opensource agent-based search system that performs deep web searches to answer complex questions. You can use any form of LLM model inference to use this system. It uses a LangGraph-based agent orchestrator, web UI made with Next.js, and a comprehensive evaluation framework.

🎬 Here's how it looks like

openprobe-demo.mp4

πŸ—οΈ Architecture

image

✨ Features

  • Deep Web Search: Multi-step search process with automated planning and execution.
  • Adaptive Replanning: Revises search strategies when initial plans fall short.
  • Reflection: Explains why previous plans failed and how they were improved.
  • Intelligent Reranking: Jina-powered result reranking with optional local reranker support.
  • Query Rewriting: Rephrases tool inputs into better search queries.
  • Code Execution Tool: Executes Python code in a local REPL to compute answers.
  • Multi-Model Support: Natively supports Google Gemini and any OpenAI-compatible models via providers like Lambda.
  • Evaluation Framework: Built-in system for testing search quality.

Core Components

  • Frontend: A Next.js-based web interface in frontend/.
  • Backend: A FastAPI server providing a REST API and WebSocket connection in backend/.
  • Search Engine: The main agent orchestration system in src/deepsearch/graph.py.
  • Web Search: Search functionality in src/deepsearch/web_search/.
  • State Management: Agent state management in src/deepsearch/state.py.
  • Evaluation System: Testing framework in evals/.

LangGraph Workflow

The system uses LangGraph to orchestrate the search process:

  1. Master Node: Routes to other nodes based on the current state.
  2. Plan Node: Generates a structured research plan.
  3. Search Node: Executes web searches and summarizes findings.
  4. Code Node: Generates and executes Python code for computation.
  5. Solve Node: Synthesizes intermediate results into a final answer.
  6. Replan Node: Reflects on failures and generates a new plan.

πŸ› οΈ Installation

Prerequisites

  • Python 3.8+
  • Node.js and npm
  • API keys for:
    • Google Gemini API or an OpenAI-compatible API key (e.g., for Lambda).
    • Serper.dev API (for web search)
    • Jina API (for reranking, if not using a local reranker)

Setup Steps

  1. Clone Repository

    git clone https://github.com/Open-Probe/Open-Probe.git
    cd Open-Probe
  2. Install Dependencies

    # This single command installs all Python dependencies
    pip install -e .

    Note: This project uses uv for faster dependency management, but pip is fully supported.

  3. Set Up API Keys

    Create a .env file in the project root with your API keys:

    # Google Gemini API key (default provider)
    GOOGLE_API_KEY=your_api_key
    
    # Serper.dev API key for web search
    WEB_SEARCH_API_KEY=your_api_key
    
    # Jina API key for reranking
    JINA_API_KEY=your_api_key
    
    # Optional: Use Lambda/OpenAI-compatible models
    LAMBDA_API_KEY=your_api_key

πŸš€ Running OpenProbe

To run the services manually:

  1. Start the Backend

    python backend/start_server.py
  2. Start the Frontend

    cd frontend
    # Install dependencies (only on first run)
    npm install
    # Run the UI
    npm run dev

Access the UI at http://localhost:3000.

Using the CLI

The CLI provides direct access to the DeepSearch agent.

# The package should already be installed from the setup steps

# Run a search
python -m src.deepsearch.cli search "How many meters taller is the Burj Khalifa compared to the Empire State Building?"

# Run with more replanning attempts
python -m src.deepsearch.cli search --max-replan 2 "What year was the first Uber employee born?"

# Run in interactive mode
python -m src.deepsearch.cli search --interactive

πŸ“ Project Structure

openprobe_dev/
β”œβ”€β”€ backend/                # FastAPI backend for the UI
β”œβ”€β”€ frontend/               # Next.js frontend for the UI
β”œβ”€β”€ src/deepsearch/         # Core DeepSearch module
β”‚   β”œβ”€β”€ graph.py            # LangGraph workflow definition
β”‚   β”œβ”€β”€ state.py            # State management
β”‚   β”œβ”€β”€ prompt.py           # System prompts
β”‚   β”œβ”€β”€ cli.py              # Command-line interface
β”‚   └── web_search/         # Web search components
β”œβ”€β”€ evals/                  # Evaluation framework
β”œβ”€β”€ pyproject.toml          # Python project configuration and dependencies
└── requirements.txt        # Python dependencies

πŸ”‘ Key Dependencies

  • FastAPI: Backend server.
  • Next.js: Frontend UI.
  • Google Gemini API: Default LLM provider.
  • Lambda: Supported provider for OpenAI-compatible models.
  • Serper.dev: Web search functionality.
  • Jina: Search result reranking.
  • LangGraph: Workflow orchestration.

πŸ“„ License

This project is licensed under the Apache License Version 2.0. You are free to use, modify, and distribute this code, subject to the terms of the license.


🧩 References and Acknowledgements

This project builds upon and integrates ideas and code from various open-source projects, including:

Many thanks to these projects and their communities for making this work possible!


πŸ‘₯ Contributors

We'd like to thank the following people for their contributions to this project:

About

OpenProbe is an advanced agent-based search system that performs deep web searches to answer complex questions. It uses a graph-based approach with LangGraph to orchestrate different components and deliver comprehensive answers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •