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
@@ -33,6 +33,22 @@ class DeploymentInvokeGlobals(BaseModel):
33
33
  FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
34
34
  ] = None
35
35
 
36
+ @model_serializer(mode="wrap")
37
+ def serialize_model(self, handler):
38
+ optional_fields = set(["environment", "contactId"])
39
+ serialized = handler(self)
40
+ m = {}
41
+
42
+ for n, f in type(self).model_fields.items():
43
+ k = f.alias or n
44
+ val = serialized.get(k)
45
+
46
+ if val != UNSET_SENTINEL:
47
+ if val is not None or k not in optional_fields:
48
+ m[k] = val
49
+
50
+ return m
51
+
36
52
 
37
53
  DeploymentInvokeObject = Literal[
38
54
  "chat",
@@ -42,7 +58,7 @@ DeploymentInvokeObject = Literal[
42
58
  r"""Indicates the type of model used to generate the response"""
43
59
 
44
60
 
45
- DeploymentInvokeProvider = Literal[
61
+ Provider = Literal[
46
62
  "openai",
47
63
  "groq",
48
64
  "cohere",
@@ -108,31 +124,26 @@ class DeploymentInvokeMetadata(BaseModel):
108
124
 
109
125
  @model_serializer(mode="wrap")
110
126
  def serialize_model(self, handler):
111
- optional_fields = ["rerank_score"]
112
- nullable_fields = ["page_number"]
113
- null_default_fields = []
114
-
127
+ optional_fields = set(["rerank_score"])
128
+ nullable_fields = set(["page_number"])
115
129
  serialized = handler(self)
116
-
117
130
  m = {}
118
131
 
119
132
  for n, f in type(self).model_fields.items():
120
133
  k = f.alias or n
121
134
  val = serialized.get(k)
122
- serialized.pop(k, None)
123
-
124
- optional_nullable = k in optional_fields and k in nullable_fields
125
- is_set = (
126
- self.__pydantic_fields_set__.intersection({n})
127
- or k in null_default_fields
128
- ) # pylint: disable=no-member
129
-
130
- if val is not None and val != UNSET_SENTINEL:
131
- m[k] = val
132
- elif val != UNSET_SENTINEL and (
133
- not k in optional_fields or (optional_nullable and is_set)
134
- ):
135
- m[k] = val
135
+ is_nullable_and_explicitly_set = (
136
+ k in nullable_fields
137
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
138
+ )
139
+
140
+ if val != UNSET_SENTINEL:
141
+ if (
142
+ val is not None
143
+ or k not in optional_fields
144
+ or is_nullable_and_explicitly_set
145
+ ):
146
+ m[k] = val
136
147
 
137
148
  return m
138
149
 
@@ -161,31 +172,26 @@ class DeploymentInvokePromptTokensDetails(BaseModel):
161
172
 
162
173
  @model_serializer(mode="wrap")
163
174
  def serialize_model(self, handler):
164
- optional_fields = ["cached_tokens"]
165
- nullable_fields = ["cached_tokens"]
166
- null_default_fields = []
167
-
175
+ optional_fields = set(["cached_tokens"])
176
+ nullable_fields = set(["cached_tokens"])
168
177
  serialized = handler(self)
169
-
170
178
  m = {}
171
179
 
172
180
  for n, f in type(self).model_fields.items():
173
181
  k = f.alias or n
174
182
  val = serialized.get(k)
175
- serialized.pop(k, None)
176
-
177
- optional_nullable = k in optional_fields and k in nullable_fields
178
- is_set = (
179
- self.__pydantic_fields_set__.intersection({n})
180
- or k in null_default_fields
181
- ) # pylint: disable=no-member
182
-
183
- if val is not None and val != UNSET_SENTINEL:
184
- m[k] = val
185
- elif val != UNSET_SENTINEL and (
186
- not k in optional_fields or (optional_nullable and is_set)
187
- ):
188
- m[k] = val
183
+ is_nullable_and_explicitly_set = (
184
+ k in nullable_fields
185
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
186
+ )
187
+
188
+ if val != UNSET_SENTINEL:
189
+ if (
190
+ val is not None
191
+ or k not in optional_fields
192
+ or is_nullable_and_explicitly_set
193
+ ):
194
+ m[k] = val
189
195
 
190
196
  return m
191
197
 
@@ -199,31 +205,26 @@ class DeploymentInvokeCompletionTokensDetails(BaseModel):
199
205
 
200
206
  @model_serializer(mode="wrap")
201
207
  def serialize_model(self, handler):
202
- optional_fields = ["reasoning_tokens"]
203
- nullable_fields = ["reasoning_tokens"]
204
- null_default_fields = []
205
-
208
+ optional_fields = set(["reasoning_tokens"])
209
+ nullable_fields = set(["reasoning_tokens"])
206
210
  serialized = handler(self)
207
-
208
211
  m = {}
209
212
 
210
213
  for n, f in type(self).model_fields.items():
211
214
  k = f.alias or n
212
215
  val = serialized.get(k)
213
- serialized.pop(k, None)
214
-
215
- optional_nullable = k in optional_fields and k in nullable_fields
216
- is_set = (
217
- self.__pydantic_fields_set__.intersection({n})
218
- or k in null_default_fields
219
- ) # pylint: disable=no-member
220
-
221
- if val is not None and val != UNSET_SENTINEL:
222
- m[k] = val
223
- elif val != UNSET_SENTINEL and (
224
- not k in optional_fields or (optional_nullable and is_set)
225
- ):
226
- m[k] = val
216
+ is_nullable_and_explicitly_set = (
217
+ k in nullable_fields
218
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
219
+ )
220
+
221
+ if val != UNSET_SENTINEL:
222
+ if (
223
+ val is not None
224
+ or k not in optional_fields
225
+ or is_nullable_and_explicitly_set
226
+ ):
227
+ m[k] = val
227
228
 
228
229
  return m
229
230
 
@@ -257,37 +258,34 @@ class DeploymentInvokeUsage(BaseModel):
257
258
 
258
259
  @model_serializer(mode="wrap")
259
260
  def serialize_model(self, handler):
260
- optional_fields = [
261
- "total_tokens",
262
- "prompt_tokens",
263
- "completion_tokens",
264
- "prompt_tokens_details",
265
- "completion_tokens_details",
266
- ]
267
- nullable_fields = ["completion_tokens_details"]
268
- null_default_fields = []
269
-
261
+ optional_fields = set(
262
+ [
263
+ "total_tokens",
264
+ "prompt_tokens",
265
+ "completion_tokens",
266
+ "prompt_tokens_details",
267
+ "completion_tokens_details",
268
+ ]
269
+ )
270
+ nullable_fields = set(["completion_tokens_details"])
270
271
  serialized = handler(self)
271
-
272
272
  m = {}
273
273
 
274
274
  for n, f in type(self).model_fields.items():
275
275
  k = f.alias or n
276
276
  val = serialized.get(k)
277
- serialized.pop(k, None)
278
-
279
- optional_nullable = k in optional_fields and k in nullable_fields
280
- is_set = (
281
- self.__pydantic_fields_set__.intersection({n})
282
- or k in null_default_fields
283
- ) # pylint: disable=no-member
284
-
285
- if val is not None and val != UNSET_SENTINEL:
286
- m[k] = val
287
- elif val != UNSET_SENTINEL and (
288
- not k in optional_fields or (optional_nullable and is_set)
289
- ):
290
- m[k] = val
277
+ is_nullable_and_explicitly_set = (
278
+ k in nullable_fields
279
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
280
+ )
281
+
282
+ if val != UNSET_SENTINEL:
283
+ if (
284
+ val is not None
285
+ or k not in optional_fields
286
+ or is_nullable_and_explicitly_set
287
+ ):
288
+ m[k] = val
291
289
 
292
290
  return m
293
291
 
@@ -372,31 +370,28 @@ class Message2(BaseModel):
372
370
 
373
371
  @model_serializer(mode="wrap")
374
372
  def serialize_model(self, handler):
375
- optional_fields = ["reasoning", "reasoning_signature", "redacted_reasoning"]
376
- nullable_fields = ["content"]
377
- null_default_fields = []
378
-
373
+ optional_fields = set(
374
+ ["reasoning", "reasoning_signature", "redacted_reasoning"]
375
+ )
376
+ nullable_fields = set(["content"])
379
377
  serialized = handler(self)
380
-
381
378
  m = {}
382
379
 
383
380
  for n, f in type(self).model_fields.items():
384
381
  k = f.alias or n
385
382
  val = serialized.get(k)
386
- serialized.pop(k, None)
387
-
388
- optional_nullable = k in optional_fields and k in nullable_fields
389
- is_set = (
390
- self.__pydantic_fields_set__.intersection({n})
391
- or k in null_default_fields
392
- ) # pylint: disable=no-member
393
-
394
- if val is not None and val != UNSET_SENTINEL:
395
- m[k] = val
396
- elif val != UNSET_SENTINEL and (
397
- not k in optional_fields or (optional_nullable and is_set)
398
- ):
399
- m[k] = val
383
+ is_nullable_and_explicitly_set = (
384
+ k in nullable_fields
385
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
386
+ )
387
+
388
+ if val != UNSET_SENTINEL:
389
+ if (
390
+ val is not None
391
+ or k not in optional_fields
392
+ or is_nullable_and_explicitly_set
393
+ ):
394
+ m[k] = val
400
395
 
401
396
  return m
402
397
 
@@ -449,6 +444,22 @@ class MessageToolCalls(BaseModel):
449
444
 
450
445
  index: Optional[float] = None
451
446
 
447
+ @model_serializer(mode="wrap")
448
+ def serialize_model(self, handler):
449
+ optional_fields = set(["id", "index"])
450
+ serialized = handler(self)
451
+ m = {}
452
+
453
+ for n, f in type(self).model_fields.items():
454
+ k = f.alias or n
455
+ val = serialized.get(k)
456
+
457
+ if val != UNSET_SENTINEL:
458
+ if val is not None or k not in optional_fields:
459
+ m[k] = val
460
+
461
+ return m
462
+
452
463
 
453
464
  class Message1TypedDict(TypedDict):
454
465
  type: MessageType
@@ -485,36 +496,28 @@ class Message1(BaseModel):
485
496
 
486
497
  @model_serializer(mode="wrap")
487
498
  def serialize_model(self, handler):
488
- optional_fields = [
489
- "content",
490
- "reasoning",
491
- "reasoning_signature",
492
- "redacted_reasoning",
493
- ]
494
- nullable_fields = ["content"]
495
- null_default_fields = []
496
-
499
+ optional_fields = set(
500
+ ["content", "reasoning", "reasoning_signature", "redacted_reasoning"]
501
+ )
502
+ nullable_fields = set(["content"])
497
503
  serialized = handler(self)
498
-
499
504
  m = {}
500
505
 
501
506
  for n, f in type(self).model_fields.items():
502
507
  k = f.alias or n
503
508
  val = serialized.get(k)
504
- serialized.pop(k, None)
505
-
506
- optional_nullable = k in optional_fields and k in nullable_fields
507
- is_set = (
508
- self.__pydantic_fields_set__.intersection({n})
509
- or k in null_default_fields
510
- ) # pylint: disable=no-member
511
-
512
- if val is not None and val != UNSET_SENTINEL:
513
- m[k] = val
514
- elif val != UNSET_SENTINEL and (
515
- not k in optional_fields or (optional_nullable and is_set)
516
- ):
517
- m[k] = val
509
+ is_nullable_and_explicitly_set = (
510
+ k in nullable_fields
511
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
512
+ )
513
+
514
+ if val != UNSET_SENTINEL:
515
+ if (
516
+ val is not None
517
+ or k not in optional_fields
518
+ or is_nullable_and_explicitly_set
519
+ ):
520
+ m[k] = val
518
521
 
519
522
  return m
520
523
 
@@ -550,31 +553,26 @@ class DeploymentInvokeChoices(BaseModel):
550
553
 
551
554
  @model_serializer(mode="wrap")
552
555
  def serialize_model(self, handler):
553
- optional_fields = ["finish_reason"]
554
- nullable_fields = ["finish_reason"]
555
- null_default_fields = []
556
-
556
+ optional_fields = set(["finish_reason"])
557
+ nullable_fields = set(["finish_reason"])
557
558
  serialized = handler(self)
558
-
559
559
  m = {}
560
560
 
561
561
  for n, f in type(self).model_fields.items():
562
562
  k = f.alias or n
563
563
  val = serialized.get(k)
564
- serialized.pop(k, None)
565
-
566
- optional_nullable = k in optional_fields and k in nullable_fields
567
- is_set = (
568
- self.__pydantic_fields_set__.intersection({n})
569
- or k in null_default_fields
570
- ) # pylint: disable=no-member
571
-
572
- if val is not None and val != UNSET_SENTINEL:
573
- m[k] = val
574
- elif val != UNSET_SENTINEL and (
575
- not k in optional_fields or (optional_nullable and is_set)
576
- ):
577
- m[k] = val
564
+ is_nullable_and_explicitly_set = (
565
+ k in nullable_fields
566
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
567
+ )
568
+
569
+ if val != UNSET_SENTINEL:
570
+ if (
571
+ val is not None
572
+ or k not in optional_fields
573
+ or is_nullable_and_explicitly_set
574
+ ):
575
+ m[k] = val
578
576
 
579
577
  return m
580
578
 
@@ -590,7 +588,7 @@ class DeploymentInvokeResponseBodyTypedDict(TypedDict):
590
588
  r"""Indicates the type of model used to generate the response"""
591
589
  model: str
592
590
  r"""The model used to generate the response"""
593
- provider: DeploymentInvokeProvider
591
+ provider: Provider
594
592
  r"""The provider used to generate the response"""
595
593
  is_final: bool
596
594
  r"""Indicates if the response is the final response"""
@@ -625,7 +623,7 @@ class DeploymentInvokeResponseBody(BaseModel):
625
623
  model: str
626
624
  r"""The model used to generate the response"""
627
625
 
628
- provider: DeploymentInvokeProvider
626
+ provider: Provider
629
627
  r"""The provider used to generate the response"""
630
628
 
631
629
  is_final: bool
@@ -654,37 +652,34 @@ class DeploymentInvokeResponseBody(BaseModel):
654
652
 
655
653
  @model_serializer(mode="wrap")
656
654
  def serialize_model(self, handler):
657
- optional_fields = [
658
- "integration_id",
659
- "finalized",
660
- "system_fingerprint",
661
- "retrievals",
662
- "provider_response",
663
- "usage",
664
- ]
665
- nullable_fields = ["system_fingerprint", "usage"]
666
- null_default_fields = []
667
-
655
+ optional_fields = set(
656
+ [
657
+ "integration_id",
658
+ "finalized",
659
+ "system_fingerprint",
660
+ "retrievals",
661
+ "provider_response",
662
+ "usage",
663
+ ]
664
+ )
665
+ nullable_fields = set(["system_fingerprint", "usage"])
668
666
  serialized = handler(self)
669
-
670
667
  m = {}
671
668
 
672
669
  for n, f in type(self).model_fields.items():
673
670
  k = f.alias or n
674
671
  val = serialized.get(k)
675
- serialized.pop(k, None)
676
-
677
- optional_nullable = k in optional_fields and k in nullable_fields
678
- is_set = (
679
- self.__pydantic_fields_set__.intersection({n})
680
- or k in null_default_fields
681
- ) # pylint: disable=no-member
682
-
683
- if val is not None and val != UNSET_SENTINEL:
684
- m[k] = val
685
- elif val != UNSET_SENTINEL and (
686
- not k in optional_fields or (optional_nullable and is_set)
687
- ):
688
- m[k] = val
672
+ is_nullable_and_explicitly_set = (
673
+ k in nullable_fields
674
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
675
+ )
676
+
677
+ if val != UNSET_SENTINEL:
678
+ if (
679
+ val is not None
680
+ or k not in optional_fields
681
+ or is_nullable_and_explicitly_set
682
+ ):
683
+ m[k] = val
689
684
 
690
685
  return m