orq-ai-sdk 4.2.0rc28__py3-none-any.whl → 4.3.0rc7__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.
Files changed (166) hide show
  1. orq_ai_sdk/_version.py +3 -3
  2. orq_ai_sdk/agents.py +186 -186
  3. orq_ai_sdk/audio.py +30 -0
  4. orq_ai_sdk/basesdk.py +20 -6
  5. orq_ai_sdk/chat.py +22 -0
  6. orq_ai_sdk/completions.py +438 -0
  7. orq_ai_sdk/contacts.py +43 -855
  8. orq_ai_sdk/deployments.py +61 -0
  9. orq_ai_sdk/edits.py +364 -0
  10. orq_ai_sdk/embeddings.py +344 -0
  11. orq_ai_sdk/generations.py +370 -0
  12. orq_ai_sdk/identities.py +1037 -0
  13. orq_ai_sdk/images.py +28 -0
  14. orq_ai_sdk/models/__init__.py +5746 -737
  15. orq_ai_sdk/models/actionreviewedstreamingevent.py +18 -1
  16. orq_ai_sdk/models/actionreviewrequestedstreamingevent.py +44 -1
  17. orq_ai_sdk/models/agenterroredstreamingevent.py +18 -1
  18. orq_ai_sdk/models/agentinactivestreamingevent.py +168 -70
  19. orq_ai_sdk/models/agentmessagecreatedstreamingevent.py +18 -2
  20. orq_ai_sdk/models/agentresponsemessage.py +18 -2
  21. orq_ai_sdk/models/agentstartedstreamingevent.py +127 -2
  22. orq_ai_sdk/models/agentthoughtstreamingevent.py +178 -211
  23. orq_ai_sdk/models/conversationresponse.py +31 -20
  24. orq_ai_sdk/models/conversationwithmessagesresponse.py +31 -20
  25. orq_ai_sdk/models/createagentrequestop.py +1945 -383
  26. orq_ai_sdk/models/createagentresponse.py +147 -91
  27. orq_ai_sdk/models/createagentresponserequestop.py +111 -2
  28. orq_ai_sdk/models/createchatcompletionop.py +1381 -861
  29. orq_ai_sdk/models/createchunkop.py +46 -19
  30. orq_ai_sdk/models/createcompletionop.py +2078 -0
  31. orq_ai_sdk/models/createcontactop.py +45 -56
  32. orq_ai_sdk/models/createconversationop.py +61 -39
  33. orq_ai_sdk/models/createconversationresponseop.py +68 -4
  34. orq_ai_sdk/models/createdatasetitemop.py +424 -80
  35. orq_ai_sdk/models/createdatasetop.py +19 -2
  36. orq_ai_sdk/models/createdatasourceop.py +92 -26
  37. orq_ai_sdk/models/createembeddingop.py +579 -0
  38. orq_ai_sdk/models/createevalop.py +552 -24
  39. orq_ai_sdk/models/createidentityop.py +176 -0
  40. orq_ai_sdk/models/createimageeditop.py +715 -0
  41. orq_ai_sdk/models/createimageop.py +407 -128
  42. orq_ai_sdk/models/createimagevariationop.py +706 -0
  43. orq_ai_sdk/models/createknowledgeop.py +186 -121
  44. orq_ai_sdk/models/creatememorydocumentop.py +50 -1
  45. orq_ai_sdk/models/creatememoryop.py +34 -21
  46. orq_ai_sdk/models/creatememorystoreop.py +34 -1
  47. orq_ai_sdk/models/createmoderationop.py +521 -0
  48. orq_ai_sdk/models/createpromptop.py +2759 -1251
  49. orq_ai_sdk/models/creatererankop.py +608 -0
  50. orq_ai_sdk/models/createresponseop.py +2567 -0
  51. orq_ai_sdk/models/createspeechop.py +466 -0
  52. orq_ai_sdk/models/createtoolop.py +537 -12
  53. orq_ai_sdk/models/createtranscriptionop.py +732 -0
  54. orq_ai_sdk/models/createtranslationop.py +702 -0
  55. orq_ai_sdk/models/datapart.py +18 -1
  56. orq_ai_sdk/models/deletechunksop.py +34 -1
  57. orq_ai_sdk/models/{deletecontactop.py → deleteidentityop.py} +9 -9
  58. orq_ai_sdk/models/deletepromptop.py +26 -0
  59. orq_ai_sdk/models/deploymentcreatemetricop.py +362 -76
  60. orq_ai_sdk/models/deploymentgetconfigop.py +635 -194
  61. orq_ai_sdk/models/deploymentinvokeop.py +168 -173
  62. orq_ai_sdk/models/deploymentsop.py +195 -58
  63. orq_ai_sdk/models/deploymentstreamop.py +652 -304
  64. orq_ai_sdk/models/errorpart.py +18 -1
  65. orq_ai_sdk/models/filecontentpartschema.py +18 -1
  66. orq_ai_sdk/models/filegetop.py +19 -2
  67. orq_ai_sdk/models/filelistop.py +35 -2
  68. orq_ai_sdk/models/filepart.py +50 -1
  69. orq_ai_sdk/models/fileuploadop.py +51 -2
  70. orq_ai_sdk/models/generateconversationnameop.py +31 -20
  71. orq_ai_sdk/models/get_v2_evaluators_id_versionsop.py +34 -1
  72. orq_ai_sdk/models/get_v2_tools_tool_id_versions_version_id_op.py +18 -1
  73. orq_ai_sdk/models/get_v2_tools_tool_id_versionsop.py +34 -1
  74. orq_ai_sdk/models/getallmemoriesop.py +34 -21
  75. orq_ai_sdk/models/getallmemorydocumentsop.py +42 -1
  76. orq_ai_sdk/models/getallmemorystoresop.py +34 -1
  77. orq_ai_sdk/models/getallpromptsop.py +1696 -230
  78. orq_ai_sdk/models/getalltoolsop.py +325 -8
  79. orq_ai_sdk/models/getchunkscountop.py +34 -1
  80. orq_ai_sdk/models/getevalsop.py +395 -43
  81. orq_ai_sdk/models/getonechunkop.py +14 -19
  82. orq_ai_sdk/models/getoneknowledgeop.py +116 -96
  83. orq_ai_sdk/models/getonepromptop.py +1679 -230
  84. orq_ai_sdk/models/getpromptversionop.py +1676 -216
  85. orq_ai_sdk/models/imagecontentpartschema.py +50 -1
  86. orq_ai_sdk/models/internal/globals.py +18 -1
  87. orq_ai_sdk/models/invokeagentop.py +140 -2
  88. orq_ai_sdk/models/invokedeploymentrequest.py +418 -80
  89. orq_ai_sdk/models/invokeevalop.py +160 -131
  90. orq_ai_sdk/models/listagentsop.py +805 -166
  91. orq_ai_sdk/models/listchunksop.py +32 -19
  92. orq_ai_sdk/models/listchunkspaginatedop.py +46 -19
  93. orq_ai_sdk/models/listconversationsop.py +18 -1
  94. orq_ai_sdk/models/listdatasetdatapointsop.py +252 -42
  95. orq_ai_sdk/models/listdatasetsop.py +35 -2
  96. orq_ai_sdk/models/listdatasourcesop.py +35 -26
  97. orq_ai_sdk/models/{listcontactsop.py → listidentitiesop.py} +89 -79
  98. orq_ai_sdk/models/listknowledgebasesop.py +132 -96
  99. orq_ai_sdk/models/listmodelsop.py +1 -0
  100. orq_ai_sdk/models/listpromptversionsop.py +1690 -216
  101. orq_ai_sdk/models/parseop.py +161 -17
  102. orq_ai_sdk/models/partdoneevent.py +19 -2
  103. orq_ai_sdk/models/post_v2_router_ocrop.py +408 -0
  104. orq_ai_sdk/models/publiccontact.py +27 -4
  105. orq_ai_sdk/models/publicidentity.py +62 -0
  106. orq_ai_sdk/models/reasoningpart.py +19 -2
  107. orq_ai_sdk/models/refusalpartschema.py +18 -1
  108. orq_ai_sdk/models/remoteconfigsgetconfigop.py +34 -1
  109. orq_ai_sdk/models/responsedoneevent.py +114 -84
  110. orq_ai_sdk/models/responsestartedevent.py +18 -1
  111. orq_ai_sdk/models/retrieveagentrequestop.py +799 -166
  112. orq_ai_sdk/models/retrievedatapointop.py +236 -42
  113. orq_ai_sdk/models/retrievedatasetop.py +19 -2
  114. orq_ai_sdk/models/retrievedatasourceop.py +17 -26
  115. orq_ai_sdk/models/{retrievecontactop.py → retrieveidentityop.py} +38 -41
  116. orq_ai_sdk/models/retrievememorydocumentop.py +18 -1
  117. orq_ai_sdk/models/retrievememoryop.py +18 -21
  118. orq_ai_sdk/models/retrievememorystoreop.py +18 -1
  119. orq_ai_sdk/models/retrievetoolop.py +309 -8
  120. orq_ai_sdk/models/runagentop.py +1462 -196
  121. orq_ai_sdk/models/searchknowledgeop.py +108 -1
  122. orq_ai_sdk/models/security.py +18 -1
  123. orq_ai_sdk/models/streamagentop.py +93 -2
  124. orq_ai_sdk/models/streamrunagentop.py +1439 -194
  125. orq_ai_sdk/models/textcontentpartschema.py +34 -1
  126. orq_ai_sdk/models/thinkingconfigenabledschema.py +18 -1
  127. orq_ai_sdk/models/toolcallpart.py +18 -1
  128. orq_ai_sdk/models/tooldoneevent.py +18 -1
  129. orq_ai_sdk/models/toolexecutionfailedstreamingevent.py +50 -1
  130. orq_ai_sdk/models/toolexecutionfinishedstreamingevent.py +34 -1
  131. orq_ai_sdk/models/toolexecutionstartedstreamingevent.py +34 -1
  132. orq_ai_sdk/models/toolresultpart.py +18 -1
  133. orq_ai_sdk/models/toolreviewrequestedevent.py +18 -1
  134. orq_ai_sdk/models/toolstartedevent.py +18 -1
  135. orq_ai_sdk/models/updateagentop.py +1968 -397
  136. orq_ai_sdk/models/updatechunkop.py +46 -19
  137. orq_ai_sdk/models/updateconversationop.py +61 -39
  138. orq_ai_sdk/models/updatedatapointop.py +424 -80
  139. orq_ai_sdk/models/updatedatasetop.py +51 -2
  140. orq_ai_sdk/models/updatedatasourceop.py +17 -26
  141. orq_ai_sdk/models/updateevalop.py +577 -16
  142. orq_ai_sdk/models/{updatecontactop.py → updateidentityop.py} +78 -68
  143. orq_ai_sdk/models/updateknowledgeop.py +234 -190
  144. orq_ai_sdk/models/updatememorydocumentop.py +50 -1
  145. orq_ai_sdk/models/updatememoryop.py +50 -21
  146. orq_ai_sdk/models/updatememorystoreop.py +66 -1
  147. orq_ai_sdk/models/updatepromptop.py +2854 -1448
  148. orq_ai_sdk/models/updatetoolop.py +592 -9
  149. orq_ai_sdk/models/usermessagerequest.py +18 -2
  150. orq_ai_sdk/moderations.py +218 -0
  151. orq_ai_sdk/orq_completions.py +666 -0
  152. orq_ai_sdk/orq_responses.py +398 -0
  153. orq_ai_sdk/prompts.py +28 -36
  154. orq_ai_sdk/rerank.py +330 -0
  155. orq_ai_sdk/router.py +89 -641
  156. orq_ai_sdk/sdk.py +3 -0
  157. orq_ai_sdk/speech.py +333 -0
  158. orq_ai_sdk/transcriptions.py +416 -0
  159. orq_ai_sdk/translations.py +384 -0
  160. orq_ai_sdk/utils/__init__.py +13 -1
  161. orq_ai_sdk/variations.py +364 -0
  162. {orq_ai_sdk-4.2.0rc28.dist-info → orq_ai_sdk-4.3.0rc7.dist-info}/METADATA +169 -148
  163. orq_ai_sdk-4.3.0rc7.dist-info/RECORD +263 -0
  164. {orq_ai_sdk-4.2.0rc28.dist-info → orq_ai_sdk-4.3.0rc7.dist-info}/WHEEL +2 -1
  165. orq_ai_sdk-4.3.0rc7.dist-info/top_level.txt +1 -0
  166. orq_ai_sdk-4.2.0rc28.dist-info/RECORD +0 -233
@@ -1,9 +1,10 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from orq_ai_sdk.types import BaseModel
4
+ from orq_ai_sdk.types import BaseModel, UNSET_SENTINEL
5
5
  from orq_ai_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata
6
6
  import pydantic
7
+ from pydantic import model_serializer
7
8
  from typing import Any, Dict, List, Literal, Optional, Union
8
9
  from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
9
10
 
@@ -620,6 +621,22 @@ class SearchOptions(BaseModel):
620
621
  include_scores: Optional[bool] = None
621
622
  r"""Whether to include the scores in the chunk"""
622
623
 
624
+ @model_serializer(mode="wrap")
625
+ def serialize_model(self, handler):
626
+ optional_fields = set(["include_vectors", "include_metadata", "include_scores"])
627
+ serialized = handler(self)
628
+ m = {}
629
+
630
+ for n, f in type(self).model_fields.items():
631
+ k = f.alias or n
632
+ val = serialized.get(k)
633
+
634
+ if val != UNSET_SENTINEL:
635
+ if val is not None or k not in optional_fields:
636
+ m[k] = val
637
+
638
+ return m
639
+
623
640
 
624
641
  class RerankConfigTypedDict(TypedDict):
625
642
  r"""Override the rerank configuration for this search. If not provided, will use the knowledge base configured rerank settings."""
@@ -644,6 +661,22 @@ class RerankConfig(BaseModel):
644
661
  top_k: Optional[int] = 10
645
662
  r"""The number of top results to return after reranking. If not provided, will default to the knowledge base configured `top_k`."""
646
663
 
664
+ @model_serializer(mode="wrap")
665
+ def serialize_model(self, handler):
666
+ optional_fields = set(["threshold", "top_k"])
667
+ serialized = handler(self)
668
+ m = {}
669
+
670
+ for n, f in type(self).model_fields.items():
671
+ k = f.alias or n
672
+ val = serialized.get(k)
673
+
674
+ if val != UNSET_SENTINEL:
675
+ if val is not None or k not in optional_fields:
676
+ m[k] = val
677
+
678
+ return m
679
+
647
680
 
648
681
  class AgenticRagConfigTypedDict(TypedDict):
649
682
  r"""Override the agentic RAG configuration for this search. If not provided, will use the knowledge base configured agentic RAG settings."""
@@ -707,6 +740,32 @@ class SearchKnowledgeRequestBody(BaseModel):
707
740
  agentic_rag_config: Optional[AgenticRagConfig] = None
708
741
  r"""Override the agentic RAG configuration for this search. If not provided, will use the knowledge base configured agentic RAG settings."""
709
742
 
743
+ @model_serializer(mode="wrap")
744
+ def serialize_model(self, handler):
745
+ optional_fields = set(
746
+ [
747
+ "top_k",
748
+ "threshold",
749
+ "search_type",
750
+ "filter_by",
751
+ "search_options",
752
+ "rerank_config",
753
+ "agentic_rag_config",
754
+ ]
755
+ )
756
+ serialized = handler(self)
757
+ m = {}
758
+
759
+ for n, f in type(self).model_fields.items():
760
+ k = f.alias or n
761
+ val = serialized.get(k)
762
+
763
+ if val != UNSET_SENTINEL:
764
+ if val is not None or k not in optional_fields:
765
+ m[k] = val
766
+
767
+ return m
768
+
710
769
 
711
770
  class SearchKnowledgeRequestTypedDict(TypedDict):
712
771
  knowledge_id: str
@@ -727,6 +786,22 @@ class SearchKnowledgeRequest(BaseModel):
727
786
  ] = None
728
787
  r"""A search request for chunks in a knowledge base"""
729
788
 
789
+ @model_serializer(mode="wrap")
790
+ def serialize_model(self, handler):
791
+ optional_fields = set(["RequestBody"])
792
+ serialized = handler(self)
793
+ m = {}
794
+
795
+ for n, f in type(self).model_fields.items():
796
+ k = f.alias or n
797
+ val = serialized.get(k)
798
+
799
+ if val != UNSET_SENTINEL:
800
+ if val is not None or k not in optional_fields:
801
+ m[k] = val
802
+
803
+ return m
804
+
730
805
 
731
806
  class ScoresTypedDict(TypedDict):
732
807
  rerank_score: NotRequired[float]
@@ -738,6 +813,22 @@ class Scores(BaseModel):
738
813
 
739
814
  search_score: Optional[float] = None
740
815
 
816
+ @model_serializer(mode="wrap")
817
+ def serialize_model(self, handler):
818
+ optional_fields = set(["rerank_score", "search_score"])
819
+ serialized = handler(self)
820
+ m = {}
821
+
822
+ for n, f in type(self).model_fields.items():
823
+ k = f.alias or n
824
+ val = serialized.get(k)
825
+
826
+ if val != UNSET_SENTINEL:
827
+ if val is not None or k not in optional_fields:
828
+ m[k] = val
829
+
830
+ return m
831
+
741
832
 
742
833
  class MatchesTypedDict(TypedDict):
743
834
  id: str
@@ -758,6 +849,22 @@ class Matches(BaseModel):
758
849
 
759
850
  scores: Optional[Scores] = None
760
851
 
852
+ @model_serializer(mode="wrap")
853
+ def serialize_model(self, handler):
854
+ optional_fields = set(["vector", "metadata", "scores"])
855
+ serialized = handler(self)
856
+ m = {}
857
+
858
+ for n, f in type(self).model_fields.items():
859
+ k = f.alias or n
860
+ val = serialized.get(k)
861
+
862
+ if val != UNSET_SENTINEL:
863
+ if val is not None or k not in optional_fields:
864
+ m[k] = val
865
+
866
+ return m
867
+
761
868
 
762
869
  class SearchKnowledgeResponseBodyTypedDict(TypedDict):
763
870
  r"""Search knowledge base"""
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from orq_ai_sdk.types import BaseModel
4
+ from orq_ai_sdk.types import BaseModel, UNSET_SENTINEL
5
5
  from orq_ai_sdk.utils import FieldMetadata, SecurityMetadata
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -23,3 +24,19 @@ class Security(BaseModel):
23
24
  )
24
25
  ),
25
26
  ] = None
27
+
28
+ @model_serializer(mode="wrap")
29
+ def serialize_model(self, handler):
30
+ optional_fields = set(["ApiKey"])
31
+ serialized = handler(self)
32
+ m = {}
33
+
34
+ for n, f in type(self).model_fields.items():
35
+ k = f.alias or n
36
+ val = serialized.get(k)
37
+
38
+ if val != UNSET_SENTINEL:
39
+ if val is not None or k not in optional_fields:
40
+ m[k] = val
41
+
42
+ return m
@@ -70,7 +70,7 @@ from .toolresultpart import ToolResultPart, ToolResultPartTypedDict
70
70
  from dataclasses import dataclass, field
71
71
  import httpx
72
72
  from orq_ai_sdk.models import OrqError
73
- from orq_ai_sdk.types import BaseModel
73
+ from orq_ai_sdk.types import BaseModel, UNSET_SENTINEL
74
74
  from orq_ai_sdk.utils import (
75
75
  FieldMetadata,
76
76
  PathParamMetadata,
@@ -78,7 +78,7 @@ from orq_ai_sdk.utils import (
78
78
  get_discriminator,
79
79
  )
80
80
  import pydantic
81
- from pydantic import Discriminator, Tag
81
+ from pydantic import Discriminator, Tag, model_serializer
82
82
  from typing import Any, Dict, List, Literal, Optional, Union
83
83
  from typing_extensions import (
84
84
  Annotated,
@@ -157,6 +157,22 @@ class StreamAgentA2AMessage(BaseModel):
157
157
  message_id: Annotated[Optional[str], pydantic.Field(alias="messageId")] = None
158
158
  r"""Optional A2A message ID in ULID format"""
159
159
 
160
+ @model_serializer(mode="wrap")
161
+ def serialize_model(self, handler):
162
+ optional_fields = set(["messageId"])
163
+ serialized = handler(self)
164
+ m = {}
165
+
166
+ for n, f in type(self).model_fields.items():
167
+ k = f.alias or n
168
+ val = serialized.get(k)
169
+
170
+ if val != UNSET_SENTINEL:
171
+ if val is not None or k not in optional_fields:
172
+ m[k] = val
173
+
174
+ return m
175
+
160
176
 
161
177
  class StreamAgentIdentityTypedDict(TypedDict):
162
178
  r"""Information about the identity making the request. If the identity does not exist, it will be created automatically."""
@@ -196,6 +212,22 @@ class StreamAgentIdentity(BaseModel):
196
212
  tags: Optional[List[str]] = None
197
213
  r"""A list of tags associated with the contact"""
198
214
 
215
+ @model_serializer(mode="wrap")
216
+ def serialize_model(self, handler):
217
+ optional_fields = set(["display_name", "email", "metadata", "logo_url", "tags"])
218
+ serialized = handler(self)
219
+ m = {}
220
+
221
+ for n, f in type(self).model_fields.items():
222
+ k = f.alias or n
223
+ val = serialized.get(k)
224
+
225
+ if val != UNSET_SENTINEL:
226
+ if val is not None or k not in optional_fields:
227
+ m[k] = val
228
+
229
+ return m
230
+
199
231
 
200
232
  @deprecated(
201
233
  "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible."
@@ -241,6 +273,22 @@ class StreamAgentContact(BaseModel):
241
273
  tags: Optional[List[str]] = None
242
274
  r"""A list of tags associated with the contact"""
243
275
 
276
+ @model_serializer(mode="wrap")
277
+ def serialize_model(self, handler):
278
+ optional_fields = set(["display_name", "email", "metadata", "logo_url", "tags"])
279
+ serialized = handler(self)
280
+ m = {}
281
+
282
+ for n, f in type(self).model_fields.items():
283
+ k = f.alias or n
284
+ val = serialized.get(k)
285
+
286
+ if val != UNSET_SENTINEL:
287
+ if val is not None or k not in optional_fields:
288
+ m[k] = val
289
+
290
+ return m
291
+
244
292
 
245
293
  class StreamAgentThreadTypedDict(TypedDict):
246
294
  r"""Thread information to group related requests"""
@@ -260,6 +308,22 @@ class StreamAgentThread(BaseModel):
260
308
  tags: Optional[List[str]] = None
261
309
  r"""Optional tags to differentiate or categorize threads"""
262
310
 
311
+ @model_serializer(mode="wrap")
312
+ def serialize_model(self, handler):
313
+ optional_fields = set(["tags"])
314
+ serialized = handler(self)
315
+ m = {}
316
+
317
+ for n, f in type(self).model_fields.items():
318
+ k = f.alias or n
319
+ val = serialized.get(k)
320
+
321
+ if val != UNSET_SENTINEL:
322
+ if val is not None or k not in optional_fields:
323
+ m[k] = val
324
+
325
+ return m
326
+
263
327
 
264
328
  class StreamAgentMemoryTypedDict(TypedDict):
265
329
  r"""Memory configuration for the agent execution. Used to associate memory stores with specific entities like users or sessions."""
@@ -329,6 +393,33 @@ class StreamAgentRequestBody(BaseModel):
329
393
  stream_timeout_seconds: Optional[float] = None
330
394
  r"""Stream timeout in seconds (1-3600). Default: 1800 (30 minutes)"""
331
395
 
396
+ @model_serializer(mode="wrap")
397
+ def serialize_model(self, handler):
398
+ optional_fields = set(
399
+ [
400
+ "task_id",
401
+ "variables",
402
+ "identity",
403
+ "contact",
404
+ "thread",
405
+ "memory",
406
+ "metadata",
407
+ "stream_timeout_seconds",
408
+ ]
409
+ )
410
+ serialized = handler(self)
411
+ m = {}
412
+
413
+ for n, f in type(self).model_fields.items():
414
+ k = f.alias or n
415
+ val = serialized.get(k)
416
+
417
+ if val != UNSET_SENTINEL:
418
+ if val is not None or k not in optional_fields:
419
+ m[k] = val
420
+
421
+ return m
422
+
332
423
 
333
424
  class StreamAgentRequestTypedDict(TypedDict):
334
425
  key: str