mixpeek 0.6.7__py3-none-any.whl → 0.6.9__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.
- mixpeek/__init__.py +1 -106
- mixpeek/client.py +21 -65
- mixpeek/endpoints/connections.py +16 -0
- mixpeek/endpoints/embed.py +50 -0
- mixpeek/endpoints/extract.py +16 -0
- mixpeek/endpoints/generate.py +17 -0
- mixpeek/endpoints/tools.py +23 -0
- mixpeek/exceptions.py +13 -0
- mixpeek-0.6.9.dist-info/METADATA +68 -0
- mixpeek-0.6.9.dist-info/RECORD +13 -0
- {mixpeek-0.6.7.dist-info → mixpeek-0.6.9.dist-info}/WHEEL +2 -1
- mixpeek-0.6.9.dist-info/top_level.txt +1 -0
- mixpeek/base_client.py +0 -989
- mixpeek/core/__init__.py +0 -25
- mixpeek/core/api_error.py +0 -15
- mixpeek/core/client_wrapper.py +0 -83
- mixpeek/core/datetime_utils.py +0 -28
- mixpeek/core/file.py +0 -38
- mixpeek/core/http_client.py +0 -130
- mixpeek/core/jsonable_encoder.py +0 -103
- mixpeek/core/remove_none_from_dict.py +0 -11
- mixpeek/core/request_options.py +0 -32
- mixpeek/environment.py +0 -7
- mixpeek/errors/__init__.py +0 -17
- mixpeek/errors/bad_request_error.py +0 -9
- mixpeek/errors/forbidden_error.py +0 -9
- mixpeek/errors/internal_server_error.py +0 -9
- mixpeek/errors/not_found_error.py +0 -9
- mixpeek/errors/unauthorized_error.py +0 -9
- mixpeek/errors/unprocessable_entity_error.py +0 -9
- mixpeek/pipeline/__init__.py +0 -2
- mixpeek/pipeline/client.py +0 -474
- mixpeek/storage/__init__.py +0 -5
- mixpeek/storage/client.py +0 -145
- mixpeek/storage/sample/__init__.py +0 -2
- mixpeek/storage/sample/client.py +0 -282
- mixpeek/types/__init__.py +0 -81
- mixpeek/types/api_key.py +0 -31
- mixpeek/types/audio_params.py +0 -29
- mixpeek/types/configs_response.py +0 -42
- mixpeek/types/connection.py +0 -36
- mixpeek/types/connection_engine.py +0 -5
- mixpeek/types/csv_params.py +0 -29
- mixpeek/types/destination.py +0 -42
- mixpeek/types/embedding_response.py +0 -34
- mixpeek/types/error_message.py +0 -29
- mixpeek/types/error_response.py +0 -30
- mixpeek/types/extract_response.py +0 -35
- mixpeek/types/field_type.py +0 -5
- mixpeek/types/generation_response.py +0 -36
- mixpeek/types/html_params.py +0 -29
- mixpeek/types/http_validation_error.py +0 -30
- mixpeek/types/image_params.py +0 -32
- mixpeek/types/message.py +0 -37
- mixpeek/types/metadata.py +0 -32
- mixpeek/types/modality.py +0 -5
- mixpeek/types/model.py +0 -38
- mixpeek/types/models.py +0 -5
- mixpeek/types/pdf_params.py +0 -41
- mixpeek/types/pipeline_response.py +0 -49
- mixpeek/types/pipeline_task_response.py +0 -32
- mixpeek/types/ppt_params.py +0 -27
- mixpeek/types/pptx_params.py +0 -27
- mixpeek/types/settings.py +0 -35
- mixpeek/types/source.py +0 -43
- mixpeek/types/source_destination_mapping.py +0 -44
- mixpeek/types/txt_params.py +0 -27
- mixpeek/types/user.py +0 -36
- mixpeek/types/validation_error.py +0 -32
- mixpeek/types/validation_error_loc_item.py +0 -5
- mixpeek/types/video_params.py +0 -27
- mixpeek/types/workflow_code_response.py +0 -29
- mixpeek/types/workflow_response.py +0 -32
- mixpeek/types/workflow_settings.py +0 -30
- mixpeek/types/xlsx_params.py +0 -29
- mixpeek/user/__init__.py +0 -2
- mixpeek/user/client.py +0 -308
- mixpeek/version.py +0 -4
- mixpeek/workflow/__init__.py +0 -2
- mixpeek/workflow/client.py +0 -535
- mixpeek-0.6.7.dist-info/LICENSE +0 -21
- mixpeek-0.6.7.dist-info/METADATA +0 -145
- mixpeek-0.6.7.dist-info/RECORD +0 -75
- /mixpeek/{py.typed → endpoints/__init__.py} +0 -0
mixpeek/base_client.py
DELETED
@@ -1,989 +0,0 @@
|
|
1
|
-
# This file was auto-generated by Fern from our API Definition.
|
2
|
-
|
3
|
-
import os
|
4
|
-
import typing
|
5
|
-
import urllib.parse
|
6
|
-
from json.decoder import JSONDecodeError
|
7
|
-
|
8
|
-
import httpx
|
9
|
-
|
10
|
-
from .core.api_error import ApiError
|
11
|
-
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
12
|
-
from .core.jsonable_encoder import jsonable_encoder
|
13
|
-
from .core.remove_none_from_dict import remove_none_from_dict
|
14
|
-
from .core.request_options import RequestOptions
|
15
|
-
from .environment import MixpeekEnvironment
|
16
|
-
from .errors.bad_request_error import BadRequestError
|
17
|
-
from .errors.forbidden_error import ForbiddenError
|
18
|
-
from .errors.internal_server_error import InternalServerError
|
19
|
-
from .errors.not_found_error import NotFoundError
|
20
|
-
from .errors.unauthorized_error import UnauthorizedError
|
21
|
-
from .errors.unprocessable_entity_error import UnprocessableEntityError
|
22
|
-
from .pipeline.client import AsyncPipelineClient, PipelineClient
|
23
|
-
from .storage.client import AsyncStorageClient, StorageClient
|
24
|
-
from .types.audio_params import AudioParams
|
25
|
-
from .types.configs_response import ConfigsResponse
|
26
|
-
from .types.csv_params import CsvParams
|
27
|
-
from .types.embedding_response import EmbeddingResponse
|
28
|
-
from .types.error_response import ErrorResponse
|
29
|
-
from .types.extract_response import ExtractResponse
|
30
|
-
from .types.generation_response import GenerationResponse
|
31
|
-
from .types.html_params import HtmlParams
|
32
|
-
from .types.http_validation_error import HttpValidationError
|
33
|
-
from .types.image_params import ImageParams
|
34
|
-
from .types.message import Message
|
35
|
-
from .types.modality import Modality
|
36
|
-
from .types.model import Model
|
37
|
-
from .types.models import Models
|
38
|
-
from .types.pdf_params import PdfParams
|
39
|
-
from .types.ppt_params import PptParams
|
40
|
-
from .types.pptx_params import PptxParams
|
41
|
-
from .types.settings import Settings
|
42
|
-
from .types.txt_params import TxtParams
|
43
|
-
from .types.video_params import VideoParams
|
44
|
-
from .types.xlsx_params import XlsxParams
|
45
|
-
from .user.client import AsyncUserClient, UserClient
|
46
|
-
from .workflow.client import AsyncWorkflowClient, WorkflowClient
|
47
|
-
|
48
|
-
try:
|
49
|
-
import pydantic.v1 as pydantic # type: ignore
|
50
|
-
except ImportError:
|
51
|
-
import pydantic # type: ignore
|
52
|
-
|
53
|
-
# this is used as the default value for optional parameters
|
54
|
-
OMIT = typing.cast(typing.Any, ...)
|
55
|
-
|
56
|
-
|
57
|
-
class BaseMixpeek:
|
58
|
-
"""
|
59
|
-
Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propogate to these functions.
|
60
|
-
|
61
|
-
Parameters:
|
62
|
-
- base_url: typing.Optional[str]. The base url to use for requests from the client.
|
63
|
-
|
64
|
-
- environment: MixpeekEnvironment. The environment to use for requests from the client. from .environment import MixpeekEnvironment
|
65
|
-
|
66
|
-
Defaults to MixpeekEnvironment.DEFAULT
|
67
|
-
|
68
|
-
- authorization: typing.Optional[str].
|
69
|
-
|
70
|
-
- index_id: typing.Optional[str].
|
71
|
-
|
72
|
-
- api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]].
|
73
|
-
|
74
|
-
- timeout: typing.Optional[float]. The timeout to be used, in seconds, for requests by default the timeout is 60 seconds, unless a custom httpx client is used, in which case a default is not set.
|
75
|
-
|
76
|
-
- httpx_client: typing.Optional[httpx.Client]. The httpx client to use for making requests, a preconfigured client is used by default, however this is useful should you want to pass in any custom httpx configuration.
|
77
|
-
---
|
78
|
-
from mixpeek.client import Mixpeek
|
79
|
-
|
80
|
-
client = Mixpeek(
|
81
|
-
authorization="YOUR_AUTHORIZATION",
|
82
|
-
index_id="YOUR_INDEX_ID",
|
83
|
-
api_key="YOUR_API_KEY",
|
84
|
-
)
|
85
|
-
"""
|
86
|
-
|
87
|
-
def __init__(
|
88
|
-
self,
|
89
|
-
*,
|
90
|
-
base_url: typing.Optional[str] = None,
|
91
|
-
environment: MixpeekEnvironment = MixpeekEnvironment.DEFAULT,
|
92
|
-
authorization: typing.Optional[str] = None,
|
93
|
-
index_id: typing.Optional[str] = None,
|
94
|
-
api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = os.getenv("MIXPEEK_API_KEY"),
|
95
|
-
timeout: typing.Optional[float] = None,
|
96
|
-
httpx_client: typing.Optional[httpx.Client] = None,
|
97
|
-
):
|
98
|
-
_defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
|
99
|
-
if api_key is None:
|
100
|
-
raise ApiError(
|
101
|
-
body="The client must be instantiated be either passing in api_key or setting MIXPEEK_API_KEY"
|
102
|
-
)
|
103
|
-
self._client_wrapper = SyncClientWrapper(
|
104
|
-
base_url=_get_base_url(base_url=base_url, environment=environment),
|
105
|
-
authorization=authorization,
|
106
|
-
index_id=index_id,
|
107
|
-
api_key=api_key,
|
108
|
-
httpx_client=httpx.Client(timeout=_defaulted_timeout) if httpx_client is None else httpx_client,
|
109
|
-
timeout=_defaulted_timeout,
|
110
|
-
)
|
111
|
-
self.user = UserClient(client_wrapper=self._client_wrapper)
|
112
|
-
self.pipeline = PipelineClient(client_wrapper=self._client_wrapper)
|
113
|
-
self.workflow = WorkflowClient(client_wrapper=self._client_wrapper)
|
114
|
-
self.storage = StorageClient(client_wrapper=self._client_wrapper)
|
115
|
-
|
116
|
-
def extract(
|
117
|
-
self,
|
118
|
-
*,
|
119
|
-
file_url: typing.Optional[str] = OMIT,
|
120
|
-
contents: typing.Optional[str] = OMIT,
|
121
|
-
should_chunk: typing.Optional[bool] = OMIT,
|
122
|
-
clean_text: typing.Optional[bool] = OMIT,
|
123
|
-
max_characters_per_chunk: typing.Optional[int] = OMIT,
|
124
|
-
extract_tags: typing.Optional[bool] = OMIT,
|
125
|
-
summarize: typing.Optional[bool] = OMIT,
|
126
|
-
pdf_settings: typing.Optional[PdfParams] = OMIT,
|
127
|
-
html_settings: typing.Optional[HtmlParams] = OMIT,
|
128
|
-
csv_settings: typing.Optional[CsvParams] = OMIT,
|
129
|
-
ppt_settings: typing.Optional[PptParams] = OMIT,
|
130
|
-
pptx_settings: typing.Optional[PptxParams] = OMIT,
|
131
|
-
xlsx_settings: typing.Optional[XlsxParams] = OMIT,
|
132
|
-
txt_settings: typing.Optional[TxtParams] = OMIT,
|
133
|
-
audio_settings: typing.Optional[AudioParams] = OMIT,
|
134
|
-
image_settings: typing.Optional[ImageParams] = OMIT,
|
135
|
-
video_settings: typing.Optional[VideoParams] = OMIT,
|
136
|
-
request_options: typing.Optional[RequestOptions] = None,
|
137
|
-
) -> ExtractResponse:
|
138
|
-
"""
|
139
|
-
Parameters:
|
140
|
-
- file_url: typing.Optional[str].
|
141
|
-
|
142
|
-
- contents: typing.Optional[str].
|
143
|
-
|
144
|
-
- should_chunk: typing.Optional[bool].
|
145
|
-
|
146
|
-
- clean_text: typing.Optional[bool].
|
147
|
-
|
148
|
-
- max_characters_per_chunk: typing.Optional[int].
|
149
|
-
|
150
|
-
- extract_tags: typing.Optional[bool].
|
151
|
-
|
152
|
-
- summarize: typing.Optional[bool].
|
153
|
-
|
154
|
-
- pdf_settings: typing.Optional[PdfParams].
|
155
|
-
|
156
|
-
- html_settings: typing.Optional[HtmlParams].
|
157
|
-
|
158
|
-
- csv_settings: typing.Optional[CsvParams].
|
159
|
-
|
160
|
-
- ppt_settings: typing.Optional[PptParams].
|
161
|
-
|
162
|
-
- pptx_settings: typing.Optional[PptxParams].
|
163
|
-
|
164
|
-
- xlsx_settings: typing.Optional[XlsxParams].
|
165
|
-
|
166
|
-
- txt_settings: typing.Optional[TxtParams].
|
167
|
-
|
168
|
-
- audio_settings: typing.Optional[AudioParams].
|
169
|
-
|
170
|
-
- image_settings: typing.Optional[ImageParams].
|
171
|
-
|
172
|
-
- video_settings: typing.Optional[VideoParams].
|
173
|
-
|
174
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
175
|
-
---
|
176
|
-
from mixpeek.client import Mixpeek
|
177
|
-
|
178
|
-
client = Mixpeek(
|
179
|
-
authorization="YOUR_AUTHORIZATION",
|
180
|
-
index_id="YOUR_INDEX_ID",
|
181
|
-
api_key="YOUR_API_KEY",
|
182
|
-
)
|
183
|
-
client.extract()
|
184
|
-
"""
|
185
|
-
_request: typing.Dict[str, typing.Any] = {}
|
186
|
-
if file_url is not OMIT:
|
187
|
-
_request["file_url"] = file_url
|
188
|
-
if contents is not OMIT:
|
189
|
-
_request["contents"] = contents
|
190
|
-
if should_chunk is not OMIT:
|
191
|
-
_request["should_chunk"] = should_chunk
|
192
|
-
if clean_text is not OMIT:
|
193
|
-
_request["clean_text"] = clean_text
|
194
|
-
if max_characters_per_chunk is not OMIT:
|
195
|
-
_request["max_characters_per_chunk"] = max_characters_per_chunk
|
196
|
-
if extract_tags is not OMIT:
|
197
|
-
_request["extract_tags"] = extract_tags
|
198
|
-
if summarize is not OMIT:
|
199
|
-
_request["summarize"] = summarize
|
200
|
-
if pdf_settings is not OMIT:
|
201
|
-
_request["pdf_settings"] = pdf_settings
|
202
|
-
if html_settings is not OMIT:
|
203
|
-
_request["html_settings"] = html_settings
|
204
|
-
if csv_settings is not OMIT:
|
205
|
-
_request["csv_settings"] = csv_settings
|
206
|
-
if ppt_settings is not OMIT:
|
207
|
-
_request["ppt_settings"] = ppt_settings
|
208
|
-
if pptx_settings is not OMIT:
|
209
|
-
_request["pptx_settings"] = pptx_settings
|
210
|
-
if xlsx_settings is not OMIT:
|
211
|
-
_request["xlsx_settings"] = xlsx_settings
|
212
|
-
if txt_settings is not OMIT:
|
213
|
-
_request["txt_settings"] = txt_settings
|
214
|
-
if audio_settings is not OMIT:
|
215
|
-
_request["audio_settings"] = audio_settings
|
216
|
-
if image_settings is not OMIT:
|
217
|
-
_request["image_settings"] = image_settings
|
218
|
-
if video_settings is not OMIT:
|
219
|
-
_request["video_settings"] = video_settings
|
220
|
-
_response = self._client_wrapper.httpx_client.request(
|
221
|
-
"POST",
|
222
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "extract"),
|
223
|
-
params=jsonable_encoder(
|
224
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
225
|
-
),
|
226
|
-
json=jsonable_encoder(_request)
|
227
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
228
|
-
else {
|
229
|
-
**jsonable_encoder(_request),
|
230
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
231
|
-
},
|
232
|
-
headers=jsonable_encoder(
|
233
|
-
remove_none_from_dict(
|
234
|
-
{
|
235
|
-
**self._client_wrapper.get_headers(),
|
236
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
237
|
-
}
|
238
|
-
)
|
239
|
-
),
|
240
|
-
timeout=request_options.get("timeout_in_seconds")
|
241
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
242
|
-
else self._client_wrapper.get_timeout(),
|
243
|
-
retries=0,
|
244
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
245
|
-
)
|
246
|
-
if 200 <= _response.status_code < 300:
|
247
|
-
return pydantic.parse_obj_as(ExtractResponse, _response.json()) # type: ignore
|
248
|
-
if _response.status_code == 400:
|
249
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
250
|
-
if _response.status_code == 401:
|
251
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
252
|
-
if _response.status_code == 403:
|
253
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
254
|
-
if _response.status_code == 404:
|
255
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
256
|
-
if _response.status_code == 422:
|
257
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
258
|
-
if _response.status_code == 500:
|
259
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
260
|
-
try:
|
261
|
-
_response_json = _response.json()
|
262
|
-
except JSONDecodeError:
|
263
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
264
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
265
|
-
|
266
|
-
def base_generate(
|
267
|
-
self,
|
268
|
-
*,
|
269
|
-
model: Model,
|
270
|
-
response_format: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
|
271
|
-
context: typing.Optional[str] = OMIT,
|
272
|
-
messages: typing.Sequence[Message],
|
273
|
-
settings: typing.Optional[Settings] = OMIT,
|
274
|
-
request_options: typing.Optional[RequestOptions] = None,
|
275
|
-
) -> GenerationResponse:
|
276
|
-
"""
|
277
|
-
Parameters:
|
278
|
-
- model: Model. The model to be used.
|
279
|
-
|
280
|
-
- response_format: typing.Optional[typing.Dict[str, typing.Any]].
|
281
|
-
|
282
|
-
- context: typing.Optional[str].
|
283
|
-
|
284
|
-
- messages: typing.Sequence[Message]. The messages for the generation.
|
285
|
-
|
286
|
-
- settings: typing.Optional[Settings].
|
287
|
-
|
288
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
289
|
-
---
|
290
|
-
from mixpeek import Message, Model
|
291
|
-
from mixpeek.client import Mixpeek
|
292
|
-
|
293
|
-
client = Mixpeek(
|
294
|
-
authorization="YOUR_AUTHORIZATION",
|
295
|
-
index_id="YOUR_INDEX_ID",
|
296
|
-
api_key="YOUR_API_KEY",
|
297
|
-
)
|
298
|
-
client.base_generate(
|
299
|
-
model=Model(
|
300
|
-
provider="provider",
|
301
|
-
model="gpt-3.5-turbo",
|
302
|
-
),
|
303
|
-
messages=[
|
304
|
-
Message(
|
305
|
-
role="role",
|
306
|
-
content="content",
|
307
|
-
)
|
308
|
-
],
|
309
|
-
)
|
310
|
-
"""
|
311
|
-
_request: typing.Dict[str, typing.Any] = {"model": model, "messages": messages}
|
312
|
-
if response_format is not OMIT:
|
313
|
-
_request["response_format"] = response_format
|
314
|
-
if context is not OMIT:
|
315
|
-
_request["context"] = context
|
316
|
-
if settings is not OMIT:
|
317
|
-
_request["settings"] = settings
|
318
|
-
_response = self._client_wrapper.httpx_client.request(
|
319
|
-
"POST",
|
320
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "generate/text"),
|
321
|
-
params=jsonable_encoder(
|
322
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
323
|
-
),
|
324
|
-
json=jsonable_encoder(_request)
|
325
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
326
|
-
else {
|
327
|
-
**jsonable_encoder(_request),
|
328
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
329
|
-
},
|
330
|
-
headers=jsonable_encoder(
|
331
|
-
remove_none_from_dict(
|
332
|
-
{
|
333
|
-
**self._client_wrapper.get_headers(),
|
334
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
335
|
-
}
|
336
|
-
)
|
337
|
-
),
|
338
|
-
timeout=request_options.get("timeout_in_seconds")
|
339
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
340
|
-
else self._client_wrapper.get_timeout(),
|
341
|
-
retries=0,
|
342
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
343
|
-
)
|
344
|
-
if 200 <= _response.status_code < 300:
|
345
|
-
return pydantic.parse_obj_as(GenerationResponse, _response.json()) # type: ignore
|
346
|
-
if _response.status_code == 400:
|
347
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
348
|
-
if _response.status_code == 401:
|
349
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
350
|
-
if _response.status_code == 403:
|
351
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
352
|
-
if _response.status_code == 404:
|
353
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
354
|
-
if _response.status_code == 422:
|
355
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
356
|
-
if _response.status_code == 500:
|
357
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
358
|
-
try:
|
359
|
-
_response_json = _response.json()
|
360
|
-
except JSONDecodeError:
|
361
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
362
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
363
|
-
|
364
|
-
def get_model_config(
|
365
|
-
self,
|
366
|
-
*,
|
367
|
-
modality: typing.Optional[Modality] = OMIT,
|
368
|
-
model: typing.Optional[Models] = OMIT,
|
369
|
-
request_options: typing.Optional[RequestOptions] = None,
|
370
|
-
) -> ConfigsResponse:
|
371
|
-
"""
|
372
|
-
Parameters:
|
373
|
-
- modality: typing.Optional[Modality].
|
374
|
-
|
375
|
-
- model: typing.Optional[Models].
|
376
|
-
|
377
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
378
|
-
---
|
379
|
-
from mixpeek.client import Mixpeek
|
380
|
-
|
381
|
-
client = Mixpeek(
|
382
|
-
authorization="YOUR_AUTHORIZATION",
|
383
|
-
index_id="YOUR_INDEX_ID",
|
384
|
-
api_key="YOUR_API_KEY",
|
385
|
-
)
|
386
|
-
client.get_model_config()
|
387
|
-
"""
|
388
|
-
_request: typing.Dict[str, typing.Any] = {}
|
389
|
-
if modality is not OMIT:
|
390
|
-
_request["modality"] = modality
|
391
|
-
if model is not OMIT:
|
392
|
-
_request["model"] = model
|
393
|
-
_response = self._client_wrapper.httpx_client.request(
|
394
|
-
"POST",
|
395
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed/config"),
|
396
|
-
params=jsonable_encoder(
|
397
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
398
|
-
),
|
399
|
-
json=jsonable_encoder(_request)
|
400
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
401
|
-
else {
|
402
|
-
**jsonable_encoder(_request),
|
403
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
404
|
-
},
|
405
|
-
headers=jsonable_encoder(
|
406
|
-
remove_none_from_dict(
|
407
|
-
{
|
408
|
-
**self._client_wrapper.get_headers(),
|
409
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
410
|
-
}
|
411
|
-
)
|
412
|
-
),
|
413
|
-
timeout=request_options.get("timeout_in_seconds")
|
414
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
415
|
-
else self._client_wrapper.get_timeout(),
|
416
|
-
retries=0,
|
417
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
418
|
-
)
|
419
|
-
if 200 <= _response.status_code < 300:
|
420
|
-
return pydantic.parse_obj_as(ConfigsResponse, _response.json()) # type: ignore
|
421
|
-
if _response.status_code == 400:
|
422
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
423
|
-
if _response.status_code == 401:
|
424
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
425
|
-
if _response.status_code == 403:
|
426
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
427
|
-
if _response.status_code == 404:
|
428
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
429
|
-
if _response.status_code == 422:
|
430
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
431
|
-
if _response.status_code == 500:
|
432
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
433
|
-
try:
|
434
|
-
_response_json = _response.json()
|
435
|
-
except JSONDecodeError:
|
436
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
437
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
438
|
-
|
439
|
-
def embed(
|
440
|
-
self,
|
441
|
-
*,
|
442
|
-
input: str,
|
443
|
-
modality: typing.Optional[Modality] = OMIT,
|
444
|
-
model: typing.Optional[str] = OMIT,
|
445
|
-
request_options: typing.Optional[RequestOptions] = None,
|
446
|
-
) -> EmbeddingResponse:
|
447
|
-
"""
|
448
|
-
Parameters:
|
449
|
-
- input: str. The input data to be processed.
|
450
|
-
|
451
|
-
- modality: typing.Optional[Modality].
|
452
|
-
|
453
|
-
- model: typing.Optional[str].
|
454
|
-
|
455
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
456
|
-
---
|
457
|
-
from mixpeek.client import Mixpeek
|
458
|
-
|
459
|
-
client = Mixpeek(
|
460
|
-
authorization="YOUR_AUTHORIZATION",
|
461
|
-
index_id="YOUR_INDEX_ID",
|
462
|
-
api_key="YOUR_API_KEY",
|
463
|
-
)
|
464
|
-
client.embed(
|
465
|
-
input="input",
|
466
|
-
)
|
467
|
-
"""
|
468
|
-
_request: typing.Dict[str, typing.Any] = {"input": input}
|
469
|
-
if modality is not OMIT:
|
470
|
-
_request["modality"] = modality
|
471
|
-
if model is not OMIT:
|
472
|
-
_request["model"] = model
|
473
|
-
_response = self._client_wrapper.httpx_client.request(
|
474
|
-
"POST",
|
475
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed"),
|
476
|
-
params=jsonable_encoder(
|
477
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
478
|
-
),
|
479
|
-
json=jsonable_encoder(_request)
|
480
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
481
|
-
else {
|
482
|
-
**jsonable_encoder(_request),
|
483
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
484
|
-
},
|
485
|
-
headers=jsonable_encoder(
|
486
|
-
remove_none_from_dict(
|
487
|
-
{
|
488
|
-
**self._client_wrapper.get_headers(),
|
489
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
490
|
-
}
|
491
|
-
)
|
492
|
-
),
|
493
|
-
timeout=request_options.get("timeout_in_seconds")
|
494
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
495
|
-
else self._client_wrapper.get_timeout(),
|
496
|
-
retries=0,
|
497
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
498
|
-
)
|
499
|
-
if 200 <= _response.status_code < 300:
|
500
|
-
return pydantic.parse_obj_as(EmbeddingResponse, _response.json()) # type: ignore
|
501
|
-
if _response.status_code == 400:
|
502
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
503
|
-
if _response.status_code == 401:
|
504
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
505
|
-
if _response.status_code == 403:
|
506
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
507
|
-
if _response.status_code == 404:
|
508
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
509
|
-
if _response.status_code == 422:
|
510
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
511
|
-
if _response.status_code == 500:
|
512
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
513
|
-
try:
|
514
|
-
_response_json = _response.json()
|
515
|
-
except JSONDecodeError:
|
516
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
517
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
518
|
-
|
519
|
-
|
520
|
-
class AsyncBaseMixpeek:
|
521
|
-
"""
|
522
|
-
Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propogate to these functions.
|
523
|
-
|
524
|
-
Parameters:
|
525
|
-
- base_url: typing.Optional[str]. The base url to use for requests from the client.
|
526
|
-
|
527
|
-
- environment: MixpeekEnvironment. The environment to use for requests from the client. from .environment import MixpeekEnvironment
|
528
|
-
|
529
|
-
Defaults to MixpeekEnvironment.DEFAULT
|
530
|
-
|
531
|
-
- authorization: typing.Optional[str].
|
532
|
-
|
533
|
-
- index_id: typing.Optional[str].
|
534
|
-
|
535
|
-
- api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]].
|
536
|
-
|
537
|
-
- timeout: typing.Optional[float]. The timeout to be used, in seconds, for requests by default the timeout is 60 seconds, unless a custom httpx client is used, in which case a default is not set.
|
538
|
-
|
539
|
-
- httpx_client: typing.Optional[httpx.AsyncClient]. The httpx client to use for making requests, a preconfigured client is used by default, however this is useful should you want to pass in any custom httpx configuration.
|
540
|
-
---
|
541
|
-
from mixpeek.client import AsyncMixpeek
|
542
|
-
|
543
|
-
client = AsyncMixpeek(
|
544
|
-
authorization="YOUR_AUTHORIZATION",
|
545
|
-
index_id="YOUR_INDEX_ID",
|
546
|
-
api_key="YOUR_API_KEY",
|
547
|
-
)
|
548
|
-
"""
|
549
|
-
|
550
|
-
def __init__(
|
551
|
-
self,
|
552
|
-
*,
|
553
|
-
base_url: typing.Optional[str] = None,
|
554
|
-
environment: MixpeekEnvironment = MixpeekEnvironment.DEFAULT,
|
555
|
-
authorization: typing.Optional[str] = None,
|
556
|
-
index_id: typing.Optional[str] = None,
|
557
|
-
api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = os.getenv("MIXPEEK_API_KEY"),
|
558
|
-
timeout: typing.Optional[float] = None,
|
559
|
-
httpx_client: typing.Optional[httpx.AsyncClient] = None,
|
560
|
-
):
|
561
|
-
_defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
|
562
|
-
if api_key is None:
|
563
|
-
raise ApiError(
|
564
|
-
body="The client must be instantiated be either passing in api_key or setting MIXPEEK_API_KEY"
|
565
|
-
)
|
566
|
-
self._client_wrapper = AsyncClientWrapper(
|
567
|
-
base_url=_get_base_url(base_url=base_url, environment=environment),
|
568
|
-
authorization=authorization,
|
569
|
-
index_id=index_id,
|
570
|
-
api_key=api_key,
|
571
|
-
httpx_client=httpx.AsyncClient(timeout=_defaulted_timeout) if httpx_client is None else httpx_client,
|
572
|
-
timeout=_defaulted_timeout,
|
573
|
-
)
|
574
|
-
self.user = AsyncUserClient(client_wrapper=self._client_wrapper)
|
575
|
-
self.pipeline = AsyncPipelineClient(client_wrapper=self._client_wrapper)
|
576
|
-
self.workflow = AsyncWorkflowClient(client_wrapper=self._client_wrapper)
|
577
|
-
self.storage = AsyncStorageClient(client_wrapper=self._client_wrapper)
|
578
|
-
|
579
|
-
async def extract(
|
580
|
-
self,
|
581
|
-
*,
|
582
|
-
file_url: typing.Optional[str] = OMIT,
|
583
|
-
contents: typing.Optional[str] = OMIT,
|
584
|
-
should_chunk: typing.Optional[bool] = OMIT,
|
585
|
-
clean_text: typing.Optional[bool] = OMIT,
|
586
|
-
max_characters_per_chunk: typing.Optional[int] = OMIT,
|
587
|
-
extract_tags: typing.Optional[bool] = OMIT,
|
588
|
-
summarize: typing.Optional[bool] = OMIT,
|
589
|
-
pdf_settings: typing.Optional[PdfParams] = OMIT,
|
590
|
-
html_settings: typing.Optional[HtmlParams] = OMIT,
|
591
|
-
csv_settings: typing.Optional[CsvParams] = OMIT,
|
592
|
-
ppt_settings: typing.Optional[PptParams] = OMIT,
|
593
|
-
pptx_settings: typing.Optional[PptxParams] = OMIT,
|
594
|
-
xlsx_settings: typing.Optional[XlsxParams] = OMIT,
|
595
|
-
txt_settings: typing.Optional[TxtParams] = OMIT,
|
596
|
-
audio_settings: typing.Optional[AudioParams] = OMIT,
|
597
|
-
image_settings: typing.Optional[ImageParams] = OMIT,
|
598
|
-
video_settings: typing.Optional[VideoParams] = OMIT,
|
599
|
-
request_options: typing.Optional[RequestOptions] = None,
|
600
|
-
) -> ExtractResponse:
|
601
|
-
"""
|
602
|
-
Parameters:
|
603
|
-
- file_url: typing.Optional[str].
|
604
|
-
|
605
|
-
- contents: typing.Optional[str].
|
606
|
-
|
607
|
-
- should_chunk: typing.Optional[bool].
|
608
|
-
|
609
|
-
- clean_text: typing.Optional[bool].
|
610
|
-
|
611
|
-
- max_characters_per_chunk: typing.Optional[int].
|
612
|
-
|
613
|
-
- extract_tags: typing.Optional[bool].
|
614
|
-
|
615
|
-
- summarize: typing.Optional[bool].
|
616
|
-
|
617
|
-
- pdf_settings: typing.Optional[PdfParams].
|
618
|
-
|
619
|
-
- html_settings: typing.Optional[HtmlParams].
|
620
|
-
|
621
|
-
- csv_settings: typing.Optional[CsvParams].
|
622
|
-
|
623
|
-
- ppt_settings: typing.Optional[PptParams].
|
624
|
-
|
625
|
-
- pptx_settings: typing.Optional[PptxParams].
|
626
|
-
|
627
|
-
- xlsx_settings: typing.Optional[XlsxParams].
|
628
|
-
|
629
|
-
- txt_settings: typing.Optional[TxtParams].
|
630
|
-
|
631
|
-
- audio_settings: typing.Optional[AudioParams].
|
632
|
-
|
633
|
-
- image_settings: typing.Optional[ImageParams].
|
634
|
-
|
635
|
-
- video_settings: typing.Optional[VideoParams].
|
636
|
-
|
637
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
638
|
-
---
|
639
|
-
from mixpeek.client import AsyncMixpeek
|
640
|
-
|
641
|
-
client = AsyncMixpeek(
|
642
|
-
authorization="YOUR_AUTHORIZATION",
|
643
|
-
index_id="YOUR_INDEX_ID",
|
644
|
-
api_key="YOUR_API_KEY",
|
645
|
-
)
|
646
|
-
await client.extract()
|
647
|
-
"""
|
648
|
-
_request: typing.Dict[str, typing.Any] = {}
|
649
|
-
if file_url is not OMIT:
|
650
|
-
_request["file_url"] = file_url
|
651
|
-
if contents is not OMIT:
|
652
|
-
_request["contents"] = contents
|
653
|
-
if should_chunk is not OMIT:
|
654
|
-
_request["should_chunk"] = should_chunk
|
655
|
-
if clean_text is not OMIT:
|
656
|
-
_request["clean_text"] = clean_text
|
657
|
-
if max_characters_per_chunk is not OMIT:
|
658
|
-
_request["max_characters_per_chunk"] = max_characters_per_chunk
|
659
|
-
if extract_tags is not OMIT:
|
660
|
-
_request["extract_tags"] = extract_tags
|
661
|
-
if summarize is not OMIT:
|
662
|
-
_request["summarize"] = summarize
|
663
|
-
if pdf_settings is not OMIT:
|
664
|
-
_request["pdf_settings"] = pdf_settings
|
665
|
-
if html_settings is not OMIT:
|
666
|
-
_request["html_settings"] = html_settings
|
667
|
-
if csv_settings is not OMIT:
|
668
|
-
_request["csv_settings"] = csv_settings
|
669
|
-
if ppt_settings is not OMIT:
|
670
|
-
_request["ppt_settings"] = ppt_settings
|
671
|
-
if pptx_settings is not OMIT:
|
672
|
-
_request["pptx_settings"] = pptx_settings
|
673
|
-
if xlsx_settings is not OMIT:
|
674
|
-
_request["xlsx_settings"] = xlsx_settings
|
675
|
-
if txt_settings is not OMIT:
|
676
|
-
_request["txt_settings"] = txt_settings
|
677
|
-
if audio_settings is not OMIT:
|
678
|
-
_request["audio_settings"] = audio_settings
|
679
|
-
if image_settings is not OMIT:
|
680
|
-
_request["image_settings"] = image_settings
|
681
|
-
if video_settings is not OMIT:
|
682
|
-
_request["video_settings"] = video_settings
|
683
|
-
_response = await self._client_wrapper.httpx_client.request(
|
684
|
-
"POST",
|
685
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "extract"),
|
686
|
-
params=jsonable_encoder(
|
687
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
688
|
-
),
|
689
|
-
json=jsonable_encoder(_request)
|
690
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
691
|
-
else {
|
692
|
-
**jsonable_encoder(_request),
|
693
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
694
|
-
},
|
695
|
-
headers=jsonable_encoder(
|
696
|
-
remove_none_from_dict(
|
697
|
-
{
|
698
|
-
**self._client_wrapper.get_headers(),
|
699
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
700
|
-
}
|
701
|
-
)
|
702
|
-
),
|
703
|
-
timeout=request_options.get("timeout_in_seconds")
|
704
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
705
|
-
else self._client_wrapper.get_timeout(),
|
706
|
-
retries=0,
|
707
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
708
|
-
)
|
709
|
-
if 200 <= _response.status_code < 300:
|
710
|
-
return pydantic.parse_obj_as(ExtractResponse, _response.json()) # type: ignore
|
711
|
-
if _response.status_code == 400:
|
712
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
713
|
-
if _response.status_code == 401:
|
714
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
715
|
-
if _response.status_code == 403:
|
716
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
717
|
-
if _response.status_code == 404:
|
718
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
719
|
-
if _response.status_code == 422:
|
720
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
721
|
-
if _response.status_code == 500:
|
722
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
723
|
-
try:
|
724
|
-
_response_json = _response.json()
|
725
|
-
except JSONDecodeError:
|
726
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
727
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
728
|
-
|
729
|
-
async def base_generate(
|
730
|
-
self,
|
731
|
-
*,
|
732
|
-
model: Model,
|
733
|
-
response_format: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
|
734
|
-
context: typing.Optional[str] = OMIT,
|
735
|
-
messages: typing.Sequence[Message],
|
736
|
-
settings: typing.Optional[Settings] = OMIT,
|
737
|
-
request_options: typing.Optional[RequestOptions] = None,
|
738
|
-
) -> GenerationResponse:
|
739
|
-
"""
|
740
|
-
Parameters:
|
741
|
-
- model: Model. The model to be used.
|
742
|
-
|
743
|
-
- response_format: typing.Optional[typing.Dict[str, typing.Any]].
|
744
|
-
|
745
|
-
- context: typing.Optional[str].
|
746
|
-
|
747
|
-
- messages: typing.Sequence[Message]. The messages for the generation.
|
748
|
-
|
749
|
-
- settings: typing.Optional[Settings].
|
750
|
-
|
751
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
752
|
-
---
|
753
|
-
from mixpeek import Message, Model
|
754
|
-
from mixpeek.client import AsyncMixpeek
|
755
|
-
|
756
|
-
client = AsyncMixpeek(
|
757
|
-
authorization="YOUR_AUTHORIZATION",
|
758
|
-
index_id="YOUR_INDEX_ID",
|
759
|
-
api_key="YOUR_API_KEY",
|
760
|
-
)
|
761
|
-
await client.base_generate(
|
762
|
-
model=Model(
|
763
|
-
provider="provider",
|
764
|
-
model="gpt-3.5-turbo",
|
765
|
-
),
|
766
|
-
messages=[
|
767
|
-
Message(
|
768
|
-
role="role",
|
769
|
-
content="content",
|
770
|
-
)
|
771
|
-
],
|
772
|
-
)
|
773
|
-
"""
|
774
|
-
_request: typing.Dict[str, typing.Any] = {"model": model, "messages": messages}
|
775
|
-
if response_format is not OMIT:
|
776
|
-
_request["response_format"] = response_format
|
777
|
-
if context is not OMIT:
|
778
|
-
_request["context"] = context
|
779
|
-
if settings is not OMIT:
|
780
|
-
_request["settings"] = settings
|
781
|
-
_response = await self._client_wrapper.httpx_client.request(
|
782
|
-
"POST",
|
783
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "generate/text"),
|
784
|
-
params=jsonable_encoder(
|
785
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
786
|
-
),
|
787
|
-
json=jsonable_encoder(_request)
|
788
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
789
|
-
else {
|
790
|
-
**jsonable_encoder(_request),
|
791
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
792
|
-
},
|
793
|
-
headers=jsonable_encoder(
|
794
|
-
remove_none_from_dict(
|
795
|
-
{
|
796
|
-
**self._client_wrapper.get_headers(),
|
797
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
798
|
-
}
|
799
|
-
)
|
800
|
-
),
|
801
|
-
timeout=request_options.get("timeout_in_seconds")
|
802
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
803
|
-
else self._client_wrapper.get_timeout(),
|
804
|
-
retries=0,
|
805
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
806
|
-
)
|
807
|
-
if 200 <= _response.status_code < 300:
|
808
|
-
return pydantic.parse_obj_as(GenerationResponse, _response.json()) # type: ignore
|
809
|
-
if _response.status_code == 400:
|
810
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
811
|
-
if _response.status_code == 401:
|
812
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
813
|
-
if _response.status_code == 403:
|
814
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
815
|
-
if _response.status_code == 404:
|
816
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
817
|
-
if _response.status_code == 422:
|
818
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
819
|
-
if _response.status_code == 500:
|
820
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
821
|
-
try:
|
822
|
-
_response_json = _response.json()
|
823
|
-
except JSONDecodeError:
|
824
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
825
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
826
|
-
|
827
|
-
async def get_model_config(
|
828
|
-
self,
|
829
|
-
*,
|
830
|
-
modality: typing.Optional[Modality] = OMIT,
|
831
|
-
model: typing.Optional[Models] = OMIT,
|
832
|
-
request_options: typing.Optional[RequestOptions] = None,
|
833
|
-
) -> ConfigsResponse:
|
834
|
-
"""
|
835
|
-
Parameters:
|
836
|
-
- modality: typing.Optional[Modality].
|
837
|
-
|
838
|
-
- model: typing.Optional[Models].
|
839
|
-
|
840
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
841
|
-
---
|
842
|
-
from mixpeek.client import AsyncMixpeek
|
843
|
-
|
844
|
-
client = AsyncMixpeek(
|
845
|
-
authorization="YOUR_AUTHORIZATION",
|
846
|
-
index_id="YOUR_INDEX_ID",
|
847
|
-
api_key="YOUR_API_KEY",
|
848
|
-
)
|
849
|
-
await client.get_model_config()
|
850
|
-
"""
|
851
|
-
_request: typing.Dict[str, typing.Any] = {}
|
852
|
-
if modality is not OMIT:
|
853
|
-
_request["modality"] = modality
|
854
|
-
if model is not OMIT:
|
855
|
-
_request["model"] = model
|
856
|
-
_response = await self._client_wrapper.httpx_client.request(
|
857
|
-
"POST",
|
858
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed/config"),
|
859
|
-
params=jsonable_encoder(
|
860
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
861
|
-
),
|
862
|
-
json=jsonable_encoder(_request)
|
863
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
864
|
-
else {
|
865
|
-
**jsonable_encoder(_request),
|
866
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
867
|
-
},
|
868
|
-
headers=jsonable_encoder(
|
869
|
-
remove_none_from_dict(
|
870
|
-
{
|
871
|
-
**self._client_wrapper.get_headers(),
|
872
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
873
|
-
}
|
874
|
-
)
|
875
|
-
),
|
876
|
-
timeout=request_options.get("timeout_in_seconds")
|
877
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
878
|
-
else self._client_wrapper.get_timeout(),
|
879
|
-
retries=0,
|
880
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
881
|
-
)
|
882
|
-
if 200 <= _response.status_code < 300:
|
883
|
-
return pydantic.parse_obj_as(ConfigsResponse, _response.json()) # type: ignore
|
884
|
-
if _response.status_code == 400:
|
885
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
886
|
-
if _response.status_code == 401:
|
887
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
888
|
-
if _response.status_code == 403:
|
889
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
890
|
-
if _response.status_code == 404:
|
891
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
892
|
-
if _response.status_code == 422:
|
893
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
894
|
-
if _response.status_code == 500:
|
895
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
896
|
-
try:
|
897
|
-
_response_json = _response.json()
|
898
|
-
except JSONDecodeError:
|
899
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
900
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
901
|
-
|
902
|
-
async def embed(
|
903
|
-
self,
|
904
|
-
*,
|
905
|
-
input: str,
|
906
|
-
modality: typing.Optional[Modality] = OMIT,
|
907
|
-
model: typing.Optional[str] = OMIT,
|
908
|
-
request_options: typing.Optional[RequestOptions] = None,
|
909
|
-
) -> EmbeddingResponse:
|
910
|
-
"""
|
911
|
-
Parameters:
|
912
|
-
- input: str. The input data to be processed.
|
913
|
-
|
914
|
-
- modality: typing.Optional[Modality].
|
915
|
-
|
916
|
-
- model: typing.Optional[str].
|
917
|
-
|
918
|
-
- request_options: typing.Optional[RequestOptions]. Request-specific configuration.
|
919
|
-
---
|
920
|
-
from mixpeek.client import AsyncMixpeek
|
921
|
-
|
922
|
-
client = AsyncMixpeek(
|
923
|
-
authorization="YOUR_AUTHORIZATION",
|
924
|
-
index_id="YOUR_INDEX_ID",
|
925
|
-
api_key="YOUR_API_KEY",
|
926
|
-
)
|
927
|
-
await client.embed(
|
928
|
-
input="input",
|
929
|
-
)
|
930
|
-
"""
|
931
|
-
_request: typing.Dict[str, typing.Any] = {"input": input}
|
932
|
-
if modality is not OMIT:
|
933
|
-
_request["modality"] = modality
|
934
|
-
if model is not OMIT:
|
935
|
-
_request["model"] = model
|
936
|
-
_response = await self._client_wrapper.httpx_client.request(
|
937
|
-
"POST",
|
938
|
-
urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed"),
|
939
|
-
params=jsonable_encoder(
|
940
|
-
request_options.get("additional_query_parameters") if request_options is not None else None
|
941
|
-
),
|
942
|
-
json=jsonable_encoder(_request)
|
943
|
-
if request_options is None or request_options.get("additional_body_parameters") is None
|
944
|
-
else {
|
945
|
-
**jsonable_encoder(_request),
|
946
|
-
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
|
947
|
-
},
|
948
|
-
headers=jsonable_encoder(
|
949
|
-
remove_none_from_dict(
|
950
|
-
{
|
951
|
-
**self._client_wrapper.get_headers(),
|
952
|
-
**(request_options.get("additional_headers", {}) if request_options is not None else {}),
|
953
|
-
}
|
954
|
-
)
|
955
|
-
),
|
956
|
-
timeout=request_options.get("timeout_in_seconds")
|
957
|
-
if request_options is not None and request_options.get("timeout_in_seconds") is not None
|
958
|
-
else self._client_wrapper.get_timeout(),
|
959
|
-
retries=0,
|
960
|
-
max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
|
961
|
-
)
|
962
|
-
if 200 <= _response.status_code < 300:
|
963
|
-
return pydantic.parse_obj_as(EmbeddingResponse, _response.json()) # type: ignore
|
964
|
-
if _response.status_code == 400:
|
965
|
-
raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
966
|
-
if _response.status_code == 401:
|
967
|
-
raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
968
|
-
if _response.status_code == 403:
|
969
|
-
raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
970
|
-
if _response.status_code == 404:
|
971
|
-
raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
972
|
-
if _response.status_code == 422:
|
973
|
-
raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
|
974
|
-
if _response.status_code == 500:
|
975
|
-
raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
|
976
|
-
try:
|
977
|
-
_response_json = _response.json()
|
978
|
-
except JSONDecodeError:
|
979
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
980
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
981
|
-
|
982
|
-
|
983
|
-
def _get_base_url(*, base_url: typing.Optional[str] = None, environment: MixpeekEnvironment) -> str:
|
984
|
-
if base_url is not None:
|
985
|
-
return base_url
|
986
|
-
elif environment is not None:
|
987
|
-
return environment.value
|
988
|
-
else:
|
989
|
-
raise Exception("Please pass in either base_url or environment to construct the client")
|