enkryptai-sdk 0.1.5__py3-none-any.whl → 0.1.7__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.
@@ -0,0 +1,334 @@
1
+ from enum import Enum
2
+ from .base import BaseDTO
3
+ from typing import List, Dict, Any, Set
4
+ from dataclasses import dataclass, field
5
+
6
+
7
+ class InputGuardrailBlockType(str, Enum):
8
+ TOPIC_DETECTOR = "topic_detector"
9
+ NSFW = "nsfw"
10
+ TOXICITY = "toxicity"
11
+ PII = "pii"
12
+ INJECTION_ATTACK = "injection_attack"
13
+ KEYWORD_DETECTOR = "keyword_detector"
14
+ POLICY_VIOLATION = "policy_violation"
15
+ BIAS = "bias"
16
+ SYSTEM_PROMPT = "system_prompt"
17
+ COPYRIGHT_IP = "copyright_ip"
18
+
19
+
20
+ class OutputGuardrailBlockType(str, Enum):
21
+ TOPIC_DETECTOR = "topic_detector"
22
+ NSFW = "nsfw"
23
+ TOXICITY = "toxicity"
24
+ PII = "pii"
25
+ INJECTION_ATTACK = "injection_attack"
26
+ KEYWORD_DETECTOR = "keyword_detector"
27
+ POLICY_VIOLATION = "policy_violation"
28
+ BIAS = "bias"
29
+ SYSTEM_PROMPT = "system_prompt"
30
+ COPYRIGHT_IP = "copyright_ip"
31
+ HALLUCINATION = "hallucination"
32
+ ADHERENCE = "adherence"
33
+ RELEVANCY = "relevancy"
34
+
35
+
36
+ @dataclass
37
+ class InputGuardrailsAdditionalConfig(BaseDTO):
38
+ pii_redaction: bool = False
39
+
40
+ def to_dict(self) -> Dict[str, Any]:
41
+ return {
42
+ "pii_redaction": self.pii_redaction
43
+ }
44
+
45
+
46
+ @dataclass
47
+ class OutputGuardrailsAdditionalConfig(BaseDTO):
48
+ hallucination: bool = False
49
+ adherence: bool = False
50
+ relevancy: bool = False
51
+
52
+ def to_dict(self) -> Dict[str, Any]:
53
+ return {
54
+ "hallucination": self.hallucination,
55
+ "adherence": self.adherence,
56
+ "relevancy": self.relevancy
57
+ }
58
+
59
+
60
+ @dataclass
61
+ class InputGuardrailsPolicy(BaseDTO):
62
+ policy_name: str
63
+ enabled: bool
64
+ block: List[InputGuardrailBlockType] = field(default_factory=list)
65
+ additional_config: InputGuardrailsAdditionalConfig = field(default_factory=InputGuardrailsAdditionalConfig)
66
+
67
+ @classmethod
68
+ def from_dict(cls, data: Dict[str, Any]) -> "InputGuardrailsPolicy":
69
+ # Convert string values to enum values
70
+ block_items = []
71
+ for item in data.get("block", []):
72
+ try:
73
+ block_items.append(InputGuardrailBlockType(item))
74
+ except ValueError:
75
+ raise ValueError(f"Invalid input guardrail block type: {item}")
76
+
77
+ additional_config_data = data.get("additional_config", {})
78
+ if not isinstance(additional_config_data, dict):
79
+ additional_config_data = {}
80
+
81
+ return cls(
82
+ policy_name=data.get("policy_name", ""),
83
+ enabled=data.get("enabled", False),
84
+ block=block_items,
85
+ additional_config=InputGuardrailsAdditionalConfig(
86
+ pii_redaction=additional_config_data.get("pii_redaction", False)
87
+ )
88
+ )
89
+
90
+ def to_dict(self) -> Dict[str, Any]:
91
+ return {
92
+ "policy_name": self.policy_name,
93
+ "enabled": self.enabled,
94
+ "block": [item.value for item in self.block],
95
+ "additional_config": self.additional_config.to_dict()
96
+ }
97
+
98
+
99
+ @dataclass
100
+ class OutputGuardrailsPolicy(BaseDTO):
101
+ policy_name: str
102
+ enabled: bool
103
+ block: List[OutputGuardrailBlockType] = field(default_factory=list)
104
+ additional_config: OutputGuardrailsAdditionalConfig = field(default_factory=OutputGuardrailsAdditionalConfig)
105
+
106
+ @classmethod
107
+ def from_dict(cls, data: Dict[str, Any]) -> "OutputGuardrailsPolicy":
108
+ # Convert string values to enum values
109
+ block_items = []
110
+ for item in data.get("block", []):
111
+ try:
112
+ block_items.append(OutputGuardrailBlockType(item))
113
+ except ValueError:
114
+ raise ValueError(f"Invalid output guardrail block type: {item}")
115
+
116
+ additional_config_data = data.get("additional_config", {})
117
+ if not isinstance(additional_config_data, dict):
118
+ additional_config_data = {}
119
+
120
+ return cls(
121
+ policy_name=data.get("policy_name", ""),
122
+ enabled=data.get("enabled", False),
123
+ block=block_items,
124
+ additional_config=OutputGuardrailsAdditionalConfig(
125
+ hallucination=additional_config_data.get("hallucination", False),
126
+ adherence=additional_config_data.get("adherence", False),
127
+ relevancy=additional_config_data.get("relevancy", False)
128
+ )
129
+ )
130
+
131
+ def to_dict(self) -> Dict[str, Any]:
132
+ return {
133
+ "policy_name": self.policy_name,
134
+ "enabled": self.enabled,
135
+ "block": [item.value for item in self.block],
136
+ "additional_config": self.additional_config.to_dict()
137
+ }
138
+
139
+
140
+ @dataclass
141
+ class DeploymentInput(BaseDTO):
142
+ name: str
143
+ model_saved_name: str
144
+ input_guardrails_policy: InputGuardrailsPolicy
145
+ output_guardrails_policy: OutputGuardrailsPolicy
146
+ _extra_fields: Dict[str, Any] = field(default_factory=dict)
147
+
148
+ @classmethod
149
+ def from_dict(cls, data: Dict[str, Any]) -> "DeploymentInput":
150
+ input_policy_data = data.get("input_guardrails_policy", {})
151
+ output_policy_data = data.get("output_guardrails_policy", {})
152
+
153
+ return cls(
154
+ name=data.get("name", ""),
155
+ model_saved_name=data.get("model_saved_name", ""),
156
+ input_guardrails_policy=InputGuardrailsPolicy.from_dict(input_policy_data),
157
+ output_guardrails_policy=OutputGuardrailsPolicy.from_dict(output_policy_data)
158
+ )
159
+
160
+ def to_dict(self) -> Dict[str, Any]:
161
+ result = {
162
+ "name": self.name,
163
+ "model_saved_name": self.model_saved_name,
164
+ "input_guardrails_policy": self.input_guardrails_policy.to_dict(),
165
+ "output_guardrails_policy": self.output_guardrails_policy.to_dict()
166
+ }
167
+ # result.update(self._extra_fields)
168
+ return result
169
+
170
+
171
+ @dataclass
172
+ class GetDeploymentResponse(BaseDTO):
173
+ name: str
174
+ model_saved_name: str
175
+ input_guardrails_policy: InputGuardrailsPolicy
176
+ output_guardrails_policy: OutputGuardrailsPolicy
177
+ created_at: str
178
+ updated_at: str
179
+ deployment_id: int
180
+
181
+ @classmethod
182
+ def from_dict(cls, data: Dict[str, Any]) -> "GetDeploymentResponse":
183
+ input_policy_data = data.get("input_guardrails_policy", {})
184
+ output_policy_data = data.get("output_guardrails_policy", {})
185
+
186
+ return cls(
187
+ name=data.get("name", ""),
188
+ model_saved_name=data.get("model_saved_name", ""),
189
+ input_guardrails_policy=InputGuardrailsPolicy.from_dict(input_policy_data),
190
+ output_guardrails_policy=OutputGuardrailsPolicy.from_dict(output_policy_data),
191
+ updated_at=data.get("updated_at", ""),
192
+ deployment_id=data.get("deployment_id", 0),
193
+ created_at=data.get("created_at", "")
194
+ )
195
+
196
+ def to_dict(self) -> Dict[str, Any]:
197
+ return {
198
+ "name": self.name,
199
+ "model_saved_name": self.model_saved_name,
200
+ "input_guardrails_policy": self.input_guardrails_policy.to_dict(),
201
+ "output_guardrails_policy": self.output_guardrails_policy.to_dict(),
202
+ "updated_at": self.updated_at,
203
+ "deployment_id": self.deployment_id,
204
+ "created_at": self.created_at
205
+ }
206
+
207
+
208
+ @dataclass
209
+ class DeploymentAddTaskResponse(BaseDTO):
210
+ message: str
211
+ data: GetDeploymentResponse
212
+
213
+ @classmethod
214
+ def from_dict(cls, data: Dict[str, Any]) -> "DeploymentAddTaskResponse":
215
+ response_data = data.get("data", {})
216
+ return cls(
217
+ message=data.get("message", ""),
218
+ data=GetDeploymentResponse.from_dict(response_data)
219
+ )
220
+
221
+ def to_dict(self) -> Dict[str, Any]:
222
+ return {
223
+ "message": self.message,
224
+ "data": self.data.to_dict()
225
+ }
226
+
227
+
228
+ @dataclass
229
+ class ModifyDeploymentResponse(BaseDTO):
230
+ message: str
231
+ data: GetDeploymentResponse
232
+
233
+ @classmethod
234
+ def from_dict(cls, data: Dict[str, Any]) -> "ModifyDeploymentResponse":
235
+ response_data = data.get("data", {})
236
+ return cls(
237
+ message=data.get("message", ""),
238
+ data=GetDeploymentResponse.from_dict(response_data)
239
+ )
240
+
241
+ def to_dict(self) -> Dict[str, Any]:
242
+ return {
243
+ "message": self.message,
244
+ "data": self.data.to_dict()
245
+ }
246
+
247
+
248
+ @dataclass
249
+ class DeleteDeploymentData(BaseDTO):
250
+ deployment_id: int
251
+
252
+ @classmethod
253
+ def from_dict(cls, data: Dict[str, Any]) -> "DeleteDeploymentData":
254
+ return cls(
255
+ deployment_id=int(data.get("deployment_id", 0))
256
+ )
257
+
258
+ def to_dict(self) -> Dict[str, Any]:
259
+ return {
260
+ "deployment_id": self.deployment_id
261
+ }
262
+
263
+
264
+ @dataclass
265
+ class DeleteDeploymentResponse(BaseDTO):
266
+ message: str
267
+ data: DeleteDeploymentData
268
+
269
+ @classmethod
270
+ def from_dict(cls, data: Dict[str, Any]) -> "DeleteDeploymentResponse":
271
+ response_data = data.get("data", {})
272
+ return cls(
273
+ message=data.get("message", ""),
274
+ data=DeleteDeploymentData.from_dict(response_data)
275
+ )
276
+
277
+ def to_dict(self) -> Dict[str, Any]:
278
+ return {
279
+ "message": self.message,
280
+ "data": self.data.to_dict()
281
+ }
282
+
283
+ @property
284
+ def deployment_id(self) -> int:
285
+ """Convenience property to access the deployment_id directly."""
286
+ return self.data.deployment_id
287
+
288
+
289
+ @dataclass
290
+ class DeploymentSummary(BaseDTO):
291
+ deployment_id: int
292
+ name: str
293
+ created_at: str
294
+ updated_at: str
295
+ model_saved_name: str
296
+ project_name: str
297
+
298
+ @classmethod
299
+ def from_dict(cls, data: Dict[str, Any]) -> "DeploymentSummary":
300
+ return cls(
301
+ deployment_id=int(data.get("deployment_id", 0)),
302
+ name=data.get("name", ""),
303
+ created_at=data.get("created_at", ""),
304
+ updated_at=data.get("updated_at", ""),
305
+ model_saved_name=data.get("model_saved_name", ""),
306
+ project_name=data.get("project_name", "")
307
+ )
308
+
309
+ def to_dict(self) -> Dict[str, Any]:
310
+ return {
311
+ "deployment_id": self.deployment_id,
312
+ "name": self.name,
313
+ "created_at": self.created_at,
314
+ "updated_at": self.updated_at,
315
+ "model_saved_name": self.model_saved_name,
316
+ "project_name": self.project_name
317
+ }
318
+
319
+
320
+ @dataclass
321
+ class DeploymentCollection(BaseDTO):
322
+ deployments: List[DeploymentSummary] = field(default_factory=list)
323
+
324
+ @classmethod
325
+ def from_dict(cls, data: Dict[str, Any]) -> "DeploymentCollection":
326
+ deployments_data = data.get("deployments", [])
327
+ return cls(
328
+ deployments=[DeploymentSummary.from_dict(item) for item in deployments_data]
329
+ )
330
+
331
+ def to_dict(self) -> Dict[str, Any]:
332
+ return {
333
+ "deployments": [deployment.to_dict() for deployment in self.deployments]
334
+ }