@@ -80,6 +80,9 @@ class LlmResponse(BaseModel):
80
80
NOTE: the entire dict must be JSON serializable.
81
81
"""
82
82
83
+ usage_metadata : Optional [types .GenerateContentResponseUsageMetadata ] = None
84
+ """The usage metadata of the LlmResponse"""
85
+
83
86
@staticmethod
84
87
def create (
85
88
generate_content_response : types .GenerateContentResponse ,
@@ -93,28 +96,32 @@ def create(
93
96
Returns:
94
97
The LlmResponse.
95
98
"""
96
-
99
+ usage_metadata = generate_content_response . usage_metadata
97
100
if generate_content_response .candidates :
98
101
candidate = generate_content_response .candidates [0 ]
99
102
if candidate .content and candidate .content .parts :
100
103
return LlmResponse (
101
104
content = candidate .content ,
102
105
grounding_metadata = candidate .grounding_metadata ,
106
+ usage_metadata = usage_metadata ,
103
107
)
104
108
8000
else :
105
109
return LlmResponse (
106
110
error_code = candidate .finish_reason ,
107
111
error_message = candidate .finish_message ,
112
+ usage_metadata = usage_metadata ,
108
113
)
109
114
else :
110
115
if generate_content_response .prompt_feedback :
111
116
prompt_feedback = generate_content_response .prompt_feedback
112
117
return LlmResponse (
113
118
error_code = prompt_feedback .block_reason ,
114
119
error_message = prompt_feedback .block_reason_message ,
120
+ usage_metadata = usage_metadata ,
115
121
)
116
122
else :
117
123
return LlmResponse (
118
124
error_code = 'UNKNOWN_ERROR' ,
119
125
error_message = 'Unknown error.' ,
126
+ usage_metadata = usage_metadata ,
120
127
)
0 commit comments