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
^^^^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 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
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 30 20 50
* - 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 :doc:`/how-to/integrations/multi-provider`.
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.
.. raw:: html
.. raw:: html
**Best for**: Open-source projects, simple tracing needs, getting started quickly
.. code-block:: bash
# 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
.. raw:: html
.. code-block:: python
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}")
.. raw:: html
.. code-block:: python
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
.. raw:: html
**Common OpenInference Issues**:
1. **Missing Traces**
.. code-block:: python
# 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**
.. code-block:: python
# OpenInference uses efficient span processors automatically
# No additional configuration needed
3. **Multiple Instrumentors**
.. code-block:: python
# 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**
.. code-block:: bash
# 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"
.. raw:: html