mistralai 1.10.0__py3-none-any.whl → 1.11.1__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 (270) hide show
  1. mistralai/_hooks/tracing.py +28 -3
  2. mistralai/_version.py +3 -3
  3. mistralai/accesses.py +22 -12
  4. mistralai/agents.py +88 -44
  5. mistralai/basesdk.py +6 -0
  6. mistralai/chat.py +96 -40
  7. mistralai/classifiers.py +48 -23
  8. mistralai/conversations.py +186 -64
  9. mistralai/documents.py +72 -26
  10. mistralai/embeddings.py +24 -9
  11. mistralai/extra/README.md +1 -1
  12. mistralai/extra/mcp/auth.py +10 -11
  13. mistralai/extra/mcp/base.py +17 -16
  14. mistralai/extra/mcp/sse.py +13 -15
  15. mistralai/extra/mcp/stdio.py +5 -6
  16. mistralai/extra/observability/otel.py +47 -68
  17. mistralai/extra/run/context.py +33 -43
  18. mistralai/extra/run/result.py +29 -30
  19. mistralai/extra/run/tools.py +8 -9
  20. mistralai/extra/struct_chat.py +15 -8
  21. mistralai/extra/utils/response_format.py +5 -3
  22. mistralai/files.py +58 -24
  23. mistralai/fim.py +20 -12
  24. mistralai/httpclient.py +0 -1
  25. mistralai/jobs.py +65 -26
  26. mistralai/libraries.py +20 -10
  27. mistralai/mistral_agents.py +438 -30
  28. mistralai/mistral_jobs.py +62 -17
  29. mistralai/models/__init__.py +46 -1
  30. mistralai/models/agent.py +1 -1
  31. mistralai/models/agentconversation.py +1 -1
  32. mistralai/models/agenthandoffdoneevent.py +1 -1
  33. mistralai/models/agenthandoffentry.py +3 -2
  34. mistralai/models/agenthandoffstartedevent.py +1 -1
  35. mistralai/models/agents_api_v1_agents_get_versionop.py +21 -0
  36. mistralai/models/agents_api_v1_agents_list_versionsop.py +33 -0
  37. mistralai/models/agents_api_v1_agents_listop.py +5 -1
  38. mistralai/models/agents_api_v1_conversations_listop.py +1 -1
  39. mistralai/models/agentscompletionrequest.py +2 -5
  40. mistralai/models/agentscompletionstreamrequest.py +2 -5
  41. mistralai/models/archiveftmodelout.py +1 -1
  42. mistralai/models/assistantmessage.py +1 -1
  43. mistralai/models/audiochunk.py +1 -1
  44. mistralai/models/audioencoding.py +18 -0
  45. mistralai/models/audioformat.py +17 -0
  46. mistralai/models/basemodelcard.py +1 -1
  47. mistralai/models/batchjobin.py +18 -9
  48. mistralai/models/batchjobout.py +6 -1
  49. mistralai/models/batchjobsout.py +1 -1
  50. mistralai/models/batchrequest.py +48 -0
  51. mistralai/models/chatcompletionchoice.py +10 -5
  52. mistralai/models/chatcompletionrequest.py +2 -5
  53. mistralai/models/chatcompletionstreamrequest.py +2 -5
  54. mistralai/models/classificationrequest.py +37 -3
  55. mistralai/models/classifierdetailedjobout.py +4 -2
  56. mistralai/models/classifierftmodelout.py +3 -2
  57. mistralai/models/classifierjobout.py +4 -2
  58. mistralai/models/codeinterpretertool.py +1 -1
  59. mistralai/models/completiondetailedjobout.py +5 -2
  60. mistralai/models/completionftmodelout.py +3 -2
  61. mistralai/models/completionjobout.py +5 -2
  62. mistralai/models/completionresponsestreamchoice.py +9 -8
  63. mistralai/models/conversationappendrequest.py +4 -1
  64. mistralai/models/conversationappendstreamrequest.py +4 -1
  65. mistralai/models/conversationhistory.py +2 -1
  66. mistralai/models/conversationmessages.py +1 -1
  67. mistralai/models/conversationrequest.py +5 -1
  68. mistralai/models/conversationresponse.py +2 -1
  69. mistralai/models/conversationrestartrequest.py +4 -1
  70. mistralai/models/conversationrestartstreamrequest.py +4 -1
  71. mistralai/models/conversationstreamrequest.py +5 -1
  72. mistralai/models/documentlibrarytool.py +1 -1
  73. mistralai/models/documenturlchunk.py +1 -1
  74. mistralai/models/embeddingdtype.py +7 -1
  75. mistralai/models/embeddingrequest.py +11 -3
  76. mistralai/models/encodingformat.py +4 -1
  77. mistralai/models/entitytype.py +8 -1
  78. mistralai/models/filepurpose.py +8 -1
  79. mistralai/models/files_api_routes_list_filesop.py +4 -11
  80. mistralai/models/files_api_routes_upload_fileop.py +2 -6
  81. mistralai/models/fileschema.py +3 -5
  82. mistralai/models/finetuneablemodeltype.py +4 -1
  83. mistralai/models/ftclassifierlossfunction.py +4 -1
  84. mistralai/models/ftmodelcard.py +1 -1
  85. mistralai/models/functioncallentry.py +3 -2
  86. mistralai/models/functioncallevent.py +1 -1
  87. mistralai/models/functionresultentry.py +3 -2
  88. mistralai/models/functiontool.py +1 -1
  89. mistralai/models/githubrepositoryin.py +1 -1
  90. mistralai/models/githubrepositoryout.py +1 -1
  91. mistralai/models/httpvalidationerror.py +4 -2
  92. mistralai/models/imagegenerationtool.py +1 -1
  93. mistralai/models/imageurlchunk.py +1 -1
  94. mistralai/models/jobs_api_routes_batch_get_batch_jobop.py +40 -3
  95. mistralai/models/jobsout.py +1 -1
  96. mistralai/models/legacyjobmetadataout.py +1 -1
  97. mistralai/models/messageinputentry.py +9 -3
  98. mistralai/models/messageoutputentry.py +6 -3
  99. mistralai/models/messageoutputevent.py +4 -2
  100. mistralai/models/mistralerror.py +11 -7
  101. mistralai/models/mistralpromptmode.py +1 -1
  102. mistralai/models/modelconversation.py +1 -1
  103. mistralai/models/no_response_error.py +5 -1
  104. mistralai/models/ocrrequest.py +11 -1
  105. mistralai/models/ocrtableobject.py +4 -1
  106. mistralai/models/referencechunk.py +1 -1
  107. mistralai/models/requestsource.py +5 -1
  108. mistralai/models/responsedoneevent.py +1 -1
  109. mistralai/models/responseerrorevent.py +1 -1
  110. mistralai/models/responseformats.py +5 -1
  111. mistralai/models/responsestartedevent.py +1 -1
  112. mistralai/models/responsevalidationerror.py +2 -0
  113. mistralai/models/retrievefileout.py +3 -5
  114. mistralai/models/sampletype.py +7 -1
  115. mistralai/models/sdkerror.py +2 -0
  116. mistralai/models/shareenum.py +7 -1
  117. mistralai/models/sharingdelete.py +2 -4
  118. mistralai/models/sharingin.py +3 -5
  119. mistralai/models/source.py +8 -1
  120. mistralai/models/systemmessage.py +1 -1
  121. mistralai/models/textchunk.py +1 -1
  122. mistralai/models/thinkchunk.py +1 -1
  123. mistralai/models/timestampgranularity.py +1 -1
  124. mistralai/models/tool.py +2 -6
  125. mistralai/models/toolcall.py +2 -6
  126. mistralai/models/toolchoice.py +2 -6
  127. mistralai/models/toolchoiceenum.py +6 -1
  128. mistralai/models/toolexecutiondeltaevent.py +2 -1
  129. mistralai/models/toolexecutiondoneevent.py +2 -1
  130. mistralai/models/toolexecutionentry.py +4 -2
  131. mistralai/models/toolexecutionstartedevent.py +2 -1
  132. mistralai/models/toolfilechunk.py +13 -5
  133. mistralai/models/toolmessage.py +1 -1
  134. mistralai/models/toolreferencechunk.py +15 -5
  135. mistralai/models/tooltypes.py +1 -1
  136. mistralai/models/transcriptionsegmentchunk.py +1 -1
  137. mistralai/models/transcriptionstreamdone.py +1 -1
  138. mistralai/models/transcriptionstreamlanguage.py +1 -1
  139. mistralai/models/transcriptionstreamsegmentdelta.py +1 -1
  140. mistralai/models/transcriptionstreamtextdelta.py +1 -1
  141. mistralai/models/unarchiveftmodelout.py +1 -1
  142. mistralai/models/uploadfileout.py +3 -5
  143. mistralai/models/usermessage.py +1 -1
  144. mistralai/models/wandbintegration.py +1 -1
  145. mistralai/models/wandbintegrationout.py +1 -1
  146. mistralai/models/websearchpremiumtool.py +1 -1
  147. mistralai/models/websearchtool.py +1 -1
  148. mistralai/models_.py +24 -12
  149. mistralai/ocr.py +38 -10
  150. mistralai/sdk.py +2 -2
  151. mistralai/transcriptions.py +28 -12
  152. mistralai/types/basemodel.py +41 -3
  153. mistralai/utils/__init__.py +0 -3
  154. mistralai/utils/annotations.py +32 -8
  155. mistralai/utils/enums.py +60 -0
  156. mistralai/utils/forms.py +21 -10
  157. mistralai/utils/queryparams.py +14 -2
  158. mistralai/utils/requestbodies.py +3 -3
  159. mistralai/utils/retries.py +69 -5
  160. mistralai/utils/serializers.py +0 -20
  161. mistralai/utils/unmarshal_json_response.py +15 -1
  162. {mistralai-1.10.0.dist-info → mistralai-1.11.1.dist-info}/METADATA +144 -159
  163. mistralai-1.11.1.dist-info/RECORD +495 -0
  164. {mistralai-1.10.0.dist-info → mistralai-1.11.1.dist-info}/WHEEL +1 -1
  165. mistralai_azure/_version.py +3 -3
  166. mistralai_azure/basesdk.py +21 -5
  167. mistralai_azure/chat.py +82 -109
  168. mistralai_azure/httpclient.py +0 -1
  169. mistralai_azure/models/__init__.py +66 -4
  170. mistralai_azure/models/assistantmessage.py +1 -1
  171. mistralai_azure/models/chatcompletionchoice.py +10 -7
  172. mistralai_azure/models/chatcompletionrequest.py +24 -10
  173. mistralai_azure/models/chatcompletionstreamrequest.py +24 -10
  174. mistralai_azure/models/completionresponsestreamchoice.py +11 -7
  175. mistralai_azure/models/documenturlchunk.py +1 -1
  176. mistralai_azure/models/httpvalidationerror.py +15 -8
  177. mistralai_azure/models/imageurlchunk.py +1 -1
  178. mistralai_azure/models/mistralazureerror.py +30 -0
  179. mistralai_azure/models/mistralpromptmode.py +1 -1
  180. mistralai_azure/models/no_response_error.py +17 -0
  181. mistralai_azure/models/ocrpageobject.py +32 -5
  182. mistralai_azure/models/ocrrequest.py +20 -1
  183. mistralai_azure/models/ocrtableobject.py +34 -0
  184. mistralai_azure/models/prediction.py +4 -0
  185. mistralai_azure/models/referencechunk.py +1 -1
  186. mistralai_azure/models/responseformat.py +4 -2
  187. mistralai_azure/models/responseformats.py +5 -2
  188. mistralai_azure/models/responsevalidationerror.py +27 -0
  189. mistralai_azure/models/sdkerror.py +32 -14
  190. mistralai_azure/models/systemmessage.py +8 -4
  191. mistralai_azure/models/systemmessagecontentchunks.py +21 -0
  192. mistralai_azure/models/textchunk.py +1 -1
  193. mistralai_azure/models/thinkchunk.py +35 -0
  194. mistralai_azure/models/tool.py +2 -6
  195. mistralai_azure/models/toolcall.py +2 -6
  196. mistralai_azure/models/toolchoice.py +2 -6
  197. mistralai_azure/models/toolchoiceenum.py +6 -1
  198. mistralai_azure/models/toolmessage.py +1 -1
  199. mistralai_azure/models/tooltypes.py +1 -1
  200. mistralai_azure/models/usermessage.py +1 -1
  201. mistralai_azure/ocr.py +39 -40
  202. mistralai_azure/types/basemodel.py +41 -3
  203. mistralai_azure/utils/__init__.py +18 -8
  204. mistralai_azure/utils/annotations.py +32 -8
  205. mistralai_azure/utils/enums.py +60 -0
  206. mistralai_azure/utils/eventstreaming.py +10 -0
  207. mistralai_azure/utils/forms.py +21 -10
  208. mistralai_azure/utils/queryparams.py +14 -2
  209. mistralai_azure/utils/requestbodies.py +3 -3
  210. mistralai_azure/utils/retries.py +69 -5
  211. mistralai_azure/utils/serializers.py +3 -22
  212. mistralai_azure/utils/unmarshal_json_response.py +38 -0
  213. mistralai_gcp/_hooks/types.py +7 -0
  214. mistralai_gcp/_version.py +4 -4
  215. mistralai_gcp/basesdk.py +33 -25
  216. mistralai_gcp/chat.py +98 -109
  217. mistralai_gcp/fim.py +62 -85
  218. mistralai_gcp/httpclient.py +6 -17
  219. mistralai_gcp/models/__init__.py +321 -116
  220. mistralai_gcp/models/assistantmessage.py +2 -2
  221. mistralai_gcp/models/chatcompletionchoice.py +10 -7
  222. mistralai_gcp/models/chatcompletionrequest.py +38 -7
  223. mistralai_gcp/models/chatcompletionresponse.py +6 -6
  224. mistralai_gcp/models/chatcompletionstreamrequest.py +38 -7
  225. mistralai_gcp/models/completionresponsestreamchoice.py +12 -8
  226. mistralai_gcp/models/deltamessage.py +1 -1
  227. mistralai_gcp/models/fimcompletionrequest.py +9 -10
  228. mistralai_gcp/models/fimcompletionresponse.py +6 -6
  229. mistralai_gcp/models/fimcompletionstreamrequest.py +9 -10
  230. mistralai_gcp/models/httpvalidationerror.py +15 -8
  231. mistralai_gcp/models/imageurl.py +1 -1
  232. mistralai_gcp/models/imageurlchunk.py +1 -1
  233. mistralai_gcp/models/jsonschema.py +1 -1
  234. mistralai_gcp/models/mistralgcperror.py +30 -0
  235. mistralai_gcp/models/mistralpromptmode.py +8 -0
  236. mistralai_gcp/models/no_response_error.py +17 -0
  237. mistralai_gcp/models/prediction.py +4 -0
  238. mistralai_gcp/models/referencechunk.py +1 -1
  239. mistralai_gcp/models/responseformat.py +5 -3
  240. mistralai_gcp/models/responseformats.py +5 -2
  241. mistralai_gcp/models/responsevalidationerror.py +27 -0
  242. mistralai_gcp/models/sdkerror.py +32 -14
  243. mistralai_gcp/models/systemmessage.py +8 -4
  244. mistralai_gcp/models/systemmessagecontentchunks.py +21 -0
  245. mistralai_gcp/models/textchunk.py +1 -1
  246. mistralai_gcp/models/thinkchunk.py +35 -0
  247. mistralai_gcp/models/tool.py +2 -6
  248. mistralai_gcp/models/toolcall.py +2 -6
  249. mistralai_gcp/models/toolchoice.py +2 -6
  250. mistralai_gcp/models/toolchoiceenum.py +6 -1
  251. mistralai_gcp/models/toolmessage.py +2 -2
  252. mistralai_gcp/models/tooltypes.py +1 -1
  253. mistralai_gcp/models/usageinfo.py +71 -8
  254. mistralai_gcp/models/usermessage.py +2 -2
  255. mistralai_gcp/sdk.py +12 -10
  256. mistralai_gcp/sdkconfiguration.py +0 -7
  257. mistralai_gcp/types/basemodel.py +41 -3
  258. mistralai_gcp/utils/__init__.py +141 -46
  259. mistralai_gcp/utils/annotations.py +32 -8
  260. mistralai_gcp/utils/datetimes.py +23 -0
  261. mistralai_gcp/utils/enums.py +125 -25
  262. mistralai_gcp/utils/eventstreaming.py +10 -0
  263. mistralai_gcp/utils/forms.py +62 -30
  264. mistralai_gcp/utils/queryparams.py +14 -2
  265. mistralai_gcp/utils/requestbodies.py +3 -3
  266. mistralai_gcp/utils/retries.py +69 -5
  267. mistralai_gcp/utils/serializers.py +33 -23
  268. mistralai_gcp/utils/unmarshal_json_response.py +38 -0
  269. mistralai-1.10.0.dist-info/RECORD +0 -475
  270. {mistralai-1.10.0.dist-info → mistralai-1.11.1.dist-info}/licenses/LICENSE +0 -0
@@ -6,7 +6,7 @@ from .encodingformat import EncodingFormat
6
6
  from mistralai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
7
7
  import pydantic
8
8
  from pydantic import model_serializer
9
- from typing import List, Optional, Union
9
+ from typing import Any, Dict, List, Optional, Union
10
10
  from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
11
11
 
12
12
 
@@ -25,6 +25,7 @@ class EmbeddingRequestTypedDict(TypedDict):
25
25
  r"""The ID of the model to be used for embedding."""
26
26
  inputs: EmbeddingRequestInputsTypedDict
27
27
  r"""The text content to be embedded, can be a string or an array of strings for fast processing in bulk."""
28
+ metadata: NotRequired[Nullable[Dict[str, Any]]]
28
29
  output_dimension: NotRequired[Nullable[int]]
29
30
  r"""The dimension of the output embeddings when feature available. If not provided, a default output dimension will be used."""
30
31
  output_dtype: NotRequired[EmbeddingDtype]
@@ -38,6 +39,8 @@ class EmbeddingRequest(BaseModel):
38
39
  inputs: Annotated[EmbeddingRequestInputs, pydantic.Field(alias="input")]
39
40
  r"""The text content to be embedded, can be a string or an array of strings for fast processing in bulk."""
40
41
 
42
+ metadata: OptionalNullable[Dict[str, Any]] = UNSET
43
+
41
44
  output_dimension: OptionalNullable[int] = UNSET
42
45
  r"""The dimension of the output embeddings when feature available. If not provided, a default output dimension will be used."""
43
46
 
@@ -47,8 +50,13 @@ class EmbeddingRequest(BaseModel):
47
50
 
48
51
  @model_serializer(mode="wrap")
49
52
  def serialize_model(self, handler):
50
- optional_fields = ["output_dimension", "output_dtype", "encoding_format"]
51
- nullable_fields = ["output_dimension"]
53
+ optional_fields = [
54
+ "metadata",
55
+ "output_dimension",
56
+ "output_dtype",
57
+ "encoding_format",
58
+ ]
59
+ nullable_fields = ["metadata", "output_dimension"]
52
60
  null_default_fields = []
53
61
 
54
62
  serialized = handler(self)
@@ -4,4 +4,7 @@ from __future__ import annotations
4
4
  from typing import Literal
5
5
 
6
6
 
7
- EncodingFormat = Literal["float", "base64"]
7
+ EncodingFormat = Literal[
8
+ "float",
9
+ "base64",
10
+ ]
@@ -5,5 +5,12 @@ from mistralai.types import UnrecognizedStr
5
5
  from typing import Literal, Union
6
6
 
7
7
 
8
- EntityType = Union[Literal["User", "Workspace", "Org"], UnrecognizedStr]
8
+ EntityType = Union[
9
+ Literal[
10
+ "User",
11
+ "Workspace",
12
+ "Org",
13
+ ],
14
+ UnrecognizedStr,
15
+ ]
9
16
  r"""The type of entity, used to share a library."""
@@ -5,4 +5,11 @@ from mistralai.types import UnrecognizedStr
5
5
  from typing import Literal, Union
6
6
 
7
7
 
8
- FilePurpose = Union[Literal["fine-tune", "batch", "ocr"], UnrecognizedStr]
8
+ FilePurpose = Union[
9
+ Literal[
10
+ "fine-tune",
11
+ "batch",
12
+ "ocr",
13
+ ],
14
+ UnrecognizedStr,
15
+ ]
@@ -5,9 +5,8 @@ from .filepurpose import FilePurpose
5
5
  from .sampletype import SampleType
6
6
  from .source import Source
7
7
  from mistralai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
8
- from mistralai.utils import FieldMetadata, QueryParamMetadata, validate_open_enum
8
+ from mistralai.utils import FieldMetadata, QueryParamMetadata
9
9
  from pydantic import model_serializer
10
- from pydantic.functional_validators import PlainValidator
11
10
  from typing import List, Optional
12
11
  from typing_extensions import Annotated, NotRequired, TypedDict
13
12
 
@@ -39,16 +38,12 @@ class FilesAPIRoutesListFilesRequest(BaseModel):
39
38
  ] = True
40
39
 
41
40
  sample_type: Annotated[
42
- OptionalNullable[
43
- List[Annotated[SampleType, PlainValidator(validate_open_enum(False))]]
44
- ],
41
+ OptionalNullable[List[SampleType]],
45
42
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
46
43
  ] = UNSET
47
44
 
48
45
  source: Annotated[
49
- OptionalNullable[
50
- List[Annotated[Source, PlainValidator(validate_open_enum(False))]]
51
- ],
46
+ OptionalNullable[List[Source]],
52
47
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
53
48
  ] = UNSET
54
49
 
@@ -58,9 +53,7 @@ class FilesAPIRoutesListFilesRequest(BaseModel):
58
53
  ] = UNSET
59
54
 
60
55
  purpose: Annotated[
61
- Annotated[
62
- OptionalNullable[FilePurpose], PlainValidator(validate_open_enum(False))
63
- ],
56
+ OptionalNullable[FilePurpose],
64
57
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
65
58
  ] = UNSET
66
59
 
@@ -4,8 +4,7 @@ from __future__ import annotations
4
4
  from .file import File, FileTypedDict
5
5
  from .filepurpose import FilePurpose
6
6
  from mistralai.types import BaseModel
7
- from mistralai.utils import FieldMetadata, MultipartFormMetadata, validate_open_enum
8
- from pydantic.functional_validators import PlainValidator
7
+ from mistralai.utils import FieldMetadata, MultipartFormMetadata
9
8
  from typing import Optional
10
9
  from typing_extensions import Annotated, NotRequired, TypedDict
11
10
 
@@ -38,7 +37,4 @@ class FilesAPIRoutesUploadFileMultiPartBodyParams(BaseModel):
38
37
  ```
39
38
  """
40
39
 
41
- purpose: Annotated[
42
- Annotated[Optional[FilePurpose], PlainValidator(validate_open_enum(False))],
43
- FieldMetadata(multipart=True),
44
- ] = None
40
+ purpose: Annotated[Optional[FilePurpose], FieldMetadata(multipart=True)] = None
@@ -5,10 +5,8 @@ from .filepurpose import FilePurpose
5
5
  from .sampletype import SampleType
6
6
  from .source import Source
7
7
  from mistralai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
8
- from mistralai.utils import validate_open_enum
9
8
  import pydantic
10
9
  from pydantic import model_serializer
11
- from pydantic.functional_validators import PlainValidator
12
10
  from typing_extensions import Annotated, NotRequired, TypedDict
13
11
 
14
12
 
@@ -47,11 +45,11 @@ class FileSchema(BaseModel):
47
45
  filename: str
48
46
  r"""The name of the uploaded file."""
49
47
 
50
- purpose: Annotated[FilePurpose, PlainValidator(validate_open_enum(False))]
48
+ purpose: FilePurpose
51
49
 
52
- sample_type: Annotated[SampleType, PlainValidator(validate_open_enum(False))]
50
+ sample_type: SampleType
53
51
 
54
- source: Annotated[Source, PlainValidator(validate_open_enum(False))]
52
+ source: Source
55
53
 
56
54
  num_lines: OptionalNullable[int] = UNSET
57
55
 
@@ -4,4 +4,7 @@ from __future__ import annotations
4
4
  from typing import Literal
5
5
 
6
6
 
7
- FineTuneableModelType = Literal["completion", "classifier"]
7
+ FineTuneableModelType = Literal[
8
+ "completion",
9
+ "classifier",
10
+ ]
@@ -4,4 +4,7 @@ from __future__ import annotations
4
4
  from typing import Literal
5
5
 
6
6
 
7
- FTClassifierLossFunction = Literal["single_class", "multi_class"]
7
+ FTClassifierLossFunction = Literal[
8
+ "single_class",
9
+ "multi_class",
10
+ ]
@@ -12,7 +12,7 @@ from typing import List, Literal, Optional
12
12
  from typing_extensions import Annotated, NotRequired, TypedDict
13
13
 
14
14
 
15
- FTModelCardType = Literal["fine-tuned"]
15
+ FTModelCardType = Literal["fine-tuned",]
16
16
 
17
17
 
18
18
  class FTModelCardTypedDict(TypedDict):
@@ -12,9 +12,10 @@ from typing import Literal, Optional
12
12
  from typing_extensions import NotRequired, TypedDict
13
13
 
14
14
 
15
- FunctionCallEntryObject = Literal["entry"]
15
+ FunctionCallEntryObject = Literal["entry",]
16
16
 
17
- FunctionCallEntryType = Literal["function.call"]
17
+
18
+ FunctionCallEntryType = Literal["function.call",]
18
19
 
19
20
 
20
21
  class FunctionCallEntryTypedDict(TypedDict):
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- FunctionCallEventType = Literal["function.call.delta"]
10
+ FunctionCallEventType = Literal["function.call.delta",]
11
11
 
12
12
 
13
13
  class FunctionCallEventTypedDict(TypedDict):
@@ -8,9 +8,10 @@ from typing import Literal, Optional
8
8
  from typing_extensions import NotRequired, TypedDict
9
9
 
10
10
 
11
- FunctionResultEntryObject = Literal["entry"]
11
+ FunctionResultEntryObject = Literal["entry",]
12
12
 
13
- FunctionResultEntryType = Literal["function.result"]
13
+
14
+ FunctionResultEntryType = Literal["function.result",]
14
15
 
15
16
 
16
17
  class FunctionResultEntryTypedDict(TypedDict):
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- FunctionToolType = Literal["function"]
10
+ FunctionToolType = Literal["function",]
11
11
 
12
12
 
13
13
  class FunctionToolTypedDict(TypedDict):
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- GithubRepositoryInType = Literal["github"]
10
+ GithubRepositoryInType = Literal["github",]
11
11
 
12
12
 
13
13
  class GithubRepositoryInTypedDict(TypedDict):
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- GithubRepositoryOutType = Literal["github"]
10
+ GithubRepositoryOutType = Literal["github",]
11
11
 
12
12
 
13
13
  class GithubRepositoryOutTypedDict(TypedDict):
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .validationerror import ValidationError
5
+ from dataclasses import dataclass, field
5
6
  import httpx
6
7
  from mistralai.models import MistralError
7
8
  from mistralai.types import BaseModel
@@ -12,8 +13,9 @@ class HTTPValidationErrorData(BaseModel):
12
13
  detail: Optional[List[ValidationError]] = None
13
14
 
14
15
 
16
+ @dataclass(unsafe_hash=True)
15
17
  class HTTPValidationError(MistralError):
16
- data: HTTPValidationErrorData
18
+ data: HTTPValidationErrorData = field(hash=False)
17
19
 
18
20
  def __init__(
19
21
  self,
@@ -23,4 +25,4 @@ class HTTPValidationError(MistralError):
23
25
  ):
24
26
  message = body or raw_response.text
25
27
  super().__init__(message, raw_response, body)
26
- self.data = data
28
+ object.__setattr__(self, "data", data)
@@ -6,7 +6,7 @@ from typing import Literal, Optional
6
6
  from typing_extensions import NotRequired, TypedDict
7
7
 
8
8
 
9
- ImageGenerationToolType = Literal["image_generation"]
9
+ ImageGenerationToolType = Literal["image_generation",]
10
10
 
11
11
 
12
12
  class ImageGenerationToolTypedDict(TypedDict):
@@ -15,7 +15,7 @@ ImageURLChunkImageURLTypedDict = TypeAliasType(
15
15
  ImageURLChunkImageURL = TypeAliasType("ImageURLChunkImageURL", Union[ImageURL, str])
16
16
 
17
17
 
18
- ImageURLChunkType = Literal["image_url"]
18
+ ImageURLChunkType = Literal["image_url",]
19
19
 
20
20
 
21
21
  class ImageURLChunkTypedDict(TypedDict):
@@ -1,16 +1,53 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from mistralai.types import BaseModel
5
- from mistralai.utils import FieldMetadata, PathParamMetadata
6
- from typing_extensions import Annotated, TypedDict
4
+ from mistralai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
5
+ from mistralai.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
6
+ from pydantic import model_serializer
7
+ from typing_extensions import Annotated, NotRequired, TypedDict
7
8
 
8
9
 
9
10
  class JobsAPIRoutesBatchGetBatchJobRequestTypedDict(TypedDict):
10
11
  job_id: str
12
+ inline: NotRequired[Nullable[bool]]
11
13
 
12
14
 
13
15
  class JobsAPIRoutesBatchGetBatchJobRequest(BaseModel):
14
16
  job_id: Annotated[
15
17
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
16
18
  ]
19
+
20
+ inline: Annotated[
21
+ OptionalNullable[bool],
22
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
23
+ ] = UNSET
24
+
25
+ @model_serializer(mode="wrap")
26
+ def serialize_model(self, handler):
27
+ optional_fields = ["inline"]
28
+ nullable_fields = ["inline"]
29
+ null_default_fields = []
30
+
31
+ serialized = handler(self)
32
+
33
+ m = {}
34
+
35
+ for n, f in type(self).model_fields.items():
36
+ k = f.alias or n
37
+ val = serialized.get(k)
38
+ serialized.pop(k, None)
39
+
40
+ optional_nullable = k in optional_fields and k in nullable_fields
41
+ is_set = (
42
+ self.__pydantic_fields_set__.intersection({n})
43
+ or k in null_default_fields
44
+ ) # pylint: disable=no-member
45
+
46
+ if val is not None and val != UNSET_SENTINEL:
47
+ m[k] = val
48
+ elif val != UNSET_SENTINEL and (
49
+ not k in optional_fields or (optional_nullable and is_set)
50
+ ):
51
+ m[k] = val
52
+
53
+ return m
@@ -24,7 +24,7 @@ JobsOutData = Annotated[
24
24
  ]
25
25
 
26
26
 
27
- JobsOutObject = Literal["list"]
27
+ JobsOutObject = Literal["list",]
28
28
 
29
29
 
30
30
  class JobsOutTypedDict(TypedDict):
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- LegacyJobMetadataOutObject = Literal["job.metadata"]
10
+ LegacyJobMetadataOutObject = Literal["job.metadata",]
11
11
 
12
12
 
13
13
  class LegacyJobMetadataOutTypedDict(TypedDict):
@@ -12,11 +12,17 @@ from typing import List, Literal, Optional, Union
12
12
  from typing_extensions import NotRequired, TypeAliasType, TypedDict
13
13
 
14
14
 
15
- Object = Literal["entry"]
15
+ Object = Literal["entry",]
16
16
 
17
- MessageInputEntryType = Literal["message.input"]
18
17
 
19
- MessageInputEntryRole = Literal["assistant", "user"]
18
+ MessageInputEntryType = Literal["message.input",]
19
+
20
+
21
+ MessageInputEntryRole = Literal[
22
+ "assistant",
23
+ "user",
24
+ ]
25
+
20
26
 
21
27
  MessageInputEntryContentTypedDict = TypeAliasType(
22
28
  "MessageInputEntryContentTypedDict",
@@ -12,11 +12,14 @@ from typing import List, Literal, Optional, Union
12
12
  from typing_extensions import NotRequired, TypeAliasType, TypedDict
13
13
 
14
14
 
15
- MessageOutputEntryObject = Literal["entry"]
15
+ MessageOutputEntryObject = Literal["entry",]
16
16
 
17
- MessageOutputEntryType = Literal["message.output"]
18
17
 
19
- MessageOutputEntryRole = Literal["assistant"]
18
+ MessageOutputEntryType = Literal["message.output",]
19
+
20
+
21
+ MessageOutputEntryRole = Literal["assistant",]
22
+
20
23
 
21
24
  MessageOutputEntryContentTypedDict = TypeAliasType(
22
25
  "MessageOutputEntryContentTypedDict",
@@ -9,9 +9,11 @@ from typing import Literal, Optional, Union
9
9
  from typing_extensions import NotRequired, TypeAliasType, TypedDict
10
10
 
11
11
 
12
- MessageOutputEventType = Literal["message.output.delta"]
12
+ MessageOutputEventType = Literal["message.output.delta",]
13
+
14
+
15
+ MessageOutputEventRole = Literal["assistant",]
13
16
 
14
- MessageOutputEventRole = Literal["assistant"]
15
17
 
16
18
  MessageOutputEventContentTypedDict = TypeAliasType(
17
19
  "MessageOutputEventContentTypedDict", Union[str, OutputContentChunksTypedDict]
@@ -2,25 +2,29 @@
2
2
 
3
3
  import httpx
4
4
  from typing import Optional
5
+ from dataclasses import dataclass, field
5
6
 
6
7
 
8
+ @dataclass(unsafe_hash=True)
7
9
  class MistralError(Exception):
8
10
  """The base class for all HTTP error responses."""
9
11
 
10
12
  message: str
11
13
  status_code: int
12
14
  body: str
13
- headers: httpx.Headers
14
- raw_response: httpx.Response
15
+ headers: httpx.Headers = field(hash=False)
16
+ raw_response: httpx.Response = field(hash=False)
15
17
 
16
18
  def __init__(
17
19
  self, message: str, raw_response: httpx.Response, body: Optional[str] = None
18
20
  ):
19
- self.message = message
20
- self.status_code = raw_response.status_code
21
- self.body = body if body is not None else raw_response.text
22
- self.headers = raw_response.headers
23
- self.raw_response = raw_response
21
+ object.__setattr__(self, "message", message)
22
+ object.__setattr__(self, "status_code", raw_response.status_code)
23
+ object.__setattr__(
24
+ self, "body", body if body is not None else raw_response.text
25
+ )
26
+ object.__setattr__(self, "headers", raw_response.headers)
27
+ object.__setattr__(self, "raw_response", raw_response)
24
28
 
25
29
  def __str__(self):
26
30
  return self.message
@@ -5,4 +5,4 @@ from mistralai.types import UnrecognizedStr
5
5
  from typing import Literal, Union
6
6
 
7
7
 
8
- MistralPromptMode = Union[Literal["reasoning"], UnrecognizedStr]
8
+ MistralPromptMode = Union[Literal["reasoning",], UnrecognizedStr]
@@ -42,7 +42,7 @@ ModelConversationTools = Annotated[
42
42
  ]
43
43
 
44
44
 
45
- ModelConversationObject = Literal["conversation"]
45
+ ModelConversationObject = Literal["conversation",]
46
46
 
47
47
 
48
48
  class ModelConversationTypedDict(TypedDict):
@@ -1,12 +1,16 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
+ from dataclasses import dataclass
4
+
5
+
6
+ @dataclass(unsafe_hash=True)
3
7
  class NoResponseError(Exception):
4
8
  """Error raised when no HTTP response is received from the server."""
5
9
 
6
10
  message: str
7
11
 
8
12
  def __init__(self, message: str = "No response received"):
9
- self.message = message
13
+ object.__setattr__(self, "message", message)
10
14
  super().__init__(message)
11
15
 
12
16
  def __str__(self):
@@ -22,7 +22,10 @@ Document = TypeAliasType("Document", Union[FileChunk, ImageURLChunk, DocumentURL
22
22
  r"""Document to run OCR on"""
23
23
 
24
24
 
25
- TableFormat = Literal["markdown", "html"]
25
+ TableFormat = Literal[
26
+ "markdown",
27
+ "html",
28
+ ]
26
29
 
27
30
 
28
31
  class OCRRequestTypedDict(TypedDict):
@@ -42,6 +45,8 @@ class OCRRequestTypedDict(TypedDict):
42
45
  r"""Structured output class for extracting useful information from each extracted bounding box / image from document. Only json_schema is valid for this field"""
43
46
  document_annotation_format: NotRequired[Nullable[ResponseFormatTypedDict]]
44
47
  r"""Structured output class for extracting useful information from the entire document. Only json_schema is valid for this field"""
48
+ document_annotation_prompt: NotRequired[Nullable[str]]
49
+ r"""Optional prompt to guide the model in extracting structured output from the entire document. A document_annotation_format must be provided."""
45
50
  table_format: NotRequired[Nullable[TableFormat]]
46
51
  extract_header: NotRequired[bool]
47
52
  extract_footer: NotRequired[bool]
@@ -73,6 +78,9 @@ class OCRRequest(BaseModel):
73
78
  document_annotation_format: OptionalNullable[ResponseFormat] = UNSET
74
79
  r"""Structured output class for extracting useful information from the entire document. Only json_schema is valid for this field"""
75
80
 
81
+ document_annotation_prompt: OptionalNullable[str] = UNSET
82
+ r"""Optional prompt to guide the model in extracting structured output from the entire document. A document_annotation_format must be provided."""
83
+
76
84
  table_format: OptionalNullable[TableFormat] = UNSET
77
85
 
78
86
  extract_header: Optional[bool] = None
@@ -89,6 +97,7 @@ class OCRRequest(BaseModel):
89
97
  "image_min_size",
90
98
  "bbox_annotation_format",
91
99
  "document_annotation_format",
100
+ "document_annotation_prompt",
92
101
  "table_format",
93
102
  "extract_header",
94
103
  "extract_footer",
@@ -101,6 +110,7 @@ class OCRRequest(BaseModel):
101
110
  "image_min_size",
102
111
  "bbox_annotation_format",
103
112
  "document_annotation_format",
113
+ "document_annotation_prompt",
104
114
  "table_format",
105
115
  ]
106
116
  null_default_fields = []
@@ -7,7 +7,10 @@ from typing import Literal
7
7
  from typing_extensions import Annotated, TypedDict
8
8
 
9
9
 
10
- Format = Literal["markdown", "html"]
10
+ Format = Literal[
11
+ "markdown",
12
+ "html",
13
+ ]
11
14
  r"""Format of the table"""
12
15
 
13
16
 
@@ -6,7 +6,7 @@ from typing import List, Literal, Optional
6
6
  from typing_extensions import NotRequired, TypedDict
7
7
 
8
8
 
9
- ReferenceChunkType = Literal["reference"]
9
+ ReferenceChunkType = Literal["reference",]
10
10
 
11
11
 
12
12
  class ReferenceChunkTypedDict(TypedDict):
@@ -4,4 +4,8 @@ from __future__ import annotations
4
4
  from typing import Literal
5
5
 
6
6
 
7
- RequestSource = Literal["api", "playground", "agent_builder_v1"]
7
+ RequestSource = Literal[
8
+ "api",
9
+ "playground",
10
+ "agent_builder_v1",
11
+ ]
@@ -8,7 +8,7 @@ from typing import Literal, Optional
8
8
  from typing_extensions import NotRequired, TypedDict
9
9
 
10
10
 
11
- ResponseDoneEventType = Literal["conversation.response.done"]
11
+ ResponseDoneEventType = Literal["conversation.response.done",]
12
12
 
13
13
 
14
14
  class ResponseDoneEventTypedDict(TypedDict):
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- ResponseErrorEventType = Literal["conversation.response.error"]
10
+ ResponseErrorEventType = Literal["conversation.response.error",]
11
11
 
12
12
 
13
13
  class ResponseErrorEventTypedDict(TypedDict):
@@ -4,4 +4,8 @@ from __future__ import annotations
4
4
  from typing import Literal
5
5
 
6
6
 
7
- ResponseFormats = Literal["text", "json_object", "json_schema"]
7
+ ResponseFormats = Literal[
8
+ "text",
9
+ "json_object",
10
+ "json_schema",
11
+ ]
@@ -7,7 +7,7 @@ from typing import Literal, Optional
7
7
  from typing_extensions import NotRequired, TypedDict
8
8
 
9
9
 
10
- ResponseStartedEventType = Literal["conversation.response.started"]
10
+ ResponseStartedEventType = Literal["conversation.response.started",]
11
11
 
12
12
 
13
13
  class ResponseStartedEventTypedDict(TypedDict):
@@ -2,10 +2,12 @@
2
2
 
3
3
  import httpx
4
4
  from typing import Optional
5
+ from dataclasses import dataclass
5
6
 
6
7
  from mistralai.models import MistralError
7
8
 
8
9
 
10
+ @dataclass(unsafe_hash=True)
9
11
  class ResponseValidationError(MistralError):
10
12
  """Error raised when there is a type mismatch between the response data and the expected Pydantic model."""
11
13