label-studio-sdk 1.0.7__py3-none-any.whl → 1.0.10__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.
Potentially problematic release.
This version of label-studio-sdk might be problematic. Click here for more details.
- label_studio_sdk/__init__.py +26 -7
- label_studio_sdk/_extensions/label_studio_tools/core/label_config.py +13 -4
- label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +16 -4
- label_studio_sdk/_extensions/label_studio_tools/core/utils/json_schema.py +86 -0
- label_studio_sdk/_extensions/pager_ext.py +8 -0
- label_studio_sdk/_legacy/schema/label_config_schema.json +42 -11
- label_studio_sdk/actions/client.py +91 -40
- label_studio_sdk/actions/types/actions_create_request_filters.py +14 -24
- label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +16 -26
- label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +3 -1
- label_studio_sdk/actions/types/actions_create_request_selected_items.py +1 -2
- label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +15 -25
- label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +15 -25
- label_studio_sdk/annotations/__init__.py +2 -2
- label_studio_sdk/annotations/client.py +278 -104
- label_studio_sdk/annotations/types/__init__.py +2 -1
- label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +34 -0
- label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +11 -21
- label_studio_sdk/base_client.py +46 -27
- label_studio_sdk/client.py +1 -0
- label_studio_sdk/comments/client.py +190 -44
- label_studio_sdk/converter/converter.py +66 -18
- label_studio_sdk/converter/imports/yolo.py +1 -1
- label_studio_sdk/converter/utils.py +3 -2
- label_studio_sdk/core/__init__.py +21 -4
- label_studio_sdk/core/client_wrapper.py +9 -10
- label_studio_sdk/core/file.py +37 -8
- label_studio_sdk/core/http_client.py +52 -28
- label_studio_sdk/core/jsonable_encoder.py +33 -31
- label_studio_sdk/core/pagination.py +5 -4
- label_studio_sdk/core/pydantic_utilities.py +272 -4
- label_studio_sdk/core/query_encoder.py +38 -13
- label_studio_sdk/core/request_options.py +3 -0
- label_studio_sdk/core/serialization.py +272 -0
- label_studio_sdk/errors/bad_request_error.py +2 -3
- label_studio_sdk/export_storage/azure/client.py +228 -58
- label_studio_sdk/export_storage/azure/types/azure_create_response.py +19 -29
- label_studio_sdk/export_storage/azure/types/azure_update_response.py +19 -29
- label_studio_sdk/export_storage/client.py +48 -18
- label_studio_sdk/export_storage/gcs/client.py +228 -58
- label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +19 -29
- label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +19 -29
- label_studio_sdk/export_storage/local/client.py +222 -56
- label_studio_sdk/export_storage/local/types/local_create_response.py +17 -27
- label_studio_sdk/export_storage/local/types/local_update_response.py +17 -27
- label_studio_sdk/export_storage/redis/client.py +228 -58
- label_studio_sdk/export_storage/redis/types/redis_create_response.py +20 -30
- label_studio_sdk/export_storage/redis/types/redis_update_response.py +20 -30
- label_studio_sdk/export_storage/s3/client.py +228 -58
- label_studio_sdk/export_storage/s3/types/s3create_response.py +27 -35
- label_studio_sdk/export_storage/s3/types/s3update_response.py +27 -35
- label_studio_sdk/export_storage/s3s/client.py +187 -43
- label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +11 -21
- label_studio_sdk/files/client.py +172 -56
- label_studio_sdk/import_storage/azure/client.py +223 -53
- label_studio_sdk/import_storage/azure/types/azure_create_response.py +22 -32
- label_studio_sdk/import_storage/azure/types/azure_update_response.py +22 -32
- label_studio_sdk/import_storage/client.py +48 -18
- label_studio_sdk/import_storage/gcs/client.py +223 -53
- label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +22 -32
- label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +22 -32
- label_studio_sdk/import_storage/local/client.py +223 -53
- label_studio_sdk/import_storage/local/types/local_create_response.py +17 -27
- label_studio_sdk/import_storage/local/types/local_update_response.py +17 -27
- label_studio_sdk/import_storage/redis/client.py +223 -53
- label_studio_sdk/import_storage/redis/types/redis_create_response.py +20 -30
- label_studio_sdk/import_storage/redis/types/redis_update_response.py +20 -30
- label_studio_sdk/import_storage/s3/client.py +223 -53
- label_studio_sdk/import_storage/s3/types/s3create_response.py +31 -39
- label_studio_sdk/import_storage/s3/types/s3update_response.py +31 -39
- label_studio_sdk/import_storage/s3s/client.py +222 -52
- label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +11 -21
- label_studio_sdk/label_interface/control_tags.py +205 -10
- label_studio_sdk/label_interface/interface.py +80 -6
- label_studio_sdk/label_interface/region.py +1 -10
- label_studio_sdk/ml/client.py +280 -78
- label_studio_sdk/ml/types/ml_create_response.py +21 -31
- label_studio_sdk/ml/types/ml_update_response.py +21 -31
- label_studio_sdk/model_providers/client.py +656 -21
- label_studio_sdk/predictions/client.py +247 -101
- label_studio_sdk/projects/__init__.py +3 -0
- label_studio_sdk/projects/client.py +309 -115
- label_studio_sdk/projects/client_ext.py +16 -0
- label_studio_sdk/projects/exports/__init__.py +3 -0
- label_studio_sdk/projects/exports/client.py +447 -296
- label_studio_sdk/projects/exports/client_ext.py +134 -0
- label_studio_sdk/projects/exports/types/__init__.py +6 -0
- label_studio_sdk/projects/exports/types/exports_convert_response.py +24 -0
- label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +44 -0
- label_studio_sdk/projects/types/projects_create_response.py +29 -34
- label_studio_sdk/projects/types/projects_import_tasks_response.py +19 -29
- label_studio_sdk/projects/types/projects_list_response.py +11 -21
- label_studio_sdk/projects/types/projects_update_response.py +24 -34
- label_studio_sdk/prompts/client.py +309 -92
- label_studio_sdk/prompts/indicators/client.py +67 -23
- label_studio_sdk/prompts/runs/client.py +95 -40
- label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +14 -24
- label_studio_sdk/prompts/types/prompts_batch_failed_predictions_response.py +11 -21
- label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +26 -29
- label_studio_sdk/prompts/types/prompts_batch_predictions_response.py +11 -21
- label_studio_sdk/prompts/versions/client.py +389 -75
- label_studio_sdk/tasks/client.py +263 -90
- label_studio_sdk/tasks/types/tasks_list_response.py +15 -25
- label_studio_sdk/types/__init__.py +16 -6
- label_studio_sdk/types/annotation.py +29 -38
- label_studio_sdk/types/annotation_filter_options.py +14 -24
- label_studio_sdk/types/annotations_dm_field.py +30 -39
- label_studio_sdk/types/azure_blob_export_storage.py +28 -37
- label_studio_sdk/types/azure_blob_import_storage.py +28 -37
- label_studio_sdk/types/base_task.py +30 -39
- label_studio_sdk/types/base_task_updated_by.py +3 -1
- label_studio_sdk/types/base_user.py +14 -21
- label_studio_sdk/types/comment.py +12 -21
- label_studio_sdk/types/comment_created_by.py +1 -1
- label_studio_sdk/types/converted_format.py +12 -22
- label_studio_sdk/types/data_manager_task_serializer.py +31 -40
- label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +1 -1
- label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +13 -22
- label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +15 -24
- label_studio_sdk/types/export.py +17 -26
- label_studio_sdk/types/export_format.py +25 -0
- label_studio_sdk/types/export_snapshot.py +45 -0
- label_studio_sdk/types/export_snapshot_status.py +5 -0
- label_studio_sdk/types/file_upload.py +11 -21
- label_studio_sdk/types/filter.py +16 -26
- label_studio_sdk/types/filter_group.py +12 -22
- label_studio_sdk/types/gcs_export_storage.py +28 -37
- label_studio_sdk/types/gcs_import_storage.py +28 -37
- label_studio_sdk/types/inference_run.py +14 -23
- label_studio_sdk/types/inference_run_cost_estimate.py +47 -0
- label_studio_sdk/types/inference_run_created_by.py +1 -1
- label_studio_sdk/types/inference_run_organization.py +1 -1
- label_studio_sdk/types/key_indicator_value.py +12 -22
- label_studio_sdk/types/key_indicators.py +0 -1
- label_studio_sdk/types/key_indicators_item.py +15 -25
- label_studio_sdk/types/key_indicators_item_additional_kpis_item.py +13 -23
- label_studio_sdk/types/key_indicators_item_extra_kpis_item.py +13 -23
- label_studio_sdk/types/local_files_export_storage.py +25 -34
- label_studio_sdk/types/local_files_import_storage.py +24 -33
- label_studio_sdk/types/ml_backend.py +23 -32
- label_studio_sdk/types/model_provider_connection.py +47 -26
- label_studio_sdk/types/model_provider_connection_budget_reset_period.py +5 -0
- label_studio_sdk/types/model_provider_connection_created_by.py +1 -1
- label_studio_sdk/types/model_provider_connection_organization.py +1 -1
- label_studio_sdk/types/model_provider_connection_provider.py +3 -1
- label_studio_sdk/types/prediction.py +21 -30
- label_studio_sdk/types/project.py +48 -55
- label_studio_sdk/types/project_import.py +21 -30
- label_studio_sdk/types/project_label_config.py +12 -22
- label_studio_sdk/types/prompt.py +24 -32
- label_studio_sdk/types/prompt_associated_projects_item.py +6 -0
- label_studio_sdk/types/prompt_associated_projects_item_id.py +20 -0
- label_studio_sdk/types/prompt_created_by.py +1 -1
- label_studio_sdk/types/prompt_organization.py +1 -1
- label_studio_sdk/types/prompt_version.py +13 -22
- label_studio_sdk/types/prompt_version_created_by.py +1 -1
- label_studio_sdk/types/prompt_version_organization.py +1 -1
- label_studio_sdk/types/prompt_version_provider.py +3 -1
- label_studio_sdk/types/redis_export_storage.py +29 -38
- label_studio_sdk/types/redis_import_storage.py +28 -37
- label_studio_sdk/types/refined_prompt_response.py +19 -29
- label_studio_sdk/types/s3export_storage.py +36 -43
- label_studio_sdk/types/s3import_storage.py +37 -44
- label_studio_sdk/types/s3s_export_storage.py +26 -33
- label_studio_sdk/types/s3s_import_storage.py +35 -42
- label_studio_sdk/types/serialization_option.py +12 -22
- label_studio_sdk/types/serialization_options.py +18 -28
- label_studio_sdk/types/task.py +46 -48
- label_studio_sdk/types/task_annotators_item.py +1 -1
- label_studio_sdk/types/task_comment_authors_item.py +5 -0
- label_studio_sdk/types/task_filter_options.py +15 -25
- label_studio_sdk/types/user_simple.py +11 -21
- label_studio_sdk/types/view.py +16 -26
- label_studio_sdk/types/webhook.py +19 -28
- label_studio_sdk/types/webhook_serializer_for_update.py +19 -28
- label_studio_sdk/types/workspace.py +22 -31
- label_studio_sdk/users/client.py +257 -63
- label_studio_sdk/users/types/users_get_token_response.py +12 -22
- label_studio_sdk/users/types/users_reset_token_response.py +12 -22
- label_studio_sdk/version.py +0 -1
- label_studio_sdk/versions/__init__.py +5 -0
- label_studio_sdk/versions/client.py +112 -0
- label_studio_sdk/versions/types/__init__.py +6 -0
- label_studio_sdk/versions/types/versions_get_response.py +73 -0
- label_studio_sdk/versions/types/versions_get_response_edition.py +5 -0
- label_studio_sdk/views/client.py +219 -52
- label_studio_sdk/views/types/views_create_request_data.py +13 -23
- label_studio_sdk/views/types/views_create_request_data_filters.py +14 -24
- label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +16 -26
- label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +3 -1
- label_studio_sdk/views/types/views_update_request_data.py +13 -23
- label_studio_sdk/views/types/views_update_request_data_filters.py +14 -24
- label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +16 -26
- label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +3 -1
- label_studio_sdk/webhooks/client.py +191 -61
- label_studio_sdk/workspaces/client.py +164 -41
- label_studio_sdk/workspaces/members/client.py +109 -31
- label_studio_sdk/workspaces/members/types/members_create_response.py +12 -22
- label_studio_sdk/workspaces/members/types/members_list_response_item.py +12 -22
- {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/METADATA +9 -5
- {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/RECORD +203 -186
- {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/WHEEL +1 -1
- label_studio_sdk/types/export_convert.py +0 -32
- label_studio_sdk/types/export_create.py +0 -54
- label_studio_sdk/types/export_create_status.py +0 -5
- {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/LICENSE +0 -0
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
import datetime as dt
|
|
4
3
|
import typing
|
|
5
|
-
from
|
|
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.pydantic_utilities import pydantic_v1
|
|
4
|
+
from ...core.client_wrapper import SyncClientWrapper
|
|
11
5
|
from ...core.request_options import RequestOptions
|
|
12
6
|
from ...types.prompt_version import PromptVersion
|
|
7
|
+
from ...core.jsonable_encoder import jsonable_encoder
|
|
8
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
9
|
+
from json.decoder import JSONDecodeError
|
|
10
|
+
from ...core.api_error import ApiError
|
|
11
|
+
from ...types.prompt_version_provider import PromptVersionProvider
|
|
13
12
|
from ...types.prompt_version_created_by import PromptVersionCreatedBy
|
|
13
|
+
import datetime as dt
|
|
14
14
|
from ...types.prompt_version_organization import PromptVersionOrganization
|
|
15
|
-
from ...
|
|
15
|
+
from ...core.serialization import convert_and_respect_annotation_metadata
|
|
16
|
+
from ...types.inference_run_cost_estimate import InferenceRunCostEstimate
|
|
16
17
|
from ...types.refined_prompt_response import RefinedPromptResponse
|
|
18
|
+
from ...core.client_wrapper import AsyncClientWrapper
|
|
17
19
|
|
|
18
20
|
# this is used as the default value for optional parameters
|
|
19
21
|
OMIT = typing.cast(typing.Any, ...)
|
|
@@ -42,7 +44,7 @@ class VersionsClient:
|
|
|
42
44
|
|
|
43
45
|
Examples
|
|
44
46
|
--------
|
|
45
|
-
from label_studio_sdk
|
|
47
|
+
from label_studio_sdk import LabelStudio
|
|
46
48
|
|
|
47
49
|
client = LabelStudio(
|
|
48
50
|
api_key="YOUR_API_KEY",
|
|
@@ -52,11 +54,19 @@ class VersionsClient:
|
|
|
52
54
|
)
|
|
53
55
|
"""
|
|
54
56
|
_response = self._client_wrapper.httpx_client.request(
|
|
55
|
-
f"api/prompts/{jsonable_encoder(id)}/versions",
|
|
57
|
+
f"api/prompts/{jsonable_encoder(id)}/versions",
|
|
58
|
+
method="GET",
|
|
59
|
+
request_options=request_options,
|
|
56
60
|
)
|
|
57
61
|
try:
|
|
58
62
|
if 200 <= _response.status_code < 300:
|
|
59
|
-
return
|
|
63
|
+
return typing.cast(
|
|
64
|
+
typing.List[PromptVersion],
|
|
65
|
+
parse_obj_as(
|
|
66
|
+
type_=typing.List[PromptVersion], # type: ignore
|
|
67
|
+
object_=_response.json(),
|
|
68
|
+
),
|
|
69
|
+
)
|
|
60
70
|
_response_json = _response.json()
|
|
61
71
|
except JSONDecodeError:
|
|
62
72
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -116,7 +126,7 @@ class VersionsClient:
|
|
|
116
126
|
|
|
117
127
|
Examples
|
|
118
128
|
--------
|
|
119
|
-
from label_studio_sdk
|
|
129
|
+
from label_studio_sdk import LabelStudio
|
|
120
130
|
|
|
121
131
|
client = LabelStudio(
|
|
122
132
|
api_key="YOUR_API_KEY",
|
|
@@ -135,17 +145,27 @@ class VersionsClient:
|
|
|
135
145
|
"prompt": prompt,
|
|
136
146
|
"provider": provider,
|
|
137
147
|
"provider_model_id": provider_model_id,
|
|
138
|
-
"created_by":
|
|
148
|
+
"created_by": convert_and_respect_annotation_metadata(
|
|
149
|
+
object_=created_by, annotation=PromptVersionCreatedBy, direction="write"
|
|
150
|
+
),
|
|
139
151
|
"created_at": created_at,
|
|
140
152
|
"updated_at": updated_at,
|
|
141
|
-
"organization":
|
|
153
|
+
"organization": convert_and_respect_annotation_metadata(
|
|
154
|
+
object_=organization, annotation=PromptVersionOrganization, direction="write"
|
|
155
|
+
),
|
|
142
156
|
},
|
|
143
157
|
request_options=request_options,
|
|
144
158
|
omit=OMIT,
|
|
145
159
|
)
|
|
146
160
|
try:
|
|
147
161
|
if 200 <= _response.status_code < 300:
|
|
148
|
-
return
|
|
162
|
+
return typing.cast(
|
|
163
|
+
PromptVersion,
|
|
164
|
+
parse_obj_as(
|
|
165
|
+
type_=PromptVersion, # type: ignore
|
|
166
|
+
object_=_response.json(),
|
|
167
|
+
),
|
|
168
|
+
)
|
|
149
169
|
_response_json = _response.json()
|
|
150
170
|
except JSONDecodeError:
|
|
151
171
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -175,7 +195,7 @@ class VersionsClient:
|
|
|
175
195
|
|
|
176
196
|
Examples
|
|
177
197
|
--------
|
|
178
|
-
from label_studio_sdk
|
|
198
|
+
from label_studio_sdk import LabelStudio
|
|
179
199
|
|
|
180
200
|
client = LabelStudio(
|
|
181
201
|
api_key="YOUR_API_KEY",
|
|
@@ -192,7 +212,13 @@ class VersionsClient:
|
|
|
192
212
|
)
|
|
193
213
|
try:
|
|
194
214
|
if 200 <= _response.status_code < 300:
|
|
195
|
-
return
|
|
215
|
+
return typing.cast(
|
|
216
|
+
PromptVersion,
|
|
217
|
+
parse_obj_as(
|
|
218
|
+
type_=PromptVersion, # type: ignore
|
|
219
|
+
object_=_response.json(),
|
|
220
|
+
),
|
|
221
|
+
)
|
|
196
222
|
_response_json = _response.json()
|
|
197
223
|
except JSONDecodeError:
|
|
198
224
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -219,7 +245,7 @@ class VersionsClient:
|
|
|
219
245
|
|
|
220
246
|
Examples
|
|
221
247
|
--------
|
|
222
|
-
from label_studio_sdk
|
|
248
|
+
from label_studio_sdk import LabelStudio
|
|
223
249
|
|
|
224
250
|
client = LabelStudio(
|
|
225
251
|
api_key="YOUR_API_KEY",
|
|
@@ -300,7 +326,7 @@ class VersionsClient:
|
|
|
300
326
|
|
|
301
327
|
Examples
|
|
302
328
|
--------
|
|
303
|
-
from label_studio_sdk
|
|
329
|
+
from label_studio_sdk import LabelStudio
|
|
304
330
|
|
|
305
331
|
client = LabelStudio(
|
|
306
332
|
api_key="YOUR_API_KEY",
|
|
@@ -320,17 +346,98 @@ class VersionsClient:
|
|
|
320
346
|
"prompt": prompt,
|
|
321
347
|
"provider": provider,
|
|
322
348
|
"provider_model_id": provider_model_id,
|
|
323
|
-
"created_by":
|
|
349
|
+
"created_by": convert_and_respect_annotation_metadata(
|
|
350
|
+
object_=created_by, annotation=PromptVersionCreatedBy, direction="write"
|
|
351
|
+
),
|
|
324
352
|
"created_at": created_at,
|
|
325
353
|
"updated_at": updated_at,
|
|
326
|
-
"organization":
|
|
354
|
+
"organization": convert_and_respect_annotation_metadata(
|
|
355
|
+
object_=organization, annotation=PromptVersionOrganization, direction="write"
|
|
356
|
+
),
|
|
327
357
|
},
|
|
328
358
|
request_options=request_options,
|
|
329
359
|
omit=OMIT,
|
|
330
360
|
)
|
|
331
361
|
try:
|
|
332
362
|
if 200 <= _response.status_code < 300:
|
|
333
|
-
return
|
|
363
|
+
return typing.cast(
|
|
364
|
+
PromptVersion,
|
|
365
|
+
parse_obj_as(
|
|
366
|
+
type_=PromptVersion, # type: ignore
|
|
367
|
+
object_=_response.json(),
|
|
368
|
+
),
|
|
369
|
+
)
|
|
370
|
+
_response_json = _response.json()
|
|
371
|
+
except JSONDecodeError:
|
|
372
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
373
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
374
|
+
|
|
375
|
+
def cost_estimate(
|
|
376
|
+
self,
|
|
377
|
+
prompt_id: int,
|
|
378
|
+
version_id: int,
|
|
379
|
+
*,
|
|
380
|
+
project_id: int,
|
|
381
|
+
project_subset: int,
|
|
382
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
383
|
+
) -> InferenceRunCostEstimate:
|
|
384
|
+
"""
|
|
385
|
+
Get cost estimate for running a prompt version on a particular project/subset
|
|
386
|
+
|
|
387
|
+
Parameters
|
|
388
|
+
----------
|
|
389
|
+
prompt_id : int
|
|
390
|
+
Prompt ID
|
|
391
|
+
|
|
392
|
+
version_id : int
|
|
393
|
+
Prompt Version ID
|
|
394
|
+
|
|
395
|
+
project_id : int
|
|
396
|
+
ID of the project to get an estimate for running on
|
|
397
|
+
|
|
398
|
+
project_subset : int
|
|
399
|
+
Subset of the project to get an estimate for running on (e.g. 'All', 'Sample', or 'HasGT')
|
|
400
|
+
|
|
401
|
+
request_options : typing.Optional[RequestOptions]
|
|
402
|
+
Request-specific configuration.
|
|
403
|
+
|
|
404
|
+
Returns
|
|
405
|
+
-------
|
|
406
|
+
InferenceRunCostEstimate
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
Examples
|
|
410
|
+
--------
|
|
411
|
+
from label_studio_sdk import LabelStudio
|
|
412
|
+
|
|
413
|
+
client = LabelStudio(
|
|
414
|
+
api_key="YOUR_API_KEY",
|
|
415
|
+
)
|
|
416
|
+
client.prompts.versions.cost_estimate(
|
|
417
|
+
prompt_id=1,
|
|
418
|
+
version_id=1,
|
|
419
|
+
project_id=1,
|
|
420
|
+
project_subset=1,
|
|
421
|
+
)
|
|
422
|
+
"""
|
|
423
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
424
|
+
f"api/prompts/{jsonable_encoder(prompt_id)}/versions/{jsonable_encoder(version_id)}/cost-estimate",
|
|
425
|
+
method="POST",
|
|
426
|
+
params={
|
|
427
|
+
"project_id": project_id,
|
|
428
|
+
"project_subset": project_subset,
|
|
429
|
+
},
|
|
430
|
+
request_options=request_options,
|
|
431
|
+
)
|
|
432
|
+
try:
|
|
433
|
+
if 200 <= _response.status_code < 300:
|
|
434
|
+
return typing.cast(
|
|
435
|
+
InferenceRunCostEstimate,
|
|
436
|
+
parse_obj_as(
|
|
437
|
+
type_=InferenceRunCostEstimate, # type: ignore
|
|
438
|
+
object_=_response.json(),
|
|
439
|
+
),
|
|
440
|
+
)
|
|
334
441
|
_response_json = _response.json()
|
|
335
442
|
except JSONDecodeError:
|
|
336
443
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -368,7 +475,7 @@ class VersionsClient:
|
|
|
368
475
|
|
|
369
476
|
Examples
|
|
370
477
|
--------
|
|
371
|
-
from label_studio_sdk
|
|
478
|
+
from label_studio_sdk import LabelStudio
|
|
372
479
|
|
|
373
480
|
client = LabelStudio(
|
|
374
481
|
api_key="YOUR_API_KEY",
|
|
@@ -382,12 +489,20 @@ class VersionsClient:
|
|
|
382
489
|
_response = self._client_wrapper.httpx_client.request(
|
|
383
490
|
f"api/prompts/{jsonable_encoder(prompt_id)}/versions/{jsonable_encoder(version_id)}/refine",
|
|
384
491
|
method="GET",
|
|
385
|
-
params={
|
|
492
|
+
params={
|
|
493
|
+
"refinement_job_id": refinement_job_id,
|
|
494
|
+
},
|
|
386
495
|
request_options=request_options,
|
|
387
496
|
)
|
|
388
497
|
try:
|
|
389
498
|
if 200 <= _response.status_code < 300:
|
|
390
|
-
return
|
|
499
|
+
return typing.cast(
|
|
500
|
+
RefinedPromptResponse,
|
|
501
|
+
parse_obj_as(
|
|
502
|
+
type_=RefinedPromptResponse, # type: ignore
|
|
503
|
+
object_=_response.json(),
|
|
504
|
+
),
|
|
505
|
+
)
|
|
391
506
|
_response_json = _response.json()
|
|
392
507
|
except JSONDecodeError:
|
|
393
508
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -437,7 +552,7 @@ class VersionsClient:
|
|
|
437
552
|
|
|
438
553
|
Examples
|
|
439
554
|
--------
|
|
440
|
-
from label_studio_sdk
|
|
555
|
+
from label_studio_sdk import LabelStudio
|
|
441
556
|
|
|
442
557
|
client = LabelStudio(
|
|
443
558
|
api_key="YOUR_API_KEY",
|
|
@@ -450,18 +565,29 @@ class VersionsClient:
|
|
|
450
565
|
_response = self._client_wrapper.httpx_client.request(
|
|
451
566
|
f"api/prompts/{jsonable_encoder(prompt_id)}/versions/{jsonable_encoder(version_id)}/refine",
|
|
452
567
|
method="POST",
|
|
453
|
-
params={
|
|
568
|
+
params={
|
|
569
|
+
"async": async_,
|
|
570
|
+
},
|
|
454
571
|
json={
|
|
455
572
|
"teacher_model_provider_connection_id": teacher_model_provider_connection_id,
|
|
456
573
|
"teacher_model_name": teacher_model_name,
|
|
457
574
|
"project_id": project_id,
|
|
458
575
|
},
|
|
576
|
+
headers={
|
|
577
|
+
"content-type": "application/json",
|
|
578
|
+
},
|
|
459
579
|
request_options=request_options,
|
|
460
580
|
omit=OMIT,
|
|
461
581
|
)
|
|
462
582
|
try:
|
|
463
583
|
if 200 <= _response.status_code < 300:
|
|
464
|
-
return
|
|
584
|
+
return typing.cast(
|
|
585
|
+
RefinedPromptResponse,
|
|
586
|
+
parse_obj_as(
|
|
587
|
+
type_=RefinedPromptResponse, # type: ignore
|
|
588
|
+
object_=_response.json(),
|
|
589
|
+
),
|
|
590
|
+
)
|
|
465
591
|
_response_json = _response.json()
|
|
466
592
|
except JSONDecodeError:
|
|
467
593
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -493,21 +619,37 @@ class AsyncVersionsClient:
|
|
|
493
619
|
|
|
494
620
|
Examples
|
|
495
621
|
--------
|
|
496
|
-
|
|
622
|
+
import asyncio
|
|
623
|
+
|
|
624
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
497
625
|
|
|
498
626
|
client = AsyncLabelStudio(
|
|
499
627
|
api_key="YOUR_API_KEY",
|
|
500
628
|
)
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
)
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
async def main() -> None:
|
|
632
|
+
await client.prompts.versions.list(
|
|
633
|
+
id=1,
|
|
634
|
+
)
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
asyncio.run(main())
|
|
504
638
|
"""
|
|
505
639
|
_response = await self._client_wrapper.httpx_client.request(
|
|
506
|
-
f"api/prompts/{jsonable_encoder(id)}/versions",
|
|
640
|
+
f"api/prompts/{jsonable_encoder(id)}/versions",
|
|
641
|
+
method="GET",
|
|
642
|
+
request_options=request_options,
|
|
507
643
|
)
|
|
508
644
|
try:
|
|
509
645
|
if 200 <= _response.status_code < 300:
|
|
510
|
-
return
|
|
646
|
+
return typing.cast(
|
|
647
|
+
typing.List[PromptVersion],
|
|
648
|
+
parse_obj_as(
|
|
649
|
+
type_=typing.List[PromptVersion], # type: ignore
|
|
650
|
+
object_=_response.json(),
|
|
651
|
+
),
|
|
652
|
+
)
|
|
511
653
|
_response_json = _response.json()
|
|
512
654
|
except JSONDecodeError:
|
|
513
655
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -567,14 +709,22 @@ class AsyncVersionsClient:
|
|
|
567
709
|
|
|
568
710
|
Examples
|
|
569
711
|
--------
|
|
570
|
-
|
|
712
|
+
import asyncio
|
|
713
|
+
|
|
714
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
571
715
|
|
|
572
716
|
client = AsyncLabelStudio(
|
|
573
717
|
api_key="YOUR_API_KEY",
|
|
574
718
|
)
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
)
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
async def main() -> None:
|
|
722
|
+
await client.prompts.versions.create(
|
|
723
|
+
id=1,
|
|
724
|
+
)
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
asyncio.run(main())
|
|
578
728
|
"""
|
|
579
729
|
_response = await self._client_wrapper.httpx_client.request(
|
|
580
730
|
f"api/prompts/{jsonable_encoder(id)}/versions",
|
|
@@ -586,17 +736,27 @@ class AsyncVersionsClient:
|
|
|
586
736
|
"prompt": prompt,
|
|
587
737
|
"provider": provider,
|
|
588
738
|
"provider_model_id": provider_model_id,
|
|
589
|
-
"created_by":
|
|
739
|
+
"created_by": convert_and_respect_annotation_metadata(
|
|
740
|
+
object_=created_by, annotation=PromptVersionCreatedBy, direction="write"
|
|
741
|
+
),
|
|
590
742
|
"created_at": created_at,
|
|
591
743
|
"updated_at": updated_at,
|
|
592
|
-
"organization":
|
|
744
|
+
"organization": convert_and_respect_annotation_metadata(
|
|
745
|
+
object_=organization, annotation=PromptVersionOrganization, direction="write"
|
|
746
|
+
),
|
|
593
747
|
},
|
|
594
748
|
request_options=request_options,
|
|
595
749
|
omit=OMIT,
|
|
596
750
|
)
|
|
597
751
|
try:
|
|
598
752
|
if 200 <= _response.status_code < 300:
|
|
599
|
-
return
|
|
753
|
+
return typing.cast(
|
|
754
|
+
PromptVersion,
|
|
755
|
+
parse_obj_as(
|
|
756
|
+
type_=PromptVersion, # type: ignore
|
|
757
|
+
object_=_response.json(),
|
|
758
|
+
),
|
|
759
|
+
)
|
|
600
760
|
_response_json = _response.json()
|
|
601
761
|
except JSONDecodeError:
|
|
602
762
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -626,15 +786,23 @@ class AsyncVersionsClient:
|
|
|
626
786
|
|
|
627
787
|
Examples
|
|
628
788
|
--------
|
|
629
|
-
|
|
789
|
+
import asyncio
|
|
790
|
+
|
|
791
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
630
792
|
|
|
631
793
|
client = AsyncLabelStudio(
|
|
632
794
|
api_key="YOUR_API_KEY",
|
|
633
795
|
)
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
async def main() -> None:
|
|
799
|
+
await client.prompts.versions.get(
|
|
800
|
+
id=1,
|
|
801
|
+
version_id=1,
|
|
802
|
+
)
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
asyncio.run(main())
|
|
638
806
|
"""
|
|
639
807
|
_response = await self._client_wrapper.httpx_client.request(
|
|
640
808
|
f"api/prompts/{jsonable_encoder(id)}/versions/{jsonable_encoder(version_id)}",
|
|
@@ -643,7 +811,13 @@ class AsyncVersionsClient:
|
|
|
643
811
|
)
|
|
644
812
|
try:
|
|
645
813
|
if 200 <= _response.status_code < 300:
|
|
646
|
-
return
|
|
814
|
+
return typing.cast(
|
|
815
|
+
PromptVersion,
|
|
816
|
+
parse_obj_as(
|
|
817
|
+
type_=PromptVersion, # type: ignore
|
|
818
|
+
object_=_response.json(),
|
|
819
|
+
),
|
|
820
|
+
)
|
|
647
821
|
_response_json = _response.json()
|
|
648
822
|
except JSONDecodeError:
|
|
649
823
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -672,15 +846,23 @@ class AsyncVersionsClient:
|
|
|
672
846
|
|
|
673
847
|
Examples
|
|
674
848
|
--------
|
|
675
|
-
|
|
849
|
+
import asyncio
|
|
850
|
+
|
|
851
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
676
852
|
|
|
677
853
|
client = AsyncLabelStudio(
|
|
678
854
|
api_key="YOUR_API_KEY",
|
|
679
855
|
)
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
async def main() -> None:
|
|
859
|
+
await client.prompts.versions.delete(
|
|
860
|
+
id=1,
|
|
861
|
+
version_id=1,
|
|
862
|
+
)
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
asyncio.run(main())
|
|
684
866
|
"""
|
|
685
867
|
_response = await self._client_wrapper.httpx_client.request(
|
|
686
868
|
f"api/prompts/{jsonable_encoder(id)}/versions/{jsonable_encoder(version_id)}",
|
|
@@ -753,15 +935,23 @@ class AsyncVersionsClient:
|
|
|
753
935
|
|
|
754
936
|
Examples
|
|
755
937
|
--------
|
|
756
|
-
|
|
938
|
+
import asyncio
|
|
939
|
+
|
|
940
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
757
941
|
|
|
758
942
|
client = AsyncLabelStudio(
|
|
759
943
|
api_key="YOUR_API_KEY",
|
|
760
944
|
)
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
async def main() -> None:
|
|
948
|
+
await client.prompts.versions.update(
|
|
949
|
+
id=1,
|
|
950
|
+
version_id=1,
|
|
951
|
+
)
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
asyncio.run(main())
|
|
765
955
|
"""
|
|
766
956
|
_response = await self._client_wrapper.httpx_client.request(
|
|
767
957
|
f"api/prompts/{jsonable_encoder(id)}/versions/{jsonable_encoder(version_id)}",
|
|
@@ -773,17 +963,106 @@ class AsyncVersionsClient:
|
|
|
773
963
|
"prompt": prompt,
|
|
774
964
|
"provider": provider,
|
|
775
965
|
"provider_model_id": provider_model_id,
|
|
776
|
-
"created_by":
|
|
966
|
+
"created_by": convert_and_respect_annotation_metadata(
|
|
967
|
+
object_=created_by, annotation=PromptVersionCreatedBy, direction="write"
|
|
968
|
+
),
|
|
777
969
|
"created_at": created_at,
|
|
778
970
|
"updated_at": updated_at,
|
|
779
|
-
"organization":
|
|
971
|
+
"organization": convert_and_respect_annotation_metadata(
|
|
972
|
+
object_=organization, annotation=PromptVersionOrganization, direction="write"
|
|
973
|
+
),
|
|
780
974
|
},
|
|
781
975
|
request_options=request_options,
|
|
782
976
|
omit=OMIT,
|
|
783
977
|
)
|
|
784
978
|
try:
|
|
785
979
|
if 200 <= _response.status_code < 300:
|
|
786
|
-
return
|
|
980
|
+
return typing.cast(
|
|
981
|
+
PromptVersion,
|
|
982
|
+
parse_obj_as(
|
|
983
|
+
type_=PromptVersion, # type: ignore
|
|
984
|
+
object_=_response.json(),
|
|
985
|
+
),
|
|
986
|
+
)
|
|
987
|
+
_response_json = _response.json()
|
|
988
|
+
except JSONDecodeError:
|
|
989
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
990
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
991
|
+
|
|
992
|
+
async def cost_estimate(
|
|
993
|
+
self,
|
|
994
|
+
prompt_id: int,
|
|
995
|
+
version_id: int,
|
|
996
|
+
*,
|
|
997
|
+
project_id: int,
|
|
998
|
+
project_subset: int,
|
|
999
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1000
|
+
) -> InferenceRunCostEstimate:
|
|
1001
|
+
"""
|
|
1002
|
+
Get cost estimate for running a prompt version on a particular project/subset
|
|
1003
|
+
|
|
1004
|
+
Parameters
|
|
1005
|
+
----------
|
|
1006
|
+
prompt_id : int
|
|
1007
|
+
Prompt ID
|
|
1008
|
+
|
|
1009
|
+
version_id : int
|
|
1010
|
+
Prompt Version ID
|
|
1011
|
+
|
|
1012
|
+
project_id : int
|
|
1013
|
+
ID of the project to get an estimate for running on
|
|
1014
|
+
|
|
1015
|
+
project_subset : int
|
|
1016
|
+
Subset of the project to get an estimate for running on (e.g. 'All', 'Sample', or 'HasGT')
|
|
1017
|
+
|
|
1018
|
+
request_options : typing.Optional[RequestOptions]
|
|
1019
|
+
Request-specific configuration.
|
|
1020
|
+
|
|
1021
|
+
Returns
|
|
1022
|
+
-------
|
|
1023
|
+
InferenceRunCostEstimate
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
Examples
|
|
1027
|
+
--------
|
|
1028
|
+
import asyncio
|
|
1029
|
+
|
|
1030
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
1031
|
+
|
|
1032
|
+
client = AsyncLabelStudio(
|
|
1033
|
+
api_key="YOUR_API_KEY",
|
|
1034
|
+
)
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
async def main() -> None:
|
|
1038
|
+
await client.prompts.versions.cost_estimate(
|
|
1039
|
+
prompt_id=1,
|
|
1040
|
+
version_id=1,
|
|
1041
|
+
project_id=1,
|
|
1042
|
+
project_subset=1,
|
|
1043
|
+
)
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
asyncio.run(main())
|
|
1047
|
+
"""
|
|
1048
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1049
|
+
f"api/prompts/{jsonable_encoder(prompt_id)}/versions/{jsonable_encoder(version_id)}/cost-estimate",
|
|
1050
|
+
method="POST",
|
|
1051
|
+
params={
|
|
1052
|
+
"project_id": project_id,
|
|
1053
|
+
"project_subset": project_subset,
|
|
1054
|
+
},
|
|
1055
|
+
request_options=request_options,
|
|
1056
|
+
)
|
|
1057
|
+
try:
|
|
1058
|
+
if 200 <= _response.status_code < 300:
|
|
1059
|
+
return typing.cast(
|
|
1060
|
+
InferenceRunCostEstimate,
|
|
1061
|
+
parse_obj_as(
|
|
1062
|
+
type_=InferenceRunCostEstimate, # type: ignore
|
|
1063
|
+
object_=_response.json(),
|
|
1064
|
+
),
|
|
1065
|
+
)
|
|
787
1066
|
_response_json = _response.json()
|
|
788
1067
|
except JSONDecodeError:
|
|
789
1068
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -821,26 +1100,42 @@ class AsyncVersionsClient:
|
|
|
821
1100
|
|
|
822
1101
|
Examples
|
|
823
1102
|
--------
|
|
824
|
-
|
|
1103
|
+
import asyncio
|
|
1104
|
+
|
|
1105
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
825
1106
|
|
|
826
1107
|
client = AsyncLabelStudio(
|
|
827
1108
|
api_key="YOUR_API_KEY",
|
|
828
1109
|
)
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
async def main() -> None:
|
|
1113
|
+
await client.prompts.versions.get_refined_prompt(
|
|
1114
|
+
prompt_id=1,
|
|
1115
|
+
version_id=1,
|
|
1116
|
+
refinement_job_id="refinement_job_id",
|
|
1117
|
+
)
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
asyncio.run(main())
|
|
834
1121
|
"""
|
|
835
1122
|
_response = await self._client_wrapper.httpx_client.request(
|
|
836
1123
|
f"api/prompts/{jsonable_encoder(prompt_id)}/versions/{jsonable_encoder(version_id)}/refine",
|
|
837
1124
|
method="GET",
|
|
838
|
-
params={
|
|
1125
|
+
params={
|
|
1126
|
+
"refinement_job_id": refinement_job_id,
|
|
1127
|
+
},
|
|
839
1128
|
request_options=request_options,
|
|
840
1129
|
)
|
|
841
1130
|
try:
|
|
842
1131
|
if 200 <= _response.status_code < 300:
|
|
843
|
-
return
|
|
1132
|
+
return typing.cast(
|
|
1133
|
+
RefinedPromptResponse,
|
|
1134
|
+
parse_obj_as(
|
|
1135
|
+
type_=RefinedPromptResponse, # type: ignore
|
|
1136
|
+
object_=_response.json(),
|
|
1137
|
+
),
|
|
1138
|
+
)
|
|
844
1139
|
_response_json = _response.json()
|
|
845
1140
|
except JSONDecodeError:
|
|
846
1141
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -890,31 +1185,50 @@ class AsyncVersionsClient:
|
|
|
890
1185
|
|
|
891
1186
|
Examples
|
|
892
1187
|
--------
|
|
893
|
-
|
|
1188
|
+
import asyncio
|
|
1189
|
+
|
|
1190
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
894
1191
|
|
|
895
1192
|
client = AsyncLabelStudio(
|
|
896
1193
|
api_key="YOUR_API_KEY",
|
|
897
1194
|
)
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
async def main() -> None:
|
|
1198
|
+
await client.prompts.versions.refine_prompt(
|
|
1199
|
+
prompt_id=1,
|
|
1200
|
+
version_id=1,
|
|
1201
|
+
)
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
asyncio.run(main())
|
|
902
1205
|
"""
|
|
903
1206
|
_response = await self._client_wrapper.httpx_client.request(
|
|
904
1207
|
f"api/prompts/{jsonable_encoder(prompt_id)}/versions/{jsonable_encoder(version_id)}/refine",
|
|
905
1208
|
method="POST",
|
|
906
|
-
params={
|
|
1209
|
+
params={
|
|
1210
|
+
"async": async_,
|
|
1211
|
+
},
|
|
907
1212
|
json={
|
|
908
1213
|
"teacher_model_provider_connection_id": teacher_model_provider_connection_id,
|
|
909
1214
|
"teacher_model_name": teacher_model_name,
|
|
910
1215
|
"project_id": project_id,
|
|
911
1216
|
},
|
|
1217
|
+
headers={
|
|
1218
|
+
"content-type": "application/json",
|
|
1219
|
+
},
|
|
912
1220
|
request_options=request_options,
|
|
913
1221
|
omit=OMIT,
|
|
914
1222
|
)
|
|
915
1223
|
try:
|
|
916
1224
|
if 200 <= _response.status_code < 300:
|
|
917
|
-
return
|
|
1225
|
+
return typing.cast(
|
|
1226
|
+
RefinedPromptResponse,
|
|
1227
|
+
parse_obj_as(
|
|
1228
|
+
type_=RefinedPromptResponse, # type: ignore
|
|
1229
|
+
object_=_response.json(),
|
|
1230
|
+
),
|
|
1231
|
+
)
|
|
918
1232
|
_response_json = _response.json()
|
|
919
1233
|
except JSONDecodeError:
|
|
920
1234
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|