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.
Files changed (40) hide show
  1. mixpeek/__init__.py +12 -8
  2. mixpeek/base_client.py +857 -23
  3. mixpeek/client.py +7 -7
  4. mixpeek/core/client_wrapper.py +1 -1
  5. mixpeek/{pipelines → pipeline}/client.py +26 -20
  6. mixpeek/storage/__init__.py +3 -0
  7. mixpeek/storage/client.py +7 -112
  8. mixpeek/{embed → storage/sample}/client.py +61 -129
  9. mixpeek/types/__init__.py +8 -0
  10. mixpeek/types/configs_response.py +14 -3
  11. mixpeek/types/destination.py +14 -3
  12. mixpeek/types/embedding_response.py +6 -2
  13. mixpeek/types/extract_response.py +35 -0
  14. mixpeek/types/generation_response.py +6 -4
  15. mixpeek/types/message.py +9 -2
  16. mixpeek/types/metadata.py +0 -2
  17. mixpeek/types/modality.py +1 -1
  18. mixpeek/types/model.py +9 -2
  19. mixpeek/types/pipeline_response.py +49 -0
  20. mixpeek/types/pipeline_task_response.py +32 -0
  21. mixpeek/types/source.py +14 -3
  22. mixpeek/types/source_destination_mapping.py +14 -3
  23. mixpeek/types/workflow_code_response.py +29 -0
  24. mixpeek/{users → user}/client.py +10 -10
  25. mixpeek/{workflows → workflow}/client.py +14 -15
  26. {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/METADATA +1 -1
  27. {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/RECORD +33 -36
  28. mixpeek/extract/client.py +0 -347
  29. mixpeek/generators/client.py +0 -237
  30. mixpeek/parse/client.py +0 -111
  31. mixpeek/parse_client.py +0 -14
  32. mixpeek/pipelines/__init__.py +0 -2
  33. mixpeek/users/__init__.py +0 -2
  34. mixpeek/workflows/__init__.py +0 -2
  35. /mixpeek/{embed → pipeline}/__init__.py +0 -0
  36. /mixpeek/{extract → storage/sample}/__init__.py +0 -0
  37. /mixpeek/{generators → user}/__init__.py +0 -0
  38. /mixpeek/{parse → workflow}/__init__.py +0 -0
  39. {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/LICENSE +0 -0
  40. {mixpeek-0.6.2.dist-info → mixpeek-0.6.6.dist-info}/WHEEL +0 -0
mixpeek/extract/client.py DELETED
@@ -1,347 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- import typing
4
- import urllib.parse
5
- from json.decoder import JSONDecodeError
6
-
7
- from ..core.api_error import ApiError
8
- from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
- from ..core.jsonable_encoder import jsonable_encoder
10
- from ..core.remove_none_from_dict import remove_none_from_dict
11
- from ..core.request_options import RequestOptions
12
- from ..errors.bad_request_error import BadRequestError
13
- from ..errors.forbidden_error import ForbiddenError
14
- from ..errors.internal_server_error import InternalServerError
15
- from ..errors.not_found_error import NotFoundError
16
- from ..errors.unauthorized_error import UnauthorizedError
17
- from ..errors.unprocessable_entity_error import UnprocessableEntityError
18
- from ..types.audio_params import AudioParams
19
- from ..types.csv_params import CsvParams
20
- from ..types.error_response import ErrorResponse
21
- from ..types.html_params import HtmlParams
22
- from ..types.http_validation_error import HttpValidationError
23
- from ..types.image_params import ImageParams
24
- from ..types.pdf_params import PdfParams
25
- from ..types.ppt_params import PptParams
26
- from ..types.pptx_params import PptxParams
27
- from ..types.txt_params import TxtParams
28
- from ..types.video_params import VideoParams
29
- from ..types.xlsx_params import XlsxParams
30
-
31
- try:
32
- import pydantic.v1 as pydantic # type: ignore
33
- except ImportError:
34
- import pydantic # type: ignore
35
-
36
- # this is used as the default value for optional parameters
37
- OMIT = typing.cast(typing.Any, ...)
38
-
39
-
40
- class ExtractClient:
41
- def __init__(self, *, client_wrapper: SyncClientWrapper):
42
- self._client_wrapper = client_wrapper
43
-
44
- def file_extract_post(
45
- self,
46
- *,
47
- file_url: typing.Optional[str] = OMIT,
48
- contents: typing.Optional[str] = OMIT,
49
- should_chunk: typing.Optional[bool] = OMIT,
50
- clean_text: typing.Optional[bool] = OMIT,
51
- max_characters_per_chunk: typing.Optional[int] = OMIT,
52
- extract_tags: typing.Optional[bool] = OMIT,
53
- summarize: typing.Optional[bool] = OMIT,
54
- pdf_settings: typing.Optional[PdfParams] = OMIT,
55
- html_settings: typing.Optional[HtmlParams] = OMIT,
56
- csv_settings: typing.Optional[CsvParams] = OMIT,
57
- ppt_settings: typing.Optional[PptParams] = OMIT,
58
- pptx_settings: typing.Optional[PptxParams] = OMIT,
59
- xlsx_settings: typing.Optional[XlsxParams] = OMIT,
60
- txt_settings: typing.Optional[TxtParams] = OMIT,
61
- audio_settings: typing.Optional[AudioParams] = OMIT,
62
- image_settings: typing.Optional[ImageParams] = OMIT,
63
- video_settings: typing.Optional[VideoParams] = OMIT,
64
- request_options: typing.Optional[RequestOptions] = None,
65
- ) -> typing.Any:
66
- """
67
- Parameters:
68
- - file_url: typing.Optional[str].
69
-
70
- - contents: typing.Optional[str].
71
-
72
- - should_chunk: typing.Optional[bool].
73
-
74
- - clean_text: typing.Optional[bool].
75
-
76
- - max_characters_per_chunk: typing.Optional[int].
77
-
78
- - extract_tags: typing.Optional[bool].
79
-
80
- - summarize: typing.Optional[bool].
81
-
82
- - pdf_settings: typing.Optional[PdfParams].
83
-
84
- - html_settings: typing.Optional[HtmlParams].
85
-
86
- - csv_settings: typing.Optional[CsvParams].
87
-
88
- - ppt_settings: typing.Optional[PptParams].
89
-
90
- - pptx_settings: typing.Optional[PptxParams].
91
-
92
- - xlsx_settings: typing.Optional[XlsxParams].
93
-
94
- - txt_settings: typing.Optional[TxtParams].
95
-
96
- - audio_settings: typing.Optional[AudioParams].
97
-
98
- - image_settings: typing.Optional[ImageParams].
99
-
100
- - video_settings: typing.Optional[VideoParams].
101
-
102
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
103
- ---
104
- from mixpeek.client import Mixpeek
105
-
106
- client = Mixpeek(
107
- authorization="YOUR_AUTHORIZATION",
108
- index_id="YOUR_INDEX_ID",
109
- api_key="YOUR_API_KEY",
110
- )
111
- client.extract.file_extract_post()
112
- """
113
- _request: typing.Dict[str, typing.Any] = {}
114
- if file_url is not OMIT:
115
- _request["file_url"] = file_url
116
- if contents is not OMIT:
117
- _request["contents"] = contents
118
- if should_chunk is not OMIT:
119
- _request["should_chunk"] = should_chunk
120
- if clean_text is not OMIT:
121
- _request["clean_text"] = clean_text
122
- if max_characters_per_chunk is not OMIT:
123
- _request["max_characters_per_chunk"] = max_characters_per_chunk
124
- if extract_tags is not OMIT:
125
- _request["extract_tags"] = extract_tags
126
- if summarize is not OMIT:
127
- _request["summarize"] = summarize
128
- if pdf_settings is not OMIT:
129
- _request["pdf_settings"] = pdf_settings
130
- if html_settings is not OMIT:
131
- _request["html_settings"] = html_settings
132
- if csv_settings is not OMIT:
133
- _request["csv_settings"] = csv_settings
134
- if ppt_settings is not OMIT:
135
- _request["ppt_settings"] = ppt_settings
136
- if pptx_settings is not OMIT:
137
- _request["pptx_settings"] = pptx_settings
138
- if xlsx_settings is not OMIT:
139
- _request["xlsx_settings"] = xlsx_settings
140
- if txt_settings is not OMIT:
141
- _request["txt_settings"] = txt_settings
142
- if audio_settings is not OMIT:
143
- _request["audio_settings"] = audio_settings
144
- if image_settings is not OMIT:
145
- _request["image_settings"] = image_settings
146
- if video_settings is not OMIT:
147
- _request["video_settings"] = video_settings
148
- _response = self._client_wrapper.httpx_client.request(
149
- "POST",
150
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "extract"),
151
- params=jsonable_encoder(
152
- request_options.get("additional_query_parameters") if request_options is not None else None
153
- ),
154
- json=jsonable_encoder(_request)
155
- if request_options is None or request_options.get("additional_body_parameters") is None
156
- else {
157
- **jsonable_encoder(_request),
158
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
159
- },
160
- headers=jsonable_encoder(
161
- remove_none_from_dict(
162
- {
163
- **self._client_wrapper.get_headers(),
164
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
165
- }
166
- )
167
- ),
168
- timeout=request_options.get("timeout_in_seconds")
169
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
170
- else self._client_wrapper.get_timeout(),
171
- retries=0,
172
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
173
- )
174
- if 200 <= _response.status_code < 300:
175
- return pydantic.parse_obj_as(typing.Any, _response.json()) # type: ignore
176
- if _response.status_code == 400:
177
- raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
178
- if _response.status_code == 401:
179
- raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
180
- if _response.status_code == 403:
181
- raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
182
- if _response.status_code == 404:
183
- raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
184
- if _response.status_code == 422:
185
- raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
186
- if _response.status_code == 500:
187
- raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
188
- try:
189
- _response_json = _response.json()
190
- except JSONDecodeError:
191
- raise ApiError(status_code=_response.status_code, body=_response.text)
192
- raise ApiError(status_code=_response.status_code, body=_response_json)
193
-
194
-
195
- class AsyncExtractClient:
196
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
197
- self._client_wrapper = client_wrapper
198
-
199
- async def file_extract_post(
200
- self,
201
- *,
202
- file_url: typing.Optional[str] = OMIT,
203
- contents: typing.Optional[str] = OMIT,
204
- should_chunk: typing.Optional[bool] = OMIT,
205
- clean_text: typing.Optional[bool] = OMIT,
206
- max_characters_per_chunk: typing.Optional[int] = OMIT,
207
- extract_tags: typing.Optional[bool] = OMIT,
208
- summarize: typing.Optional[bool] = OMIT,
209
- pdf_settings: typing.Optional[PdfParams] = OMIT,
210
- html_settings: typing.Optional[HtmlParams] = OMIT,
211
- csv_settings: typing.Optional[CsvParams] = OMIT,
212
- ppt_settings: typing.Optional[PptParams] = OMIT,
213
- pptx_settings: typing.Optional[PptxParams] = OMIT,
214
- xlsx_settings: typing.Optional[XlsxParams] = OMIT,
215
- txt_settings: typing.Optional[TxtParams] = OMIT,
216
- audio_settings: typing.Optional[AudioParams] = OMIT,
217
- image_settings: typing.Optional[ImageParams] = OMIT,
218
- video_settings: typing.Optional[VideoParams] = OMIT,
219
- request_options: typing.Optional[RequestOptions] = None,
220
- ) -> typing.Any:
221
- """
222
- Parameters:
223
- - file_url: typing.Optional[str].
224
-
225
- - contents: typing.Optional[str].
226
-
227
- - should_chunk: typing.Optional[bool].
228
-
229
- - clean_text: typing.Optional[bool].
230
-
231
- - max_characters_per_chunk: typing.Optional[int].
232
-
233
- - extract_tags: typing.Optional[bool].
234
-
235
- - summarize: typing.Optional[bool].
236
-
237
- - pdf_settings: typing.Optional[PdfParams].
238
-
239
- - html_settings: typing.Optional[HtmlParams].
240
-
241
- - csv_settings: typing.Optional[CsvParams].
242
-
243
- - ppt_settings: typing.Optional[PptParams].
244
-
245
- - pptx_settings: typing.Optional[PptxParams].
246
-
247
- - xlsx_settings: typing.Optional[XlsxParams].
248
-
249
- - txt_settings: typing.Optional[TxtParams].
250
-
251
- - audio_settings: typing.Optional[AudioParams].
252
-
253
- - image_settings: typing.Optional[ImageParams].
254
-
255
- - video_settings: typing.Optional[VideoParams].
256
-
257
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
258
- ---
259
- from mixpeek.client import AsyncMixpeek
260
-
261
- client = AsyncMixpeek(
262
- authorization="YOUR_AUTHORIZATION",
263
- index_id="YOUR_INDEX_ID",
264
- api_key="YOUR_API_KEY",
265
- )
266
- await client.extract.file_extract_post()
267
- """
268
- _request: typing.Dict[str, typing.Any] = {}
269
- if file_url is not OMIT:
270
- _request["file_url"] = file_url
271
- if contents is not OMIT:
272
- _request["contents"] = contents
273
- if should_chunk is not OMIT:
274
- _request["should_chunk"] = should_chunk
275
- if clean_text is not OMIT:
276
- _request["clean_text"] = clean_text
277
- if max_characters_per_chunk is not OMIT:
278
- _request["max_characters_per_chunk"] = max_characters_per_chunk
279
- if extract_tags is not OMIT:
280
- _request["extract_tags"] = extract_tags
281
- if summarize is not OMIT:
282
- _request["summarize"] = summarize
283
- if pdf_settings is not OMIT:
284
- _request["pdf_settings"] = pdf_settings
285
- if html_settings is not OMIT:
286
- _request["html_settings"] = html_settings
287
- if csv_settings is not OMIT:
288
- _request["csv_settings"] = csv_settings
289
- if ppt_settings is not OMIT:
290
- _request["ppt_settings"] = ppt_settings
291
- if pptx_settings is not OMIT:
292
- _request["pptx_settings"] = pptx_settings
293
- if xlsx_settings is not OMIT:
294
- _request["xlsx_settings"] = xlsx_settings
295
- if txt_settings is not OMIT:
296
- _request["txt_settings"] = txt_settings
297
- if audio_settings is not OMIT:
298
- _request["audio_settings"] = audio_settings
299
- if image_settings is not OMIT:
300
- _request["image_settings"] = image_settings
301
- if video_settings is not OMIT:
302
- _request["video_settings"] = video_settings
303
- _response = await self._client_wrapper.httpx_client.request(
304
- "POST",
305
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "extract"),
306
- params=jsonable_encoder(
307
- request_options.get("additional_query_parameters") if request_options is not None else None
308
- ),
309
- json=jsonable_encoder(_request)
310
- if request_options is None or request_options.get("additional_body_parameters") is None
311
- else {
312
- **jsonable_encoder(_request),
313
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
314
- },
315
- headers=jsonable_encoder(
316
- remove_none_from_dict(
317
- {
318
- **self._client_wrapper.get_headers(),
319
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
320
- }
321
- )
322
- ),
323
- timeout=request_options.get("timeout_in_seconds")
324
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
325
- else self._client_wrapper.get_timeout(),
326
- retries=0,
327
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
328
- )
329
- if 200 <= _response.status_code < 300:
330
- return pydantic.parse_obj_as(typing.Any, _response.json()) # type: ignore
331
- if _response.status_code == 400:
332
- raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
333
- if _response.status_code == 401:
334
- raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
335
- if _response.status_code == 403:
336
- raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
337
- if _response.status_code == 404:
338
- raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
339
- if _response.status_code == 422:
340
- raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
341
- if _response.status_code == 500:
342
- raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
343
- try:
344
- _response_json = _response.json()
345
- except JSONDecodeError:
346
- raise ApiError(status_code=_response.status_code, body=_response.text)
347
- raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -1,237 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- import typing
4
- import urllib.parse
5
- from json.decoder import JSONDecodeError
6
-
7
- from ..core.api_error import ApiError
8
- from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
- from ..core.jsonable_encoder import jsonable_encoder
10
- from ..core.remove_none_from_dict import remove_none_from_dict
11
- from ..core.request_options import RequestOptions
12
- from ..errors.bad_request_error import BadRequestError
13
- from ..errors.forbidden_error import ForbiddenError
14
- from ..errors.internal_server_error import InternalServerError
15
- from ..errors.not_found_error import NotFoundError
16
- from ..errors.unauthorized_error import UnauthorizedError
17
- from ..errors.unprocessable_entity_error import UnprocessableEntityError
18
- from ..types.error_response import ErrorResponse
19
- from ..types.generation_response import GenerationResponse
20
- from ..types.http_validation_error import HttpValidationError
21
- from ..types.message import Message
22
- from ..types.model import Model
23
- from ..types.settings import Settings
24
-
25
- try:
26
- import pydantic.v1 as pydantic # type: ignore
27
- except ImportError:
28
- import pydantic # type: ignore
29
-
30
- # this is used as the default value for optional parameters
31
- OMIT = typing.cast(typing.Any, ...)
32
-
33
-
34
- class GeneratorsClient:
35
- def __init__(self, *, client_wrapper: SyncClientWrapper):
36
- self._client_wrapper = client_wrapper
37
-
38
- def generate(
39
- self,
40
- *,
41
- model: Model,
42
- response_format: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
43
- context: typing.Optional[str] = OMIT,
44
- messages: typing.Sequence[Message],
45
- settings: typing.Optional[Settings] = OMIT,
46
- request_options: typing.Optional[RequestOptions] = None,
47
- ) -> GenerationResponse:
48
- """
49
- Parameters:
50
- - model: Model.
51
-
52
- - response_format: typing.Optional[typing.Dict[str, typing.Any]].
53
-
54
- - context: typing.Optional[str].
55
-
56
- - messages: typing.Sequence[Message].
57
-
58
- - settings: typing.Optional[Settings].
59
-
60
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
61
- ---
62
- from mixpeek import Message, Model
63
- from mixpeek.client import Mixpeek
64
-
65
- client = Mixpeek(
66
- authorization="YOUR_AUTHORIZATION",
67
- index_id="YOUR_INDEX_ID",
68
- api_key="YOUR_API_KEY",
69
- )
70
- client.generators.generate(
71
- model=Model(
72
- provider="provider",
73
- model="gpt-3.5-turbo",
74
- ),
75
- messages=[
76
- Message(
77
- role="role",
78
- content="content",
79
- )
80
- ],
81
- )
82
- """
83
- _request: typing.Dict[str, typing.Any] = {"model": model, "messages": messages}
84
- if response_format is not OMIT:
85
- _request["response_format"] = response_format
86
- if context is not OMIT:
87
- _request["context"] = context
88
- if settings is not OMIT:
89
- _request["settings"] = settings
90
- _response = self._client_wrapper.httpx_client.request(
91
- "POST",
92
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "generate"),
93
- params=jsonable_encoder(
94
- request_options.get("additional_query_parameters") if request_options is not None else None
95
- ),
96
- json=jsonable_encoder(_request)
97
- if request_options is None or request_options.get("additional_body_parameters") is None
98
- else {
99
- **jsonable_encoder(_request),
100
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
101
- },
102
- headers=jsonable_encoder(
103
- remove_none_from_dict(
104
- {
105
- **self._client_wrapper.get_headers(),
106
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
107
- }
108
- )
109
- ),
110
- timeout=request_options.get("timeout_in_seconds")
111
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
112
- else self._client_wrapper.get_timeout(),
113
- retries=0,
114
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
115
- )
116
- if 200 <= _response.status_code < 300:
117
- return pydantic.parse_obj_as(GenerationResponse, _response.json()) # type: ignore
118
- if _response.status_code == 400:
119
- raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
120
- if _response.status_code == 401:
121
- raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
122
- if _response.status_code == 403:
123
- raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
124
- if _response.status_code == 404:
125
- raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
126
- if _response.status_code == 422:
127
- raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
128
- if _response.status_code == 500:
129
- raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
130
- try:
131
- _response_json = _response.json()
132
- except JSONDecodeError:
133
- raise ApiError(status_code=_response.status_code, body=_response.text)
134
- raise ApiError(status_code=_response.status_code, body=_response_json)
135
-
136
-
137
- class AsyncGeneratorsClient:
138
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
139
- self._client_wrapper = client_wrapper
140
-
141
- async def generate(
142
- self,
143
- *,
144
- model: Model,
145
- response_format: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
146
- context: typing.Optional[str] = OMIT,
147
- messages: typing.Sequence[Message],
148
- settings: typing.Optional[Settings] = OMIT,
149
- request_options: typing.Optional[RequestOptions] = None,
150
- ) -> GenerationResponse:
151
- """
152
- Parameters:
153
- - model: Model.
154
-
155
- - response_format: typing.Optional[typing.Dict[str, typing.Any]].
156
-
157
- - context: typing.Optional[str].
158
-
159
- - messages: typing.Sequence[Message].
160
-
161
- - settings: typing.Optional[Settings].
162
-
163
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
164
- ---
165
- from mixpeek import Message, Model
166
- from mixpeek.client import AsyncMixpeek
167
-
168
- client = AsyncMixpeek(
169
- authorization="YOUR_AUTHORIZATION",
170
- index_id="YOUR_INDEX_ID",
171
- api_key="YOUR_API_KEY",
172
- )
173
- await client.generators.generate(
174
- model=Model(
175
- provider="provider",
176
- model="gpt-3.5-turbo",
177
- ),
178
- messages=[
179
- Message(
180
- role="role",
181
- content="content",
182
- )
183
- ],
184
- )
185
- """
186
- _request: typing.Dict[str, typing.Any] = {"model": model, "messages": messages}
187
- if response_format is not OMIT:
188
- _request["response_format"] = response_format
189
- if context is not OMIT:
190
- _request["context"] = context
191
- if settings is not OMIT:
192
- _request["settings"] = settings
193
- _response = await self._client_wrapper.httpx_client.request(
194
- "POST",
195
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "generate"),
196
- params=jsonable_encoder(
197
- request_options.get("additional_query_parameters") if request_options is not None else None
198
- ),
199
- json=jsonable_encoder(_request)
200
- if request_options is None or request_options.get("additional_body_parameters") is None
201
- else {
202
- **jsonable_encoder(_request),
203
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
204
- },
205
- headers=jsonable_encoder(
206
- remove_none_from_dict(
207
- {
208
- **self._client_wrapper.get_headers(),
209
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
210
- }
211
- )
212
- ),
213
- timeout=request_options.get("timeout_in_seconds")
214
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
215
- else self._client_wrapper.get_timeout(),
216
- retries=0,
217
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
218
- )
219
- if 200 <= _response.status_code < 300:
220
- return pydantic.parse_obj_as(GenerationResponse, _response.json()) # type: ignore
221
- if _response.status_code == 400:
222
- raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
223
- if _response.status_code == 401:
224
- raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
225
- if _response.status_code == 403:
226
- raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
227
- if _response.status_code == 404:
228
- raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
229
- if _response.status_code == 422:
230
- raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
231
- if _response.status_code == 500:
232
- raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
233
- try:
234
- _response_json = _response.json()
235
- except JSONDecodeError:
236
- raise ApiError(status_code=_response.status_code, body=_response.text)
237
- raise ApiError(status_code=_response.status_code, body=_response_json)