feat(tracing): Adds more OpenTelemetry convention attributes: gen_ai.request.max_tokens, gen_ai.request.top_p and gen_ai.response.finish_reasons

Fixes #1234

PiperOrigin-RevId: 795082815
This commit is contained in:
Wei Sun (Jack)
2025-08-14 09:52:50 -07:00
committed by Copybara-Service
parent 9cfe43334a
commit 9ba8eec220
3 changed files with 74 additions and 34 deletions
+6 -1
View File
@@ -67,6 +67,9 @@ class LlmResponse(BaseModel):
Only used for streaming mode.
"""
finish_reason: Optional[types.FinishReason] = None
"""The finish reason of the response."""
error_code: Optional[str] = None
"""Error code if the response is an error. Code varies by model."""
@@ -97,7 +100,7 @@ class LlmResponse(BaseModel):
@staticmethod
def create(
generate_content_response: types.GenerateContentResponse,
) -> 'LlmResponse':
) -> LlmResponse:
"""Creates an LlmResponse from a GenerateContentResponse.
Args:
@@ -115,12 +118,14 @@ class LlmResponse(BaseModel):
content=candidate.content,
grounding_metadata=candidate.grounding_metadata,
usage_metadata=usage_metadata,
finish_reason=candidate.finish_reason,
)
else:
return LlmResponse(
error_code=candidate.finish_reason,
error_message=candidate.finish_message,
usage_metadata=usage_metadata,
finish_reason=candidate.finish_reason,
)
else:
if generate_content_response.prompt_feedback: