mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
feat(otel): add extra attributes to span generated with opentelemetry-instrumentation-google-genai
Co-authored-by: Max Ind <maxind@google.com> PiperOrigin-RevId: 864272319
This commit is contained in:
committed by
Copybara-Service
parent
7d58e0d2f3
commit
e87a8437fb
+1
-1
@@ -164,7 +164,7 @@ extensions = [
|
||||
"toolbox-adk>=0.5.7, <0.6.0", # For tools.toolbox_toolset.ToolboxToolset
|
||||
]
|
||||
|
||||
otel-gcp = ["opentelemetry-instrumentation-google-genai>=0.3b0, <1.0.0"]
|
||||
otel-gcp = ["opentelemetry-instrumentation-google-genai>=0.6b0, <1.0.0"]
|
||||
|
||||
toolbox = ["toolbox-adk>=0.5.7, <0.6.0"]
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ from typing import TYPE_CHECKING
|
||||
from google.genai import types
|
||||
from google.genai.models import Models
|
||||
from opentelemetry import _logs
|
||||
from opentelemetry import context as otel_context
|
||||
from opentelemetry import trace
|
||||
from opentelemetry._logs import LogRecord
|
||||
from opentelemetry.semconv._incubating.attributes.gen_ai_attributes import GEN_AI_AGENT_DESCRIPTION
|
||||
@@ -444,7 +445,8 @@ def use_generate_content_span(
|
||||
_is_gemini_agent(invocation_context.agent)
|
||||
and _instrumented_with_opentelemetry_instrumentation_google_genai()
|
||||
):
|
||||
yield None
|
||||
with _use_extra_generate_content_attributes(common_attributes):
|
||||
yield
|
||||
else:
|
||||
with _use_native_generate_content_span(
|
||||
llm_request=llm_request,
|
||||
@@ -492,6 +494,33 @@ def _instrumented_with_opentelemetry_instrumentation_google_genai() -> bool:
|
||||
return False
|
||||
|
||||
|
||||
@contextmanager
|
||||
def _use_extra_generate_content_attributes(
|
||||
extra_attributes: Mapping[str, AttributeValue],
|
||||
):
|
||||
try:
|
||||
from opentelemetry.instrumentation.google_genai import GENERATE_CONTENT_EXTRA_ATTRIBUTES_CONTEXT_KEY
|
||||
except (ImportError, AttributeError):
|
||||
logger.warning(
|
||||
'opentelemetry-instrumentor-google-genai is installed but has'
|
||||
' insufficient version,'
|
||||
+ ' so some tracing dependent features may not work properly.'
|
||||
+ ' Please upgrade to version to 0.6b0 or above.'
|
||||
)
|
||||
yield
|
||||
return
|
||||
|
||||
tok = otel_context.attach(
|
||||
otel_context.set_value(
|
||||
GENERATE_CONTENT_EXTRA_ATTRIBUTES_CONTEXT_KEY, extra_attributes
|
||||
)
|
||||
)
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
otel_context.detach(tok)
|
||||
|
||||
|
||||
def _is_gemini_agent(agent: BaseAgent) -> bool:
|
||||
from ..agents.llm_agent import LlmAgent
|
||||
|
||||
|
||||
Reference in New Issue
Block a user