mixpeek 0.6.2__py3-none-any.whl → 0.6.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mixpeek/__init__.py +12 -8
- mixpeek/base_client.py +857 -23
- mixpeek/client.py +7 -7
- mixpeek/core/client_wrapper.py +1 -1
- mixpeek/{pipelines → pipeline}/client.py +26 -20
- mixpeek/storage/__init__.py +3 -0
- mixpeek/storage/client.py +7 -112
- mixpeek/{embed → storage/sample}/client.py +61 -129
- mixpeek/types/__init__.py +8 -0
- mixpeek/types/configs_response.py +14 -3
- mixpeek/types/destination.py +14 -3
- mixpeek/types/embedding_response.py +6 -2
- mixpeek/types/extract_response.py +35 -0
- mixpeek/types/generation_response.py +6 -4
- mixpeek/types/message.py +9 -2
- mixpeek/types/metadata.py +0 -2
- mixpeek/types/modality.py +1 -1
- mixpeek/types/model.py +9 -2
- mixpeek/types/pipeline_response.py +49 -0
- mixpeek/types/pipeline_task_response.py +32 -0
- mixpeek/types/source.py +14 -3
- mixpeek/types/source_destination_mapping.py +14 -3
- mixpeek/types/workflow_code_response.py +29 -0
- mixpeek/{users → user}/client.py +10 -10
- mixpeek/{workflows → workflow}/client.py +14 -15
- {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/METADATA +1 -1
- {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/RECORD +33 -36
- mixpeek/extract/client.py +0 -347
- mixpeek/generators/client.py +0 -237
- mixpeek/parse/client.py +0 -111
- mixpeek/parse_client.py +0 -14
- mixpeek/pipelines/__init__.py +0 -2
- mixpeek/users/__init__.py +0 -2
- mixpeek/workflows/__init__.py +0 -2
- /mixpeek/{embed → pipeline}/__init__.py +0 -0
- /mixpeek/{extract → storage/sample}/__init__.py +0 -0
- /mixpeek/{generators → user}/__init__.py +0 -0
- /mixpeek/{parse → workflow}/__init__.py +0 -0
- {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/LICENSE +0 -0
- {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/WHEEL +0 -0
mixpeek/base_client.py
CHANGED
@@ -2,20 +2,56 @@
|
|
2
2
|
|
3
3
|
import os
|
4
4
|
import typing
|
5
|
+
import urllib.parse
|
6
|
+
from json.decoder import JSONDecodeError
|
5
7
|
|
6
8
|
import httpx
|
7
9
|
|
8
10
|
from .core.api_error import ApiError
|
9
11
|
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
10
|
-
from .
|
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
|
11
15
|
from .environment import MixpeekEnvironment
|
12
|
-
from .
|
13
|
-
from .
|
14
|
-
from .
|
15
|
-
from .
|
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
|
16
23
|
from .storage.client import AsyncStorageClient, StorageClient
|
17
|
-
from .
|
18
|
-
from .
|
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, ...)
|
19
55
|
|
20
56
|
|
21
57
|
class BaseMixpeek:
|
@@ -57,7 +93,7 @@ class BaseMixpeek:
|
|
57
93
|
index_id: typing.Optional[str] = None,
|
58
94
|
api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = os.getenv("MIXPEEK_API_KEY"),
|
59
95
|
timeout: typing.Optional[float] = None,
|
60
|
-
httpx_client: typing.Optional[httpx.Client] = None
|
96
|
+
httpx_client: typing.Optional[httpx.Client] = None,
|
61
97
|
):
|
62
98
|
_defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
|
63
99
|
if api_key is None:
|
@@ -72,14 +108,413 @@ class BaseMixpeek:
|
|
72
108
|
httpx_client=httpx.Client(timeout=_defaulted_timeout) if httpx_client is None else httpx_client,
|
73
109
|
timeout=_defaulted_timeout,
|
74
110
|
)
|
75
|
-
self.
|
76
|
-
self.
|
77
|
-
self.
|
78
|
-
self.embed = EmbedClient(client_wrapper=self._client_wrapper)
|
79
|
-
self.pipelines = PipelinesClient(client_wrapper=self._client_wrapper)
|
80
|
-
self.workflows = WorkflowsClient(client_wrapper=self._client_wrapper)
|
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)
|
81
114
|
self.storage = StorageClient(client_wrapper=self._client_wrapper)
|
82
|
-
|
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)
|
83
518
|
|
84
519
|
|
85
520
|
class AsyncBaseMixpeek:
|
@@ -121,7 +556,7 @@ class AsyncBaseMixpeek:
|
|
121
556
|
index_id: typing.Optional[str] = None,
|
122
557
|
api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = os.getenv("MIXPEEK_API_KEY"),
|
123
558
|
timeout: typing.Optional[float] = None,
|
124
|
-
httpx_client: typing.Optional[httpx.AsyncClient] = None
|
559
|
+
httpx_client: typing.Optional[httpx.AsyncClient] = None,
|
125
560
|
):
|
126
561
|
_defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
|
127
562
|
if api_key is None:
|
@@ -136,14 +571,413 @@ class AsyncBaseMixpeek:
|
|
136
571
|
httpx_client=httpx.AsyncClient(timeout=_defaulted_timeout) if httpx_client is None else httpx_client,
|
137
572
|
timeout=_defaulted_timeout,
|
138
573
|
)
|
139
|
-
self.
|
140
|
-
self.
|
141
|
-
self.
|
142
|
-
self.embed = AsyncEmbedClient(client_wrapper=self._client_wrapper)
|
143
|
-
self.pipelines = AsyncPipelinesClient(client_wrapper=self._client_wrapper)
|
144
|
-
self.workflows = AsyncWorkflowsClient(client_wrapper=self._client_wrapper)
|
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)
|
145
577
|
self.storage = AsyncStorageClient(client_wrapper=self._client_wrapper)
|
146
|
-
|
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)
|
147
981
|
|
148
982
|
|
149
983
|
def _get_base_url(*, base_url: typing.Optional[str] = None, environment: MixpeekEnvironment) -> str:
|