mistralai 1.1.0__py3-none-any.whl → 1.2.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.
- mistralai/__init__.py +4 -0
- mistralai/_version.py +12 -0
- mistralai/agents.py +56 -22
- mistralai/batch.py +17 -0
- mistralai/chat.py +64 -30
- mistralai/classifiers.py +396 -0
- mistralai/embeddings.py +10 -6
- mistralai/files.py +252 -19
- mistralai/fim.py +40 -30
- mistralai/jobs.py +40 -20
- mistralai/mistral_jobs.py +733 -0
- mistralai/models/__init__.py +108 -18
- mistralai/models/agentscompletionrequest.py +27 -10
- mistralai/models/agentscompletionstreamrequest.py +27 -10
- mistralai/models/apiendpoint.py +9 -0
- mistralai/models/archiveftmodelout.py +11 -5
- mistralai/models/assistantmessage.py +11 -6
- mistralai/models/basemodelcard.py +22 -6
- mistralai/models/batcherror.py +17 -0
- mistralai/models/batchjobin.py +58 -0
- mistralai/models/batchjobout.py +117 -0
- mistralai/models/batchjobsout.py +30 -0
- mistralai/models/batchjobstatus.py +15 -0
- mistralai/models/chatclassificationrequest.py +104 -0
- mistralai/models/chatcompletionchoice.py +9 -4
- mistralai/models/chatcompletionrequest.py +32 -13
- mistralai/models/chatcompletionresponse.py +2 -2
- mistralai/models/chatcompletionstreamrequest.py +32 -13
- mistralai/models/checkpointout.py +1 -1
- mistralai/models/classificationobject.py +21 -0
- mistralai/models/classificationrequest.py +59 -0
- mistralai/models/classificationresponse.py +21 -0
- mistralai/models/completionchunk.py +2 -2
- mistralai/models/completionevent.py +1 -1
- mistralai/models/completionresponsestreamchoice.py +11 -5
- mistralai/models/delete_model_v1_models_model_id_deleteop.py +1 -2
- mistralai/models/deletefileout.py +1 -1
- mistralai/models/deletemodelout.py +2 -2
- mistralai/models/deltamessage.py +14 -7
- mistralai/models/detailedjobout.py +11 -5
- mistralai/models/embeddingrequest.py +5 -5
- mistralai/models/embeddingresponse.py +2 -1
- mistralai/models/embeddingresponsedata.py +2 -2
- mistralai/models/eventout.py +2 -2
- mistralai/models/filepurpose.py +8 -0
- mistralai/models/files_api_routes_delete_fileop.py +1 -2
- mistralai/models/files_api_routes_download_fileop.py +16 -0
- mistralai/models/files_api_routes_list_filesop.py +96 -0
- mistralai/models/files_api_routes_retrieve_fileop.py +1 -2
- mistralai/models/files_api_routes_upload_fileop.py +9 -9
- mistralai/models/fileschema.py +7 -21
- mistralai/models/fimcompletionrequest.py +20 -13
- mistralai/models/fimcompletionresponse.py +2 -2
- mistralai/models/fimcompletionstreamrequest.py +20 -13
- mistralai/models/ftmodelcapabilitiesout.py +2 -2
- mistralai/models/ftmodelcard.py +24 -6
- mistralai/models/ftmodelout.py +9 -5
- mistralai/models/function.py +2 -2
- mistralai/models/functioncall.py +2 -1
- mistralai/models/functionname.py +1 -1
- mistralai/models/githubrepositoryin.py +11 -5
- mistralai/models/githubrepositoryout.py +11 -5
- mistralai/models/httpvalidationerror.py +0 -2
- mistralai/models/imageurl.py +1 -2
- mistralai/models/imageurlchunk.py +11 -5
- mistralai/models/jobin.py +2 -2
- mistralai/models/jobmetadataout.py +1 -2
- mistralai/models/jobout.py +10 -5
- mistralai/models/jobs_api_routes_batch_cancel_batch_jobop.py +16 -0
- mistralai/models/jobs_api_routes_batch_get_batch_jobop.py +16 -0
- mistralai/models/jobs_api_routes_batch_get_batch_jobsop.py +95 -0
- mistralai/models/jobs_api_routes_fine_tuning_archive_fine_tuned_modelop.py +1 -2
- mistralai/models/jobs_api_routes_fine_tuning_cancel_fine_tuning_jobop.py +1 -2
- mistralai/models/jobs_api_routes_fine_tuning_get_fine_tuning_jobop.py +1 -2
- mistralai/models/jobs_api_routes_fine_tuning_get_fine_tuning_jobsop.py +2 -2
- mistralai/models/jobs_api_routes_fine_tuning_start_fine_tuning_jobop.py +1 -2
- mistralai/models/jobs_api_routes_fine_tuning_unarchive_fine_tuned_modelop.py +1 -2
- mistralai/models/jobs_api_routes_fine_tuning_update_fine_tuned_modelop.py +1 -2
- mistralai/models/jobsout.py +9 -5
- mistralai/models/legacyjobmetadataout.py +12 -5
- mistralai/models/listfilesout.py +5 -1
- mistralai/models/metricout.py +1 -2
- mistralai/models/modelcapabilities.py +2 -2
- mistralai/models/modellist.py +2 -2
- mistralai/models/responseformat.py +2 -2
- mistralai/models/retrieve_model_v1_models_model_id_getop.py +2 -2
- mistralai/models/retrievefileout.py +10 -21
- mistralai/models/sampletype.py +6 -2
- mistralai/models/security.py +2 -2
- mistralai/models/source.py +3 -2
- mistralai/models/systemmessage.py +6 -6
- mistralai/models/textchunk.py +9 -5
- mistralai/models/tool.py +2 -2
- mistralai/models/toolcall.py +2 -2
- mistralai/models/toolchoice.py +2 -2
- mistralai/models/toolmessage.py +2 -2
- mistralai/models/trainingfile.py +2 -2
- mistralai/models/trainingparameters.py +7 -2
- mistralai/models/trainingparametersin.py +7 -2
- mistralai/models/unarchiveftmodelout.py +11 -5
- mistralai/models/updateftmodelin.py +1 -2
- mistralai/models/uploadfileout.py +7 -21
- mistralai/models/usageinfo.py +1 -1
- mistralai/models/usermessage.py +36 -5
- mistralai/models/validationerror.py +2 -1
- mistralai/models/wandbintegration.py +11 -5
- mistralai/models/wandbintegrationout.py +12 -6
- mistralai/models_.py +48 -24
- mistralai/sdk.py +7 -0
- mistralai/sdkconfiguration.py +7 -7
- mistralai/utils/__init__.py +8 -0
- mistralai/utils/annotations.py +13 -2
- mistralai/utils/serializers.py +25 -0
- {mistralai-1.1.0.dist-info → mistralai-1.2.1.dist-info}/METADATA +90 -14
- mistralai-1.2.1.dist-info/RECORD +276 -0
- {mistralai-1.1.0.dist-info → mistralai-1.2.1.dist-info}/WHEEL +1 -1
- mistralai_azure/__init__.py +4 -0
- mistralai_azure/_version.py +12 -0
- mistralai_azure/chat.py +64 -30
- mistralai_azure/models/__init__.py +9 -3
- mistralai_azure/models/assistantmessage.py +11 -6
- mistralai_azure/models/chatcompletionchoice.py +10 -5
- mistralai_azure/models/chatcompletionrequest.py +32 -13
- mistralai_azure/models/chatcompletionresponse.py +2 -2
- mistralai_azure/models/chatcompletionstreamrequest.py +32 -13
- mistralai_azure/models/completionchunk.py +2 -2
- mistralai_azure/models/completionevent.py +1 -1
- mistralai_azure/models/completionresponsestreamchoice.py +9 -4
- mistralai_azure/models/deltamessage.py +14 -7
- mistralai_azure/models/function.py +2 -2
- mistralai_azure/models/functioncall.py +2 -1
- mistralai_azure/models/functionname.py +1 -1
- mistralai_azure/models/httpvalidationerror.py +0 -2
- mistralai_azure/models/responseformat.py +2 -2
- mistralai_azure/models/security.py +1 -2
- mistralai_azure/models/systemmessage.py +6 -6
- mistralai_azure/models/textchunk.py +9 -5
- mistralai_azure/models/tool.py +2 -2
- mistralai_azure/models/toolcall.py +2 -2
- mistralai_azure/models/toolchoice.py +2 -2
- mistralai_azure/models/toolmessage.py +2 -2
- mistralai_azure/models/usageinfo.py +1 -1
- mistralai_azure/models/usermessage.py +36 -5
- mistralai_azure/models/validationerror.py +2 -1
- mistralai_azure/sdkconfiguration.py +7 -7
- mistralai_azure/utils/__init__.py +8 -0
- mistralai_azure/utils/annotations.py +13 -2
- mistralai_azure/utils/serializers.py +25 -0
- mistralai_gcp/__init__.py +4 -0
- mistralai_gcp/_version.py +12 -0
- mistralai_gcp/chat.py +64 -30
- mistralai_gcp/fim.py +40 -30
- mistralai_gcp/models/__init__.py +9 -3
- mistralai_gcp/models/assistantmessage.py +11 -6
- mistralai_gcp/models/chatcompletionchoice.py +10 -5
- mistralai_gcp/models/chatcompletionrequest.py +32 -13
- mistralai_gcp/models/chatcompletionresponse.py +2 -2
- mistralai_gcp/models/chatcompletionstreamrequest.py +32 -13
- mistralai_gcp/models/completionchunk.py +2 -2
- mistralai_gcp/models/completionevent.py +1 -1
- mistralai_gcp/models/completionresponsestreamchoice.py +9 -4
- mistralai_gcp/models/deltamessage.py +14 -7
- mistralai_gcp/models/fimcompletionrequest.py +20 -13
- mistralai_gcp/models/fimcompletionresponse.py +2 -2
- mistralai_gcp/models/fimcompletionstreamrequest.py +20 -13
- mistralai_gcp/models/function.py +2 -2
- mistralai_gcp/models/functioncall.py +2 -1
- mistralai_gcp/models/functionname.py +1 -1
- mistralai_gcp/models/httpvalidationerror.py +0 -2
- mistralai_gcp/models/responseformat.py +2 -2
- mistralai_gcp/models/security.py +1 -2
- mistralai_gcp/models/systemmessage.py +6 -6
- mistralai_gcp/models/textchunk.py +9 -5
- mistralai_gcp/models/tool.py +2 -2
- mistralai_gcp/models/toolcall.py +2 -2
- mistralai_gcp/models/toolchoice.py +2 -2
- mistralai_gcp/models/toolmessage.py +2 -2
- mistralai_gcp/models/usageinfo.py +1 -1
- mistralai_gcp/models/usermessage.py +36 -5
- mistralai_gcp/models/validationerror.py +2 -1
- mistralai_gcp/sdk.py +20 -11
- mistralai_gcp/sdkconfiguration.py +7 -7
- mistralai_gcp/utils/__init__.py +8 -0
- mistralai_gcp/utils/annotations.py +13 -2
- mistralai_gcp/utils/serializers.py +25 -0
- mistralai-1.1.0.dist-info/RECORD +0 -254
- {mistralai-1.1.0.dist-info → mistralai-1.2.1.dist-info}/LICENSE +0 -0
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from .responseformats import ResponseFormats
|
|
5
5
|
from mistralai_gcp.types import BaseModel
|
|
6
|
-
from typing import Optional
|
|
7
|
-
from typing_extensions import NotRequired
|
|
6
|
+
from typing import Optional
|
|
7
|
+
from typing_extensions import NotRequired, TypedDict
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ResponseFormatTypedDict(TypedDict):
|
mistralai_gcp/models/security.py
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from mistralai_gcp.types import BaseModel
|
|
5
5
|
from mistralai_gcp.utils import FieldMetadata, SecurityMetadata
|
|
6
|
-
from
|
|
7
|
-
from typing_extensions import Annotated
|
|
6
|
+
from typing_extensions import Annotated, TypedDict
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
class SecurityTypedDict(TypedDict):
|
|
@@ -3,25 +3,25 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from .textchunk import TextChunk, TextChunkTypedDict
|
|
5
5
|
from mistralai_gcp.types import BaseModel
|
|
6
|
-
from typing import List, Literal, Optional,
|
|
7
|
-
from typing_extensions import NotRequired
|
|
6
|
+
from typing import List, Literal, Optional, Union
|
|
7
|
+
from typing_extensions import NotRequired, TypedDict
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
SystemMessageContentTypedDict = Union[str, List[TextChunkTypedDict]]
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
SystemMessageContent = Union[str, List[TextChunk]]
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
Role = Literal["system"]
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class SystemMessageTypedDict(TypedDict):
|
|
20
|
-
content:
|
|
20
|
+
content: SystemMessageContentTypedDict
|
|
21
21
|
role: NotRequired[Role]
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class SystemMessage(BaseModel):
|
|
25
|
-
content:
|
|
25
|
+
content: SystemMessageContent
|
|
26
26
|
|
|
27
27
|
role: Optional[Role] = "system"
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from mistralai_gcp.types import BaseModel
|
|
5
|
+
from mistralai_gcp.utils import validate_const
|
|
5
6
|
import pydantic
|
|
6
|
-
from
|
|
7
|
-
from
|
|
7
|
+
from pydantic.functional_validators import AfterValidator
|
|
8
|
+
from typing import Literal, Optional
|
|
9
|
+
from typing_extensions import Annotated, TypedDict
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
Type = Literal["text"]
|
|
@@ -12,11 +14,13 @@ Type = Literal["text"]
|
|
|
12
14
|
|
|
13
15
|
class TextChunkTypedDict(TypedDict):
|
|
14
16
|
text: str
|
|
17
|
+
type: Type
|
|
15
18
|
|
|
16
19
|
|
|
17
20
|
class TextChunk(BaseModel):
|
|
18
21
|
text: str
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
TYPE: Annotated[
|
|
24
|
+
Annotated[Optional[Type], AfterValidator(validate_const("text"))],
|
|
25
|
+
pydantic.Field(alias="type"),
|
|
26
|
+
] = "text"
|
mistralai_gcp/models/tool.py
CHANGED
|
@@ -6,8 +6,8 @@ from .tooltypes import ToolTypes
|
|
|
6
6
|
from mistralai_gcp.types import BaseModel
|
|
7
7
|
from mistralai_gcp.utils import validate_open_enum
|
|
8
8
|
from pydantic.functional_validators import PlainValidator
|
|
9
|
-
from typing import Optional
|
|
10
|
-
from typing_extensions import Annotated, NotRequired
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ToolTypedDict(TypedDict):
|
mistralai_gcp/models/toolcall.py
CHANGED
|
@@ -6,8 +6,8 @@ from .tooltypes import ToolTypes
|
|
|
6
6
|
from mistralai_gcp.types import BaseModel
|
|
7
7
|
from mistralai_gcp.utils import validate_open_enum
|
|
8
8
|
from pydantic.functional_validators import PlainValidator
|
|
9
|
-
from typing import Optional
|
|
10
|
-
from typing_extensions import Annotated, NotRequired
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ToolCallTypedDict(TypedDict):
|
|
@@ -6,8 +6,8 @@ from .tooltypes import ToolTypes
|
|
|
6
6
|
from mistralai_gcp.types import BaseModel
|
|
7
7
|
from mistralai_gcp.utils import validate_open_enum
|
|
8
8
|
from pydantic.functional_validators import PlainValidator
|
|
9
|
-
from typing import Optional
|
|
10
|
-
from typing_extensions import Annotated, NotRequired
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ToolChoiceTypedDict(TypedDict):
|
|
@@ -9,8 +9,8 @@ from mistralai_gcp.types import (
|
|
|
9
9
|
UNSET_SENTINEL,
|
|
10
10
|
)
|
|
11
11
|
from pydantic import model_serializer
|
|
12
|
-
from typing import Literal, Optional
|
|
13
|
-
from typing_extensions import NotRequired
|
|
12
|
+
from typing import Literal, Optional
|
|
13
|
+
from typing_extensions import NotRequired, TypedDict
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
ToolMessageRole = Literal["tool"]
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from .contentchunk import ContentChunk, ContentChunkTypedDict
|
|
5
|
-
from mistralai_gcp.types import BaseModel
|
|
6
|
-
from
|
|
7
|
-
from
|
|
5
|
+
from mistralai_gcp.types import BaseModel, Nullable, UNSET_SENTINEL
|
|
6
|
+
from pydantic import model_serializer
|
|
7
|
+
from typing import List, Literal, Optional, Union
|
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
UserMessageContentTypedDict = Union[str, List[ContentChunkTypedDict]]
|
|
@@ -17,11 +18,41 @@ UserMessageRole = Literal["user"]
|
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class UserMessageTypedDict(TypedDict):
|
|
20
|
-
content: UserMessageContentTypedDict
|
|
21
|
+
content: Nullable[UserMessageContentTypedDict]
|
|
21
22
|
role: NotRequired[UserMessageRole]
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class UserMessage(BaseModel):
|
|
25
|
-
content: UserMessageContent
|
|
26
|
+
content: Nullable[UserMessageContent]
|
|
26
27
|
|
|
27
28
|
role: Optional[UserMessageRole] = "user"
|
|
29
|
+
|
|
30
|
+
@model_serializer(mode="wrap")
|
|
31
|
+
def serialize_model(self, handler):
|
|
32
|
+
optional_fields = ["role"]
|
|
33
|
+
nullable_fields = ["content"]
|
|
34
|
+
null_default_fields = []
|
|
35
|
+
|
|
36
|
+
serialized = handler(self)
|
|
37
|
+
|
|
38
|
+
m = {}
|
|
39
|
+
|
|
40
|
+
for n, f in self.model_fields.items():
|
|
41
|
+
k = f.alias or n
|
|
42
|
+
val = serialized.get(k)
|
|
43
|
+
serialized.pop(k, None)
|
|
44
|
+
|
|
45
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
46
|
+
is_set = (
|
|
47
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
48
|
+
or k in null_default_fields
|
|
49
|
+
) # pylint: disable=no-member
|
|
50
|
+
|
|
51
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
52
|
+
m[k] = val
|
|
53
|
+
elif val != UNSET_SENTINEL and (
|
|
54
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
55
|
+
):
|
|
56
|
+
m[k] = val
|
|
57
|
+
|
|
58
|
+
return m
|
mistralai_gcp/sdk.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
-
from typing import Optional, Union
|
|
4
|
+
from typing import Optional, Tuple, Union
|
|
5
5
|
|
|
6
6
|
import google.auth
|
|
7
7
|
import google.auth.credentials
|
|
@@ -20,6 +20,19 @@ from .sdkconfiguration import SDKConfiguration
|
|
|
20
20
|
from .utils.logger import Logger, NoOpLogger
|
|
21
21
|
from .utils.retries import RetryConfig
|
|
22
22
|
|
|
23
|
+
LEGACY_MODEL_ID_FORMAT = {
|
|
24
|
+
"codestral-2405": "codestral@2405",
|
|
25
|
+
"mistral-large-2407": "mistral-large@2407",
|
|
26
|
+
"mistral-nemo-2407": "mistral-nemo@2407",
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def get_model_info(model: str) -> Tuple[str,str]:
|
|
30
|
+
# if the model requiers the legacy fomat, use it, else do nothing.
|
|
31
|
+
model_id = LEGACY_MODEL_ID_FORMAT.get(model, model)
|
|
32
|
+
model = "-".join(model.split("-")[:-1])
|
|
33
|
+
return model, model_id
|
|
34
|
+
|
|
35
|
+
|
|
23
36
|
|
|
24
37
|
class MistralGoogleCloud(BaseSDK):
|
|
25
38
|
r"""Mistral AI API: Our Chat Completion and Embeddings APIs specification. Create your account on [La Plateforme](https://console.mistral.ai) to get access and read the [docs](https://docs.mistral.ai) to learn how to use it."""
|
|
@@ -140,28 +153,24 @@ class GoogleCloudBeforeRequestHook(BeforeRequestHook):
|
|
|
140
153
|
def before_request(
|
|
141
154
|
self, hook_ctx, request: httpx.Request
|
|
142
155
|
) -> Union[httpx.Request, Exception]:
|
|
143
|
-
# The goal of this function is to template in the region, project
|
|
156
|
+
# The goal of this function is to template in the region, project and model into the URL path
|
|
144
157
|
# We do this here so that the API remains more user-friendly
|
|
145
|
-
|
|
146
|
-
model_version = None
|
|
158
|
+
model_id = None
|
|
147
159
|
new_content = None
|
|
148
160
|
if request.content:
|
|
149
161
|
parsed = json.loads(request.content.decode("utf-8"))
|
|
150
162
|
model_raw = parsed.get("model")
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
parsed["model"] = model
|
|
163
|
+
model_name, model_id = get_model_info(model_raw)
|
|
164
|
+
parsed["model"] = model_name
|
|
154
165
|
new_content = json.dumps(parsed).encode("utf-8")
|
|
155
166
|
|
|
156
|
-
if
|
|
167
|
+
if model_id == "":
|
|
157
168
|
raise models.SDKError("model must be provided")
|
|
158
169
|
|
|
159
|
-
if model_version is None:
|
|
160
|
-
raise models.SDKError("model_version must be provided")
|
|
161
170
|
|
|
162
171
|
stream = "streamRawPredict" in request.url.path
|
|
163
172
|
specifier = "streamRawPredict" if stream else "rawPredict"
|
|
164
|
-
url = f"/v1/projects/{self.project_id}/locations/{self.region}/publishers/mistralai/models/{
|
|
173
|
+
url = f"/v1/projects/{self.project_id}/locations/{self.region}/publishers/mistralai/models/{model_id}:{specifier}"
|
|
165
174
|
|
|
166
175
|
headers = dict(request.headers)
|
|
167
176
|
# Delete content-length header as it will need to be recalculated
|
|
@@ -10,10 +10,10 @@ from pydantic import Field
|
|
|
10
10
|
from typing import Callable, Dict, Optional, Tuple, Union
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
r"""Production server"""
|
|
13
|
+
SERVER_EU = "eu"
|
|
14
|
+
r"""EU Production server"""
|
|
15
15
|
SERVERS = {
|
|
16
|
-
|
|
16
|
+
SERVER_EU: "https://api.mistral.ai",
|
|
17
17
|
}
|
|
18
18
|
"""Contains the list of servers available to the SDK"""
|
|
19
19
|
|
|
@@ -28,9 +28,9 @@ class SDKConfiguration:
|
|
|
28
28
|
server: Optional[str] = ""
|
|
29
29
|
language: str = "python"
|
|
30
30
|
openapi_doc_version: str = "0.0.2"
|
|
31
|
-
sdk_version: str = "1.2.
|
|
32
|
-
gen_version: str = "2.
|
|
33
|
-
user_agent: str = "speakeasy-sdk/python 1.2.
|
|
31
|
+
sdk_version: str = "1.2.0"
|
|
32
|
+
gen_version: str = "2.452.0"
|
|
33
|
+
user_agent: str = "speakeasy-sdk/python 1.2.0 2.452.0 0.0.2 mistralai-gcp"
|
|
34
34
|
retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET)
|
|
35
35
|
timeout_ms: Optional[int] = None
|
|
36
36
|
|
|
@@ -41,7 +41,7 @@ class SDKConfiguration:
|
|
|
41
41
|
if self.server_url is not None and self.server_url:
|
|
42
42
|
return remove_suffix(self.server_url, "/"), {}
|
|
43
43
|
if not self.server:
|
|
44
|
-
self.server =
|
|
44
|
+
self.server = SERVER_EU
|
|
45
45
|
|
|
46
46
|
if self.server not in SERVERS:
|
|
47
47
|
raise ValueError(f'Invalid server "{self.server}"')
|
mistralai_gcp/utils/__init__.py
CHANGED
|
@@ -27,6 +27,10 @@ from .serializers import (
|
|
|
27
27
|
serialize_float,
|
|
28
28
|
serialize_int,
|
|
29
29
|
stream_to_text,
|
|
30
|
+
stream_to_text_async,
|
|
31
|
+
stream_to_bytes,
|
|
32
|
+
stream_to_bytes_async,
|
|
33
|
+
validate_const,
|
|
30
34
|
validate_decimal,
|
|
31
35
|
validate_float,
|
|
32
36
|
validate_int,
|
|
@@ -79,10 +83,14 @@ __all__ = [
|
|
|
79
83
|
"serialize_request_body",
|
|
80
84
|
"SerializedRequestBody",
|
|
81
85
|
"stream_to_text",
|
|
86
|
+
"stream_to_text_async",
|
|
87
|
+
"stream_to_bytes",
|
|
88
|
+
"stream_to_bytes_async",
|
|
82
89
|
"template_url",
|
|
83
90
|
"unmarshal",
|
|
84
91
|
"unmarshal_json",
|
|
85
92
|
"validate_decimal",
|
|
93
|
+
"validate_const",
|
|
86
94
|
"validate_float",
|
|
87
95
|
"validate_int",
|
|
88
96
|
"validate_open_enum",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
|
+
from enum import Enum
|
|
3
4
|
from typing import Any
|
|
4
5
|
|
|
5
6
|
def get_discriminator(model: Any, fieldname: str, key: str) -> str:
|
|
@@ -10,10 +11,20 @@ def get_discriminator(model: Any, fieldname: str, key: str) -> str:
|
|
|
10
11
|
raise ValueError(f'Could not find discriminator key {key} in {model}') from e
|
|
11
12
|
|
|
12
13
|
if hasattr(model, fieldname):
|
|
13
|
-
|
|
14
|
+
attr = getattr(model, fieldname)
|
|
15
|
+
|
|
16
|
+
if isinstance(attr, Enum):
|
|
17
|
+
return f'{attr.value}'
|
|
18
|
+
|
|
19
|
+
return f'{attr}'
|
|
14
20
|
|
|
15
21
|
fieldname = fieldname.upper()
|
|
16
22
|
if hasattr(model, fieldname):
|
|
17
|
-
|
|
23
|
+
attr = getattr(model, fieldname)
|
|
24
|
+
|
|
25
|
+
if isinstance(attr, Enum):
|
|
26
|
+
return f'{attr.value}'
|
|
27
|
+
|
|
28
|
+
return f'{attr}'
|
|
18
29
|
|
|
19
30
|
raise ValueError(f'Could not find discriminator field {fieldname} in {model}')
|
|
@@ -116,6 +116,19 @@ def validate_open_enum(is_int: bool):
|
|
|
116
116
|
return validate
|
|
117
117
|
|
|
118
118
|
|
|
119
|
+
def validate_const(v):
|
|
120
|
+
def validate(c):
|
|
121
|
+
if is_optional_type(type(c)) and c is None:
|
|
122
|
+
return None
|
|
123
|
+
|
|
124
|
+
if v != c:
|
|
125
|
+
raise ValueError(f"Expected {v}")
|
|
126
|
+
|
|
127
|
+
return c
|
|
128
|
+
|
|
129
|
+
return validate
|
|
130
|
+
|
|
131
|
+
|
|
119
132
|
def unmarshal_json(raw, typ: Any) -> Any:
|
|
120
133
|
return unmarshal(from_json(raw), typ)
|
|
121
134
|
|
|
@@ -172,6 +185,18 @@ def stream_to_text(stream: httpx.Response) -> str:
|
|
|
172
185
|
return "".join(stream.iter_text())
|
|
173
186
|
|
|
174
187
|
|
|
188
|
+
async def stream_to_text_async(stream: httpx.Response) -> str:
|
|
189
|
+
return "".join([chunk async for chunk in stream.aiter_text()])
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def stream_to_bytes(stream: httpx.Response) -> bytes:
|
|
193
|
+
return stream.content
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
async def stream_to_bytes_async(stream: httpx.Response) -> bytes:
|
|
197
|
+
return await stream.aread()
|
|
198
|
+
|
|
199
|
+
|
|
175
200
|
def get_pydantic_model(data: Any, typ: Any) -> Any:
|
|
176
201
|
if not _contains_pydantic_model(data):
|
|
177
202
|
return unmarshal(data, typ)
|