Skip to content

Commit fe53454

Browse files
authored
fix(google-genai): Add support for generate_content method in google genai models (#3014)
1 parent 6582725 commit fe53454

File tree

3 files changed

+234
-9
lines changed

3 files changed

+234
-9
lines changed

packages/opentelemetry-instrumentation-google-generativeai/opentelemetry/instrumentation/google_generativeai/__init__.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
logger = logging.getLogger(__name__)
2626

27-
_instruments = ("google-generativeai >= 0.5.0",)
27+
_instruments = ("google-generativeai >= 0.5.0", "google-genai >= 0.1.0")
2828

2929
WRAPPED_METHODS = [
3030
{
@@ -39,6 +39,18 @@
3939
"method": "generate_content_async",
4040
"span_name": "gemini.generate_content_async",
4141
},
42+
{
43+
"package": "google.genai.models",
44+
"object": "Models",
45+
"method": "generate_content",
46+
"span_name": "gemini.generate_content",
47+
},
48+
{
49+
"package": "google.genai.models",
50+
"object": "AsyncModels",
51+
"method": "generate_content",
52+
"span_name": "gemini.generate_content",
53+
},
4254
]
4355

4456

@@ -69,7 +81,18 @@ def _set_input_attributes(span, args, kwargs, llm_model):
6981

7082
if "contents" in kwargs:
7183
contents = kwargs["contents"]
72-
if isinstance(contents, list):
84+
if isinstance(contents, str):
85+
_set_span_attribute(
86+
span,
87+
f"{SpanAttributes.LLM_PROMPTS}.0.content",
88+
contents,
89+
)
90+
_set_span_attribute(
91+
span,
92+
f"{SpanAttributes.LLM_PROMPTS}.0.role",
93+
"user",
94+
)
95+
elif isinstance(contents, list):
7396
for i, content in enumerate(contents):
7497
if hasattr(content, "parts"):
7598
for part in content.parts:
@@ -255,6 +278,8 @@ async def _awrap(tracer, to_wrap, wrapped, instance, args, kwargs):
255278
).replace("models/", "")
256279
if hasattr(instance, "model") and hasattr(instance.model, "model_name"):
257280
llm_model = instance.model.model_name.replace("models/", "")
281+
if "model" in kwargs:
282+
llm_model = kwargs["model"].replace("models/", "")
258283

259284
name = to_wrap.get("span_name")
260285
span = tracer.start_span(
@@ -299,6 +324,8 @@ def _wrap(tracer, to_wrap, wrapped, instance, args, kwargs):
299324
).replace("models/", "")
300325
if hasattr(instance, "model") and hasattr(instance.model, "model_name"):
301326
llm_model = instance.model.model_name.replace("models/", "")
327+
if "model" in kwargs:
328+
llm_model = kwargs["model"].replace("models/", "")
302329

303330
name = to_wrap.get("span_name")
304331
span = tracer.start_span(

0 commit comments

Comments
 (0)