mistralai 1.5.2__py3-none-any.whl → 1.6.0__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 (80) hide show
  1. mistralai/_hooks/types.py +15 -3
  2. mistralai/_version.py +3 -3
  3. mistralai/agents.py +44 -12
  4. mistralai/basesdk.py +8 -0
  5. mistralai/chat.py +44 -12
  6. mistralai/classifiers.py +36 -16
  7. mistralai/embeddings.py +16 -6
  8. mistralai/files.py +36 -0
  9. mistralai/fim.py +32 -12
  10. mistralai/httpclient.py +4 -2
  11. mistralai/jobs.py +30 -0
  12. mistralai/mistral_jobs.py +24 -0
  13. mistralai/models/agentscompletionrequest.py +4 -0
  14. mistralai/models/agentscompletionstreamrequest.py +4 -0
  15. mistralai/models/chatcompletionrequest.py +4 -0
  16. mistralai/models/chatcompletionstreamrequest.py +4 -0
  17. mistralai/models/function.py +2 -2
  18. mistralai/models/jsonschema.py +1 -1
  19. mistralai/models_.py +66 -18
  20. mistralai/ocr.py +16 -6
  21. mistralai/sdk.py +19 -3
  22. mistralai/sdkconfiguration.py +4 -2
  23. mistralai/utils/__init__.py +2 -0
  24. mistralai/utils/serializers.py +10 -6
  25. mistralai/utils/values.py +4 -1
  26. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/METADATA +63 -16
  27. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/RECORD +80 -72
  28. mistralai_azure/__init__.py +10 -1
  29. mistralai_azure/_hooks/types.py +15 -3
  30. mistralai_azure/_version.py +4 -1
  31. mistralai_azure/basesdk.py +8 -0
  32. mistralai_azure/chat.py +100 -20
  33. mistralai_azure/httpclient.py +52 -0
  34. mistralai_azure/models/__init__.py +22 -0
  35. mistralai_azure/models/assistantmessage.py +2 -0
  36. mistralai_azure/models/chatcompletionrequest.py +12 -10
  37. mistralai_azure/models/chatcompletionstreamrequest.py +12 -10
  38. mistralai_azure/models/contentchunk.py +6 -2
  39. mistralai_azure/models/function.py +4 -1
  40. mistralai_azure/models/imageurl.py +53 -0
  41. mistralai_azure/models/imageurlchunk.py +33 -0
  42. mistralai_azure/models/jsonschema.py +61 -0
  43. mistralai_azure/models/prediction.py +25 -0
  44. mistralai_azure/models/responseformat.py +42 -1
  45. mistralai_azure/models/responseformats.py +1 -1
  46. mistralai_azure/models/toolcall.py +3 -0
  47. mistralai_azure/sdk.py +56 -14
  48. mistralai_azure/sdkconfiguration.py +14 -6
  49. mistralai_azure/utils/__init__.py +2 -0
  50. mistralai_azure/utils/serializers.py +10 -6
  51. mistralai_azure/utils/values.py +4 -1
  52. mistralai_gcp/__init__.py +10 -1
  53. mistralai_gcp/_hooks/types.py +15 -3
  54. mistralai_gcp/_version.py +4 -1
  55. mistralai_gcp/basesdk.py +8 -0
  56. mistralai_gcp/chat.py +101 -21
  57. mistralai_gcp/fim.py +61 -21
  58. mistralai_gcp/httpclient.py +52 -0
  59. mistralai_gcp/models/__init__.py +22 -0
  60. mistralai_gcp/models/assistantmessage.py +2 -0
  61. mistralai_gcp/models/chatcompletionrequest.py +12 -10
  62. mistralai_gcp/models/chatcompletionstreamrequest.py +12 -10
  63. mistralai_gcp/models/contentchunk.py +6 -2
  64. mistralai_gcp/models/fimcompletionrequest.py +2 -3
  65. mistralai_gcp/models/fimcompletionstreamrequest.py +2 -3
  66. mistralai_gcp/models/function.py +4 -1
  67. mistralai_gcp/models/imageurl.py +53 -0
  68. mistralai_gcp/models/imageurlchunk.py +33 -0
  69. mistralai_gcp/models/jsonschema.py +61 -0
  70. mistralai_gcp/models/prediction.py +25 -0
  71. mistralai_gcp/models/responseformat.py +42 -1
  72. mistralai_gcp/models/responseformats.py +1 -1
  73. mistralai_gcp/models/toolcall.py +3 -0
  74. mistralai_gcp/sdk.py +63 -19
  75. mistralai_gcp/sdkconfiguration.py +14 -6
  76. mistralai_gcp/utils/__init__.py +2 -0
  77. mistralai_gcp/utils/serializers.py +10 -6
  78. mistralai_gcp/utils/values.py +4 -1
  79. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/LICENSE +0 -0
  80. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/WHEEL +0 -0
mistralai/jobs.py CHANGED
@@ -52,6 +52,8 @@ class Jobs(BaseSDK):
52
52
 
53
53
  if server_url is not None:
54
54
  base_url = server_url
55
+ else:
56
+ base_url = self._get_url(base_url, url_variables)
55
57
 
56
58
  request = models.JobsAPIRoutesFineTuningGetFineTuningJobsRequest(
57
59
  page=page,
@@ -91,6 +93,7 @@ class Jobs(BaseSDK):
91
93
 
92
94
  http_res = self.do_request(
93
95
  hook_ctx=HookContext(
96
+ base_url=base_url or "",
94
97
  operation_id="jobs_api_routes_fine_tuning_get_fine_tuning_jobs",
95
98
  oauth2_scopes=[],
96
99
  security_source=get_security_from_env(
@@ -166,6 +169,8 @@ class Jobs(BaseSDK):
166
169
 
167
170
  if server_url is not None:
168
171
  base_url = server_url
172
+ else:
173
+ base_url = self._get_url(base_url, url_variables)
169
174
 
170
175
  request = models.JobsAPIRoutesFineTuningGetFineTuningJobsRequest(
171
176
  page=page,
@@ -205,6 +210,7 @@ class Jobs(BaseSDK):
205
210
 
206
211
  http_res = await self.do_request_async(
207
212
  hook_ctx=HookContext(
213
+ base_url=base_url or "",
208
214
  operation_id="jobs_api_routes_fine_tuning_get_fine_tuning_jobs",
209
215
  oauth2_scopes=[],
210
216
  security_source=get_security_from_env(
@@ -290,6 +296,8 @@ class Jobs(BaseSDK):
290
296
 
291
297
  if server_url is not None:
292
298
  base_url = server_url
299
+ else:
300
+ base_url = self._get_url(base_url, url_variables)
293
301
 
294
302
  request = models.JobIn(
295
303
  model=model,
@@ -339,6 +347,7 @@ class Jobs(BaseSDK):
339
347
 
340
348
  http_res = self.do_request(
341
349
  hook_ctx=HookContext(
350
+ base_url=base_url or "",
342
351
  operation_id="jobs_api_routes_fine_tuning_create_fine_tuning_job",
343
352
  oauth2_scopes=[],
344
353
  security_source=get_security_from_env(
@@ -426,6 +435,8 @@ class Jobs(BaseSDK):
426
435
 
427
436
  if server_url is not None:
428
437
  base_url = server_url
438
+ else:
439
+ base_url = self._get_url(base_url, url_variables)
429
440
 
430
441
  request = models.JobIn(
431
442
  model=model,
@@ -475,6 +486,7 @@ class Jobs(BaseSDK):
475
486
 
476
487
  http_res = await self.do_request_async(
477
488
  hook_ctx=HookContext(
489
+ base_url=base_url or "",
478
490
  operation_id="jobs_api_routes_fine_tuning_create_fine_tuning_job",
479
491
  oauth2_scopes=[],
480
492
  security_source=get_security_from_env(
@@ -536,6 +548,8 @@ class Jobs(BaseSDK):
536
548
 
537
549
  if server_url is not None:
538
550
  base_url = server_url
551
+ else:
552
+ base_url = self._get_url(base_url, url_variables)
539
553
 
540
554
  request = models.JobsAPIRoutesFineTuningGetFineTuningJobRequest(
541
555
  job_id=job_id,
@@ -567,6 +581,7 @@ class Jobs(BaseSDK):
567
581
 
568
582
  http_res = self.do_request(
569
583
  hook_ctx=HookContext(
584
+ base_url=base_url or "",
570
585
  operation_id="jobs_api_routes_fine_tuning_get_fine_tuning_job",
571
586
  oauth2_scopes=[],
572
587
  security_source=get_security_from_env(
@@ -626,6 +641,8 @@ class Jobs(BaseSDK):
626
641
 
627
642
  if server_url is not None:
628
643
  base_url = server_url
644
+ else:
645
+ base_url = self._get_url(base_url, url_variables)
629
646
 
630
647
  request = models.JobsAPIRoutesFineTuningGetFineTuningJobRequest(
631
648
  job_id=job_id,
@@ -657,6 +674,7 @@ class Jobs(BaseSDK):
657
674
 
658
675
  http_res = await self.do_request_async(
659
676
  hook_ctx=HookContext(
677
+ base_url=base_url or "",
660
678
  operation_id="jobs_api_routes_fine_tuning_get_fine_tuning_job",
661
679
  oauth2_scopes=[],
662
680
  security_source=get_security_from_env(
@@ -716,6 +734,8 @@ class Jobs(BaseSDK):
716
734
 
717
735
  if server_url is not None:
718
736
  base_url = server_url
737
+ else:
738
+ base_url = self._get_url(base_url, url_variables)
719
739
 
720
740
  request = models.JobsAPIRoutesFineTuningCancelFineTuningJobRequest(
721
741
  job_id=job_id,
@@ -747,6 +767,7 @@ class Jobs(BaseSDK):
747
767
 
748
768
  http_res = self.do_request(
749
769
  hook_ctx=HookContext(
770
+ base_url=base_url or "",
750
771
  operation_id="jobs_api_routes_fine_tuning_cancel_fine_tuning_job",
751
772
  oauth2_scopes=[],
752
773
  security_source=get_security_from_env(
@@ -806,6 +827,8 @@ class Jobs(BaseSDK):
806
827
 
807
828
  if server_url is not None:
808
829
  base_url = server_url
830
+ else:
831
+ base_url = self._get_url(base_url, url_variables)
809
832
 
810
833
  request = models.JobsAPIRoutesFineTuningCancelFineTuningJobRequest(
811
834
  job_id=job_id,
@@ -837,6 +860,7 @@ class Jobs(BaseSDK):
837
860
 
838
861
  http_res = await self.do_request_async(
839
862
  hook_ctx=HookContext(
863
+ base_url=base_url or "",
840
864
  operation_id="jobs_api_routes_fine_tuning_cancel_fine_tuning_job",
841
865
  oauth2_scopes=[],
842
866
  security_source=get_security_from_env(
@@ -896,6 +920,8 @@ class Jobs(BaseSDK):
896
920
 
897
921
  if server_url is not None:
898
922
  base_url = server_url
923
+ else:
924
+ base_url = self._get_url(base_url, url_variables)
899
925
 
900
926
  request = models.JobsAPIRoutesFineTuningStartFineTuningJobRequest(
901
927
  job_id=job_id,
@@ -927,6 +953,7 @@ class Jobs(BaseSDK):
927
953
 
928
954
  http_res = self.do_request(
929
955
  hook_ctx=HookContext(
956
+ base_url=base_url or "",
930
957
  operation_id="jobs_api_routes_fine_tuning_start_fine_tuning_job",
931
958
  oauth2_scopes=[],
932
959
  security_source=get_security_from_env(
@@ -986,6 +1013,8 @@ class Jobs(BaseSDK):
986
1013
 
987
1014
  if server_url is not None:
988
1015
  base_url = server_url
1016
+ else:
1017
+ base_url = self._get_url(base_url, url_variables)
989
1018
 
990
1019
  request = models.JobsAPIRoutesFineTuningStartFineTuningJobRequest(
991
1020
  job_id=job_id,
@@ -1017,6 +1046,7 @@ class Jobs(BaseSDK):
1017
1046
 
1018
1047
  http_res = await self.do_request_async(
1019
1048
  hook_ctx=HookContext(
1049
+ base_url=base_url or "",
1020
1050
  operation_id="jobs_api_routes_fine_tuning_start_fine_tuning_job",
1021
1051
  oauth2_scopes=[],
1022
1052
  security_source=get_security_from_env(
mistralai/mistral_jobs.py CHANGED
@@ -48,6 +48,8 @@ class MistralJobs(BaseSDK):
48
48
 
49
49
  if server_url is not None:
50
50
  base_url = server_url
51
+ else:
52
+ base_url = self._get_url(base_url, url_variables)
51
53
 
52
54
  request = models.JobsAPIRoutesBatchGetBatchJobsRequest(
53
55
  page=page,
@@ -85,6 +87,7 @@ class MistralJobs(BaseSDK):
85
87
 
86
88
  http_res = self.do_request(
87
89
  hook_ctx=HookContext(
90
+ base_url=base_url or "",
88
91
  operation_id="jobs_api_routes_batch_get_batch_jobs",
89
92
  oauth2_scopes=[],
90
93
  security_source=get_security_from_env(
@@ -156,6 +159,8 @@ class MistralJobs(BaseSDK):
156
159
 
157
160
  if server_url is not None:
158
161
  base_url = server_url
162
+ else:
163
+ base_url = self._get_url(base_url, url_variables)
159
164
 
160
165
  request = models.JobsAPIRoutesBatchGetBatchJobsRequest(
161
166
  page=page,
@@ -193,6 +198,7 @@ class MistralJobs(BaseSDK):
193
198
 
194
199
  http_res = await self.do_request_async(
195
200
  hook_ctx=HookContext(
201
+ base_url=base_url or "",
196
202
  operation_id="jobs_api_routes_batch_get_batch_jobs",
197
203
  oauth2_scopes=[],
198
204
  security_source=get_security_from_env(
@@ -260,6 +266,8 @@ class MistralJobs(BaseSDK):
260
266
 
261
267
  if server_url is not None:
262
268
  base_url = server_url
269
+ else:
270
+ base_url = self._get_url(base_url, url_variables)
263
271
 
264
272
  request = models.BatchJobIn(
265
273
  input_files=input_files,
@@ -298,6 +306,7 @@ class MistralJobs(BaseSDK):
298
306
 
299
307
  http_res = self.do_request(
300
308
  hook_ctx=HookContext(
309
+ base_url=base_url or "",
301
310
  operation_id="jobs_api_routes_batch_create_batch_job",
302
311
  oauth2_scopes=[],
303
312
  security_source=get_security_from_env(
@@ -365,6 +374,8 @@ class MistralJobs(BaseSDK):
365
374
 
366
375
  if server_url is not None:
367
376
  base_url = server_url
377
+ else:
378
+ base_url = self._get_url(base_url, url_variables)
368
379
 
369
380
  request = models.BatchJobIn(
370
381
  input_files=input_files,
@@ -403,6 +414,7 @@ class MistralJobs(BaseSDK):
403
414
 
404
415
  http_res = await self.do_request_async(
405
416
  hook_ctx=HookContext(
417
+ base_url=base_url or "",
406
418
  operation_id="jobs_api_routes_batch_create_batch_job",
407
419
  oauth2_scopes=[],
408
420
  security_source=get_security_from_env(
@@ -462,6 +474,8 @@ class MistralJobs(BaseSDK):
462
474
 
463
475
  if server_url is not None:
464
476
  base_url = server_url
477
+ else:
478
+ base_url = self._get_url(base_url, url_variables)
465
479
 
466
480
  request = models.JobsAPIRoutesBatchGetBatchJobRequest(
467
481
  job_id=job_id,
@@ -493,6 +507,7 @@ class MistralJobs(BaseSDK):
493
507
 
494
508
  http_res = self.do_request(
495
509
  hook_ctx=HookContext(
510
+ base_url=base_url or "",
496
511
  operation_id="jobs_api_routes_batch_get_batch_job",
497
512
  oauth2_scopes=[],
498
513
  security_source=get_security_from_env(
@@ -552,6 +567,8 @@ class MistralJobs(BaseSDK):
552
567
 
553
568
  if server_url is not None:
554
569
  base_url = server_url
570
+ else:
571
+ base_url = self._get_url(base_url, url_variables)
555
572
 
556
573
  request = models.JobsAPIRoutesBatchGetBatchJobRequest(
557
574
  job_id=job_id,
@@ -583,6 +600,7 @@ class MistralJobs(BaseSDK):
583
600
 
584
601
  http_res = await self.do_request_async(
585
602
  hook_ctx=HookContext(
603
+ base_url=base_url or "",
586
604
  operation_id="jobs_api_routes_batch_get_batch_job",
587
605
  oauth2_scopes=[],
588
606
  security_source=get_security_from_env(
@@ -642,6 +660,8 @@ class MistralJobs(BaseSDK):
642
660
 
643
661
  if server_url is not None:
644
662
  base_url = server_url
663
+ else:
664
+ base_url = self._get_url(base_url, url_variables)
645
665
 
646
666
  request = models.JobsAPIRoutesBatchCancelBatchJobRequest(
647
667
  job_id=job_id,
@@ -673,6 +693,7 @@ class MistralJobs(BaseSDK):
673
693
 
674
694
  http_res = self.do_request(
675
695
  hook_ctx=HookContext(
696
+ base_url=base_url or "",
676
697
  operation_id="jobs_api_routes_batch_cancel_batch_job",
677
698
  oauth2_scopes=[],
678
699
  security_source=get_security_from_env(
@@ -732,6 +753,8 @@ class MistralJobs(BaseSDK):
732
753
 
733
754
  if server_url is not None:
734
755
  base_url = server_url
756
+ else:
757
+ base_url = self._get_url(base_url, url_variables)
735
758
 
736
759
  request = models.JobsAPIRoutesBatchCancelBatchJobRequest(
737
760
  job_id=job_id,
@@ -763,6 +786,7 @@ class MistralJobs(BaseSDK):
763
786
 
764
787
  http_res = await self.do_request_async(
765
788
  hook_ctx=HookContext(
789
+ base_url=base_url or "",
766
790
  operation_id="jobs_api_routes_batch_cancel_batch_job",
767
791
  oauth2_scopes=[],
768
792
  security_source=get_security_from_env(
@@ -85,6 +85,7 @@ class AgentsCompletionRequestTypedDict(TypedDict):
85
85
  n: NotRequired[Nullable[int]]
86
86
  r"""Number of completions to return for each request, input tokens are only billed once."""
87
87
  prediction: NotRequired[PredictionTypedDict]
88
+ parallel_tool_calls: NotRequired[bool]
88
89
 
89
90
 
90
91
  class AgentsCompletionRequest(BaseModel):
@@ -123,6 +124,8 @@ class AgentsCompletionRequest(BaseModel):
123
124
 
124
125
  prediction: Optional[Prediction] = None
125
126
 
127
+ parallel_tool_calls: Optional[bool] = None
128
+
126
129
  @model_serializer(mode="wrap")
127
130
  def serialize_model(self, handler):
128
131
  optional_fields = [
@@ -137,6 +140,7 @@ class AgentsCompletionRequest(BaseModel):
137
140
  "frequency_penalty",
138
141
  "n",
139
142
  "prediction",
143
+ "parallel_tool_calls",
140
144
  ]
141
145
  nullable_fields = ["max_tokens", "random_seed", "tools", "n"]
142
146
  null_default_fields = []
@@ -84,6 +84,7 @@ class AgentsCompletionStreamRequestTypedDict(TypedDict):
84
84
  n: NotRequired[Nullable[int]]
85
85
  r"""Number of completions to return for each request, input tokens are only billed once."""
86
86
  prediction: NotRequired[PredictionTypedDict]
87
+ parallel_tool_calls: NotRequired[bool]
87
88
 
88
89
 
89
90
  class AgentsCompletionStreamRequest(BaseModel):
@@ -121,6 +122,8 @@ class AgentsCompletionStreamRequest(BaseModel):
121
122
 
122
123
  prediction: Optional[Prediction] = None
123
124
 
125
+ parallel_tool_calls: Optional[bool] = None
126
+
124
127
  @model_serializer(mode="wrap")
125
128
  def serialize_model(self, handler):
126
129
  optional_fields = [
@@ -135,6 +138,7 @@ class AgentsCompletionStreamRequest(BaseModel):
135
138
  "frequency_penalty",
136
139
  "n",
137
140
  "prediction",
141
+ "parallel_tool_calls",
138
142
  ]
139
143
  nullable_fields = ["max_tokens", "random_seed", "tools", "n"]
140
144
  null_default_fields = []
@@ -85,6 +85,7 @@ class ChatCompletionRequestTypedDict(TypedDict):
85
85
  n: NotRequired[Nullable[int]]
86
86
  r"""Number of completions to return for each request, input tokens are only billed once."""
87
87
  prediction: NotRequired[PredictionTypedDict]
88
+ parallel_tool_calls: NotRequired[bool]
88
89
  safe_prompt: NotRequired[bool]
89
90
  r"""Whether to inject a safety prompt before all conversations."""
90
91
 
@@ -131,6 +132,8 @@ class ChatCompletionRequest(BaseModel):
131
132
 
132
133
  prediction: Optional[Prediction] = None
133
134
 
135
+ parallel_tool_calls: Optional[bool] = None
136
+
134
137
  safe_prompt: Optional[bool] = None
135
138
  r"""Whether to inject a safety prompt before all conversations."""
136
139
 
@@ -150,6 +153,7 @@ class ChatCompletionRequest(BaseModel):
150
153
  "frequency_penalty",
151
154
  "n",
152
155
  "prediction",
156
+ "parallel_tool_calls",
153
157
  "safe_prompt",
154
158
  ]
155
159
  nullable_fields = ["temperature", "max_tokens", "random_seed", "tools", "n"]
@@ -88,6 +88,7 @@ class ChatCompletionStreamRequestTypedDict(TypedDict):
88
88
  n: NotRequired[Nullable[int]]
89
89
  r"""Number of completions to return for each request, input tokens are only billed once."""
90
90
  prediction: NotRequired[PredictionTypedDict]
91
+ parallel_tool_calls: NotRequired[bool]
91
92
  safe_prompt: NotRequired[bool]
92
93
  r"""Whether to inject a safety prompt before all conversations."""
93
94
 
@@ -133,6 +134,8 @@ class ChatCompletionStreamRequest(BaseModel):
133
134
 
134
135
  prediction: Optional[Prediction] = None
135
136
 
137
+ parallel_tool_calls: Optional[bool] = None
138
+
136
139
  safe_prompt: Optional[bool] = None
137
140
  r"""Whether to inject a safety prompt before all conversations."""
138
141
 
@@ -152,6 +155,7 @@ class ChatCompletionStreamRequest(BaseModel):
152
155
  "frequency_penalty",
153
156
  "n",
154
157
  "prediction",
158
+ "parallel_tool_calls",
155
159
  "safe_prompt",
156
160
  ]
157
161
  nullable_fields = ["temperature", "max_tokens", "random_seed", "tools", "n"]
@@ -18,6 +18,6 @@ class Function(BaseModel):
18
18
 
19
19
  parameters: Dict[str, Any]
20
20
 
21
- description: Optional[str] = ""
21
+ description: Optional[str] = None
22
22
 
23
- strict: Optional[bool] = False
23
+ strict: Optional[bool] = None
@@ -22,7 +22,7 @@ class JSONSchema(BaseModel):
22
22
 
23
23
  description: OptionalNullable[str] = UNSET
24
24
 
25
- strict: Optional[bool] = False
25
+ strict: Optional[bool] = None
26
26
 
27
27
  @model_serializer(mode="wrap")
28
28
  def serialize_model(self, handler):