Skip to main content

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.

image

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

image

The CLI uses a research subcommand. Examples:

# Basic usage
deep-probe research "What is quantum computing?"

# Long prompt from file (e.g. -i prompt.txt)
deep-probe research -i prompt.txt --save report.md --stream --verbose

# 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

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

deep_probe-0.1.4.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deep_probe-0.1.4-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file deep_probe-0.1.4.tar.gz.

File metadata

  • Download URL: deep_probe-0.1.4.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for deep_probe-0.1.4.tar.gz
Algorithm Hash digest
SHA256 5df4c4b6c1cb54180100df5a03ebec38c978b91b4f1a0f11514b6082e92072c1
MD5 1ae37546810befb9369def4d9b00b4fb
BLAKE2b-256 147554ac0927915ab1049df2f58cf64ba0faa8f8181bb779b15e82c3c9b4717e

See more details on using hashes here.

File details

Details for the file deep_probe-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: deep_probe-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for deep_probe-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 318e1a4704b5049770b022edc747854673d8dc1a500d1fccda41af94cb24a6cc
MD5 b018ebf366d16593d51e4aa2fc2e332b
BLAKE2b-256 d870766de9b515fb27427ba64ae3ed9d4225669bc91fcc33159632dd02824072

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page