Skip to content

Commit 70aa31b

Browse files
committed
Pass through the extra span arguments.
1 parent 071a399 commit 70aa31b

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

instrumentation-genai/opentelemetry-instrumentation-google-genai/src/opentelemetry/instrumentation/google_genai/generate_content.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,12 +219,14 @@ def _coerce_config_to_object(
219219

220220

221221
def _wrapped_config_with_tools(
222-
otel_wrapper: OTelWrapper, config: GenerateContentConfig
222+
otel_wrapper: OTelWrapper,
223+
config: GenerateContentConfig,
224+
**kwargs,
223225
):
224226
if not config.tools:
225227
return config
226228
result = copy.copy(config)
227-
result.tools = [wrapped_tool(tool, otel_wrapper) for tool in config.tools]
229+
result.tools = [wrapped_tool(tool, otel_wrapper, **kwargs) for tool in config.tools]
228230
return result
229231

230232

@@ -257,7 +259,9 @@ def wrapped_config(
257259
if config is None:
258260
return None
259261
return _wrapped_config_with_tools(
260-
self._otel_wrapper, _coerce_config_to_object(config)
262+
self._otel_wrapper,
263+
_coerce_config_to_object(config),
264+
extra_span_attributes={"gen_ai.system": self._genai_system},
261265
)
262266

263267
def start_span_as_current_span(

instrumentation-genai/opentelemetry-instrumentation-google-genai/src/opentelemetry/instrumentation/google_genai/tool_call_wrapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ def _wrap_sync_tool_function(
147147
tool_function: ToolFunction,
148148
otel_wrapper: OTelWrapper,
149149
extra_span_attributes: Optional[dict[str, str]] = None,
150-
**kwargs,
150+
**unused_kwargs,
151151
):
152152
@functools.wraps(tool_function)
153153
def wrapped_function(*args, **kwargs):
@@ -172,7 +172,7 @@ def _wrap_async_tool_function(
172172
tool_function: ToolFunction,
173173
otel_wrapper: OTelWrapper,
174174
extra_span_attributes: Optional[dict[str, str]] = None,
175-
**kwargs,
175+
**unused_kwargs,
176176
):
177177
@functools.wraps(tool_function)
178178
async def wrapped_function(*args, **kwargs):

instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/generate_content/test_tool_call_instrumentation.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,19 @@ def somefunction(somearg):
4444
wrapped_somefunction = tools[0]
4545

4646
self.assertIsNone(self.otel.get_span_named("execute_tool somefunction"))
47-
wrapped_somefunction(somearg="someparam")
47+
wrapped_somefunction("someparam")
4848
self.otel.assert_has_span_named("execute_tool somefunction")
4949
generated_span = self.otel.get_span_named("execute_tool somefunction")
50+
self.assertIn(
51+
"gen_ai.system", generated_span.attributes
52+
)
5053
self.assertEqual(
51-
generated_span.attributes["code.function.name"], "somefunction"
54+
generated_span.attributes["gen_ai.tool.name"], "somefunction"
5255
)
56+
self.assertEqual(
57+
generated_span.attributes["code.args.positional.count"], 1)
58+
self.assertEqual(
59+
generated_span.attributes["code.args.keyword.count"], 0)
5360

5461
def test_tool_calls_with_config_object_outputs_spans(self):
5562
calls = []
@@ -75,12 +82,19 @@ def somefunction(somearg):
7582
wrapped_somefunction = tools[0]
7683

7784
self.assertIsNone(self.otel.get_span_named("execute_tool somefunction"))
78-
wrapped_somefunction(somearg="someparam")
85+
wrapped_somefunction("someparam")
7986
self.otel.assert_has_span_named("execute_tool somefunction")
8087
generated_span = self.otel.get_span_named("execute_tool somefunction")
88+
self.assertIn(
89+
"gen_ai.system", generated_span.attributes
90+
)
8191
self.assertEqual(
82-
generated_span.attributes["code.function.name"], "somefunction"
92+
generated_span.attributes["gen_ai.tool.name"], "somefunction"
8393
)
94+
self.assertEqual(
95+
generated_span.attributes["code.args.positional.count"], 1)
96+
self.assertEqual(
97+
generated_span.attributes["code.args.keyword.count"], 0)
8498

8599
@patch.dict("os.environ", {"OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT": "true"})
86100
def test_tool_calls_record_parameter_values_on_span_if_enabled(self):

0 commit comments

Comments
 (0)