Skip to content

Commit b03cd97

Browse files
feat: added vendor id
1 parent 4967685 commit b03cd97

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

pydantic_ai_slim/pydantic_ai/models/gemini.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,12 @@ def _process_response(self, response: _GeminiResponse) -> ModelResponse:
273273
'Content field missing from Gemini response', str(response)
274274
)
275275
parts = response['candidates'][0]['content']['parts']
276+
vendor_id = response.get('vendor_id', None)
276277
usage = _metadata_as_usage(response)
277278
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+
)
279282

280283
async def _process_streamed_response(self, http_response: HTTPResponse) -> StreamedResponse:
281284
"""Process a streamed response, and prepare a streaming response to return."""
@@ -597,7 +600,7 @@ def _function_call_part_from_call(tool: ToolCallPart) -> _GeminiFunctionCallPart
597600

598601

599602
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
601604
) -> ModelResponse:
602605
items: list[ModelResponsePart] = []
603606
for part in parts:
@@ -609,7 +612,7 @@ def _process_response_from_parts(
609612
raise UnexpectedModelBehavior(
610613
f'Unsupported response from Gemini, expected all parts to be function calls or text, got: {part!r}'
611614
)
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)
613616

614617

615618
class _GeminiFunctionCall(TypedDict):
@@ -721,6 +724,7 @@ class _GeminiResponse(TypedDict):
721724
usage_metadata: NotRequired[Annotated[_GeminiUsageMetaData, pydantic.Field(alias='usageMetadata')]]
722725
prompt_feedback: NotRequired[Annotated[_GeminiPromptFeedback, pydantic.Field(alias='promptFeedback')]]
723726
model_version: NotRequired[Annotated[str, pydantic.Field(alias='modelVersion')]]
727+
vendor_id: NotRequired[Annotated[str, pydantic.Field(alias='responseId')]]
724728

725729

726730
class _GeminiCandidates(TypedDict):

0 commit comments

Comments
 (0)