5
5
from collections .abc import AsyncIterable , AsyncIterator , Sequence
6
6
from contextlib import asynccontextmanager
7
7
from dataclasses import dataclass , field
8
- from datetime import datetime , timezone
8
+ from datetime import datetime
9
9
from typing import Any , Literal , Union , cast , overload
10
10
11
11
from typing_extensions import assert_never
14
14
from pydantic_ai .providers import Provider , infer_provider
15
15
16
16
from .. import ModelHTTPError , UnexpectedModelBehavior , _utils , usage
17
- from .._utils import guard_tool_call_id as _guard_tool_call_id
17
+ from .._utils import guard_tool_call_id as _guard_tool_call_id , number_to_datetime
18
18
from ..messages import (
19
19
AudioUrl ,
20
20
BinaryContent ,
@@ -308,7 +308,7 @@ async def _completions_create(
308
308
309
309
def _process_response (self , response : chat .ChatCompletion ) -> ModelResponse :
310
310
"""Process a non-streamed response, and prepare a message to return."""
311
- timestamp = datetime . fromtimestamp (response .created , tz = timezone . utc )
311
+ timestamp = number_to_datetime (response .created )
312
312
choice = response .choices [0 ]
313
313
items : list [ModelResponsePart ] = []
314
314
vendor_details : dict [str , Any ] | None = None
@@ -358,7 +358,7 @@ async def _process_streamed_response(self, response: AsyncStream[ChatCompletionC
358
358
return OpenAIStreamedResponse (
359
359
_model_name = self ._model_name ,
360
360
_response = peekable_response ,
361
- _timestamp = datetime . fromtimestamp (first_chunk .created , tz = timezone . utc ),
361
+ _timestamp = number_to_datetime (first_chunk .created ),
362
362
)
363
363
364
364
def _get_tools (self , model_request_parameters : ModelRequestParameters ) -> list [chat .ChatCompletionToolParam ]:
@@ -593,7 +593,7 @@ async def request_stream(
593
593
594
594
def _process_response (self , response : responses .Response ) -> ModelResponse :
595
595
"""Process a non-streamed response, and prepare a message to return."""
596
- timestamp = datetime . fromtimestamp (response .created_at , tz = timezone . utc )
596
+ timestamp = number_to_datetime (response .created_at )
597
597
items : list [ModelResponsePart ] = []
598
598
items .append (TextPart (response .output_text ))
599
599
for item in response .output :
@@ -614,7 +614,7 @@ async def _process_streamed_response(
614
614
return OpenAIResponsesStreamedResponse (
615
615
_model_name = self ._model_name ,
616
616
_response = peekable_response ,
617
- _timestamp = datetime . fromtimestamp (first_chunk .response .created_at , tz = timezone . utc ),
617
+ _timestamp = number_to_datetime (first_chunk .response .created_at ),
618
618
)
619
619
620
620
@overload
0 commit comments