Skip to content

Commit 0654c35

Browse files
Ark-kuncopybara-github
authored andcommitted
feat: GenAI - Added the GenerationResponse.usage_metadata property
PiperOrigin-RevId: 625552531
1 parent efd5a72 commit 0654c35

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

tests/unit/vertexai/test_generative_models.py

+16
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,20 @@ def mock_generate_content(
246246
finish_reason = gapic_content_types.Candidate.FinishReason.OTHER
247247
response.candidates[0].finish_reason = finish_reason
248248

249+
request_token_count = sum(
250+
len(gapic_content_types.Content.to_json(content).split())
251+
for content in request.contents
252+
)
253+
response_token_count = sum(
254+
len(gapic_content_types.Content.to_json(candidate.content).split())
255+
for candidate in response.candidates
256+
)
257+
response.usage_metadata.prompt_token_count = request_token_count
258+
response.usage_metadata.candidates_token_count = response_token_count
259+
response.usage_metadata.total_token_count = (
260+
request_token_count + response_token_count
261+
)
262+
249263
return response
250264

251265

@@ -371,6 +385,8 @@ def test_generate_content(self, generative_models: generative_models):
371385
model = generative_models.GenerativeModel("gemini-pro")
372386
response = model.generate_content("Why is sky blue?")
373387
assert response.text
388+
# TODO(avolkov): Add usage metadata to the mock
389+
assert response.usage_metadata.total_token_count
374390

375391
model2 = generative_models.GenerativeModel(
376392
"gemini-pro",

vertexai/generative_models/_generative_models.py

+6
Original file line numberDiff line numberDiff line change
@@ -1648,6 +1648,12 @@ def prompt_feedback(
16481648
) -> gapic_prediction_service_types.GenerateContentResponse.PromptFeedback:
16491649
return self._raw_response.prompt_feedback
16501650

1651+
@property
1652+
def usage_metadata(
1653+
self
1654+
) -> gapic_prediction_service_types.GenerateContentResponse.UsageMetadata:
1655+
return self._raw_response.usage_metadata
1656+
16511657

16521658
class Candidate:
16531659
"""A response candidate generated by the model."""

0 commit comments

Comments
 (0)