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