@@ -273,9 +273,12 @@ def _process_response(self, response: _GeminiResponse) -> ModelResponse:
273
273
'Content field missing from Gemini response' , str (response )
274
274
)
275
275
parts = response ['candidates' ][0 ]['content' ]['parts' ]
276
+ vendor_id = response .get ('vendor_id' , None )
276
277
usage = _metadata_as_usage (response )
277
278
usage .requests = 1
278
- return _process_response_from_parts (parts , response .get ('model_version' , self ._model_name ), usage )
279
+ return _process_response_from_parts (
280
+ parts , response .get ('model_version' , self ._model_name ), usage , vendor_id = vendor_id
281
+ )
279
282
280
283
async def _process_streamed_response (self , http_response : HTTPResponse ) -> StreamedResponse :
281
284
"""Process a streamed response, and prepare a streaming response to return."""
@@ -597,7 +600,7 @@ def _function_call_part_from_call(tool: ToolCallPart) -> _GeminiFunctionCallPart
597
600
598
601
599
602
def _process_response_from_parts (
600
- parts : Sequence [_GeminiPartUnion ], model_name : GeminiModelName , usage : usage .Usage
603
+ parts : Sequence [_GeminiPartUnion ], model_name : GeminiModelName , usage : usage .Usage , vendor_id : str | None
601
604
) -> ModelResponse :
602
605
items : list [ModelResponsePart ] = []
603
606
for part in parts :
@@ -609,7 +612,7 @@ def _process_response_from_parts(
609
612
raise UnexpectedModelBehavior (
610
613
f'Unsupported response from Gemini, expected all parts to be function calls or text, got: { part !r} '
611
614
)
612
- return ModelResponse (parts = items , usage = usage , model_name = model_name )
615
+ return ModelResponse (parts = items , usage = usage , model_name = model_name , vendor_id = vendor_id )
613
616
614
617
615
618
class _GeminiFunctionCall (TypedDict ):
@@ -721,6 +724,7 @@ class _GeminiResponse(TypedDict):
721
724
usage_metadata : NotRequired [Annotated [_GeminiUsageMetaData , pydantic .Field (alias = 'usageMetadata' )]]
722
725
prompt_feedback : NotRequired [Annotated [_GeminiPromptFeedback , pydantic .Field (alias = 'promptFeedback' )]]
723
726
model_version : NotRequired [Annotated [str , pydantic .Field (alias = 'modelVersion' )]]
727
+ vendor_id : NotRequired [Annotated [str , pydantic .Field (alias = 'responseId' )]]
724
728
725
729
726
730
class _GeminiCandidates (TypedDict ):
0 commit comments