Radicas Docs
Framework integrationsAgent frameworks

Google ADK

Connect a Google ADK agent to Radicas — the reference integration, native gen_ai telemetry, no shim.

Status: stable — the reference integration and the only one verified end-to-end on the bench (fixture captured, registry card google-adk filled, ClickHouse views confirmed).

Install

pip install "radicas[adk]"        # = radicas + google-adk

Use

import radicas

radicas.init(service="pricing-agent", feature="flight-pricing")
# instrument="auto" detects google.adk — activation is a no-op because ADK emits
# canonical gen_ai.* on the global tracer the SDK wired. Nothing else to do.

from google.adk.runners import InMemoryRunner
runner = InMemoryRunner(agent=my_agent, app_name="pricing-agent")
# ... drive the agent ...
radicas.shutdown()

Explicit selection also works: radicas.init(instrument=["adk"]) (alias for google-adk).

What it emits

  • Scope name: google.adk (also gcp.vertex.agent_engine on Agent Engine) — verified.
  • Span tree: the canonical invoke_agent → generate_content → execute_tool, natively. transfer_to_agent spans are routing, excluded from tool counts.
  • Coverage (from the registry card, fixture-verified):
FieldCovered
gen_ai.request.modelyes
gen_ai.usage.input_tokensyes
gen_ai.usage.output_tokensyes
gen_ai.usage.reasoning.output_tokensyes
cache tokens (cache_read / cache_creation)not yet in the coverage matrix — pending fixture with caching enabled
gen_ai.response.finish_reasonsyes
gen_ai.system (provider)no — ADK (verified 2.3.0) does not set it on generate_content; cost is unaffected (it keys on the model)
tool treeyes
content eventsyes (opt-in, logs signal)

Shim behavior

  • Client-side adapter: none needed — identity maps. The SDK still stamps radicas.source_framework=google-adk at export for observability.
  • Server-side OTTL: stamp only, no renames.

Known limitations

  • gen_ai.system is empty on real generate_content spans (see above).
  • This page's example uses Gemini via an AI Studio API key; Vertex deployments emit under the gcp.vertex.agent_engine scope, which the registry also recognizes.

Verify it works

-- ClickHouse (local lab: clickhouse-client / HTTP :8123)
SELECT agent_id, invocations, total_tokens, estimated_cost_usd FROM otel.agent_fleet;
SELECT model, input_tokens, output_tokens, estimated_cost_usd
  FROM otel.llm_call ORDER BY ts DESC LIMIT 5;
SELECT tool_name, status, error_type FROM otel.tool_call ORDER BY ts DESC LIMIT 5;

Dashboard: Cost & Profitability should show your feature within one metric interval. Runnable bench example: agents/google-adk/python/run_sdk.py in radicas-integrations.

On this page