Integrate with Google Agent Development Kit (ADK)

Note

Problem-solving guide for Google Agent Development Kit (ADK) integration

This guide helps you solve specific problems when integrating HoneyHive with Google Agent Development Kit (ADK), with support for multiple instrumentor options.

This guide covers Google Agent Development Kit (ADK) integration with HoneyHive’s BYOI architecture, supporting both OpenInference and Traceloop instrumentors.

Compatibility

Problem: I need to know if my Python version and Google Agent Development Kit (ADK) SDK version are compatible with HoneyHive.

Solution: Check the compatibility information below before installation.

Python Version Support

Support Level

Python Versions

Fully Supported

3.11, 3.12, 3.13

Not Supported

3.10 and below

Provider SDK Requirements

  • Minimum: google-adk >= 1.0.0

  • Recommended: google-adk >= 1.2.0

  • Tested Versions: 1.2.0, 1.3.0

Instrumentor Compatibility

Instrumentor

Status

Notes

OpenInference

Fully Supported

Multi-agent workflows and tool calling fully traced

Traceloop

Not Supported

Traceloop instrumentor not available for Google ADK - use OpenInference

Known Limitations

  • Traceloop: Not available for Google ADK, OpenInference only

  • Multi-Agent Workflows: Requires nested span management for proper trace hierarchy

  • Tool Calling: Fully supported with automatic tool execution tracing

  • Streaming Responses: Partial support, manual span finalization needed

Note

For the complete compatibility matrix across all providers, see Multi-Provider Integration.

Choose Your Instrumentor

Problem: I need to choose between OpenInference and Traceloop for Google Agent Development Kit (ADK) integration.

Solution: Choose the instrumentor that best fits your needs:

  • OpenInference: Open-source, lightweight, great for getting started

  • Traceloop: Traceloop does not currently provide a Google ADK instrumentor. Only OpenInference instrumentation is available for this provider.

Best for: Open-source projects, simple tracing needs, getting started quickly

# Recommended: Install with Google Agent Development Kit (ADK) integration
pip install honeyhive[openinference-google-adk]

# Alternative: Manual installation
pip install honeyhive openinference-instrumentation-google-adk google-adk>=1.0.0
from honeyhive import HoneyHiveTracer
from openinference.instrumentation.google_adk import GoogleADKInstrumentor
import google.adk
import os

# Environment variables (recommended for production)
# .env file:
# HH_API_KEY=your-honeyhive-key
# GOOGLE_API_KEY=your-google-adk-key

# Step 1: Initialize HoneyHive tracer first (without instrumentors)
tracer = HoneyHiveTracer.init(
    project="your-project"  # Or set HH_PROJECT environment variable
)  # Uses HH_API_KEY from environment

# Step 2: Initialize instrumentor separately with tracer_provider
instrumentor = GoogleADKInstrumentor()
instrumentor.instrument(tracer_provider=tracer.provider)

# Basic usage with error handling
try:
    agent = adk.Agent(
        name="document_processor",
        model="gemini-pro"
    )

    result = agent.run(
        task="Analyze this document",
        input_data={"document": document_content}
    )
    # Automatically traced! ✨
except google.adk.ADKError as e:
    print(f"Google Agent Development Kit (ADK) API error: {e}")
except Exception as e:
    print(f"Unexpected error: {e}")
from honeyhive import HoneyHiveTracer, trace, enrich_span
from honeyhive.models import EventType
from openinference.instrumentation.google_adk import GoogleADKInstrumentor
import google.adk

# Initialize with custom configuration
# Step 1: Initialize HoneyHive tracer first (without instrumentors)
tracer = HoneyHiveTracer.init(
    api_key="your-honeyhive-key",  # Or set HH_API_KEY environment variable
    project="your-project",        # Or set HH_PROJECT environment variable
    source="production"            # Or set HH_SOURCE environment variable
)

# Step 2: Initialize instrumentor separately with tracer_provider
instrumentor = GoogleADKInstrumentor()
instrumentor.instrument(tracer_provider=tracer.provider)

@trace(tracer=tracer, event_type=EventType.chain)
def multi_agent_workflow(documents: List[str]) -> dict:
    """Advanced example with business context and multiple Google Agent Development Kit (ADK) calls."""
    import google.adk as adk

    # Configure Google ADK
    adk.configure(api_key=os.getenv("GOOGLE_API_KEY"))

    # Add business context to the trace
    enrich_span({
        "business.input_type": type(documents).__name__,
        "business.use_case": "multi_agent_analysis",
        "google-adk.strategy": "parallel_processing",
        "instrumentor.type": "openinference"
    })

    try:
        # Create specialized agents
    analyzer = adk.Agent(
        name="document_analyzer",
        model="gemini-pro",
        tools=["text_analysis", "summarization"]
    )

    reviewer = adk.Agent(
        name="quality_reviewer",
        model="gemini-ultra",
        tools=["quality_check", "fact_verification"]
    )

    results = []
    for doc in documents:
        # Agent 1: Analyze document
        analysis = analyzer.run(
            task="Analyze document structure and content",
            input_data={"document": doc}
        )

        # Agent 2: Review analysis quality
        review = reviewer.run(
            task="Review analysis for accuracy and completeness",
            input_data={"analysis": analysis.output}
        )

        results.append({
            "document": doc,
            "analysis": analysis.output,
            "review": review.output
        })

    # Add result metadata
    enrich_span({
        "business.successful": True,
        "google-adk.models_used": ["gemini-pro", "gemini-ultra"],
        "business.result_confidence": "high"
    })

    return {
        "processed_documents": len(results),
        "analysis_results": results,
        "workflow_completed": True
    }

        # Add result metadata
        enrich_span({
            "business.successful": True,
            "google-adk.models_used": ["gemini-pro", "gemini-ultra"],
            "business.result_confidence": "high"
        })

        return {"processed_documents": len(results), "analysis_results": results, "workflow_completed": True}

    except google.adk.ADKError as e:
        enrich_span({
            "error.type": "api_error",
            "error.message": str(e),
            "instrumentor.source": "openinference"
        })
        raise

Common OpenInference Issues:

  1. Missing Traces

    # Use correct initialization pattern
    # Step 1: Initialize HoneyHive tracer first (without instrumentors)
    tracer = HoneyHiveTracer.init(
        project="your-project"  # Or set HH_PROJECT environment variable
    )
    
    # Step 2: Initialize instrumentor separately with tracer_provider
    instrumentor = GoogleADKInstrumentor()
    instrumentor.instrument(tracer_provider=tracer.provider)
    
  2. Performance for High Volume

    # OpenInference uses efficient span processors automatically
    # No additional configuration needed
    
  3. Multiple Instrumentors

    # You can combine OpenInference with other instrumentors
    from openinference.instrumentation.google_adk import GoogleADKInstrumentor
     from openinference.instrumentation.openai import OpenAIInstrumentor
    
     # Step 1: Initialize HoneyHive tracer first (without instrumentors)
     tracer = HoneyHiveTracer.init(
         project="your-project"  # Or set HH_PROJECT environment variable
     )
    
     # Step 2: Initialize instrumentors separately with tracer_provider
     # REPLACE_WITH_INSTRUMENTOR_SETUP
             GoogleADKInstrumentor(),
             OpenAIInstrumentor()
         ]
     )
    
  4. Environment Configuration

    # HoneyHive configuration
    export HH_API_KEY="your-honeyhive-api-key"
    export HH_SOURCE="production"
    
    # Google Agent Development Kit (ADK) configuration
    export GOOGLE_API_KEY="your-google-adk-api-key"