orq-ai-sdk 4.2.0rc28__py3-none-any.whl → 4.2.6__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 (167) hide show
  1. orq_ai_sdk/_hooks/globalhook.py +0 -1
  2. orq_ai_sdk/_version.py +3 -3
  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 +332 -0
  7. orq_ai_sdk/contacts.py +43 -855
  8. orq_ai_sdk/deployments.py +61 -0
  9. orq_ai_sdk/edits.py +258 -0
  10. orq_ai_sdk/embeddings.py +238 -0
  11. orq_ai_sdk/generations.py +272 -0
  12. orq_ai_sdk/identities.py +1037 -0
  13. orq_ai_sdk/images.py +28 -0
  14. orq_ai_sdk/models/__init__.py +5341 -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 +1922 -384
  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 +1375 -861
  29. orq_ai_sdk/models/createchunkop.py +46 -19
  30. orq_ai_sdk/models/createcompletionop.py +1890 -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 +384 -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 +504 -0
  41. orq_ai_sdk/models/createimageop.py +208 -117
  42. orq_ai_sdk/models/createimagevariationop.py +486 -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 +2748 -1252
  49. orq_ai_sdk/models/creatererankop.py +416 -0
  50. orq_ai_sdk/models/createresponseop.py +2567 -0
  51. orq_ai_sdk/models/createspeechop.py +316 -0
  52. orq_ai_sdk/models/createtoolop.py +537 -12
  53. orq_ai_sdk/models/createtranscriptionop.py +562 -0
  54. orq_ai_sdk/models/createtranslationop.py +540 -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 +1690 -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 +1673 -230
  84. orq_ai_sdk/models/getpromptversionop.py +1670 -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 +793 -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 +1684 -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 +787 -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 +1451 -197
  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 +1428 -195
  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 +1951 -404
  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 +2844 -1450
  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 +660 -0
  152. orq_ai_sdk/orq_responses.py +398 -0
  153. orq_ai_sdk/prompts.py +28 -36
  154. orq_ai_sdk/rerank.py +232 -0
  155. orq_ai_sdk/router.py +89 -641
  156. orq_ai_sdk/sdk.py +3 -0
  157. orq_ai_sdk/speech.py +251 -0
  158. orq_ai_sdk/transcriptions.py +326 -0
  159. orq_ai_sdk/translations.py +298 -0
  160. orq_ai_sdk/utils/__init__.py +13 -1
  161. orq_ai_sdk/variations.py +254 -0
  162. orq_ai_sdk-4.2.6.dist-info/METADATA +888 -0
  163. orq_ai_sdk-4.2.6.dist-info/RECORD +263 -0
  164. {orq_ai_sdk-4.2.0rc28.dist-info → orq_ai_sdk-4.2.6.dist-info}/WHEEL +2 -1
  165. orq_ai_sdk-4.2.6.dist-info/top_level.txt +1 -0
  166. orq_ai_sdk-4.2.0rc28.dist-info/METADATA +0 -867
  167. orq_ai_sdk-4.2.0rc28.dist-info/RECORD +0 -233
@@ -17,7 +17,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict
17
17
 
18
18
 
19
19
  class CreateContactRequestBodyTypedDict(TypedDict):
20
- r"""Contact profile information"""
20
+ r"""Update user information payload"""
21
21
 
22
22
  external_id: str
23
23
  r"""Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user."""
@@ -34,7 +34,7 @@ class CreateContactRequestBodyTypedDict(TypedDict):
34
34
 
35
35
 
36
36
  class CreateContactRequestBody(BaseModel):
37
- r"""Contact profile information"""
37
+ r"""Update user information payload"""
38
38
 
39
39
  external_id: str
40
40
  r"""Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user."""
@@ -56,44 +56,39 @@ class CreateContactRequestBody(BaseModel):
56
56
 
57
57
  @model_serializer(mode="wrap")
58
58
  def serialize_model(self, handler):
59
- optional_fields = ["display_name", "email", "avatar_url", "tags", "metadata"]
60
- nullable_fields = ["display_name", "email", "avatar_url"]
61
- null_default_fields = []
62
-
59
+ optional_fields = set(
60
+ ["display_name", "email", "avatar_url", "tags", "metadata"]
61
+ )
62
+ nullable_fields = set(["display_name", "email", "avatar_url"])
63
63
  serialized = handler(self)
64
-
65
64
  m = {}
66
65
 
67
66
  for n, f in type(self).model_fields.items():
68
67
  k = f.alias or n
69
68
  val = serialized.get(k)
70
- serialized.pop(k, None)
71
-
72
- optional_nullable = k in optional_fields and k in nullable_fields
73
- is_set = (
74
- self.__pydantic_fields_set__.intersection({n})
75
- or k in null_default_fields
76
- ) # pylint: disable=no-member
77
-
78
- if val is not None and val != UNSET_SENTINEL:
79
- m[k] = val
80
- elif val != UNSET_SENTINEL and (
81
- not k in optional_fields or (optional_nullable and is_set)
82
- ):
83
- m[k] = val
69
+ is_nullable_and_explicitly_set = (
70
+ k in nullable_fields
71
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
72
+ )
73
+
74
+ if val != UNSET_SENTINEL:
75
+ if (
76
+ val is not None
77
+ or k not in optional_fields
78
+ or is_nullable_and_explicitly_set
79
+ ):
80
+ m[k] = val
84
81
 
85
82
  return m
86
83
 
87
84
 
88
85
  class CreateContactResponseBodyTypedDict(TypedDict):
89
- r"""Created Contact"""
86
+ r"""Successful operation"""
90
87
 
91
88
  id: str
92
89
  r"""Unique ULID (Universally Unique Lexicographically Sortable Identifier) for the contact"""
93
90
  external_id: str
94
91
  r"""Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user."""
95
- workspace_id: str
96
- r"""Unique identifier for the workspace to which the contact belongs"""
97
92
  display_name: NotRequired[Nullable[str]]
98
93
  r"""Display name or nickname of the contact user. This is typically shown in user interfaces."""
99
94
  email: NotRequired[Nullable[str]]
@@ -111,7 +106,7 @@ class CreateContactResponseBodyTypedDict(TypedDict):
111
106
 
112
107
 
113
108
  class CreateContactResponseBody(BaseModel):
114
- r"""Created Contact"""
109
+ r"""Successful operation"""
115
110
 
116
111
  id: Annotated[str, pydantic.Field(alias="_id")]
117
112
  r"""Unique ULID (Universally Unique Lexicographically Sortable Identifier) for the contact"""
@@ -119,9 +114,6 @@ class CreateContactResponseBody(BaseModel):
119
114
  external_id: str
120
115
  r"""Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user."""
121
116
 
122
- workspace_id: str
123
- r"""Unique identifier for the workspace to which the contact belongs"""
124
-
125
117
  display_name: OptionalNullable[str] = UNSET
126
118
  r"""Display name or nickname of the contact user. This is typically shown in user interfaces."""
127
119
 
@@ -140,43 +132,40 @@ class CreateContactResponseBody(BaseModel):
140
132
  created: Optional[datetime] = None
141
133
  r"""The date and time the resource was created"""
142
134
 
143
- updated: Optional[datetime] = parse_datetime("2026-01-14T08:04:31.906Z")
135
+ updated: Optional[datetime] = parse_datetime("2026-01-25T15:02:07.185Z")
144
136
  r"""The date and time the resource was last updated"""
145
137
 
146
138
  @model_serializer(mode="wrap")
147
139
  def serialize_model(self, handler):
148
- optional_fields = [
149
- "display_name",
150
- "email",
151
- "avatar_url",
152
- "tags",
153
- "metadata",
154
- "created",
155
- "updated",
156
- ]
157
- nullable_fields = ["display_name", "email", "avatar_url"]
158
- null_default_fields = []
159
-
140
+ optional_fields = set(
141
+ [
142
+ "display_name",
143
+ "email",
144
+ "avatar_url",
145
+ "tags",
146
+ "metadata",
147
+ "created",
148
+ "updated",
149
+ ]
150
+ )
151
+ nullable_fields = set(["display_name", "email", "avatar_url"])
160
152
  serialized = handler(self)
161
-
162
153
  m = {}
163
154
 
164
155
  for n, f in type(self).model_fields.items():
165
156
  k = f.alias or n
166
157
  val = serialized.get(k)
167
- serialized.pop(k, None)
168
-
169
- optional_nullable = k in optional_fields and k in nullable_fields
170
- is_set = (
171
- self.__pydantic_fields_set__.intersection({n})
172
- or k in null_default_fields
173
- ) # pylint: disable=no-member
174
-
175
- if val is not None and val != UNSET_SENTINEL:
176
- m[k] = val
177
- elif val != UNSET_SENTINEL and (
178
- not k in optional_fields or (optional_nullable and is_set)
179
- ):
180
- m[k] = val
158
+ is_nullable_and_explicitly_set = (
159
+ k in nullable_fields
160
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
161
+ )
162
+
163
+ if val != UNSET_SENTINEL:
164
+ if (
165
+ val is not None
166
+ or k not in optional_fields
167
+ or is_nullable_and_explicitly_set
168
+ ):
169
+ m[k] = val
181
170
 
182
171
  return m
@@ -43,31 +43,26 @@ class CreateConversationMetadata(BaseModel):
43
43
 
44
44
  @model_serializer(mode="wrap")
45
45
  def serialize_model(self, handler):
46
- optional_fields = ["generatingTitle", "entityId", "model"]
47
- nullable_fields = ["entityId", "model"]
48
- null_default_fields = []
49
-
46
+ optional_fields = set(["generatingTitle", "entityId", "model"])
47
+ nullable_fields = set(["entityId", "model"])
50
48
  serialized = handler(self)
51
-
52
49
  m = {}
53
50
 
54
51
  for n, f in type(self).model_fields.items():
55
52
  k = f.alias or n
56
53
  val = serialized.get(k)
57
- serialized.pop(k, None)
58
-
59
- optional_nullable = k in optional_fields and k in nullable_fields
60
- is_set = (
61
- self.__pydantic_fields_set__.intersection({n})
62
- or k in null_default_fields
63
- ) # pylint: disable=no-member
64
-
65
- if val is not None and val != UNSET_SENTINEL:
66
- m[k] = val
67
- elif val != UNSET_SENTINEL and (
68
- not k in optional_fields or (optional_nullable and is_set)
69
- ):
70
- m[k] = val
54
+ is_nullable_and_explicitly_set = (
55
+ k in nullable_fields
56
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
57
+ )
58
+
59
+ if val != UNSET_SENTINEL:
60
+ if (
61
+ val is not None
62
+ or k not in optional_fields
63
+ or is_nullable_and_explicitly_set
64
+ ):
65
+ m[k] = val
71
66
 
72
67
  return m
73
68
 
@@ -93,6 +88,22 @@ class CreateConversationRequestBody(BaseModel):
93
88
  metadata: Optional[CreateConversationMetadata] = None
94
89
  r"""Optional metadata to attach to the conversation."""
95
90
 
91
+ @model_serializer(mode="wrap")
92
+ def serialize_model(self, handler):
93
+ optional_fields = set(["displayName", "metadata"])
94
+ serialized = handler(self)
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
+
101
+ if val != UNSET_SENTINEL:
102
+ if val is not None or k not in optional_fields:
103
+ m[k] = val
104
+
105
+ return m
106
+
96
107
 
97
108
  CreateConversationKind = Literal["conversation",]
98
109
  r"""Resource type discriminator."""
@@ -127,31 +138,26 @@ class CreateConversationConversationsMetadata(BaseModel):
127
138
 
128
139
  @model_serializer(mode="wrap")
129
140
  def serialize_model(self, handler):
130
- optional_fields = ["generatingTitle", "entityId", "model"]
131
- nullable_fields = ["entityId", "model"]
132
- null_default_fields = []
133
-
141
+ optional_fields = set(["generatingTitle", "entityId", "model"])
142
+ nullable_fields = set(["entityId", "model"])
134
143
  serialized = handler(self)
135
-
136
144
  m = {}
137
145
 
138
146
  for n, f in type(self).model_fields.items():
139
147
  k = f.alias or n
140
148
  val = serialized.get(k)
141
- serialized.pop(k, None)
142
-
143
- optional_nullable = k in optional_fields and k in nullable_fields
144
- is_set = (
145
- self.__pydantic_fields_set__.intersection({n})
146
- or k in null_default_fields
147
- ) # pylint: disable=no-member
148
-
149
- if val is not None and val != UNSET_SENTINEL:
150
- m[k] = val
151
- elif val != UNSET_SENTINEL and (
152
- not k in optional_fields or (optional_nullable and is_set)
153
- ):
154
- m[k] = val
149
+ is_nullable_and_explicitly_set = (
150
+ k in nullable_fields
151
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
152
+ )
153
+
154
+ if val != UNSET_SENTINEL:
155
+ if (
156
+ val is not None
157
+ or k not in optional_fields
158
+ or is_nullable_and_explicitly_set
159
+ ):
160
+ m[k] = val
155
161
 
156
162
  return m
157
163
 
@@ -193,7 +199,7 @@ class CreateConversationResponseBody(BaseModel):
193
199
  r"""Unix timestamp in milliseconds when the conversation was last modified."""
194
200
 
195
201
  id: Annotated[Optional[str], pydantic.Field(alias="_id")] = (
196
- "conv_01kexrj7rrdafwrpy5ypdd21kn"
202
+ "conv_01kftttr2rfknvpgcjxm08mswt"
197
203
  )
198
204
  r"""Unique conversation identifier with `conv_` prefix."""
199
205
 
@@ -205,3 +211,19 @@ class CreateConversationResponseBody(BaseModel):
205
211
 
206
212
  metadata: Optional[CreateConversationConversationsMetadata] = None
207
213
  r"""Additional conversation metadata."""
214
+
215
+ @model_serializer(mode="wrap")
216
+ def serialize_model(self, handler):
217
+ optional_fields = set(["_id", "createdById", "updatedById", "metadata"])
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
@@ -15,7 +15,7 @@ from .toolreviewrequestedevent import (
15
15
  )
16
16
  from .toolstartedevent import ToolStartedEvent, ToolStartedEventTypedDict
17
17
  from .usermessagerequest import UserMessageRequest, UserMessageRequestTypedDict
18
- from orq_ai_sdk.types import BaseModel
18
+ from orq_ai_sdk.types import BaseModel, UNSET_SENTINEL
19
19
  from orq_ai_sdk.utils import (
20
20
  FieldMetadata,
21
21
  PathParamMetadata,
@@ -23,7 +23,7 @@ from orq_ai_sdk.utils import (
23
23
  get_discriminator,
24
24
  )
25
25
  import pydantic
26
- from pydantic import Discriminator, Tag
26
+ from pydantic import Discriminator, Tag, model_serializer
27
27
  from typing import Any, Dict, Literal, Optional, Union
28
28
  from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
29
29
 
@@ -52,6 +52,22 @@ class CreateConversationResponseRequestBody(BaseModel):
52
52
  stream: Optional[bool] = True
53
53
  r"""Whether to stream the response (default: true)"""
54
54
 
55
+ @model_serializer(mode="wrap")
56
+ def serialize_model(self, handler):
57
+ optional_fields = set(["task_id", "stream"])
58
+ serialized = handler(self)
59
+ m = {}
60
+
61
+ for n, f in type(self).model_fields.items():
62
+ k = f.alias or n
63
+ val = serialized.get(k)
64
+
65
+ if val != UNSET_SENTINEL:
66
+ if val is not None or k not in optional_fields:
67
+ m[k] = val
68
+
69
+ return m
70
+
55
71
 
56
72
  class CreateConversationResponseRequestTypedDict(TypedDict):
57
73
  conversation_id: str
@@ -103,7 +119,7 @@ class CreateConversationResponsePartReasoningPart(BaseModel):
103
119
  r"""The reasoning or thought process behind the response. Used for chain-of-thought or extended thinking."""
104
120
 
105
121
  id: Annotated[Optional[str], pydantic.Field(alias="_id")] = (
106
- "reasoning_01kexrj7snqnp8vvm2fsmafqav"
122
+ "reasoning_01kftttr3gyk3vvbxdw4tbzczf"
107
123
  )
108
124
  r"""Unique identifier for the part. Format: reasoning_{ulid} (e.g., reasoning_01hxyz...)"""
109
125
 
@@ -113,6 +129,22 @@ class CreateConversationResponsePartReasoningPart(BaseModel):
113
129
  signature: Optional[str] = None
114
130
  r"""Optional cryptographic signature to verify the authenticity and integrity of the reasoning content"""
115
131
 
132
+ @model_serializer(mode="wrap")
133
+ def serialize_model(self, handler):
134
+ optional_fields = set(["_id", "metadata", "signature"])
135
+ serialized = handler(self)
136
+ m = {}
137
+
138
+ for n, f in type(self).model_fields.items():
139
+ k = f.alias or n
140
+ val = serialized.get(k)
141
+
142
+ if val != UNSET_SENTINEL:
143
+ if val is not None or k not in optional_fields:
144
+ m[k] = val
145
+
146
+ return m
147
+
116
148
 
117
149
  class CreateConversationResponseResponseStreamingEventDataTypedDict(TypedDict):
118
150
  part_id: str
@@ -179,7 +211,7 @@ class DeltaReasoningPart(BaseModel):
179
211
  r"""The reasoning or thought process behind the response. Used for chain-of-thought or extended thinking."""
180
212
 
181
213
  id: Annotated[Optional[str], pydantic.Field(alias="_id")] = (
182
- "reasoning_01kexrj7shff6dx5edrsvhnbek"
214
+ "reasoning_01kftttr3aym7777vszs4z7s6w"
183
215
  )
184
216
  r"""Unique identifier for the part. Format: reasoning_{ulid} (e.g., reasoning_01hxyz...)"""
185
217
 
@@ -189,6 +221,22 @@ class DeltaReasoningPart(BaseModel):
189
221
  signature: Optional[str] = None
190
222
  r"""Optional cryptographic signature to verify the authenticity and integrity of the reasoning content"""
191
223
 
224
+ @model_serializer(mode="wrap")
225
+ def serialize_model(self, handler):
226
+ optional_fields = set(["_id", "metadata", "signature"])
227
+ serialized = handler(self)
228
+ m = {}
229
+
230
+ for n, f in type(self).model_fields.items():
231
+ k = f.alias or n
232
+ val = serialized.get(k)
233
+
234
+ if val != UNSET_SENTINEL:
235
+ if val is not None or k not in optional_fields:
236
+ m[k] = val
237
+
238
+ return m
239
+
192
240
 
193
241
  class ResponseStreamingEventDataTypedDict(TypedDict):
194
242
  part_id: str
@@ -279,3 +327,19 @@ class CreateConversationResponseResponseBody(BaseModel):
279
327
  r"""Response successfully created."""
280
328
 
281
329
  data: Optional[CreateConversationResponseResponseStreamingEvent] = None
330
+
331
+ @model_serializer(mode="wrap")
332
+ def serialize_model(self, handler):
333
+ optional_fields = set(["data"])
334
+ serialized = handler(self)
335
+ m = {}
336
+
337
+ for n, f in type(self).model_fields.items():
338
+ k = f.alias or n
339
+ val = serialized.get(k)
340
+
341
+ if val != UNSET_SENTINEL:
342
+ if val is not None or k not in optional_fields:
343
+ m[k] = val
344
+
345
+ return m