@@ -263,6 +263,8 @@ async def _make_request(
263
263
yield r
264
264
265
265
def _process_response (self , response : _GeminiResponse ) -> ModelResponse :
266
+ vendor_details : dict [str , Any ] | None = None
267
+
266
268
if len (response ['candidates' ]) != 1 :
267
269
raise UnexpectedModelBehavior ('Expected exactly one candidate in Gemini response' ) # pragma: no cover
268
270
if 'content' not in response ['candidates' ][0 ]:
@@ -274,7 +276,9 @@ def _process_response(self, response: _GeminiResponse) -> ModelResponse:
274
276
)
275
277
parts = response ['candidates' ][0 ]['content' ]['parts' ]
276
278
vendor_id = response .get ('vendor_id' , None )
277
- vendor_details = {'finish_reason' : response ['candidates' ][0 ].get ('finish_reason' )}
279
+ finish_reason = response ['candidates' ][0 ].get ('finish_reason' )
280
+ if finish_reason :
281
+ vendor_details = {'finish_reason' : finish_reason }
278
282
usage = _metadata_as_usage (response )
279
283
usage .requests = 1
280
284
return _process_response_from_parts (
@@ -609,7 +613,7 @@ def _process_response_from_parts(
609
613
model_name : GeminiModelName ,
610
614
usage : usage .Usage ,
611
615
vendor_id : str | None ,
612
- vendor_details : dict [str , Any ] | None ,
616
+ vendor_details : dict [str , Any ] | None = None ,
613
617
) -> ModelResponse :
614
618
items : list [ModelResponsePart ] = []
615
619
for part in parts :
0 commit comments