Files
2026-07-24 18:22:51 +00:00

476 lines
41 KiB
HTML

<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Google Analytics tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DKHZS27PHP"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag("js", new Date());
gtag("config", "G-DKHZS27PHP");
</script>
<!-- Generated by javadoc (26) -->
<title>Tracing (Google Agent Development Kit Maven Parent POM 1.7.0 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: com.google.adk.telemetry, class: Tracing">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../";
loadScripts();
initTheme();
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/Tracing.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../search.html">Search</a></li>
<li><button id="theme-button" aria-label="Select Theme" title="Select Theme"></button></li>
</ul>
<div id="theme-panel">
<div>Select Theme</div>
<div><label for="theme-light"><input type="radio" id="theme-light" disabled name="theme" value="theme-light"><span>Light</span></label><label for="theme-dark"><input type="radio" id="theme-dark" disabled name="theme" value="theme-dark"><span>Dark</span></label><label for="theme-os"><input type="radio" id="theme-os" disabled name="theme" value="theme-os"><span>System Setting</span></label></div>
</div>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="package-summary.html">com.google.adk.telemetry</a></li>
<li><a href="Tracing.html" class="current-selection">Tracing</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset">&nbsp;<button class="toc-sort-toggle" id="toc-lexical-order-toggle"><img src="../../../../resource-files/sort-a-z.svg" alt="Sort member details in lexicographical order"></button></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#nested-class-summary" tabindex="0">Nested Class Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#setTracerForTesting(io.opentelemetry.api.trace.Tracer)" tabindex="0">setTracerForTesting(Tracer)</a></li>
<li><a href="#traceAgentInvocation(io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)" tabindex="0">traceAgentInvocation(Span, String, String, InvocationContext)</a></li>
<li><a href="#traceToolExecution(io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,java.lang.String,java.util.Map,com.google.adk.events.Event,java.lang.Throwable)" tabindex="0">traceToolExecution(Span, String, String, String, Map, Event, Throwable)</a></li>
<li><a href="#traceCallLlm(io.opentelemetry.api.trace.Span,com.google.adk.agents.InvocationContext,java.lang.String,com.google.adk.models.LlmRequest,com.google.adk.models.LlmResponse,java.lang.Exception)" tabindex="0">traceCallLlm(Span, InvocationContext, String, LlmRequest, LlmResponse, Exception)</a></li>
<li><a href="#traceSendData(io.opentelemetry.api.trace.Span,com.google.adk.agents.InvocationContext,java.lang.String,java.util.List)" tabindex="0">traceSendData(Span, InvocationContext, String, List)</a></li>
<li><a href="#traceMergedToolCalls(io.opentelemetry.api.trace.Span,java.lang.String,com.google.adk.events.Event)" tabindex="0">traceMergedToolCalls(Span, String, Event)</a></li>
<li><a href="#getTracer()" tabindex="0">getTracer()</a></li>
<li><a href="#traceFlowable(io.opentelemetry.context.Context,io.opentelemetry.api.trace.Span,java.util.function.Supplier)" tabindex="0">traceFlowable(Context, Span, Supplier)</a></li>
<li><a href="#trace(java.lang.String)" tabindex="0">trace(String)</a></li>
<li><a href="#traceAgent(java.lang.String,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)" tabindex="0">traceAgent(String, String, String, InvocationContext)</a></li>
<li><a href="#withContext(io.opentelemetry.context.Context)" tabindex="0">withContext(Context)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class Tracing" class="title">Class Tracing</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.google.adk.telemetry.Tracing</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Tracing</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class in java.lang" class="external-link">Object</a></span></div>
<div class="block">Utility class for capturing and reporting telemetry data within the ADK. This class provides
methods to trace various aspects of the agent's execution, including tool calls, tool responses,
LLM interactions, and data handling. It leverages OpenTelemetry for tracing and logging for
detailed information. These traces can then be exported through the ADK Dev Server UI.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="Tracing.ContextTransformer.html" class="type-name-link" title="class in com.google.adk.telemetry">Tracing.ContextTransformer</a>&lt;<a href="Tracing.ContextTransformer.html#type-param-T" title="type parameter in Tracing.ContextTransformer">T</a>&gt;</code></div>
<div class="col-last even-row-color">
<div class="block">A transformer that re-activates a given context for the duration of the stream's subscription.</div>
</div>
<div class="col-first odd-row-color"><code>static final class&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="Tracing.TracerProvider.html" class="type-name-link" title="class in com.google.adk.telemetry">Tracing.TracerProvider</a>&lt;<a href="Tracing.TracerProvider.html#type-param-T" title="type parameter in Tracing.TracerProvider">T</a>&gt;</code></div>
<div class="col-last odd-row-color">
<div class="block">A transformer that manages an OpenTelemetry span and scope for RxJava streams.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static io.opentelemetry.api.trace.Tracer</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getTracer()" class="member-name-link">getTracer</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Gets the tracer.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setTracerForTesting(io.opentelemetry.api.trace.Tracer)" class="member-name-link">setTracerForTesting</a><wbr>(io.opentelemetry.api.trace.Tracer&nbsp;tracer)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Sets the OpenTelemetry instance to be used for tracing.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="Tracing.TracerProvider.html" title="class in com.google.adk.telemetry">Tracing.TracerProvider</a><wbr>&lt;T&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#trace(java.lang.String)" class="member-name-link">trace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;spanName)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a transformer that traces the execution of an RxJava stream.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static &lt;T&gt;&nbsp;<a href="Tracing.TracerProvider.html" title="class in com.google.adk.telemetry">Tracing.TracerProvider</a><wbr>&lt;T&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#traceAgent(java.lang.String,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)" class="member-name-link">traceAgent</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;spanName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentDescription,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#traceAgentInvocation(io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)" class="member-name-link">traceAgentInvocation</a><wbr>(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentDescription,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Sets span attributes immediately available on agent invocation according to OTEL semconv
version 1.37.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#traceCallLlm(io.opentelemetry.api.trace.Span,com.google.adk.agents.InvocationContext,java.lang.String,com.google.adk.models.LlmRequest,com.google.adk.models.LlmResponse,java.lang.Exception)" class="member-name-link">traceCallLlm</a><wbr>(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;eventId,
<a href="../models/LlmRequest.html" title="class in com.google.adk.models">LlmRequest</a>&nbsp;llmRequest,
<a href="../models/LlmResponse.html" title="class in com.google.adk.models">LlmResponse</a>&nbsp;llmResponse,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class in java.lang" class="external-link">Exception</a>&nbsp;error)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Traces a call to the LLM.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;io.reactivex.rxjava3.core.Flowable<wbr>&lt;T&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#traceFlowable(io.opentelemetry.context.Context,io.opentelemetry.api.trace.Span,java.util.function.Supplier)" class="member-name-link">traceFlowable</a><wbr>(io.opentelemetry.context.Context&nbsp;spanContext,
io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="interface in java.util.function" class="external-link">Supplier</a>&lt;io.reactivex.rxjava3.core.Flowable&lt;T&gt;&gt;&nbsp;flowableSupplier)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Executes a Flowable with an OpenTelemetry Scope active for its entire lifecycle.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#traceMergedToolCalls(io.opentelemetry.api.trace.Span,java.lang.String,com.google.adk.events.Event)" class="member-name-link">traceMergedToolCalls</a><wbr>(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;responseEventId,
<a href="../events/Event.html" title="class in com.google.adk.events">Event</a>&nbsp;functionResponseEvent)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Traces merged tool call events.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#traceSendData(io.opentelemetry.api.trace.Span,com.google.adk.agents.InvocationContext,java.lang.String,java.util.List)" class="member-name-link">traceSendData</a><wbr>(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;eventId,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="interface in java.util" class="external-link">List</a>&lt;com.google.genai.types.Content&gt;&nbsp;data)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Traces the sending of data (history or new content) to the agent/model.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#traceToolExecution(io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,java.lang.String,java.util.Map,com.google.adk.events.Event,java.lang.Throwable)" class="member-name-link">traceToolExecution</a><wbr>(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;toolName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;toolDescription,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;toolType,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class in java.lang" class="external-link">Object</a>&gt;&nbsp;args,
@Nullable <a href="../events/Event.html" title="class in com.google.adk.events">Event</a>&nbsp;functionResponseEvent,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class in java.lang" class="external-link">Throwable</a>&nbsp;error)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Traces a tool execution, including its arguments, response, and any potential error.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T&gt;&nbsp;<a href="Tracing.ContextTransformer.html" title="class in com.google.adk.telemetry">Tracing.ContextTransformer</a><wbr>&lt;T&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#withContext(io.opentelemetry.context.Context)" class="member-name-link">withContext</a><wbr>(io.opentelemetry.context.Context&nbsp;context)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a transformer that re-activates a given context for the duration of the stream's
subscription.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#method-summary" title="class in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="clone()" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="equals(Object)" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="finalize()" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="getClass()" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="hashCode()" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="notify()" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="notifyAll()" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="toString()" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="wait()" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="wait(long)" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="wait(long, int)" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="setTracerForTesting(io.opentelemetry.api.trace.Tracer)">
<h3>setTracerForTesting</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setTracerForTesting</span><wbr><span class="parameters">(io.opentelemetry.api.trace.Tracer&nbsp;tracer)</span></div>
<div class="block">Sets the OpenTelemetry instance to be used for tracing. This is for testing purposes only.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="traceAgentInvocation(io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)">
<h3>traceAgentInvocation</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">traceAgentInvocation</span><wbr><span class="parameters">(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentDescription,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext)</span></div>
<div class="block">Sets span attributes immediately available on agent invocation according to OTEL semconv
version 1.37.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>span</code> - Span on which attributes are set.</dd>
<dd><code>agentName</code> - Agent name from which attributes are gathered.</dd>
<dd><code>agentDescription</code> - Agent description from which attributes are gathered.</dd>
<dd><code>invocationContext</code> - InvocationContext from which attributes are gathered.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="traceToolExecution(io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,java.lang.String,java.util.Map,com.google.adk.events.Event,java.lang.Throwable)">
<h3>traceToolExecution</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">traceToolExecution</span><wbr><span class="parameters">(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;toolName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;toolDescription,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;toolType,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class in java.lang" class="external-link">Object</a>&gt;&nbsp;args,
@Nullable <a href="../events/Event.html" title="class in com.google.adk.events">Event</a>&nbsp;functionResponseEvent,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class in java.lang" class="external-link">Throwable</a>&nbsp;error)</span></div>
<div class="block">Traces a tool execution, including its arguments, response, and any potential error.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>span</code> - The span representing the tool execution.</dd>
<dd><code>toolName</code> - The name of the tool.</dd>
<dd><code>toolDescription</code> - The tool's description.</dd>
<dd><code>toolType</code> - The tool's type (e.g., "FunctionTool").</dd>
<dd><code>args</code> - The arguments passed to the tool.</dd>
<dd><code>functionResponseEvent</code> - The event containing the tool's response, if successful.</dd>
<dd><code>error</code> - The exception thrown during execution, if any.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="traceCallLlm(io.opentelemetry.api.trace.Span,com.google.adk.agents.InvocationContext,java.lang.String,com.google.adk.models.LlmRequest,com.google.adk.models.LlmResponse,java.lang.Exception)">
<h3>traceCallLlm</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">traceCallLlm</span><wbr><span class="parameters">(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;eventId,
<a href="../models/LlmRequest.html" title="class in com.google.adk.models">LlmRequest</a>&nbsp;llmRequest,
<a href="../models/LlmResponse.html" title="class in com.google.adk.models">LlmResponse</a>&nbsp;llmResponse,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class in java.lang" class="external-link">Exception</a>&nbsp;error)</span></div>
<div class="block">Traces a call to the LLM.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>invocationContext</code> - The invocation context.</dd>
<dd><code>eventId</code> - The ID of the event associated with this LLM call/response.</dd>
<dd><code>llmRequest</code> - The LLM request object.</dd>
<dd><code>llmResponse</code> - The LLM response object.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="traceSendData(io.opentelemetry.api.trace.Span,com.google.adk.agents.InvocationContext,java.lang.String,java.util.List)">
<h3>traceSendData</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">traceSendData</span><wbr><span class="parameters">(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;eventId,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="interface in java.util" class="external-link">List</a>&lt;com.google.genai.types.Content&gt;&nbsp;data)</span></div>
<div class="block">Traces the sending of data (history or new content) to the agent/model.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>invocationContext</code> - The invocation context.</dd>
<dd><code>eventId</code> - The ID of the event, if applicable.</dd>
<dd><code>data</code> - A list of content objects being sent.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="traceMergedToolCalls(io.opentelemetry.api.trace.Span,java.lang.String,com.google.adk.events.Event)">
<h3>traceMergedToolCalls</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">traceMergedToolCalls</span><wbr><span class="parameters">(io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;responseEventId,
<a href="../events/Event.html" title="class in com.google.adk.events">Event</a>&nbsp;functionResponseEvent)</span></div>
<div class="block">Traces merged tool call events.
<p>Calling this function is not needed for telemetry purposes. This is provided for preventing
/debug/trace requests (typically sent by web UI).</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>responseEventId</code> - The ID of the response event.</dd>
<dd><code>functionResponseEvent</code> - The merged response event.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="getTracer()">
<h3>getTracer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">io.opentelemetry.api.trace.Tracer</span>&nbsp;<span class="element-name">getTracer</span>()</div>
<div class="block">Gets the tracer.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>The tracer.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="traceFlowable(io.opentelemetry.context.Context,io.opentelemetry.api.trace.Span,java.util.function.Supplier)">
<h3>traceFlowable</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>
<span class="return-type">io.reactivex.rxjava3.core.Flowable&lt;T&gt;</span>&nbsp;<span class="element-name">traceFlowable</span><wbr><span class="parameters">(io.opentelemetry.context.Context&nbsp;spanContext,
io.opentelemetry.api.trace.Span&nbsp;span,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="interface in java.util.function" class="external-link">Supplier</a>&lt;io.reactivex.rxjava3.core.Flowable&lt;T&gt;&gt;&nbsp;flowableSupplier)</span></div>
<div class="block">Executes a Flowable with an OpenTelemetry Scope active for its entire lifecycle.
<p>This helper manages the OpenTelemetry Scope lifecycle for RxJava Flowables to ensure proper
context propagation across async boundaries. The scope remains active from when the Flowable is
returned through all operators until stream completion (onComplete, onError, or cancel).
<p><b>Why not try-with-resources?</b> RxJava Flowables execute lazily - operators run at
subscription time, not at chain construction time. Using try-with-resources would close the
scope before the Flowable subscribes, causing Context.current() to return ROOT in nested
operations and breaking parent-child span relationships (fragmenting traces).
<p>The scope is properly closed via doFinally when the stream terminates, ensuring no resource
leaks regardless of completion mode (success, error, or cancellation).</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><span id="traceFlowable(io.opentelemetry.context.Context,io.opentelemetry.api.trace.Span,java.util.function.Supplier)-type-param-T"><code>T</code> - The type of items emitted by the Flowable</span></dd>
<dt>Parameters:</dt>
<dd><code>spanContext</code> - The context containing the span to activate</dd>
<dd><code>span</code> - The span to end when the stream completes</dd>
<dd><code>flowableSupplier</code> - Supplier that creates the Flowable to execute with active scope</dd>
<dt>Returns:</dt>
<dd>Flowable with OpenTelemetry scope lifecycle management</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="trace(java.lang.String)">
<h3>trace</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="Tracing.TracerProvider.html" title="class in com.google.adk.telemetry">Tracing.TracerProvider</a>&lt;T&gt;</span>&nbsp;<span class="element-name">trace</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;spanName)</span></div>
<div class="block">Returns a transformer that traces the execution of an RxJava stream.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><span id="trace(java.lang.String)-type-param-T"><code>T</code> - The type of the stream.</span></dd>
<dt>Parameters:</dt>
<dd><code>spanName</code> - The name of the span to create.</dd>
<dt>Returns:</dt>
<dd>A TracerProvider that can be used with .compose().</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="traceAgent(java.lang.String,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)">
<h3>traceAgent</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="annotation interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="Tracing.TracerProvider.html" title="class in com.google.adk.telemetry">Tracing.TracerProvider</a>&lt;T&gt;</span>&nbsp;<span class="element-name">traceAgent</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;spanName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentName,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class in java.lang" class="external-link">String</a>&nbsp;agentDescription,
<a href="../agents/InvocationContext.html" title="class in com.google.adk.agents">InvocationContext</a>&nbsp;invocationContext)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Returns a transformer that traces an agent invocation.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><span id="traceAgent(java.lang.String,java.lang.String,java.lang.String,com.google.adk.agents.InvocationContext)-type-param-T"><code>T</code> - The type of the stream.</span></dd>
<dt>Parameters:</dt>
<dd><code>spanName</code> - The name of the span to create.</dd>
<dd><code>agentName</code> - The name of the agent.</dd>
<dd><code>agentDescription</code> - The description of the agent.</dd>
<dd><code>invocationContext</code> - The invocation context.</dd>
<dt>Returns:</dt>
<dd>A TracerProvider configured for agent invocation.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="withContext(io.opentelemetry.context.Context)">
<h3>withContext</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type"><a href="Tracing.ContextTransformer.html" title="class in com.google.adk.telemetry">Tracing.ContextTransformer</a>&lt;T&gt;</span>&nbsp;<span class="element-name">withContext</span><wbr><span class="parameters">(io.opentelemetry.context.Context&nbsp;context)</span></div>
<div class="block">Returns a transformer that re-activates a given context for the duration of the stream's
subscription.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><span id="withContext(io.opentelemetry.context.Context)-type-param-T"><code>T</code> - The type of the stream.</span></dd>
<dt>Parameters:</dt>
<dd><code>context</code> - The context to re-activate.</dd>
<dt>Returns:</dt>
<dd>A transformer that re-activates the context.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
<footer>
<hr>
<p class="legal-copy"><small>Copyright &#169; 1980. All rights reserved.</small></p>
</footer>
</main>
</div>
</body>
</html>