openrouter 0.0.22__py3-none-any.whl → 0.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openrouter/_version.py +2 -2
- openrouter/chat.py +70 -12
- openrouter/components/__init__.py +328 -81
- openrouter/components/_schema0.py +3 -2
- openrouter/components/_schema3.py +229 -0
- openrouter/components/chatgenerationparams.py +211 -53
- openrouter/components/chatgenerationtokenusage.py +3 -0
- openrouter/components/chatmessagetokenlogprob.py +4 -4
- openrouter/components/chatresponsechoice.py +6 -1
- openrouter/components/chatstreamingmessagechunk.py +12 -1
- openrouter/components/openresponseseasyinputmessage.py +93 -20
- openrouter/components/openresponsesinput.py +2 -2
- openrouter/components/openresponsesinputmessageitem.py +87 -14
- openrouter/components/openresponsesnonstreamingresponse.py +20 -9
- openrouter/components/openresponsesreasoning.py +1 -0
- openrouter/components/openresponsesrequest.py +141 -88
- openrouter/components/parameter.py +1 -0
- openrouter/components/pdfparserengine.py +16 -0
- openrouter/components/pdfparseroptions.py +25 -0
- openrouter/components/percentilelatencycutoffs.py +71 -0
- openrouter/components/percentilestats.py +34 -0
- openrouter/components/percentilethroughputcutoffs.py +71 -0
- openrouter/components/preferredmaxlatency.py +21 -0
- openrouter/components/preferredminthroughput.py +22 -0
- openrouter/components/providername.py +3 -2
- openrouter/components/providerpreferences.py +355 -0
- openrouter/components/providersort.py +0 -1
- openrouter/components/providersortconfig.py +71 -0
- openrouter/components/providersortunion.py +23 -0
- openrouter/components/publicendpoint.py +11 -0
- openrouter/components/responseinputvideo.py +26 -0
- openrouter/components/responseoutputtext.py +36 -1
- openrouter/components/responsesoutputitem.py +1 -1
- openrouter/components/responsesoutputitemreasoning.py +43 -3
- openrouter/components/responsesoutputmodality.py +14 -0
- openrouter/components/websearchengine.py +15 -0
- openrouter/embeddings.py +6 -8
- openrouter/operations/__init__.py +0 -33
- openrouter/operations/createembeddings.py +7 -258
- openrouter/operations/getgeneration.py +6 -0
- openrouter/operations/getparameters.py +5 -78
- openrouter/parameters.py +2 -2
- openrouter/responses.py +114 -14
- {openrouter-0.0.22.dist-info → openrouter-0.1.2.dist-info}/METADATA +1 -1
- {openrouter-0.0.22.dist-info → openrouter-0.1.2.dist-info}/RECORD +48 -34
- {openrouter-0.0.22.dist-info → openrouter-0.1.2.dist-info}/WHEEL +1 -1
- {openrouter-0.0.22.dist-info → openrouter-0.1.2.dist-info}/licenses/LICENSE +0 -0
- {openrouter-0.0.22.dist-info → openrouter-0.1.2.dist-info}/top_level.txt +0 -0
|
@@ -72,6 +72,7 @@ class CompletionTokensDetails(BaseModel):
|
|
|
72
72
|
|
|
73
73
|
class PromptTokensDetailsTypedDict(TypedDict):
|
|
74
74
|
cached_tokens: NotRequired[float]
|
|
75
|
+
cache_write_tokens: NotRequired[float]
|
|
75
76
|
audio_tokens: NotRequired[float]
|
|
76
77
|
video_tokens: NotRequired[float]
|
|
77
78
|
|
|
@@ -79,6 +80,8 @@ class PromptTokensDetailsTypedDict(TypedDict):
|
|
|
79
80
|
class PromptTokensDetails(BaseModel):
|
|
80
81
|
cached_tokens: Optional[float] = None
|
|
81
82
|
|
|
83
|
+
cache_write_tokens: Optional[float] = None
|
|
84
|
+
|
|
82
85
|
audio_tokens: Optional[float] = None
|
|
83
86
|
|
|
84
87
|
video_tokens: Optional[float] = None
|
|
@@ -8,13 +8,13 @@ from typing import List
|
|
|
8
8
|
from typing_extensions import Annotated, TypedDict
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class ChatMessageTokenLogprobTopLogprobTypedDict(TypedDict):
|
|
12
12
|
token: str
|
|
13
13
|
logprob: float
|
|
14
14
|
bytes_: Nullable[List[float]]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class
|
|
17
|
+
class ChatMessageTokenLogprobTopLogprob(BaseModel):
|
|
18
18
|
token: str
|
|
19
19
|
|
|
20
20
|
logprob: float
|
|
@@ -56,7 +56,7 @@ class ChatMessageTokenLogprobTypedDict(TypedDict):
|
|
|
56
56
|
token: str
|
|
57
57
|
logprob: float
|
|
58
58
|
bytes_: Nullable[List[float]]
|
|
59
|
-
top_logprobs: List[
|
|
59
|
+
top_logprobs: List[ChatMessageTokenLogprobTopLogprobTypedDict]
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
class ChatMessageTokenLogprob(BaseModel):
|
|
@@ -66,7 +66,7 @@ class ChatMessageTokenLogprob(BaseModel):
|
|
|
66
66
|
|
|
67
67
|
bytes_: Annotated[Nullable[List[float]], pydantic.Field(alias="bytes")]
|
|
68
68
|
|
|
69
|
-
top_logprobs: List[
|
|
69
|
+
top_logprobs: List[ChatMessageTokenLogprobTopLogprob]
|
|
70
70
|
|
|
71
71
|
@model_serializer(mode="wrap")
|
|
72
72
|
def serialize_model(self, handler):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
+
from ._schema3 import Schema3, Schema3TypedDict
|
|
4
5
|
from .assistantmessage import AssistantMessage, AssistantMessageTypedDict
|
|
5
6
|
from .chatcompletionfinishreason import ChatCompletionFinishReason
|
|
6
7
|
from .chatmessagetokenlogprobs import (
|
|
@@ -17,6 +18,7 @@ from openrouter.types import (
|
|
|
17
18
|
from openrouter.utils import validate_open_enum
|
|
18
19
|
from pydantic import model_serializer
|
|
19
20
|
from pydantic.functional_validators import PlainValidator
|
|
21
|
+
from typing import List, Optional
|
|
20
22
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
21
23
|
|
|
22
24
|
|
|
@@ -24,6 +26,7 @@ class ChatResponseChoiceTypedDict(TypedDict):
|
|
|
24
26
|
finish_reason: Nullable[ChatCompletionFinishReason]
|
|
25
27
|
index: float
|
|
26
28
|
message: AssistantMessageTypedDict
|
|
29
|
+
reasoning_details: NotRequired[List[Schema3TypedDict]]
|
|
27
30
|
logprobs: NotRequired[Nullable[ChatMessageTokenLogprobsTypedDict]]
|
|
28
31
|
|
|
29
32
|
|
|
@@ -36,11 +39,13 @@ class ChatResponseChoice(BaseModel):
|
|
|
36
39
|
|
|
37
40
|
message: AssistantMessage
|
|
38
41
|
|
|
42
|
+
reasoning_details: Optional[List[Schema3]] = None
|
|
43
|
+
|
|
39
44
|
logprobs: OptionalNullable[ChatMessageTokenLogprobs] = UNSET
|
|
40
45
|
|
|
41
46
|
@model_serializer(mode="wrap")
|
|
42
47
|
def serialize_model(self, handler):
|
|
43
|
-
optional_fields = ["logprobs"]
|
|
48
|
+
optional_fields = ["reasoning_details", "logprobs"]
|
|
44
49
|
nullable_fields = ["finish_reason", "logprobs"]
|
|
45
50
|
null_default_fields = []
|
|
46
51
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
+
from ._schema3 import Schema3, Schema3TypedDict
|
|
4
5
|
from .chatstreamingmessagetoolcall import (
|
|
5
6
|
ChatStreamingMessageToolCall,
|
|
6
7
|
ChatStreamingMessageToolCallTypedDict,
|
|
@@ -26,6 +27,7 @@ class ChatStreamingMessageChunkTypedDict(TypedDict):
|
|
|
26
27
|
reasoning: NotRequired[Nullable[str]]
|
|
27
28
|
refusal: NotRequired[Nullable[str]]
|
|
28
29
|
tool_calls: NotRequired[List[ChatStreamingMessageToolCallTypedDict]]
|
|
30
|
+
reasoning_details: NotRequired[List[Schema3TypedDict]]
|
|
29
31
|
|
|
30
32
|
|
|
31
33
|
class ChatStreamingMessageChunk(BaseModel):
|
|
@@ -39,9 +41,18 @@ class ChatStreamingMessageChunk(BaseModel):
|
|
|
39
41
|
|
|
40
42
|
tool_calls: Optional[List[ChatStreamingMessageToolCall]] = None
|
|
41
43
|
|
|
44
|
+
reasoning_details: Optional[List[Schema3]] = None
|
|
45
|
+
|
|
42
46
|
@model_serializer(mode="wrap")
|
|
43
47
|
def serialize_model(self, handler):
|
|
44
|
-
optional_fields = [
|
|
48
|
+
optional_fields = [
|
|
49
|
+
"role",
|
|
50
|
+
"content",
|
|
51
|
+
"reasoning",
|
|
52
|
+
"refusal",
|
|
53
|
+
"tool_calls",
|
|
54
|
+
"reasoning_details",
|
|
55
|
+
]
|
|
45
56
|
nullable_fields = ["content", "reasoning", "refusal"]
|
|
46
57
|
null_default_fields = []
|
|
47
58
|
|
|
@@ -3,16 +3,24 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from .responseinputaudio import ResponseInputAudio, ResponseInputAudioTypedDict
|
|
5
5
|
from .responseinputfile import ResponseInputFile, ResponseInputFileTypedDict
|
|
6
|
-
from .responseinputimage import ResponseInputImage, ResponseInputImageTypedDict
|
|
7
6
|
from .responseinputtext import ResponseInputText, ResponseInputTextTypedDict
|
|
8
|
-
from
|
|
9
|
-
from openrouter.
|
|
10
|
-
|
|
7
|
+
from .responseinputvideo import ResponseInputVideo, ResponseInputVideoTypedDict
|
|
8
|
+
from openrouter.types import (
|
|
9
|
+
BaseModel,
|
|
10
|
+
Nullable,
|
|
11
|
+
OptionalNullable,
|
|
12
|
+
UNSET,
|
|
13
|
+
UNSET_SENTINEL,
|
|
14
|
+
UnrecognizedStr,
|
|
15
|
+
)
|
|
16
|
+
from openrouter.utils import get_discriminator, validate_open_enum
|
|
17
|
+
from pydantic import Discriminator, Tag, model_serializer
|
|
18
|
+
from pydantic.functional_validators import PlainValidator
|
|
11
19
|
from typing import List, Literal, Optional, Union
|
|
12
20
|
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
|
|
13
21
|
|
|
14
22
|
|
|
15
|
-
|
|
23
|
+
OpenResponsesEasyInputMessageTypeMessage = Literal["message",]
|
|
16
24
|
|
|
17
25
|
|
|
18
26
|
OpenResponsesEasyInputMessageRoleDeveloper = Literal["developer",]
|
|
@@ -49,49 +57,114 @@ OpenResponsesEasyInputMessageRoleUnion = TypeAliasType(
|
|
|
49
57
|
)
|
|
50
58
|
|
|
51
59
|
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
OpenResponsesEasyInputMessageContentType = Literal["input_image",]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
OpenResponsesEasyInputMessageDetail = Union[
|
|
64
|
+
Literal[
|
|
65
|
+
"auto",
|
|
66
|
+
"high",
|
|
67
|
+
"low",
|
|
68
|
+
],
|
|
69
|
+
UnrecognizedStr,
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class OpenResponsesEasyInputMessageContentInputImageTypedDict(TypedDict):
|
|
74
|
+
r"""Image input content item"""
|
|
75
|
+
|
|
76
|
+
type: OpenResponsesEasyInputMessageContentType
|
|
77
|
+
detail: OpenResponsesEasyInputMessageDetail
|
|
78
|
+
image_url: NotRequired[Nullable[str]]
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class OpenResponsesEasyInputMessageContentInputImage(BaseModel):
|
|
82
|
+
r"""Image input content item"""
|
|
83
|
+
|
|
84
|
+
type: OpenResponsesEasyInputMessageContentType
|
|
85
|
+
|
|
86
|
+
detail: Annotated[
|
|
87
|
+
OpenResponsesEasyInputMessageDetail, PlainValidator(validate_open_enum(False))
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
image_url: OptionalNullable[str] = UNSET
|
|
91
|
+
|
|
92
|
+
@model_serializer(mode="wrap")
|
|
93
|
+
def serialize_model(self, handler):
|
|
94
|
+
optional_fields = ["image_url"]
|
|
95
|
+
nullable_fields = ["image_url"]
|
|
96
|
+
null_default_fields = []
|
|
97
|
+
|
|
98
|
+
serialized = handler(self)
|
|
99
|
+
|
|
100
|
+
m = {}
|
|
101
|
+
|
|
102
|
+
for n, f in type(self).model_fields.items():
|
|
103
|
+
k = f.alias or n
|
|
104
|
+
val = serialized.get(k)
|
|
105
|
+
serialized.pop(k, None)
|
|
106
|
+
|
|
107
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
108
|
+
is_set = (
|
|
109
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
110
|
+
or k in null_default_fields
|
|
111
|
+
) # pylint: disable=no-member
|
|
112
|
+
|
|
113
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
114
|
+
m[k] = val
|
|
115
|
+
elif val != UNSET_SENTINEL and (
|
|
116
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
117
|
+
):
|
|
118
|
+
m[k] = val
|
|
119
|
+
|
|
120
|
+
return m
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
OpenResponsesEasyInputMessageContentUnion1TypedDict = TypeAliasType(
|
|
124
|
+
"OpenResponsesEasyInputMessageContentUnion1TypedDict",
|
|
54
125
|
Union[
|
|
55
126
|
ResponseInputTextTypedDict,
|
|
56
127
|
ResponseInputAudioTypedDict,
|
|
57
|
-
|
|
128
|
+
ResponseInputVideoTypedDict,
|
|
129
|
+
OpenResponsesEasyInputMessageContentInputImageTypedDict,
|
|
58
130
|
ResponseInputFileTypedDict,
|
|
59
131
|
],
|
|
60
132
|
)
|
|
61
133
|
|
|
62
134
|
|
|
63
|
-
|
|
135
|
+
OpenResponsesEasyInputMessageContentUnion1 = Annotated[
|
|
64
136
|
Union[
|
|
65
137
|
Annotated[ResponseInputText, Tag("input_text")],
|
|
66
|
-
Annotated[
|
|
138
|
+
Annotated[OpenResponsesEasyInputMessageContentInputImage, Tag("input_image")],
|
|
67
139
|
Annotated[ResponseInputFile, Tag("input_file")],
|
|
68
140
|
Annotated[ResponseInputAudio, Tag("input_audio")],
|
|
141
|
+
Annotated[ResponseInputVideo, Tag("input_video")],
|
|
69
142
|
],
|
|
70
143
|
Discriminator(lambda m: get_discriminator(m, "type", "type")),
|
|
71
144
|
]
|
|
72
145
|
|
|
73
146
|
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
Union[List[
|
|
147
|
+
OpenResponsesEasyInputMessageContentUnion2TypedDict = TypeAliasType(
|
|
148
|
+
"OpenResponsesEasyInputMessageContentUnion2TypedDict",
|
|
149
|
+
Union[List[OpenResponsesEasyInputMessageContentUnion1TypedDict], str],
|
|
77
150
|
)
|
|
78
151
|
|
|
79
152
|
|
|
80
|
-
|
|
81
|
-
"
|
|
82
|
-
Union[List[
|
|
153
|
+
OpenResponsesEasyInputMessageContentUnion2 = TypeAliasType(
|
|
154
|
+
"OpenResponsesEasyInputMessageContentUnion2",
|
|
155
|
+
Union[List[OpenResponsesEasyInputMessageContentUnion1], str],
|
|
83
156
|
)
|
|
84
157
|
|
|
85
158
|
|
|
86
159
|
class OpenResponsesEasyInputMessageTypedDict(TypedDict):
|
|
87
160
|
role: OpenResponsesEasyInputMessageRoleUnionTypedDict
|
|
88
|
-
content:
|
|
89
|
-
type: NotRequired[
|
|
161
|
+
content: OpenResponsesEasyInputMessageContentUnion2TypedDict
|
|
162
|
+
type: NotRequired[OpenResponsesEasyInputMessageTypeMessage]
|
|
90
163
|
|
|
91
164
|
|
|
92
165
|
class OpenResponsesEasyInputMessage(BaseModel):
|
|
93
166
|
role: OpenResponsesEasyInputMessageRoleUnion
|
|
94
167
|
|
|
95
|
-
content:
|
|
168
|
+
content: OpenResponsesEasyInputMessageContentUnion2
|
|
96
169
|
|
|
97
|
-
type: Optional[
|
|
170
|
+
type: Optional[OpenResponsesEasyInputMessageTypeMessage] = None
|
|
@@ -60,9 +60,9 @@ OpenResponsesInput1TypedDict = TypeAliasType(
|
|
|
60
60
|
OpenResponsesFunctionCallOutputTypedDict,
|
|
61
61
|
ResponsesOutputMessageTypedDict,
|
|
62
62
|
OpenResponsesFunctionToolCallTypedDict,
|
|
63
|
-
ResponsesOutputItemReasoningTypedDict,
|
|
64
63
|
ResponsesOutputItemFunctionCallTypedDict,
|
|
65
64
|
OpenResponsesReasoningTypedDict,
|
|
65
|
+
ResponsesOutputItemReasoningTypedDict,
|
|
66
66
|
],
|
|
67
67
|
)
|
|
68
68
|
|
|
@@ -78,9 +78,9 @@ OpenResponsesInput1 = TypeAliasType(
|
|
|
78
78
|
OpenResponsesFunctionCallOutput,
|
|
79
79
|
ResponsesOutputMessage,
|
|
80
80
|
OpenResponsesFunctionToolCall,
|
|
81
|
-
ResponsesOutputItemReasoning,
|
|
82
81
|
ResponsesOutputItemFunctionCall,
|
|
83
82
|
OpenResponsesReasoning,
|
|
83
|
+
ResponsesOutputItemReasoning,
|
|
84
84
|
],
|
|
85
85
|
)
|
|
86
86
|
|
|
@@ -3,16 +3,24 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from .responseinputaudio import ResponseInputAudio, ResponseInputAudioTypedDict
|
|
5
5
|
from .responseinputfile import ResponseInputFile, ResponseInputFileTypedDict
|
|
6
|
-
from .responseinputimage import ResponseInputImage, ResponseInputImageTypedDict
|
|
7
6
|
from .responseinputtext import ResponseInputText, ResponseInputTextTypedDict
|
|
8
|
-
from
|
|
9
|
-
from openrouter.
|
|
10
|
-
|
|
7
|
+
from .responseinputvideo import ResponseInputVideo, ResponseInputVideoTypedDict
|
|
8
|
+
from openrouter.types import (
|
|
9
|
+
BaseModel,
|
|
10
|
+
Nullable,
|
|
11
|
+
OptionalNullable,
|
|
12
|
+
UNSET,
|
|
13
|
+
UNSET_SENTINEL,
|
|
14
|
+
UnrecognizedStr,
|
|
15
|
+
)
|
|
16
|
+
from openrouter.utils import get_discriminator, validate_open_enum
|
|
17
|
+
from pydantic import Discriminator, Tag, model_serializer
|
|
18
|
+
from pydantic.functional_validators import PlainValidator
|
|
11
19
|
from typing import List, Literal, Optional, Union
|
|
12
20
|
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
|
|
13
21
|
|
|
14
22
|
|
|
15
|
-
|
|
23
|
+
OpenResponsesInputMessageItemTypeMessage = Literal["message",]
|
|
16
24
|
|
|
17
25
|
|
|
18
26
|
OpenResponsesInputMessageItemRoleDeveloper = Literal["developer",]
|
|
@@ -44,23 +52,88 @@ OpenResponsesInputMessageItemRoleUnion = TypeAliasType(
|
|
|
44
52
|
)
|
|
45
53
|
|
|
46
54
|
|
|
47
|
-
|
|
48
|
-
|
|
55
|
+
OpenResponsesInputMessageItemContentType = Literal["input_image",]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
OpenResponsesInputMessageItemDetail = Union[
|
|
59
|
+
Literal[
|
|
60
|
+
"auto",
|
|
61
|
+
"high",
|
|
62
|
+
"low",
|
|
63
|
+
],
|
|
64
|
+
UnrecognizedStr,
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class OpenResponsesInputMessageItemContentInputImageTypedDict(TypedDict):
|
|
69
|
+
r"""Image input content item"""
|
|
70
|
+
|
|
71
|
+
type: OpenResponsesInputMessageItemContentType
|
|
72
|
+
detail: OpenResponsesInputMessageItemDetail
|
|
73
|
+
image_url: NotRequired[Nullable[str]]
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class OpenResponsesInputMessageItemContentInputImage(BaseModel):
|
|
77
|
+
r"""Image input content item"""
|
|
78
|
+
|
|
79
|
+
type: OpenResponsesInputMessageItemContentType
|
|
80
|
+
|
|
81
|
+
detail: Annotated[
|
|
82
|
+
OpenResponsesInputMessageItemDetail, PlainValidator(validate_open_enum(False))
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
image_url: OptionalNullable[str] = UNSET
|
|
86
|
+
|
|
87
|
+
@model_serializer(mode="wrap")
|
|
88
|
+
def serialize_model(self, handler):
|
|
89
|
+
optional_fields = ["image_url"]
|
|
90
|
+
nullable_fields = ["image_url"]
|
|
91
|
+
null_default_fields = []
|
|
92
|
+
|
|
93
|
+
serialized = handler(self)
|
|
94
|
+
|
|
95
|
+
m = {}
|
|
96
|
+
|
|
97
|
+
for n, f in type(self).model_fields.items():
|
|
98
|
+
k = f.alias or n
|
|
99
|
+
val = serialized.get(k)
|
|
100
|
+
serialized.pop(k, None)
|
|
101
|
+
|
|
102
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
103
|
+
is_set = (
|
|
104
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
105
|
+
or k in null_default_fields
|
|
106
|
+
) # pylint: disable=no-member
|
|
107
|
+
|
|
108
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
109
|
+
m[k] = val
|
|
110
|
+
elif val != UNSET_SENTINEL and (
|
|
111
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
112
|
+
):
|
|
113
|
+
m[k] = val
|
|
114
|
+
|
|
115
|
+
return m
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
OpenResponsesInputMessageItemContentUnionTypedDict = TypeAliasType(
|
|
119
|
+
"OpenResponsesInputMessageItemContentUnionTypedDict",
|
|
49
120
|
Union[
|
|
50
121
|
ResponseInputTextTypedDict,
|
|
51
122
|
ResponseInputAudioTypedDict,
|
|
52
|
-
|
|
123
|
+
ResponseInputVideoTypedDict,
|
|
124
|
+
OpenResponsesInputMessageItemContentInputImageTypedDict,
|
|
53
125
|
ResponseInputFileTypedDict,
|
|
54
126
|
],
|
|
55
127
|
)
|
|
56
128
|
|
|
57
129
|
|
|
58
|
-
|
|
130
|
+
OpenResponsesInputMessageItemContentUnion = Annotated[
|
|
59
131
|
Union[
|
|
60
132
|
Annotated[ResponseInputText, Tag("input_text")],
|
|
61
|
-
Annotated[
|
|
133
|
+
Annotated[OpenResponsesInputMessageItemContentInputImage, Tag("input_image")],
|
|
62
134
|
Annotated[ResponseInputFile, Tag("input_file")],
|
|
63
135
|
Annotated[ResponseInputAudio, Tag("input_audio")],
|
|
136
|
+
Annotated[ResponseInputVideo, Tag("input_video")],
|
|
64
137
|
],
|
|
65
138
|
Discriminator(lambda m: get_discriminator(m, "type", "type")),
|
|
66
139
|
]
|
|
@@ -68,16 +141,16 @@ OpenResponsesInputMessageItemContent = Annotated[
|
|
|
68
141
|
|
|
69
142
|
class OpenResponsesInputMessageItemTypedDict(TypedDict):
|
|
70
143
|
role: OpenResponsesInputMessageItemRoleUnionTypedDict
|
|
71
|
-
content: List[
|
|
144
|
+
content: List[OpenResponsesInputMessageItemContentUnionTypedDict]
|
|
72
145
|
id: NotRequired[str]
|
|
73
|
-
type: NotRequired[
|
|
146
|
+
type: NotRequired[OpenResponsesInputMessageItemTypeMessage]
|
|
74
147
|
|
|
75
148
|
|
|
76
149
|
class OpenResponsesInputMessageItem(BaseModel):
|
|
77
150
|
role: OpenResponsesInputMessageItemRoleUnion
|
|
78
151
|
|
|
79
|
-
content: List[
|
|
152
|
+
content: List[OpenResponsesInputMessageItemContentUnion]
|
|
80
153
|
|
|
81
154
|
id: Optional[str] = None
|
|
82
155
|
|
|
83
|
-
type: Optional[
|
|
156
|
+
type: Optional[OpenResponsesInputMessageItemTypeMessage] = None
|
|
@@ -149,24 +149,27 @@ class OpenResponsesNonStreamingResponseTypedDict(TypedDict):
|
|
|
149
149
|
object: Object
|
|
150
150
|
created_at: float
|
|
151
151
|
model: str
|
|
152
|
+
status: OpenAIResponsesResponseStatus
|
|
153
|
+
completed_at: Nullable[float]
|
|
152
154
|
output: List[ResponsesOutputItemTypedDict]
|
|
153
155
|
error: Nullable[ResponsesErrorFieldTypedDict]
|
|
154
156
|
r"""Error information returned from the API"""
|
|
155
157
|
incomplete_details: Nullable[OpenAIResponsesIncompleteDetailsTypedDict]
|
|
156
158
|
temperature: Nullable[float]
|
|
157
159
|
top_p: Nullable[float]
|
|
160
|
+
presence_penalty: Nullable[float]
|
|
161
|
+
frequency_penalty: Nullable[float]
|
|
158
162
|
instructions: Nullable[OpenAIResponsesInputUnionTypedDict]
|
|
159
163
|
metadata: Nullable[Dict[str, str]]
|
|
160
164
|
r"""Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed."""
|
|
161
165
|
tools: List[OpenResponsesNonStreamingResponseToolUnionTypedDict]
|
|
162
166
|
tool_choice: OpenAIResponsesToolChoiceUnionTypedDict
|
|
163
167
|
parallel_tool_calls: bool
|
|
164
|
-
status: NotRequired[OpenAIResponsesResponseStatus]
|
|
165
168
|
user: NotRequired[Nullable[str]]
|
|
166
169
|
output_text: NotRequired[str]
|
|
167
170
|
prompt_cache_key: NotRequired[Nullable[str]]
|
|
168
171
|
safety_identifier: NotRequired[Nullable[str]]
|
|
169
|
-
usage: NotRequired[OpenResponsesUsageTypedDict]
|
|
172
|
+
usage: NotRequired[Nullable[OpenResponsesUsageTypedDict]]
|
|
170
173
|
r"""Token usage information for the response"""
|
|
171
174
|
max_tool_calls: NotRequired[Nullable[float]]
|
|
172
175
|
top_logprobs: NotRequired[float]
|
|
@@ -193,6 +196,12 @@ class OpenResponsesNonStreamingResponse(BaseModel):
|
|
|
193
196
|
|
|
194
197
|
model: str
|
|
195
198
|
|
|
199
|
+
status: Annotated[
|
|
200
|
+
OpenAIResponsesResponseStatus, PlainValidator(validate_open_enum(False))
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
completed_at: Nullable[float]
|
|
204
|
+
|
|
196
205
|
output: List[ResponsesOutputItem]
|
|
197
206
|
|
|
198
207
|
error: Nullable[ResponsesErrorField]
|
|
@@ -204,6 +213,10 @@ class OpenResponsesNonStreamingResponse(BaseModel):
|
|
|
204
213
|
|
|
205
214
|
top_p: Nullable[float]
|
|
206
215
|
|
|
216
|
+
presence_penalty: Nullable[float]
|
|
217
|
+
|
|
218
|
+
frequency_penalty: Nullable[float]
|
|
219
|
+
|
|
207
220
|
instructions: Nullable[OpenAIResponsesInputUnion]
|
|
208
221
|
|
|
209
222
|
metadata: Nullable[Dict[str, str]]
|
|
@@ -215,11 +228,6 @@ class OpenResponsesNonStreamingResponse(BaseModel):
|
|
|
215
228
|
|
|
216
229
|
parallel_tool_calls: bool
|
|
217
230
|
|
|
218
|
-
status: Annotated[
|
|
219
|
-
Optional[OpenAIResponsesResponseStatus],
|
|
220
|
-
PlainValidator(validate_open_enum(False)),
|
|
221
|
-
] = None
|
|
222
|
-
|
|
223
231
|
user: OptionalNullable[str] = UNSET
|
|
224
232
|
|
|
225
233
|
output_text: Optional[str] = None
|
|
@@ -228,7 +236,7 @@ class OpenResponsesNonStreamingResponse(BaseModel):
|
|
|
228
236
|
|
|
229
237
|
safety_identifier: OptionalNullable[str] = UNSET
|
|
230
238
|
|
|
231
|
-
usage:
|
|
239
|
+
usage: OptionalNullable[OpenResponsesUsage] = UNSET
|
|
232
240
|
r"""Token usage information for the response"""
|
|
233
241
|
|
|
234
242
|
max_tool_calls: OptionalNullable[float] = UNSET
|
|
@@ -263,7 +271,6 @@ class OpenResponsesNonStreamingResponse(BaseModel):
|
|
|
263
271
|
@model_serializer(mode="wrap")
|
|
264
272
|
def serialize_model(self, handler):
|
|
265
273
|
optional_fields = [
|
|
266
|
-
"status",
|
|
267
274
|
"user",
|
|
268
275
|
"output_text",
|
|
269
276
|
"prompt_cache_key",
|
|
@@ -282,15 +289,19 @@ class OpenResponsesNonStreamingResponse(BaseModel):
|
|
|
282
289
|
"text",
|
|
283
290
|
]
|
|
284
291
|
nullable_fields = [
|
|
292
|
+
"completed_at",
|
|
285
293
|
"user",
|
|
286
294
|
"prompt_cache_key",
|
|
287
295
|
"safety_identifier",
|
|
288
296
|
"error",
|
|
289
297
|
"incomplete_details",
|
|
298
|
+
"usage",
|
|
290
299
|
"max_tool_calls",
|
|
291
300
|
"max_output_tokens",
|
|
292
301
|
"temperature",
|
|
293
302
|
"top_p",
|
|
303
|
+
"presence_penalty",
|
|
304
|
+
"frequency_penalty",
|
|
294
305
|
"instructions",
|
|
295
306
|
"metadata",
|
|
296
307
|
"prompt",
|