codemie-sdk-python 0.1.92__py3-none-any.whl → 0.1.258__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 codemie-sdk-python might be problematic. Click here for more details.
- codemie_sdk/__init__.py +114 -2
- codemie_sdk/auth/credentials.py +5 -4
- codemie_sdk/client/client.py +66 -5
- codemie_sdk/models/assistant.py +111 -8
- codemie_sdk/models/conversation.py +169 -0
- codemie_sdk/models/datasource.py +80 -1
- codemie_sdk/models/file_operation.py +25 -0
- codemie_sdk/models/integration.py +3 -1
- codemie_sdk/models/vendor_assistant.py +187 -0
- codemie_sdk/models/vendor_guardrail.py +152 -0
- codemie_sdk/models/vendor_knowledgebase.py +151 -0
- codemie_sdk/models/vendor_workflow.py +145 -0
- codemie_sdk/models/workflow.py +1 -1
- codemie_sdk/models/workflow_execution_payload.py +21 -0
- codemie_sdk/models/workflow_state.py +6 -3
- codemie_sdk/models/workflow_thoughts.py +26 -0
- codemie_sdk/services/assistant.py +220 -1
- codemie_sdk/services/conversation.py +90 -0
- codemie_sdk/services/datasource.py +67 -0
- codemie_sdk/services/files.py +82 -0
- codemie_sdk/services/vendor_assistant.py +364 -0
- codemie_sdk/services/vendor_guardrail.py +375 -0
- codemie_sdk/services/vendor_knowledgebase.py +270 -0
- codemie_sdk/services/vendor_workflow.py +330 -0
- codemie_sdk/services/webhook.py +41 -0
- codemie_sdk/services/workflow.py +26 -2
- codemie_sdk/services/workflow_execution.py +54 -6
- codemie_sdk/utils/http.py +43 -16
- codemie_sdk_python-0.1.258.dist-info/METADATA +1404 -0
- codemie_sdk_python-0.1.258.dist-info/RECORD +45 -0
- codemie_sdk_python-0.1.92.dist-info/METADATA +0 -892
- codemie_sdk_python-0.1.92.dist-info/RECORD +0 -30
- {codemie_sdk_python-0.1.92.dist-info → codemie_sdk_python-0.1.258.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"""Vendor guardrail service implementation for managing cloud vendor guardrail settings."""
|
|
2
|
+
|
|
3
|
+
from typing import Union, Optional, List
|
|
4
|
+
|
|
5
|
+
from ..models.vendor_assistant import VendorType
|
|
6
|
+
from ..models.vendor_guardrail import (
|
|
7
|
+
VendorGuardrailSettingsResponse,
|
|
8
|
+
VendorGuardrailsResponse,
|
|
9
|
+
VendorGuardrail,
|
|
10
|
+
VendorGuardrailVersion,
|
|
11
|
+
VendorGuardrailVersionsResponse,
|
|
12
|
+
VendorGuardrailInstallRequest,
|
|
13
|
+
VendorGuardrailInstallResponse,
|
|
14
|
+
VendorGuardrailUninstallResponse,
|
|
15
|
+
)
|
|
16
|
+
from ..utils import ApiRequestHandler
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class VendorGuardrailService:
|
|
20
|
+
"""Service for managing cloud vendor guardrail settings (AWS, Azure, GCP)."""
|
|
21
|
+
|
|
22
|
+
def __init__(self, api_domain: str, token: str, verify_ssl: bool = True):
|
|
23
|
+
"""Initialize the vendor guardrail service.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
api_domain: Base URL for the CodeMie API
|
|
27
|
+
token: Authentication token
|
|
28
|
+
verify_ssl: Whether to verify SSL certificates
|
|
29
|
+
"""
|
|
30
|
+
self._api = ApiRequestHandler(api_domain, token, verify_ssl)
|
|
31
|
+
|
|
32
|
+
def get_guardrail_settings(
|
|
33
|
+
self,
|
|
34
|
+
vendor: Union[VendorType, str],
|
|
35
|
+
page: int = 0,
|
|
36
|
+
per_page: int = 10,
|
|
37
|
+
) -> VendorGuardrailSettingsResponse:
|
|
38
|
+
"""Get guardrail settings for a specific cloud vendor.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
42
|
+
page: Page number for pagination (0-based)
|
|
43
|
+
per_page: Number of items per page
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
VendorGuardrailSettingsResponse containing list of settings and pagination info
|
|
47
|
+
|
|
48
|
+
Example:
|
|
49
|
+
>>> # Using enum
|
|
50
|
+
>>> settings = client.vendor_guardrails.get_guardrail_settings(VendorType.AWS, page=0, per_page=10)
|
|
51
|
+
>>> # Using string
|
|
52
|
+
>>> settings = client.vendor_guardrails.get_guardrail_settings("aws", page=0, per_page=10)
|
|
53
|
+
>>> # Access settings data
|
|
54
|
+
>>> for setting in settings.data:
|
|
55
|
+
... print(f"Setting: {setting.setting_name}, Project: {setting.project}")
|
|
56
|
+
... if setting.invalid:
|
|
57
|
+
... print(f"Error: {setting.error}")
|
|
58
|
+
"""
|
|
59
|
+
# Convert enum to string value if needed
|
|
60
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
61
|
+
|
|
62
|
+
params = {
|
|
63
|
+
"page": page,
|
|
64
|
+
"per_page": per_page,
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return self._api.get(
|
|
68
|
+
f"/v1/vendors/{vendor_str}/guardrails/settings",
|
|
69
|
+
VendorGuardrailSettingsResponse,
|
|
70
|
+
params=params,
|
|
71
|
+
wrap_response=False,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def get_guardrails(
|
|
75
|
+
self,
|
|
76
|
+
vendor: Union[VendorType, str],
|
|
77
|
+
setting_id: str,
|
|
78
|
+
per_page: int = 10,
|
|
79
|
+
next_token: Optional[str] = None,
|
|
80
|
+
) -> VendorGuardrailsResponse:
|
|
81
|
+
"""Get guardrails for a specific vendor setting.
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
85
|
+
setting_id: ID of the vendor setting to retrieve guardrails for
|
|
86
|
+
per_page: Number of items per page
|
|
87
|
+
next_token: Token for pagination (optional, for retrieving next page)
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
VendorGuardrailsResponse containing list of guardrails and pagination token
|
|
91
|
+
|
|
92
|
+
Example:
|
|
93
|
+
>>> # Get first page
|
|
94
|
+
>>> guardrails = client.vendor_guardrails.get_guardrails(
|
|
95
|
+
... vendor=VendorType.AWS,
|
|
96
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c",
|
|
97
|
+
... per_page=8
|
|
98
|
+
... )
|
|
99
|
+
>>> # Access guardrail data
|
|
100
|
+
>>> for guardrail in guardrails.data:
|
|
101
|
+
... print(f"Name: {guardrail.name}, Status: {guardrail.status}")
|
|
102
|
+
... print(f"Version: {guardrail.version}, Description: {guardrail.description}")
|
|
103
|
+
>>> # Get next page if available
|
|
104
|
+
>>> if guardrails.pagination.next_token:
|
|
105
|
+
... next_page = client.vendor_guardrails.get_guardrails(
|
|
106
|
+
... vendor=VendorType.AWS,
|
|
107
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c",
|
|
108
|
+
... per_page=8,
|
|
109
|
+
... next_token=guardrails.pagination.next_token
|
|
110
|
+
... )
|
|
111
|
+
"""
|
|
112
|
+
# Convert enum to string value if needed
|
|
113
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
114
|
+
|
|
115
|
+
params = {
|
|
116
|
+
"setting_id": setting_id,
|
|
117
|
+
"per_page": per_page,
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if next_token:
|
|
121
|
+
params["next_token"] = next_token
|
|
122
|
+
|
|
123
|
+
return self._api.get(
|
|
124
|
+
f"/v1/vendors/{vendor_str}/guardrails",
|
|
125
|
+
VendorGuardrailsResponse,
|
|
126
|
+
params=params,
|
|
127
|
+
wrap_response=False,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
def get_guardrail(
|
|
131
|
+
self,
|
|
132
|
+
vendor: Union[VendorType, str],
|
|
133
|
+
guardrail_id: str,
|
|
134
|
+
setting_id: str,
|
|
135
|
+
) -> VendorGuardrail:
|
|
136
|
+
"""Get a specific guardrail by ID for a vendor setting.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
140
|
+
guardrail_id: ID of the guardrail to retrieve
|
|
141
|
+
setting_id: ID of the vendor setting
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
VendorGuardrail containing guardrail details
|
|
145
|
+
|
|
146
|
+
Example:
|
|
147
|
+
>>> guardrail = client.vendor_guardrails.get_guardrail(
|
|
148
|
+
... vendor=VendorType.AWS,
|
|
149
|
+
... guardrail_id="lss9vxro9oxg",
|
|
150
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
151
|
+
... )
|
|
152
|
+
>>> print(f"Name: {guardrail.name}, Status: {guardrail.status}")
|
|
153
|
+
>>> print(f"Version: {guardrail.version}, Description: {guardrail.description}")
|
|
154
|
+
"""
|
|
155
|
+
# Convert enum to string value if needed
|
|
156
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
157
|
+
|
|
158
|
+
params = {
|
|
159
|
+
"setting_id": setting_id,
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return self._api.get(
|
|
163
|
+
f"/v1/vendors/{vendor_str}/guardrails/{guardrail_id}",
|
|
164
|
+
VendorGuardrail,
|
|
165
|
+
params=params,
|
|
166
|
+
wrap_response=False,
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
def get_guardrail_version(
|
|
170
|
+
self,
|
|
171
|
+
vendor: Union[VendorType, str],
|
|
172
|
+
guardrail_id: str,
|
|
173
|
+
version: str,
|
|
174
|
+
setting_id: str,
|
|
175
|
+
) -> VendorGuardrailVersion:
|
|
176
|
+
"""Get a specific version of a vendor guardrail with detailed information.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
180
|
+
guardrail_id: ID of the guardrail to retrieve
|
|
181
|
+
version: Version number to retrieve (e.g., "1", "2", "DRAFT")
|
|
182
|
+
setting_id: ID of the vendor setting
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
VendorGuardrailVersion containing detailed version information including
|
|
186
|
+
blocked messaging settings and timestamps
|
|
187
|
+
|
|
188
|
+
Example:
|
|
189
|
+
>>> version_details = client.vendor_guardrails.get_guardrail_version(
|
|
190
|
+
... vendor=VendorType.AWS,
|
|
191
|
+
... guardrail_id="lss9vxro9oxg",
|
|
192
|
+
... version="1",
|
|
193
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
194
|
+
... )
|
|
195
|
+
>>> print(f"Name: {version_details.name}")
|
|
196
|
+
>>> print(f"Version: {version_details.version}")
|
|
197
|
+
>>> print(f"Status: {version_details.status}")
|
|
198
|
+
>>> print(f"Blocked Input Message: {version_details.blockedInputMessaging}")
|
|
199
|
+
>>> print(f"Blocked Output Message: {version_details.blockedOutputsMessaging}")
|
|
200
|
+
"""
|
|
201
|
+
# Convert enum to string value if needed
|
|
202
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
203
|
+
|
|
204
|
+
params = {
|
|
205
|
+
"setting_id": setting_id,
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return self._api.get(
|
|
209
|
+
f"/v1/vendors/{vendor_str}/guardrails/{guardrail_id}/{version}",
|
|
210
|
+
VendorGuardrailVersion,
|
|
211
|
+
params=params,
|
|
212
|
+
wrap_response=False,
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
def get_guardrail_versions(
|
|
216
|
+
self,
|
|
217
|
+
vendor: Union[VendorType, str],
|
|
218
|
+
guardrail_id: str,
|
|
219
|
+
setting_id: str,
|
|
220
|
+
per_page: int = 10,
|
|
221
|
+
next_token: Optional[str] = None,
|
|
222
|
+
) -> VendorGuardrailVersionsResponse:
|
|
223
|
+
"""Get versions for a specific vendor guardrail.
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
227
|
+
guardrail_id: ID of the guardrail to retrieve versions for
|
|
228
|
+
setting_id: ID of the vendor setting
|
|
229
|
+
per_page: Number of items per page
|
|
230
|
+
next_token: Token for pagination (optional, for retrieving next page)
|
|
231
|
+
|
|
232
|
+
Returns:
|
|
233
|
+
VendorGuardrailVersionsResponse containing list of versions and pagination token
|
|
234
|
+
|
|
235
|
+
Example:
|
|
236
|
+
>>> # Get first page of versions
|
|
237
|
+
>>> versions = client.vendor_guardrails.get_guardrail_versions(
|
|
238
|
+
... vendor=VendorType.AWS,
|
|
239
|
+
... guardrail_id="lss9vxro9oxg",
|
|
240
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c",
|
|
241
|
+
... per_page=5
|
|
242
|
+
... )
|
|
243
|
+
>>> for version in versions.data:
|
|
244
|
+
... print(f"{version.name} (v{version.version}): {version.status}")
|
|
245
|
+
>>> # Get next page if available
|
|
246
|
+
>>> if versions.pagination.next_token:
|
|
247
|
+
... next_page = client.vendor_guardrails.get_guardrail_versions(
|
|
248
|
+
... vendor=VendorType.AWS,
|
|
249
|
+
... guardrail_id="lss9vxro9oxg",
|
|
250
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c",
|
|
251
|
+
... per_page=5,
|
|
252
|
+
... next_token=versions.pagination.next_token
|
|
253
|
+
... )
|
|
254
|
+
"""
|
|
255
|
+
# Convert enum to string value if needed
|
|
256
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
257
|
+
|
|
258
|
+
params = {
|
|
259
|
+
"setting_id": setting_id,
|
|
260
|
+
"per_page": per_page,
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if next_token:
|
|
264
|
+
params["next_token"] = next_token
|
|
265
|
+
|
|
266
|
+
return self._api.get(
|
|
267
|
+
f"/v1/vendors/{vendor_str}/guardrails/{guardrail_id}/versions",
|
|
268
|
+
VendorGuardrailVersionsResponse,
|
|
269
|
+
params=params,
|
|
270
|
+
wrap_response=False,
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
def install_guardrails(
|
|
274
|
+
self,
|
|
275
|
+
vendor: Union[VendorType, str],
|
|
276
|
+
guardrails: List[VendorGuardrailInstallRequest],
|
|
277
|
+
) -> VendorGuardrailInstallResponse:
|
|
278
|
+
"""Install/activate vendor guardrails.
|
|
279
|
+
|
|
280
|
+
Args:
|
|
281
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
282
|
+
guardrails: List of guardrail installation requests with guardrail ID, version, and setting ID
|
|
283
|
+
|
|
284
|
+
Returns:
|
|
285
|
+
VendorGuardrailInstallResponse containing installation summary with AI run IDs
|
|
286
|
+
|
|
287
|
+
Example:
|
|
288
|
+
>>> from codemie_sdk import VendorGuardrailInstallRequest
|
|
289
|
+
>>> # Install single guardrail
|
|
290
|
+
>>> install_request = VendorGuardrailInstallRequest(
|
|
291
|
+
... id="lss9vxro9oxg",
|
|
292
|
+
... version="1",
|
|
293
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
294
|
+
... )
|
|
295
|
+
>>> response = client.vendor_guardrails.install_guardrails(
|
|
296
|
+
... vendor=VendorType.AWS,
|
|
297
|
+
... guardrails=[install_request]
|
|
298
|
+
... )
|
|
299
|
+
>>> for item in response.summary:
|
|
300
|
+
... print(f"Installed {item.guardrailId} version {item.version} with run ID: {item.aiRunId}")
|
|
301
|
+
>>>
|
|
302
|
+
>>> # Install multiple guardrails
|
|
303
|
+
>>> requests = [
|
|
304
|
+
... VendorGuardrailInstallRequest(
|
|
305
|
+
... id="GUARDRAIL_ID_1",
|
|
306
|
+
... version="1",
|
|
307
|
+
... setting_id="SETTING_ID"
|
|
308
|
+
... ),
|
|
309
|
+
... VendorGuardrailInstallRequest(
|
|
310
|
+
... id="GUARDRAIL_ID_2",
|
|
311
|
+
... version="2",
|
|
312
|
+
... setting_id="SETTING_ID"
|
|
313
|
+
... )
|
|
314
|
+
... ]
|
|
315
|
+
>>> response = client.vendor_guardrails.install_guardrails(
|
|
316
|
+
... vendor=VendorType.AWS,
|
|
317
|
+
... guardrails=requests
|
|
318
|
+
... )
|
|
319
|
+
"""
|
|
320
|
+
# Convert enum to string value if needed
|
|
321
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
322
|
+
|
|
323
|
+
# Convert list of Pydantic models to list of dicts
|
|
324
|
+
payload = [guardrail.model_dump(by_alias=True) for guardrail in guardrails]
|
|
325
|
+
|
|
326
|
+
return self._api.post(
|
|
327
|
+
f"/v1/vendors/{vendor_str}/guardrails",
|
|
328
|
+
VendorGuardrailInstallResponse,
|
|
329
|
+
json_data=payload,
|
|
330
|
+
wrap_response=False,
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
def uninstall_guardrail(
|
|
334
|
+
self,
|
|
335
|
+
vendor: Union[VendorType, str],
|
|
336
|
+
ai_run_id: str,
|
|
337
|
+
) -> VendorGuardrailUninstallResponse:
|
|
338
|
+
"""Uninstall/deactivate a vendor guardrail.
|
|
339
|
+
|
|
340
|
+
Args:
|
|
341
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
342
|
+
ai_run_id: AI run ID returned from the install operation
|
|
343
|
+
|
|
344
|
+
Returns:
|
|
345
|
+
VendorGuardrailUninstallResponse with success status
|
|
346
|
+
|
|
347
|
+
Example:
|
|
348
|
+
>>> # First, install a guardrail
|
|
349
|
+
>>> install_request = VendorGuardrailInstallRequest(
|
|
350
|
+
... id="lss9vxro9oxg",
|
|
351
|
+
... version="1",
|
|
352
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
353
|
+
... )
|
|
354
|
+
>>> install_response = client.vendor_guardrails.install_guardrails(
|
|
355
|
+
... vendor=VendorType.AWS,
|
|
356
|
+
... guardrails=[install_request]
|
|
357
|
+
... )
|
|
358
|
+
>>> ai_run_id = install_response.summary[0].aiRunId
|
|
359
|
+
>>>
|
|
360
|
+
>>> # Later, uninstall the guardrail using the AI run ID
|
|
361
|
+
>>> response = client.vendor_guardrails.uninstall_guardrail(
|
|
362
|
+
... vendor=VendorType.AWS,
|
|
363
|
+
... ai_run_id=ai_run_id
|
|
364
|
+
... )
|
|
365
|
+
>>> if response.success:
|
|
366
|
+
... print("Guardrail successfully uninstalled!")
|
|
367
|
+
"""
|
|
368
|
+
# Convert enum to string value if needed
|
|
369
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
370
|
+
|
|
371
|
+
return self._api.delete(
|
|
372
|
+
f"/v1/vendors/{vendor_str}/guardrails/{ai_run_id}",
|
|
373
|
+
VendorGuardrailUninstallResponse,
|
|
374
|
+
wrap_response=False,
|
|
375
|
+
)
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"""Vendor knowledge base service implementation for managing cloud vendor knowledge base settings."""
|
|
2
|
+
|
|
3
|
+
from typing import Union, Optional, List
|
|
4
|
+
|
|
5
|
+
from ..models.vendor_assistant import VendorType
|
|
6
|
+
from ..models.vendor_knowledgebase import (
|
|
7
|
+
VendorKnowledgeBaseSettingsResponse,
|
|
8
|
+
VendorKnowledgeBasesResponse,
|
|
9
|
+
VendorKnowledgeBaseDetail,
|
|
10
|
+
VendorKnowledgeBaseInstallRequest,
|
|
11
|
+
VendorKnowledgeBaseInstallResponse,
|
|
12
|
+
VendorKnowledgeBaseUninstallResponse,
|
|
13
|
+
)
|
|
14
|
+
from ..utils import ApiRequestHandler
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class VendorKnowledgeBaseService:
|
|
18
|
+
"""Service for managing cloud vendor knowledge base settings (AWS, Azure, GCP)."""
|
|
19
|
+
|
|
20
|
+
def __init__(self, api_domain: str, token: str, verify_ssl: bool = True):
|
|
21
|
+
"""Initialize the vendor knowledge base service.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
api_domain: Base URL for the CodeMie API
|
|
25
|
+
token: Authentication token
|
|
26
|
+
verify_ssl: Whether to verify SSL certificates
|
|
27
|
+
"""
|
|
28
|
+
self._api = ApiRequestHandler(api_domain, token, verify_ssl)
|
|
29
|
+
|
|
30
|
+
def get_knowledgebase_settings(
|
|
31
|
+
self,
|
|
32
|
+
vendor: Union[VendorType, str],
|
|
33
|
+
page: int = 0,
|
|
34
|
+
per_page: int = 10,
|
|
35
|
+
) -> VendorKnowledgeBaseSettingsResponse:
|
|
36
|
+
"""Get knowledge base settings for a specific cloud vendor.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
40
|
+
page: Page number for pagination (0-based)
|
|
41
|
+
per_page: Number of items per page
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
VendorKnowledgeBaseSettingsResponse containing list of settings and pagination info
|
|
45
|
+
|
|
46
|
+
Example:
|
|
47
|
+
>>> # Using enum
|
|
48
|
+
>>> settings = client.vendor_knowledgebases.get_knowledgebase_settings(VendorType.AWS, page=0, per_page=10)
|
|
49
|
+
>>> # Using string
|
|
50
|
+
>>> settings = client.vendor_knowledgebases.get_knowledgebase_settings("aws", page=0, per_page=10)
|
|
51
|
+
>>> # Access settings data
|
|
52
|
+
>>> for setting in settings.data:
|
|
53
|
+
... print(f"Setting: {setting.setting_name}, Project: {setting.project}")
|
|
54
|
+
... if setting.invalid:
|
|
55
|
+
... print(f"Error: {setting.error}")
|
|
56
|
+
"""
|
|
57
|
+
# Convert enum to string value if needed
|
|
58
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
59
|
+
|
|
60
|
+
params = {
|
|
61
|
+
"page": page,
|
|
62
|
+
"per_page": per_page,
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return self._api.get(
|
|
66
|
+
f"/v1/vendors/{vendor_str}/knowledgebases/settings",
|
|
67
|
+
VendorKnowledgeBaseSettingsResponse,
|
|
68
|
+
params=params,
|
|
69
|
+
wrap_response=False,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
def get_knowledgebases(
|
|
73
|
+
self,
|
|
74
|
+
vendor: Union[VendorType, str],
|
|
75
|
+
setting_id: str,
|
|
76
|
+
per_page: int = 10,
|
|
77
|
+
next_token: Optional[str] = None,
|
|
78
|
+
) -> VendorKnowledgeBasesResponse:
|
|
79
|
+
"""Get knowledge bases for a specific vendor setting.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
83
|
+
setting_id: ID of the vendor setting to retrieve knowledge bases for
|
|
84
|
+
per_page: Number of items per page
|
|
85
|
+
next_token: Token for pagination (optional, for retrieving next page)
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
VendorKnowledgeBasesResponse containing list of knowledge bases and pagination token
|
|
89
|
+
|
|
90
|
+
Example:
|
|
91
|
+
>>> # Get first page
|
|
92
|
+
>>> kbs = client.vendor_knowledgebases.get_knowledgebases(
|
|
93
|
+
... vendor=VendorType.AWS,
|
|
94
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c",
|
|
95
|
+
... per_page=8
|
|
96
|
+
... )
|
|
97
|
+
>>> # Access knowledge base data
|
|
98
|
+
>>> for kb in kbs.data:
|
|
99
|
+
... print(f"Name: {kb.name}, Status: {kb.status}")
|
|
100
|
+
... if kb.aiRunId:
|
|
101
|
+
... print(f" AI Run ID: {kb.aiRunId}")
|
|
102
|
+
>>> # Get next page if available
|
|
103
|
+
>>> if kbs.pagination.next_token:
|
|
104
|
+
... next_page = client.vendor_knowledgebases.get_knowledgebases(
|
|
105
|
+
... vendor=VendorType.AWS,
|
|
106
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c",
|
|
107
|
+
... per_page=8,
|
|
108
|
+
... next_token=kbs.pagination.next_token
|
|
109
|
+
... )
|
|
110
|
+
"""
|
|
111
|
+
# Convert enum to string value if needed
|
|
112
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
113
|
+
|
|
114
|
+
params = {
|
|
115
|
+
"setting_id": setting_id,
|
|
116
|
+
"per_page": per_page,
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if next_token:
|
|
120
|
+
params["next_token"] = next_token
|
|
121
|
+
|
|
122
|
+
return self._api.get(
|
|
123
|
+
f"/v1/vendors/{vendor_str}/knowledgebases",
|
|
124
|
+
VendorKnowledgeBasesResponse,
|
|
125
|
+
params=params,
|
|
126
|
+
wrap_response=False,
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
def get_knowledgebase(
|
|
130
|
+
self,
|
|
131
|
+
vendor: Union[VendorType, str],
|
|
132
|
+
knowledgebase_id: str,
|
|
133
|
+
setting_id: str,
|
|
134
|
+
) -> VendorKnowledgeBaseDetail:
|
|
135
|
+
"""Get detailed information about a specific knowledge base by ID.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
139
|
+
knowledgebase_id: ID of the knowledge base to retrieve
|
|
140
|
+
setting_id: ID of the vendor setting
|
|
141
|
+
|
|
142
|
+
Returns:
|
|
143
|
+
VendorKnowledgeBaseDetail containing detailed knowledge base information
|
|
144
|
+
|
|
145
|
+
Example:
|
|
146
|
+
>>> kb = client.vendor_knowledgebases.get_knowledgebase(
|
|
147
|
+
... vendor=VendorType.AWS,
|
|
148
|
+
... knowledgebase_id="HIKPIQ2FMT",
|
|
149
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
150
|
+
... )
|
|
151
|
+
>>> print(f"Name: {kb.name}")
|
|
152
|
+
>>> print(f"Type: {kb.type}")
|
|
153
|
+
>>> print(f"Status: {kb.status}")
|
|
154
|
+
>>> print(f"Embedding Model: {kb.embeddingModel}")
|
|
155
|
+
>>> if kb.aiRunId:
|
|
156
|
+
... print(f"AI Run ID: {kb.aiRunId}")
|
|
157
|
+
"""
|
|
158
|
+
# Convert enum to string value if needed
|
|
159
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
160
|
+
|
|
161
|
+
params = {
|
|
162
|
+
"setting_id": setting_id,
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return self._api.get(
|
|
166
|
+
f"/v1/vendors/{vendor_str}/knowledgebases/{knowledgebase_id}",
|
|
167
|
+
VendorKnowledgeBaseDetail,
|
|
168
|
+
params=params,
|
|
169
|
+
wrap_response=False,
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
def install_knowledgebases(
|
|
173
|
+
self,
|
|
174
|
+
vendor: Union[VendorType, str],
|
|
175
|
+
knowledgebases: List[VendorKnowledgeBaseInstallRequest],
|
|
176
|
+
) -> VendorKnowledgeBaseInstallResponse:
|
|
177
|
+
"""Install/activate vendor knowledge bases.
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
181
|
+
knowledgebases: List of knowledge base installation requests with knowledge base ID and setting ID
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
VendorKnowledgeBaseInstallResponse containing installation summary with AI run IDs
|
|
185
|
+
|
|
186
|
+
Example:
|
|
187
|
+
>>> from codemie_sdk import VendorKnowledgeBaseInstallRequest
|
|
188
|
+
>>> # Install single knowledge base
|
|
189
|
+
>>> install_request = VendorKnowledgeBaseInstallRequest(
|
|
190
|
+
... id="HIKPIQ2FMT",
|
|
191
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
192
|
+
... )
|
|
193
|
+
>>> response = client.vendor_knowledgebases.install_knowledgebases(
|
|
194
|
+
... vendor=VendorType.AWS,
|
|
195
|
+
... knowledgebases=[install_request]
|
|
196
|
+
... )
|
|
197
|
+
>>> for item in response.summary:
|
|
198
|
+
... print(f"Installed knowledge base {item.knowledgeBaseId} with run ID: {item.aiRunId}")
|
|
199
|
+
>>>
|
|
200
|
+
>>> # Install multiple knowledge bases
|
|
201
|
+
>>> requests = [
|
|
202
|
+
... VendorKnowledgeBaseInstallRequest(
|
|
203
|
+
... id="KB_ID_1",
|
|
204
|
+
... setting_id="SETTING_ID"
|
|
205
|
+
... ),
|
|
206
|
+
... VendorKnowledgeBaseInstallRequest(
|
|
207
|
+
... id="KB_ID_2",
|
|
208
|
+
... setting_id="SETTING_ID"
|
|
209
|
+
... )
|
|
210
|
+
... ]
|
|
211
|
+
>>> response = client.vendor_knowledgebases.install_knowledgebases(
|
|
212
|
+
... vendor=VendorType.AWS,
|
|
213
|
+
... knowledgebases=requests
|
|
214
|
+
... )
|
|
215
|
+
"""
|
|
216
|
+
# Convert enum to string value if needed
|
|
217
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
218
|
+
|
|
219
|
+
# Convert list of Pydantic models to list of dicts
|
|
220
|
+
payload = [kb.model_dump(by_alias=True) for kb in knowledgebases]
|
|
221
|
+
|
|
222
|
+
return self._api.post(
|
|
223
|
+
f"/v1/vendors/{vendor_str}/knowledgebases",
|
|
224
|
+
VendorKnowledgeBaseInstallResponse,
|
|
225
|
+
json_data=payload,
|
|
226
|
+
wrap_response=False,
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
def uninstall_knowledgebase(
|
|
230
|
+
self,
|
|
231
|
+
vendor: Union[VendorType, str],
|
|
232
|
+
ai_run_id: str,
|
|
233
|
+
) -> VendorKnowledgeBaseUninstallResponse:
|
|
234
|
+
"""Uninstall/deactivate a vendor knowledge base.
|
|
235
|
+
|
|
236
|
+
Args:
|
|
237
|
+
vendor: Cloud vendor type (aws, azure, gcp). Can be VendorType enum or string.
|
|
238
|
+
ai_run_id: AI run ID returned from the knowledge base (aiRunId field)
|
|
239
|
+
|
|
240
|
+
Returns:
|
|
241
|
+
VendorKnowledgeBaseUninstallResponse with success status
|
|
242
|
+
|
|
243
|
+
Example:
|
|
244
|
+
>>> # Get knowledge bases to find the aiRunId
|
|
245
|
+
>>> kbs = client.vendor_knowledgebases.get_knowledgebases(
|
|
246
|
+
... vendor=VendorType.AWS,
|
|
247
|
+
... setting_id="cac90788-39b7-4ffe-8b57-e8b047fa1f6c"
|
|
248
|
+
... )
|
|
249
|
+
>>> # Find an installed knowledge base with aiRunId
|
|
250
|
+
>>> for kb in kbs.data:
|
|
251
|
+
... if kb.aiRunId:
|
|
252
|
+
... ai_run_id = kb.aiRunId
|
|
253
|
+
... break
|
|
254
|
+
>>>
|
|
255
|
+
>>> # Uninstall the knowledge base using the AI run ID
|
|
256
|
+
>>> response = client.vendor_knowledgebases.uninstall_knowledgebase(
|
|
257
|
+
... vendor=VendorType.AWS,
|
|
258
|
+
... ai_run_id="2364feec-f8c7-4db8-a8b4-ea56289e67a4"
|
|
259
|
+
... )
|
|
260
|
+
>>> if response.success:
|
|
261
|
+
... print("Knowledge base successfully uninstalled!")
|
|
262
|
+
"""
|
|
263
|
+
# Convert enum to string value if needed
|
|
264
|
+
vendor_str = vendor.value if isinstance(vendor, VendorType) else vendor
|
|
265
|
+
|
|
266
|
+
return self._api.delete(
|
|
267
|
+
f"/v1/vendors/{vendor_str}/knowledgebases/{ai_run_id}",
|
|
268
|
+
VendorKnowledgeBaseUninstallResponse,
|
|
269
|
+
wrap_response=False,
|
|
270
|
+
)
|