Skip to content

Commit f141105

Browse files
committed
fix: add null safety for finish_reason and gen_ai.tool.definitions attribute
1 parent b8b1d2d commit f141105

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

  • instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai

instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai/patch.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from __future__ import annotations
1616

17+
import json
1718
from typing import (
1819
TYPE_CHECKING,
1920
Any,
@@ -168,6 +169,14 @@ def _build_invocation(
168169
request_attributes[GenAIAttributes.GEN_AI_OUTPUT_TYPE]
169170
)
170171

172+
if capture_content and params.tools:
173+
from google.protobuf import json_format as _jf
174+
175+
tool_defs = [_jf.MessageToDict(t._pb) for t in params.tools] # type: ignore[union-attr]
176+
invocation.attributes[GenAIAttributes.GEN_AI_TOOL_DEFINITIONS] = (
177+
json.dumps(tool_defs)
178+
)
179+
171180
return invocation
172181

173182

instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai/utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,11 @@ def convert_content_to_message_parts(
209209

210210
def _map_finish_reason(
211211
finish_reason: content.Candidate.FinishReason
212-
| content_v1beta1.Candidate.FinishReason,
212+
| content_v1beta1.Candidate.FinishReason
213+
| None,
213214
) -> FinishReason | str:
215+
if finish_reason is None:
216+
return "error"
214217
EnumType = type(finish_reason) # pylint: disable=invalid-name
215218
if (
216219
finish_reason is EnumType.FINISH_REASON_UNSPECIFIED

0 commit comments

Comments
 (0)