Skip to content

Commit c65e92b

Browse files
committed
update; models
1 parent 6120231 commit c65e92b

File tree

13 files changed

+104
-1
lines changed

13 files changed

+104
-1
lines changed

pydantic_ai_slim/pydantic_ai/models/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -876,6 +876,7 @@ def get(self) -> ModelResponse:
876876
timestamp=self.timestamp,
877877
usage=self.usage(),
878878
provider_name=self.provider_name,
879+
provider_url=self.provider_url,
879880
provider_response_id=self.provider_response_id,
880881
provider_details=self.provider_details,
881882
finish_reason=self.finish_reason,
@@ -898,6 +899,12 @@ def provider_name(self) -> str | None:
898899
"""Get the provider name."""
899900
raise NotImplementedError()
900901

902+
@property
903+
@abstractmethod
904+
def provider_url(self) -> str | None:
905+
"""Get the provider base URL."""
906+
raise NotImplementedError()
907+
901908
@property
902909
@abstractmethod
903910
def timestamp(self) -> datetime:

pydantic_ai_slim/pydantic_ai/models/anthropic.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,7 @@ def _process_response(self, response: BetaMessage) -> ModelResponse:
533533
model_name=response.model,
534534
provider_response_id=response.id,
535535
provider_name=self._provider.name,
536+
provider_url=self._provider.base_url,
536537
finish_reason=finish_reason,
537538
provider_details=provider_details,
538539
)
@@ -1266,6 +1267,11 @@ def provider_name(self) -> str:
12661267
"""Get the provider name."""
12671268
return self._provider_name
12681269

1270+
@property
1271+
def provider_url(self) -> str:
1272+
"""Get the provider base URL."""
1273+
return self._provider_url
1274+
12691275
@property
12701276
def timestamp(self) -> datetime:
12711277
"""Get the timestamp of the response."""

pydantic_ai_slim/pydantic_ai/models/bedrock.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ async def request_stream(
337337
_model_name=self.model_name,
338338
_event_stream=response['stream'],
339339
_provider_name=self._provider.name,
340+
_provider_url=self.base_url,
340341
_provider_response_id=response.get('ResponseMetadata', {}).get('RequestId', None),
341342
)
342343

@@ -388,6 +389,7 @@ async def _process_response(self, response: ConverseResponseTypeDef) -> ModelRes
388389
model_name=self.model_name,
389390
provider_response_id=response_id,
390391
provider_name=self._provider.name,
392+
provider_url=self.base_url,
391393
finish_reason=finish_reason,
392394
provider_details=provider_details,
393395
)
@@ -706,6 +708,7 @@ class BedrockStreamedResponse(StreamedResponse):
706708
_model_name: BedrockModelName
707709
_event_stream: EventStream[ConverseStreamOutputTypeDef]
708710
_provider_name: str
711+
_provider_url: str
709712
_timestamp: datetime = field(default_factory=_utils.now_utc)
710713
_provider_response_id: str | None = None
711714

@@ -793,6 +796,11 @@ def provider_name(self) -> str:
793796
"""Get the provider name."""
794797
return self._provider_name
795798

799+
@property
800+
def provider_url(self) -> str:
801+
"""Get the provider base URL."""
802+
return self._provider_url
803+
796804
@property
797805
def timestamp(self) -> datetime:
798806
return self._timestamp

pydantic_ai_slim/pydantic_ai/models/cohere.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ def _process_response(self, response: V2ChatResponse) -> ModelResponse:
225225
usage=_map_usage(response),
226226
model_name=self._model_name,
227227
provider_name=self._provider.name,
228+
provider_url=self.base_url,
228229
finish_reason=finish_reason,
229230
provider_details=provider_details,
230231
)

pydantic_ai_slim/pydantic_ai/models/function.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,11 @@ def provider_name(self) -> None:
347347
"""Get the provider name."""
348348
return None
349349

350+
@property
351+
def provider_url(self) -> None:
352+
"""Get the provider base URL."""
353+
return None
354+
350355
@property
351356
def timestamp(self) -> datetime:
352357
"""Get the timestamp of the response."""

pydantic_ai_slim/pydantic_ai/models/gemini.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ def _process_response(self, response: _GeminiResponse) -> ModelResponse:
298298
usage,
299299
vendor_id=vendor_id,
300300
vendor_details=vendor_details,
301+
provider_url=self.base_url,
301302
)
302303

303304
async def _process_streamed_response(
@@ -329,6 +330,7 @@ async def _process_streamed_response(
329330
_content=content,
330331
_stream=aiter_bytes,
331332
_provider_name=self._provider.name,
333+
_provider_url=self.base_url,
332334
)
333335

334336
async def _message_to_gemini_content(
@@ -453,6 +455,7 @@ class GeminiStreamedResponse(StreamedResponse):
453455
_content: bytearray
454456
_stream: AsyncIterator[bytes]
455457
_provider_name: str
458+
_provider_url: str
456459
_timestamp: datetime = field(default_factory=_utils.now_utc, init=False)
457460

458461
async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]:
@@ -527,6 +530,11 @@ def provider_name(self) -> str:
527530
"""Get the provider name."""
528531
return self._provider_name
529532

533+
@property
534+
def provider_url(self) -> str:
535+
"""Get the provider base URL."""
536+
return self._provider_url
537+
530538
@property
531539
def timestamp(self) -> datetime:
532540
"""Get the timestamp of the response."""
@@ -713,6 +721,7 @@ def _process_response_from_parts(
713721
model_name: GeminiModelName,
714722
usage: usage.RequestUsage,
715723
vendor_id: str | None,
724+
provider_url: str,
716725
vendor_details: dict[str, Any] | None = None,
717726
) -> ModelResponse:
718727
items: list[ModelResponsePart] = []
@@ -731,7 +740,12 @@ def _process_response_from_parts(
731740
f'Unsupported response from Gemini, expected all parts to be function calls or text, got: {part!r}'
732741
)
733742
return ModelResponse(
734-
parts=items, usage=usage, model_name=model_name, provider_response_id=vendor_id, provider_details=vendor_details
743+
parts=items,
744+
usage=usage,
745+
model_name=model_name,
746+
provider_response_id=vendor_id,
747+
provider_details=vendor_details,
748+
provider_url=provider_url,
735749
)
736750

737751

pydantic_ai_slim/pydantic_ai/models/google.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ def _process_response(self, response: GenerateContentResponse) -> ModelResponse:
508508
candidate.grounding_metadata,
509509
response.model_version or self._model_name,
510510
self._provider.name,
511+
self._provider.base_url,
511512
usage,
512513
vendor_id=vendor_id,
513514
vendor_details=vendor_details,
@@ -780,6 +781,11 @@ def provider_name(self) -> str:
780781
"""Get the provider name."""
781782
return self._provider_name
782783

784+
@property
785+
def provider_url(self) -> str:
786+
"""Get the provider base URL."""
787+
return self._provider_url
788+
783789
@property
784790
def timestamp(self) -> datetime:
785791
"""Get the timestamp of the response."""
@@ -858,6 +864,7 @@ def _process_response_from_parts(
858864
grounding_metadata: GroundingMetadata | None,
859865
model_name: GoogleModelName,
860866
provider_name: str,
867+
provider_url: str,
861868
usage: usage.RequestUsage,
862869
vendor_id: str | None,
863870
vendor_details: dict[str, Any] | None = None,
@@ -927,6 +934,7 @@ def _process_response_from_parts(
927934
provider_response_id=vendor_id,
928935
provider_details=vendor_details,
929936
provider_name=provider_name,
937+
provider_url=provider_url,
930938
finish_reason=finish_reason,
931939
)
932940

pydantic_ai_slim/pydantic_ai/models/groq.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ async def request(
209209
model_name=e.model_name,
210210
timestamp=_utils.now_utc(),
211211
provider_name=self._provider.name,
212+
provider_url=self.base_url,
212213
finish_reason='error',
213214
)
214215
except ValidationError:
@@ -349,6 +350,7 @@ def _process_response(self, response: chat.ChatCompletion) -> ModelResponse:
349350
timestamp=timestamp,
350351
provider_response_id=response.id,
351352
provider_name=self._provider.name,
353+
provider_url=self.base_url,
352354
finish_reason=finish_reason,
353355
provider_details=provider_details,
354356
)
@@ -371,6 +373,7 @@ async def _process_streamed_response(
371373
_model_profile=self.profile,
372374
_timestamp=number_to_datetime(first_chunk.created),
373375
_provider_name=self._provider.name,
376+
_provider_url=self.base_url,
374377
)
375378

376379
def _get_tools(self, model_request_parameters: ModelRequestParameters) -> list[chat.ChatCompletionToolParam]:
@@ -524,6 +527,7 @@ class GroqStreamedResponse(StreamedResponse):
524527
_response: AsyncIterable[chat.ChatCompletionChunk]
525528
_timestamp: datetime
526529
_provider_name: str
530+
_provider_url: str
527531

528532
async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]: # noqa: C901
529533
try:
@@ -621,6 +625,11 @@ def provider_name(self) -> str:
621625
"""Get the provider name."""
622626
return self._provider_name
623627

628+
@property
629+
def provider_url(self) -> str:
630+
"""Get the provider base URL."""
631+
return self._provider_url
632+
624633
@property
625634
def timestamp(self) -> datetime:
626635
"""Get the timestamp of the response."""

pydantic_ai_slim/pydantic_ai/models/huggingface.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ def __init__(
150150

151151
super().__init__(settings=settings, profile=profile or provider.model_profile)
152152

153+
@property
154+
def base_url(self) -> str:
155+
"""The base URL of the provider."""
156+
return self._provider.base_url
157+
153158
@property
154159
def model_name(self) -> HuggingFaceModelName:
155160
"""The model name."""
@@ -295,6 +300,7 @@ def _process_response(self, response: ChatCompletionOutput) -> ModelResponse:
295300
timestamp=timestamp,
296301
provider_response_id=response.id,
297302
provider_name=self._provider.name,
303+
provider_url=self.base_url,
298304
finish_reason=finish_reason,
299305
provider_details=provider_details,
300306
)
@@ -317,6 +323,7 @@ async def _process_streamed_response(
317323
_response=peekable_response,
318324
_timestamp=datetime.fromtimestamp(first_chunk.created, tz=timezone.utc),
319325
_provider_name=self._provider.name,
326+
_provider_url=self.base_url,
320327
)
321328

322329
def _get_tools(self, model_request_parameters: ModelRequestParameters) -> list[ChatCompletionInputTool]:
@@ -465,6 +472,7 @@ class HuggingFaceStreamedResponse(StreamedResponse):
465472
_response: AsyncIterable[ChatCompletionStreamOutput]
466473
_timestamp: datetime
467474
_provider_name: str
475+
_provider_url: str
468476

469477
async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]:
470478
async for chunk in self._response:
@@ -515,6 +523,11 @@ def provider_name(self) -> str:
515523
"""Get the provider name."""
516524
return self._provider_name
517525

526+
@property
527+
def provider_url(self) -> str:
528+
"""Get the provider base URL."""
529+
return self._provider_url
530+
518531
@property
519532
def timestamp(self) -> datetime:
520533
"""Get the timestamp of the response."""

pydantic_ai_slim/pydantic_ai/models/mistral.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ def _process_response(self, response: MistralChatCompletionResponse) -> ModelRes
380380
timestamp=timestamp,
381381
provider_response_id=response.id,
382382
provider_name=self._provider.name,
383+
provider_url=self._provider.base_url,
383384
finish_reason=finish_reason,
384385
provider_details=provider_details,
385386
)
@@ -408,6 +409,7 @@ async def _process_streamed_response(
408409
_model_name=first_chunk.data.model,
409410
_timestamp=timestamp,
410411
_provider_name=self._provider.name,
412+
_provider_url=self._provider.base_url,
411413
)
412414

413415
@staticmethod
@@ -615,6 +617,7 @@ class MistralStreamedResponse(StreamedResponse):
615617
_response: AsyncIterable[MistralCompletionEvent]
616618
_timestamp: datetime
617619
_provider_name: str
620+
_provider_url: str
618621

619622
_delta_content: str = field(default='', init=False)
620623

@@ -676,6 +679,11 @@ def provider_name(self) -> str:
676679
"""Get the provider name."""
677680
return self._provider_name
678681

682+
@property
683+
def provider_url(self) -> str:
684+
"""Get the provider base URL."""
685+
return self._provider_url
686+
679687
@property
680688
def timestamp(self) -> datetime:
681689
"""Get the timestamp of the response."""

0 commit comments

Comments
 (0)