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.
openprobe-demo.mp4
- 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.
- 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/.
The system uses LangGraph to orchestrate the search process:
- Master Node: Routes to other nodes based on the current state.
- Plan Node: Generates a structured research plan.
- Search Node: Executes web searches and summarizes findings.
- Code Node: Generates and executes Python code for computation.
- Solve Node: Synthesizes intermediate results into a final answer.
- Replan Node: Reflects on failures and generates a new plan.
- 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)
-
Clone Repository
git clone https://github.com/Open-Probe/Open-Probe.git cd Open-Probe -
Install Dependencies
# This single command installs all Python dependencies pip install -e .
Note: This project uses
uvfor faster dependency management, butpipis fully supported. -
Set Up API Keys
Create a
.envfile 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
To run the services manually:
-
Start the Backend
python backend/start_server.py
-
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.
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 --interactiveopenprobe_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
- 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.
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.
This project builds upon and integrates ideas and code from various open-source projects, including:
- LangChain
- LangGraph
- LlamaIndex β For data connectors and query engines.
- Serper API β For web search capabilities.
- Jina AI β For computing text embeddings.
- Mistral β For LLM-based grading and evaluation.
- LangGraph ReWOO implementation - Reference implemenation of ReWOO.
- OpenDeepSearch - For implementing the web search tool and FRAMES evaluation.
Many thanks to these projects and their communities for making this work possible!
We'd like to thank the following people for their contributions to this project:
- Suryansh Singh Rawat β Developer, Researcher
- Kuo-Hsin Tu β Developer, Researcher
- Jean Yu β Developer
- Ankit Basu β Researcher