> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quraite.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google ADK

> How to integrate Google ADK agents with Quraite.

## Overview

Quraite provides a built-in adapter for Google ADK agents. This adapter allows you to integrate Google ADK agents with Quraite and run evaluations on them.

This adapter uses OpenInference instrumentation to capture the trajectory of the agent.

## Prerequisites

* Agent dependencies: `google-adk` package, Gemini API key, and any tools you want to use.
* Quraite dependencies: `quraite[google-adk-oi]` package.

## Define Your Google ADK Agent

You create a normal Google ADK `Agent` first, exactly as you would in any Google ADK project.

```python theme={null}
import datetime
from zoneinfo import ZoneInfo

from google.adk.agents import Agent


def get_weather(city: str) -> dict:
    """Return a simple weather report for a city."""
    if city.lower() == "new york":
        return {
            "status": "success",
            "report": (
                "The weather in New York is sunny with a temperature of 25°C "
                "(77°F)."
            ),
        }
    elif city.lower() == "london":
        return {
            "status": "success",
            "report": (
                "The weather in London is cloudy with a temperature of 18°C "
                "(64°F)."
            ),
        }
    else:
        return {
            "status": "error",
            "error_message": f"Weather information for '{city}' is not available.",
        }


def get_current_time(city: str) -> dict:
    """Return the current time in a city."""
    if city.lower() == "new york":
        tz_identifier = "America/New_York"
    elif city.lower() == "london":
        tz_identifier = "Europe/London"
    else:
        return {
            "status": "error",
            "error_message": f"Sorry, I don't have timezone information for {city}.",
        }

    tz = ZoneInfo(tz_identifier)
    now = datetime.datetime.now(tz)
    report = f'The current time in {city} is {now.strftime("%Y-%m-%d %H:%M:%S %Z%z")}'
    return {"status": "success", "report": report}


weather_time_agent = Agent(
    name="weather_time_agent",
    model="gemini-2.5-flash",
    description="Agent to answer questions about the time and weather in a city.",
    instruction=(
        "You are a helpful agent who can answer user questions about the time "
        "and weather in a city. Always use the provided tools to get "
        "accurate information."
    ),
    tools=[get_weather, get_current_time],
)
```

If you want to use MCP tools, you can replace the `tools` list with a `McpToolset` and other tools. See the end-to-end examples section for a complete implementation.

## Set up Tracing

Quraite provides a tracing setup helper. For Google ADK, pass the `Framework.GOOGLE_ADK` enum:

```python theme={null}
from quraite.tracing import Framework, setup_tracing


tracer_provider = setup_tracing([Framework.GOOGLE_ADK])
```

## Wrap the Google ADK Agent

Wrap the agent with the `GoogleADKAdapter` and pass the `tracer_provider` to it.

```python theme={null}
from quraite.adapters import GoogleADKAdapter


adapter = GoogleADKAdapter(
    agent=weather_time_agent,
    app_name="agents",
    agent_name="Weather Time Agent",
    tracer_provider=tracer_provider,
)
```

## Run the Agent

Once wrapped, you expose the adapter using Quraite's `run_agent` helper.

```python theme={null}
if __name__ == "__main__":
    from dotenv import load_dotenv
    from quraite import run_agent

    load_dotenv(override=True)

    run_agent(
        adapter,
        port=8080,
        host="0.0.0.0",
        tunnel="cloudflare",
    )
```

## End-to-End Examples

* [Google ADK weather agent example](https://github.com/innowhyte/quraite-python/tree/main/examples/google_adk_weather_agent)
* [Google ADK multi-agent example](https://github.com/innowhyte/quraite-python/tree/main/examples/google_adk_multi_agent)
