Research anything, deeply, in one line of code. A Python library wrapping Google Gemini Deep Research API.
Project description
Deep Probe
Research anything, deeply, in one line of code.
A Python library that wraps Google Gemini Deep Research API with automatic reconnection and structured output.
Features
- Simple API: One line of code to run deep research
- Auto-reconnection: Handles network failures with exponential backoff
- Structured output: Pydantic models for type-safe results
- Sync & Async: Both synchronous and asynchronous interfaces
- Streaming: Real-time output with thought summaries
- CLI tool: Rich-powered command-line interface
- Resume support: Resume interrupted research operations
Installation
pip install deep-probe
Quick Start
Python API
from deep_probe import DeepProbe
# Initialize (uses GEMINI_API_KEY environment variable)
probe = DeepProbe()
# Run research
result = probe.research("What is quantum computing?")
# Access the report
print(result.report)
# Save to file
result.save("report.md")
Async API
import asyncio
from deep_probe import DeepProbe
async def main():
probe = DeepProbe()
result = await probe.research_async("AI trends 2024")
print(result.report)
asyncio.run(main())
Streaming API
from deep_probe import DeepProbe
probe = DeepProbe()
def on_text(text: str):
print(text, end="", flush=True)
def on_thought(thought: str):
print(f"\n💭 {thought}\n")
result = probe.research_stream(
"What is the future of AI?",
on_text=on_text,
on_thought=on_thought,
)
CLI
The CLI uses a research subcommand. Examples:
# Basic usage
deep-probe research "What is quantum computing?"
# Save to file
deep-probe research "AI trends 2024" --save report.md
# Show thinking process
deep-probe research "Climate change effects" --verbose
# Stream output in real-time
deep-probe research "Research topic" --stream
# Quiet mode (only output report)
deep-probe research "Test topic" --quiet
# Resume previous research
deep-probe research --resume "interaction-id-here"
Configuration
Set your Google Gemini API key:
export GEMINI_API_KEY='your-api-key'
Or create a .env file:
GEMINI_API_KEY=your-api-key
Get your API key from Google AI Studio.
API Reference
DeepProbe
Main client for running deep research.
from deep_probe import DeepProbe, ResearchResult
# Initialize with optional settings
probe = DeepProbe(
api_key="optional-api-key", # Or use GEMINI_API_KEY env var
thinking_summaries=True, # Enable thinking summaries output
)
# Synchronous research
result: ResearchResult = probe.research("topic")
# Asynchronous research
result: ResearchResult = await probe.research_async("topic")
# Streaming research with callbacks
result: ResearchResult = probe.research_stream(
"topic",
on_text=lambda text: print(text, end=""),
on_thought=lambda thought: print(f"💭 {thought}"),
)
# Resume previous research
result: ResearchResult = probe.resume("interaction-id")
result: ResearchResult = await probe.resume_async("interaction-id")
ResearchResult
result.report # str - The research report in markdown
result.sources # list[Citation] - Sources cited
result.thoughts # list[Thought] - Research process/thinking summaries
result.cost_usage # TokenUsage - Token statistics
result.interaction_id # str - Unique identifier for resume
result.status # ResearchStatus - Final status
result.save("file.md") # Save to file
Exceptions
from deep_probe.exceptions import (
DeepProbeError, # Base exception
ProbeAuthError, # API key issues
ProbeNetworkError, # Connection failures (includes interaction_id)
ProbeTimeoutError, # Time limit exceeded
ProbeAPIError, # Server-side errors
ProbeCancelledError, # User cancellation
)
Auto-Reconnection
DeepProbe handles network failures automatically:
| Scenario | Action | Max Retries | Delay |
|---|---|---|---|
| Network disconnect | Auto-reconnect | 3 | 2s → 4s → 8s |
| API rate limit | Wait and retry | 3 | 60s |
| Auth error | No retry | 0 | N/A |
All network errors include interaction_id for resuming interrupted research.
Google Gemini Deep Research
This library uses the deep-research-pro-preview-12-2025 agent from Google's Gemini API. Key characteristics:
- Max duration: 60 minutes per research task
- Sources: Uses Google Search and URL context tools
- Pricing: ~$2-5 per task (estimates from Google)
- Output: Markdown-formatted research reports
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
ruff check .
# Run type checking
mypy src/
License
Apache License 2.0
Links
- GitHub: https://github.com/liu-kaining/DeepProbe
- Author: liukaining
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deep_probe-0.1.3.tar.gz.
File metadata
- Download URL: deep_probe-0.1.3.tar.gz
- Upload date:
- Size: 36.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0901719662cd1f3bc572c10d008da060c2a5d56663fa2c6bc4cdd5472dacc856
|
|
| MD5 |
0e66a2605428d3cae65733d318e56e7d
|
|
| BLAKE2b-256 |
71ca7928e847626ee8a7b9400c55c43a1e181b9435418345e33bc6a7171aa011
|
File details
Details for the file deep_probe-0.1.3-py3-none-any.whl.
File metadata
- Download URL: deep_probe-0.1.3-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb687696db5e3a199fe84819f2ab1cbff0feb23b7c6c53152f2d0477e7983ede
|
|
| MD5 |
6a5b41f64d4b892fbefc45196218745f
|
|
| BLAKE2b-256 |
2102d870bce0e5fe7efc8db04db0e94f23d0ec15e694d6e9a3d2fcee2e8dca1b
|