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
@@ -105,6 +105,22 @@ class CreateDatasetItemMessagesCacheControl(BaseModel):
105
105
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
106
106
  """
107
107
 
108
+ @model_serializer(mode="wrap")
109
+ def serialize_model(self, handler):
110
+ optional_fields = set(["ttl"])
111
+ serialized = handler(self)
112
+ m = {}
113
+
114
+ for n, f in type(self).model_fields.items():
115
+ k = f.alias or n
116
+ val = serialized.get(k)
117
+
118
+ if val != UNSET_SENTINEL:
119
+ if val is not None or k not in optional_fields:
120
+ m[k] = val
121
+
122
+ return m
123
+
108
124
 
109
125
  class CreateDatasetItemMessagesToolMessageTypedDict(TypedDict):
110
126
  role: CreateDatasetItemMessagesDatasetsRequestRequestBody5Role
@@ -130,31 +146,26 @@ class CreateDatasetItemMessagesToolMessage(BaseModel):
130
146
 
131
147
  @model_serializer(mode="wrap")
132
148
  def serialize_model(self, handler):
133
- optional_fields = ["cache_control"]
134
- nullable_fields = ["tool_call_id"]
135
- null_default_fields = []
136
-
149
+ optional_fields = set(["cache_control"])
150
+ nullable_fields = set(["tool_call_id"])
137
151
  serialized = handler(self)
138
-
139
152
  m = {}
140
153
 
141
154
  for n, f in type(self).model_fields.items():
142
155
  k = f.alias or n
143
156
  val = serialized.get(k)
144
- serialized.pop(k, None)
145
-
146
- optional_nullable = k in optional_fields and k in nullable_fields
147
- is_set = (
148
- self.__pydantic_fields_set__.intersection({n})
149
- or k in null_default_fields
150
- ) # pylint: disable=no-member
151
-
152
- if val is not None and val != UNSET_SENTINEL:
153
- m[k] = val
154
- elif val != UNSET_SENTINEL and (
155
- not k in optional_fields or (optional_nullable and is_set)
156
- ):
157
- m[k] = val
157
+ is_nullable_and_explicitly_set = (
158
+ k in nullable_fields
159
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
160
+ )
161
+
162
+ if val != UNSET_SENTINEL:
163
+ if (
164
+ val is not None
165
+ or k not in optional_fields
166
+ or is_nullable_and_explicitly_set
167
+ ):
168
+ m[k] = val
158
169
 
159
170
  return m
160
171
 
@@ -231,6 +242,22 @@ class CreateDatasetItemMessagesFunction(BaseModel):
231
242
  arguments: Optional[str] = None
232
243
  r"""The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function."""
233
244
 
245
+ @model_serializer(mode="wrap")
246
+ def serialize_model(self, handler):
247
+ optional_fields = set(["name", "arguments"])
248
+ serialized = handler(self)
249
+ m = {}
250
+
251
+ for n, f in type(self).model_fields.items():
252
+ k = f.alias or n
253
+ val = serialized.get(k)
254
+
255
+ if val != UNSET_SENTINEL:
256
+ if val is not None or k not in optional_fields:
257
+ m[k] = val
258
+
259
+ return m
260
+
234
261
 
235
262
  class CreateDatasetItemMessagesToolCallsTypedDict(TypedDict):
236
263
  id: str
@@ -254,6 +281,22 @@ class CreateDatasetItemMessagesToolCalls(BaseModel):
254
281
  thought_signature: Optional[str] = None
255
282
  r"""Encrypted representation of the model internal reasoning state during function calling. Required by Gemini 3 models when continuing a conversation after a tool call."""
256
283
 
284
+ @model_serializer(mode="wrap")
285
+ def serialize_model(self, handler):
286
+ optional_fields = set(["thought_signature"])
287
+ serialized = handler(self)
288
+ m = {}
289
+
290
+ for n, f in type(self).model_fields.items():
291
+ k = f.alias or n
292
+ val = serialized.get(k)
293
+
294
+ if val != UNSET_SENTINEL:
295
+ if val is not None or k not in optional_fields:
296
+ m[k] = val
297
+
298
+ return m
299
+
257
300
 
258
301
  class CreateDatasetItemMessagesAssistantMessageTypedDict(TypedDict):
259
302
  role: CreateDatasetItemMessagesDatasetsRequestRequestBodyRole
@@ -295,31 +338,26 @@ class CreateDatasetItemMessagesAssistantMessage(BaseModel):
295
338
 
296
339
  @model_serializer(mode="wrap")
297
340
  def serialize_model(self, handler):
298
- optional_fields = ["content", "refusal", "name", "audio", "tool_calls"]
299
- nullable_fields = ["content", "refusal", "audio"]
300
- null_default_fields = []
301
-
341
+ optional_fields = set(["content", "refusal", "name", "audio", "tool_calls"])
342
+ nullable_fields = set(["content", "refusal", "audio"])
302
343
  serialized = handler(self)
303
-
304
344
  m = {}
305
345
 
306
346
  for n, f in type(self).model_fields.items():
307
347
  k = f.alias or n
308
348
  val = serialized.get(k)
309
- serialized.pop(k, None)
310
-
311
- optional_nullable = k in optional_fields and k in nullable_fields
312
- is_set = (
313
- self.__pydantic_fields_set__.intersection({n})
314
- or k in null_default_fields
315
- ) # pylint: disable=no-member
316
-
317
- if val is not None and val != UNSET_SENTINEL:
318
- m[k] = val
319
- elif val != UNSET_SENTINEL and (
320
- not k in optional_fields or (optional_nullable and is_set)
321
- ):
322
- m[k] = val
349
+ is_nullable_and_explicitly_set = (
350
+ k in nullable_fields
351
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
352
+ )
353
+
354
+ if val != UNSET_SENTINEL:
355
+ if (
356
+ val is not None
357
+ or k not in optional_fields
358
+ or is_nullable_and_explicitly_set
359
+ ):
360
+ m[k] = val
323
361
 
324
362
  return m
325
363
 
@@ -375,6 +413,22 @@ class CreateDatasetItem2CacheControl(BaseModel):
375
413
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
376
414
  """
377
415
 
416
+ @model_serializer(mode="wrap")
417
+ def serialize_model(self, handler):
418
+ optional_fields = set(["ttl"])
419
+ serialized = handler(self)
420
+ m = {}
421
+
422
+ for n, f in type(self).model_fields.items():
423
+ k = f.alias or n
424
+ val = serialized.get(k)
425
+
426
+ if val != UNSET_SENTINEL:
427
+ if val is not None or k not in optional_fields:
428
+ m[k] = val
429
+
430
+ return m
431
+
378
432
 
379
433
  class CreateDatasetItem24TypedDict(TypedDict):
380
434
  type: CreateDatasetItem2Type
@@ -393,6 +447,22 @@ class CreateDatasetItem24(BaseModel):
393
447
 
394
448
  cache_control: Optional[CreateDatasetItem2CacheControl] = None
395
449
 
450
+ @model_serializer(mode="wrap")
451
+ def serialize_model(self, handler):
452
+ optional_fields = set(["cache_control"])
453
+ serialized = handler(self)
454
+ m = {}
455
+
456
+ for n, f in type(self).model_fields.items():
457
+ k = f.alias or n
458
+ val = serialized.get(k)
459
+
460
+ if val != UNSET_SENTINEL:
461
+ if val is not None or k not in optional_fields:
462
+ m[k] = val
463
+
464
+ return m
465
+
396
466
 
397
467
  CreateDatasetItemContent2TypedDict = TypeAliasType(
398
468
  "CreateDatasetItemContent2TypedDict",
@@ -449,6 +519,22 @@ class CreateDatasetItemMessagesUserMessage(BaseModel):
449
519
  name: Optional[str] = None
450
520
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
451
521
 
522
+ @model_serializer(mode="wrap")
523
+ def serialize_model(self, handler):
524
+ optional_fields = set(["name"])
525
+ serialized = handler(self)
526
+ m = {}
527
+
528
+ for n, f in type(self).model_fields.items():
529
+ k = f.alias or n
530
+ val = serialized.get(k)
531
+
532
+ if val != UNSET_SENTINEL:
533
+ if val is not None or k not in optional_fields:
534
+ m[k] = val
535
+
536
+ return m
537
+
452
538
 
453
539
  CreateDatasetItemMessagesDatasetsRole = Literal["developer",]
454
540
  r"""The role of the messages author, in this case `developer`."""
@@ -486,6 +572,22 @@ class CreateDatasetItemMessagesDeveloperMessage(BaseModel):
486
572
  name: Optional[str] = None
487
573
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
488
574
 
575
+ @model_serializer(mode="wrap")
576
+ def serialize_model(self, handler):
577
+ optional_fields = set(["name"])
578
+ serialized = handler(self)
579
+ m = {}
580
+
581
+ for n, f in type(self).model_fields.items():
582
+ k = f.alias or n
583
+ val = serialized.get(k)
584
+
585
+ if val != UNSET_SENTINEL:
586
+ if val is not None or k not in optional_fields:
587
+ m[k] = val
588
+
589
+ return m
590
+
489
591
 
490
592
  CreateDatasetItemMessagesRole = Literal["system",]
491
593
  r"""The role of the messages author, in this case `system`."""
@@ -527,6 +629,22 @@ class CreateDatasetItemMessagesSystemMessage(BaseModel):
527
629
  name: Optional[str] = None
528
630
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
529
631
 
632
+ @model_serializer(mode="wrap")
633
+ def serialize_model(self, handler):
634
+ optional_fields = set(["name"])
635
+ serialized = handler(self)
636
+ m = {}
637
+
638
+ for n, f in type(self).model_fields.items():
639
+ k = f.alias or n
640
+ val = serialized.get(k)
641
+
642
+ if val != UNSET_SENTINEL:
643
+ if val is not None or k not in optional_fields:
644
+ m[k] = val
645
+
646
+ return m
647
+
530
648
 
531
649
  CreateDatasetItemMessagesTypedDict = TypeAliasType(
532
650
  "CreateDatasetItemMessagesTypedDict",
@@ -569,6 +687,22 @@ class CreateDatasetItemRequestBody(BaseModel):
569
687
 
570
688
  expected_output: Optional[str] = None
571
689
 
690
+ @model_serializer(mode="wrap")
691
+ def serialize_model(self, handler):
692
+ optional_fields = set(["inputs", "messages", "expected_output"])
693
+ serialized = handler(self)
694
+ m = {}
695
+
696
+ for n, f in type(self).model_fields.items():
697
+ k = f.alias or n
698
+ val = serialized.get(k)
699
+
700
+ if val != UNSET_SENTINEL:
701
+ if val is not None or k not in optional_fields:
702
+ m[k] = val
703
+
704
+ return m
705
+
572
706
 
573
707
  class CreateDatasetItemRequestTypedDict(TypedDict):
574
708
  dataset_id: str
@@ -587,6 +721,22 @@ class CreateDatasetItemRequest(BaseModel):
587
721
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
588
722
  ] = None
589
723
 
724
+ @model_serializer(mode="wrap")
725
+ def serialize_model(self, handler):
726
+ optional_fields = set(["RequestBody"])
727
+ serialized = handler(self)
728
+ m = {}
729
+
730
+ for n, f in type(self).model_fields.items():
731
+ k = f.alias or n
732
+ val = serialized.get(k)
733
+
734
+ if val != UNSET_SENTINEL:
735
+ if val is not None or k not in optional_fields:
736
+ m[k] = val
737
+
738
+ return m
739
+
590
740
 
591
741
  CreateDatasetItemMessagesDatasetsResponse200ApplicationJSONResponseBody5Role = Literal[
592
742
  "tool",
@@ -661,6 +811,22 @@ class CreateDatasetItemMessagesDatasetsCacheControl(BaseModel):
661
811
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
662
812
  """
663
813
 
814
+ @model_serializer(mode="wrap")
815
+ def serialize_model(self, handler):
816
+ optional_fields = set(["ttl"])
817
+ serialized = handler(self)
818
+ m = {}
819
+
820
+ for n, f in type(self).model_fields.items():
821
+ k = f.alias or n
822
+ val = serialized.get(k)
823
+
824
+ if val != UNSET_SENTINEL:
825
+ if val is not None or k not in optional_fields:
826
+ m[k] = val
827
+
828
+ return m
829
+
664
830
 
665
831
  class CreateDatasetItemMessagesDatasetsToolMessageTypedDict(TypedDict):
666
832
  role: CreateDatasetItemMessagesDatasetsResponse200ApplicationJSONResponseBody5Role
@@ -688,31 +854,26 @@ class CreateDatasetItemMessagesDatasetsToolMessage(BaseModel):
688
854
 
689
855
  @model_serializer(mode="wrap")
690
856
  def serialize_model(self, handler):
691
- optional_fields = ["cache_control"]
692
- nullable_fields = ["tool_call_id"]
693
- null_default_fields = []
694
-
857
+ optional_fields = set(["cache_control"])
858
+ nullable_fields = set(["tool_call_id"])
695
859
  serialized = handler(self)
696
-
697
860
  m = {}
698
861
 
699
862
  for n, f in type(self).model_fields.items():
700
863
  k = f.alias or n
701
864
  val = serialized.get(k)
702
- serialized.pop(k, None)
703
-
704
- optional_nullable = k in optional_fields and k in nullable_fields
705
- is_set = (
706
- self.__pydantic_fields_set__.intersection({n})
707
- or k in null_default_fields
708
- ) # pylint: disable=no-member
709
-
710
- if val is not None and val != UNSET_SENTINEL:
711
- m[k] = val
712
- elif val != UNSET_SENTINEL and (
713
- not k in optional_fields or (optional_nullable and is_set)
714
- ):
715
- m[k] = val
865
+ is_nullable_and_explicitly_set = (
866
+ k in nullable_fields
867
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
868
+ )
869
+
870
+ if val != UNSET_SENTINEL:
871
+ if (
872
+ val is not None
873
+ or k not in optional_fields
874
+ or is_nullable_and_explicitly_set
875
+ ):
876
+ m[k] = val
716
877
 
717
878
  return m
718
879
 
@@ -791,6 +952,22 @@ class CreateDatasetItemMessagesDatasetsFunction(BaseModel):
791
952
  arguments: Optional[str] = None
792
953
  r"""The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function."""
793
954
 
955
+ @model_serializer(mode="wrap")
956
+ def serialize_model(self, handler):
957
+ optional_fields = set(["name", "arguments"])
958
+ serialized = handler(self)
959
+ m = {}
960
+
961
+ for n, f in type(self).model_fields.items():
962
+ k = f.alias or n
963
+ val = serialized.get(k)
964
+
965
+ if val != UNSET_SENTINEL:
966
+ if val is not None or k not in optional_fields:
967
+ m[k] = val
968
+
969
+ return m
970
+
794
971
 
795
972
  class CreateDatasetItemMessagesDatasetsToolCallsTypedDict(TypedDict):
796
973
  id: str
@@ -814,6 +991,22 @@ class CreateDatasetItemMessagesDatasetsToolCalls(BaseModel):
814
991
  thought_signature: Optional[str] = None
815
992
  r"""Encrypted representation of the model internal reasoning state during function calling. Required by Gemini 3 models when continuing a conversation after a tool call."""
816
993
 
994
+ @model_serializer(mode="wrap")
995
+ def serialize_model(self, handler):
996
+ optional_fields = set(["thought_signature"])
997
+ serialized = handler(self)
998
+ m = {}
999
+
1000
+ for n, f in type(self).model_fields.items():
1001
+ k = f.alias or n
1002
+ val = serialized.get(k)
1003
+
1004
+ if val != UNSET_SENTINEL:
1005
+ if val is not None or k not in optional_fields:
1006
+ m[k] = val
1007
+
1008
+ return m
1009
+
817
1010
 
818
1011
  class CreateDatasetItemMessagesDatasetsAssistantMessageTypedDict(TypedDict):
819
1012
  role: CreateDatasetItemMessagesDatasetsResponse200ApplicationJSONResponseBodyRole
@@ -857,31 +1050,26 @@ class CreateDatasetItemMessagesDatasetsAssistantMessage(BaseModel):
857
1050
 
858
1051
  @model_serializer(mode="wrap")
859
1052
  def serialize_model(self, handler):
860
- optional_fields = ["content", "refusal", "name", "audio", "tool_calls"]
861
- nullable_fields = ["content", "refusal", "audio"]
862
- null_default_fields = []
863
-
1053
+ optional_fields = set(["content", "refusal", "name", "audio", "tool_calls"])
1054
+ nullable_fields = set(["content", "refusal", "audio"])
864
1055
  serialized = handler(self)
865
-
866
1056
  m = {}
867
1057
 
868
1058
  for n, f in type(self).model_fields.items():
869
1059
  k = f.alias or n
870
1060
  val = serialized.get(k)
871
- serialized.pop(k, None)
872
-
873
- optional_nullable = k in optional_fields and k in nullable_fields
874
- is_set = (
875
- self.__pydantic_fields_set__.intersection({n})
876
- or k in null_default_fields
877
- ) # pylint: disable=no-member
878
-
879
- if val is not None and val != UNSET_SENTINEL:
880
- m[k] = val
881
- elif val != UNSET_SENTINEL and (
882
- not k in optional_fields or (optional_nullable and is_set)
883
- ):
884
- m[k] = val
1061
+ is_nullable_and_explicitly_set = (
1062
+ k in nullable_fields
1063
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
1064
+ )
1065
+
1066
+ if val != UNSET_SENTINEL:
1067
+ if (
1068
+ val is not None
1069
+ or k not in optional_fields
1070
+ or is_nullable_and_explicitly_set
1071
+ ):
1072
+ m[k] = val
885
1073
 
886
1074
  return m
887
1075
 
@@ -937,6 +1125,22 @@ class CreateDatasetItem2DatasetsCacheControl(BaseModel):
937
1125
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
938
1126
  """
939
1127
 
1128
+ @model_serializer(mode="wrap")
1129
+ def serialize_model(self, handler):
1130
+ optional_fields = set(["ttl"])
1131
+ serialized = handler(self)
1132
+ m = {}
1133
+
1134
+ for n, f in type(self).model_fields.items():
1135
+ k = f.alias or n
1136
+ val = serialized.get(k)
1137
+
1138
+ if val != UNSET_SENTINEL:
1139
+ if val is not None or k not in optional_fields:
1140
+ m[k] = val
1141
+
1142
+ return m
1143
+
940
1144
 
941
1145
  class CreateDatasetItem2Datasets4TypedDict(TypedDict):
942
1146
  type: CreateDatasetItem2DatasetsResponseType
@@ -955,6 +1159,22 @@ class CreateDatasetItem2Datasets4(BaseModel):
955
1159
 
956
1160
  cache_control: Optional[CreateDatasetItem2DatasetsCacheControl] = None
957
1161
 
1162
+ @model_serializer(mode="wrap")
1163
+ def serialize_model(self, handler):
1164
+ optional_fields = set(["cache_control"])
1165
+ serialized = handler(self)
1166
+ m = {}
1167
+
1168
+ for n, f in type(self).model_fields.items():
1169
+ k = f.alias or n
1170
+ val = serialized.get(k)
1171
+
1172
+ if val != UNSET_SENTINEL:
1173
+ if val is not None or k not in optional_fields:
1174
+ m[k] = val
1175
+
1176
+ return m
1177
+
958
1178
 
959
1179
  CreateDatasetItemContentDatasetsResponse2TypedDict = TypeAliasType(
960
1180
  "CreateDatasetItemContentDatasetsResponse2TypedDict",
@@ -1013,6 +1233,22 @@ class CreateDatasetItemMessagesDatasetsUserMessage(BaseModel):
1013
1233
  name: Optional[str] = None
1014
1234
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
1015
1235
 
1236
+ @model_serializer(mode="wrap")
1237
+ def serialize_model(self, handler):
1238
+ optional_fields = set(["name"])
1239
+ serialized = handler(self)
1240
+ m = {}
1241
+
1242
+ for n, f in type(self).model_fields.items():
1243
+ k = f.alias or n
1244
+ val = serialized.get(k)
1245
+
1246
+ if val != UNSET_SENTINEL:
1247
+ if val is not None or k not in optional_fields:
1248
+ m[k] = val
1249
+
1250
+ return m
1251
+
1016
1252
 
1017
1253
  CreateDatasetItemMessagesDatasetsResponse200Role = Literal["developer",]
1018
1254
  r"""The role of the messages author, in this case `developer`."""
@@ -1051,6 +1287,22 @@ class CreateDatasetItemMessagesDatasetsDeveloperMessage(BaseModel):
1051
1287
  name: Optional[str] = None
1052
1288
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
1053
1289
 
1290
+ @model_serializer(mode="wrap")
1291
+ def serialize_model(self, handler):
1292
+ optional_fields = set(["name"])
1293
+ serialized = handler(self)
1294
+ m = {}
1295
+
1296
+ for n, f in type(self).model_fields.items():
1297
+ k = f.alias or n
1298
+ val = serialized.get(k)
1299
+
1300
+ if val != UNSET_SENTINEL:
1301
+ if val is not None or k not in optional_fields:
1302
+ m[k] = val
1303
+
1304
+ return m
1305
+
1054
1306
 
1055
1307
  CreateDatasetItemMessagesDatasetsResponseRole = Literal["system",]
1056
1308
  r"""The role of the messages author, in this case `system`."""
@@ -1093,6 +1345,22 @@ class CreateDatasetItemMessagesDatasetsSystemMessage(BaseModel):
1093
1345
  name: Optional[str] = None
1094
1346
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
1095
1347
 
1348
+ @model_serializer(mode="wrap")
1349
+ def serialize_model(self, handler):
1350
+ optional_fields = set(["name"])
1351
+ serialized = handler(self)
1352
+ m = {}
1353
+
1354
+ for n, f in type(self).model_fields.items():
1355
+ k = f.alias or n
1356
+ val = serialized.get(k)
1357
+
1358
+ if val != UNSET_SENTINEL:
1359
+ if val is not None or k not in optional_fields:
1360
+ m[k] = val
1361
+
1362
+ return m
1363
+
1096
1364
 
1097
1365
  CreateDatasetItemDatasetsMessagesTypedDict = TypeAliasType(
1098
1366
  "CreateDatasetItemDatasetsMessagesTypedDict",
@@ -1166,9 +1434,25 @@ class Evaluations3(BaseModel):
1166
1434
 
1167
1435
  source: Optional[CreateDatasetItemEvaluationsDatasetsSource] = "orq"
1168
1436
 
1169
- reviewed_at: Optional[datetime] = parse_datetime("2026-01-14T08:04:45.101Z")
1437
+ reviewed_at: Optional[datetime] = parse_datetime("2026-01-28T17:04:01.065Z")
1170
1438
  r"""The date and time the item was reviewed"""
1171
1439
 
1440
+ @model_serializer(mode="wrap")
1441
+ def serialize_model(self, handler):
1442
+ optional_fields = set(["source", "reviewed_at"])
1443
+ serialized = handler(self)
1444
+ m = {}
1445
+
1446
+ for n, f in type(self).model_fields.items():
1447
+ k = f.alias or n
1448
+ val = serialized.get(k)
1449
+
1450
+ if val != UNSET_SENTINEL:
1451
+ if val is not None or k not in optional_fields:
1452
+ m[k] = val
1453
+
1454
+ return m
1455
+
1172
1456
 
1173
1457
  EvaluationsEvaluationType = Literal["human_review",]
1174
1458
  r"""The type of evaluation"""
@@ -1218,9 +1502,25 @@ class Evaluations2(BaseModel):
1218
1502
 
1219
1503
  source: Optional[CreateDatasetItemEvaluationsSource] = "orq"
1220
1504
 
1221
- reviewed_at: Optional[datetime] = parse_datetime("2026-01-14T08:04:45.100Z")
1505
+ reviewed_at: Optional[datetime] = parse_datetime("2026-01-28T17:04:01.064Z")
1222
1506
  r"""The date and time the item was reviewed"""
1223
1507
 
1508
+ @model_serializer(mode="wrap")
1509
+ def serialize_model(self, handler):
1510
+ optional_fields = set(["source", "reviewed_at"])
1511
+ serialized = handler(self)
1512
+ m = {}
1513
+
1514
+ for n, f in type(self).model_fields.items():
1515
+ k = f.alias or n
1516
+ val = serialized.get(k)
1517
+
1518
+ if val != UNSET_SENTINEL:
1519
+ if val is not None or k not in optional_fields:
1520
+ m[k] = val
1521
+
1522
+ return m
1523
+
1224
1524
 
1225
1525
  EvaluationType = Literal["human_review",]
1226
1526
  r"""The type of evaluation"""
@@ -1270,9 +1570,25 @@ class Evaluations1(BaseModel):
1270
1570
 
1271
1571
  source: Optional[EvaluationsSource] = "orq"
1272
1572
 
1273
- reviewed_at: Optional[datetime] = parse_datetime("2026-01-14T08:04:45.100Z")
1573
+ reviewed_at: Optional[datetime] = parse_datetime("2026-01-28T17:04:01.055Z")
1274
1574
  r"""The date and time the item was reviewed"""
1275
1575
 
1576
+ @model_serializer(mode="wrap")
1577
+ def serialize_model(self, handler):
1578
+ optional_fields = set(["source", "reviewed_at"])
1579
+ serialized = handler(self)
1580
+ m = {}
1581
+
1582
+ for n, f in type(self).model_fields.items():
1583
+ k = f.alias or n
1584
+ val = serialized.get(k)
1585
+
1586
+ if val != UNSET_SENTINEL:
1587
+ if val is not None or k not in optional_fields:
1588
+ m[k] = val
1589
+
1590
+ return m
1591
+
1276
1592
 
1277
1593
  EvaluationsTypedDict = TypeAliasType(
1278
1594
  "EvaluationsTypedDict",
@@ -1349,5 +1665,33 @@ class CreateDatasetItemResponseBody(BaseModel):
1349
1665
  created: Optional[datetime] = None
1350
1666
  r"""The date and time the resource was created"""
1351
1667
 
1352
- updated: Optional[datetime] = parse_datetime("2026-01-14T08:04:31.906Z")
1668
+ updated: Optional[datetime] = parse_datetime("2026-01-28T17:03:47.548Z")
1353
1669
  r"""The date and time the resource was last updated"""
1670
+
1671
+ @model_serializer(mode="wrap")
1672
+ def serialize_model(self, handler):
1673
+ optional_fields = set(
1674
+ [
1675
+ "inputs",
1676
+ "messages",
1677
+ "expected_output",
1678
+ "evaluations",
1679
+ "snapshot_version",
1680
+ "created_by_id",
1681
+ "updated_by_id",
1682
+ "created",
1683
+ "updated",
1684
+ ]
1685
+ )
1686
+ serialized = handler(self)
1687
+ m = {}
1688
+
1689
+ for n, f in type(self).model_fields.items():
1690
+ k = f.alias or n
1691
+ val = serialized.get(k)
1692
+
1693
+ if val != UNSET_SENTINEL:
1694
+ if val is not None or k not in optional_fields:
1695
+ m[k] = val
1696
+
1697
+ return m