Skip to main content

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.
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:
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.
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.
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