Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ddtrace/llmobs/_integrations/google_genai.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def _extract_output_messages(self, response) -> list[Message]:
if not response:
return [Message(content="", role=GOOGLE_GENAI_DEFAULT_MODEL_ROLE)]
messages = []
candidates = _get_attr(response, "candidates", [])
candidates = _get_attr(response, "candidates", None) or []
for candidate in candidates:
content = _get_attr(candidate, "content", None)
if not content:
Expand Down
8 changes: 7 additions & 1 deletion ddtrace/llmobs/_integrations/google_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,13 @@ def extract_generation_metrics_google_genai(response) -> dict[str, Any]:
output_tokens = None

cached_tokens = _get_attr(usage_metadata, "cached_content_token_count", None)
total_tokens = _get_attr(usage_metadata, "total_token_count", None) or input_tokens + output_tokens
total_token_count = _get_attr(usage_metadata, "total_token_count", None)
if total_token_count is not None:
total_tokens = total_token_count
elif input_tokens is not None and output_tokens is not None:
total_tokens = input_tokens + output_tokens
else:
total_tokens = None

if input_tokens is not None:
usage[INPUT_TOKENS_METRIC_KEY] = input_tokens
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
fixes:
- |
LLM Observability: Fix ``Error extracting LLMObs fields`` crash in the google_genai
integration when Google GenAI returns partial response objects where ``candidates``
or usage metadata token fields are ``None``. This occurred during streaming chunks
and safety-filtered responses. Adds None guards before accessing ``candidates`` and
token count fields, returning sensible defaults when absent.