@@ -274,10 +274,15 @@ def _process_response(self, response: _GeminiResponse) -> ModelResponse:
274
274
)
275
275
parts = response ['candidates' ][0 ]['content' ]['parts' ]
276
276
vendor_id = response .get ('vendor_id' , None )
277
+ vendor_details = {'finish_reason' : response ['candidates' ][0 ].get ('finish_reason' )}
277
278
usage = _metadata_as_usage (response )
278
279
usage .requests = 1
279
280
return _process_response_from_parts (
280
- parts , response .get ('model_version' , self ._model_name ), usage , vendor_id = vendor_id
281
+ parts ,
282
+ response .get ('model_version' , self ._model_name ),
283
+ usage ,
284
+ vendor_id = vendor_id ,
285
+ vendor_details = vendor_details ,
281
286
)
282
287
283
288
async def _process_streamed_response (self , http_response : HTTPResponse ) -> StreamedResponse :
@@ -600,7 +605,11 @@ def _function_call_part_from_call(tool: ToolCallPart) -> _GeminiFunctionCallPart
600
605
601
606
602
607
def _process_response_from_parts (
603
- parts : Sequence [_GeminiPartUnion ], model_name : GeminiModelName , usage : usage .Usage , vendor_id : str | None
608
+ parts : Sequence [_GeminiPartUnion ],
609
+ model_name : GeminiModelName ,
610
+ usage : usage .Usage ,
611
+ vendor_id : str | None ,
612
+ vendor_details : dict [str , Any ] | None ,
604
613
) -> ModelResponse :
605
614
items : list [ModelResponsePart ] = []
606
615
for part in parts :
@@ -612,7 +621,9 @@ def _process_response_from_parts(
612
621
raise UnexpectedModelBehavior (
613
622
f'Unsupported response from Gemini, expected all parts to be function calls or text, got: { part !r} '
614
623
)
615
- return ModelResponse (parts = items , usage = usage , model_name = model_name , vendor_id = vendor_id )
624
+ return ModelResponse (
625
+ parts = items , usage = usage , model_name = model_name , vendor_id = vendor_id , vendor_details = vendor_details
626
+ )
616
627
617
628
618
629
class _GeminiFunctionCall (TypedDict ):
0 commit comments