Skip to content

Commit e87a843

Browse files
RKestcopybara-github
authored andcommitted
feat(otel): add extra attributes to span generated with opentelemetry-instrumentation-google-genai
Co-authored-by: Max Ind <[email protected]> PiperOrigin-RevId: 864272319
1 parent 7d58e0d commit e87a843

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ extensions = [
164164
"toolbox-adk>=0.5.7, <0.6.0", # For tools.toolbox_toolset.ToolboxToolset
165165
]
166166

167-
otel-gcp = ["opentelemetry-instrumentation-google-genai>=0.3b0, <1.0.0"]
167+
otel-gcp = ["opentelemetry-instrumentation-google-genai>=0.6b0, <1.0.0"]
168168

169169
toolbox = ["toolbox-adk>=0.5.7, <0.6.0"]
170170

src/google/adk/telemetry/tracing.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from google.genai import types
3636
from google.genai.models import Models
3737
from opentelemetry import _logs
38+
from opentelemetry import context as otel_context
3839
from opentelemetry import trace
3940
from opentelemetry._logs import LogRecord
4041
from opentelemetry.semconv._incubating.attributes.gen_ai_attributes import GEN_AI_AGENT_DESCRIPTION
@@ -444,7 +445,8 @@ def use_generate_content_span(
444445
_is_gemini_agent(invocation_context.agent)
445446
and _instrumented_with_opentelemetry_instrumentation_google_genai()
446447
):
447-
yield None
448+
with _use_extra_generate_content_attributes(common_attributes):
449+
yield
448450
else:
449451
with _use_native_generate_content_span(
450452
llm_request=llm_request,
@@ -492,6 +494,33 @@ def _instrumented_with_opentelemetry_instrumentation_google_genai() -> bool:
492494
return False
493495

494496

497+
@contextmanager
498+
def _use_extra_generate_content_attributes(
499+
extra_attributes: Mapping[str, AttributeValue],
500+
):
501+
try:
502+
from opentelemetry.instrumentation.google_genai import GENERATE_CONTENT_EXTRA_ATTRIBUTES_CONTEXT_KEY
503+
except (ImportError, AttributeError):
504+
logger.warning(
505+
'opentelemetry-instrumentor-google-genai is installed but has'
506+
' insufficient version,'
507+
+ ' so some tracing dependent features may not work properly.'
508+
+ ' Please upgrade to version to 0.6b0 or above.'
509+
)
510+
yield
511+
return
512+
513+
tok = otel_context.attach(
514+
otel_context.set_value(
515+
GENERATE_CONTENT_EXTRA_ATTRIBUTES_CONTEXT_KEY, extra_attributes
516+
)
517+
)
518+
try:
519+
yield
520+
finally:
521+
otel_context.detach(tok)
522+
523+
495524
def _is_gemini_agent(agent: BaseAgent) -> bool:
496525
from ..agents.llm_agent import LlmAgent
497526

0 commit comments

Comments
 (0)