datarobot-moderations 11.1.16__py3-none-any.whl → 11.1.18__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.
- datarobot_dome/constants.py +28 -2
- datarobot_dome/drum_integration.py +7 -6
- datarobot_dome/guard_helpers.py +21 -9
- datarobot_dome/pipeline/pipeline.py +1 -6
- datarobot_dome/runtime.py +42 -0
- {datarobot_moderations-11.1.16.dist-info → datarobot_moderations-11.1.18.dist-info}/METADATA +1 -1
- {datarobot_moderations-11.1.16.dist-info → datarobot_moderations-11.1.18.dist-info}/RECORD +8 -7
- {datarobot_moderations-11.1.16.dist-info → datarobot_moderations-11.1.18.dist-info}/WHEEL +0 -0
datarobot_dome/constants.py
CHANGED
|
@@ -41,6 +41,7 @@ RETRY_COUNT = 10
|
|
|
41
41
|
MODERATION_CONFIG_FILE_NAME = "moderation_config.yaml"
|
|
42
42
|
DATAROBOT_SERVERLESS_PLATFORM = "datarobotServerless"
|
|
43
43
|
|
|
44
|
+
RUNTIME_PARAMETER_PREFIX = "MLOPS_RUNTIME_PARAM_"
|
|
44
45
|
SECRET_DEFINITION_PREFIX = "MLOPS_RUNTIME_PARAM_MODERATION"
|
|
45
46
|
OPENAI_SECRET_DEFINITION_SUFFIX = "OPENAI_API_KEY"
|
|
46
47
|
GOOGLE_SERVICE_ACCOUNT_SECRET_DEFINITION_SUFFIX = "GOOGLE_SERVICE_ACCOUNT"
|
|
@@ -62,8 +63,8 @@ PROMPT_VECTOR_ATTR = "prompt_vector"
|
|
|
62
63
|
DATAROBOT_CONFIGURED_ON_PREM_ST_SAAS_URL = "http://datarobot-nginx/api/v2"
|
|
63
64
|
DATAROBOT_ACTUAL_ON_PREM_ST_SAAS_URL = "http://datarobot-prediction-server:80/predApi/v1.0"
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
DISABLE_MODERATION_RUNTIME_PARAM_NAME = "DISABLE_MODERATION"
|
|
67
|
+
ENABLE_LLM_GATEWAY_INFERENCE_RUNTIME_PARAM_NAME = "ENABLE_LLM_GATEWAY_INFERENCE"
|
|
67
68
|
|
|
68
69
|
LLM_CONTEXT_COLUMN_NAME = "_LLM_CONTEXT"
|
|
69
70
|
PROMPT_TOKEN_COUNT_COLUMN_NAME_FROM_USAGE = "prompt_token_count_from_usage"
|
|
@@ -242,6 +243,11 @@ class AwsModel:
|
|
|
242
243
|
ANTHROPIC_CLAUDE_3_HAIKU = "anthropic-claude-3-haiku"
|
|
243
244
|
ANTHROPIC_CLAUDE_3_SONNET = "anthropic-claude-3-sonnet"
|
|
244
245
|
ANTHROPIC_CLAUDE_3_OPUS = "anthropic-claude-3-opus"
|
|
246
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V1 = "anthropic-claude-3.5-sonnet-v1"
|
|
247
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V2 = "anthropic-claude-3.5-sonnet-v2"
|
|
248
|
+
AMAZON_NOVA_LITE = "amazon-nova-lite"
|
|
249
|
+
AMAZON_NOVA_MICRO = "amazon-nova-micro"
|
|
250
|
+
AMAZON_NOVA_PRO = "amazon-nova-pro"
|
|
245
251
|
|
|
246
252
|
ALL = [
|
|
247
253
|
TITAN,
|
|
@@ -249,6 +255,11 @@ class AwsModel:
|
|
|
249
255
|
ANTHROPIC_CLAUDE_3_HAIKU,
|
|
250
256
|
ANTHROPIC_CLAUDE_3_SONNET,
|
|
251
257
|
ANTHROPIC_CLAUDE_3_OPUS,
|
|
258
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V1,
|
|
259
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V2,
|
|
260
|
+
AMAZON_NOVA_LITE,
|
|
261
|
+
AMAZON_NOVA_MICRO,
|
|
262
|
+
AMAZON_NOVA_PRO,
|
|
252
263
|
]
|
|
253
264
|
|
|
254
265
|
|
|
@@ -266,6 +277,11 @@ class AwsModelVersion:
|
|
|
266
277
|
ANTHROPIC_CLAUDE_3_HAIKU = "anthropic.claude-3-haiku-20240307-v1:0"
|
|
267
278
|
ANTHROPIC_CLAUDE_3_SONNET = "anthropic.claude-3-sonnet-20240229-v1:0"
|
|
268
279
|
ANTHROPIC_CLAUDE_3_OPUS = "anthropic.claude-3-opus-20240229-v1:0"
|
|
280
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V1 = "anthropic.claude-3-5-sonnet-20240620-v1:0"
|
|
281
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V2 = "anthropic.claude-3-5-sonnet-20241022-v2:0"
|
|
282
|
+
AMAZON_NOVA_LITE = "amazon.nova-lite-v1:0"
|
|
283
|
+
AMAZON_NOVA_MICRO = "amazon.nova-micro-v1:0"
|
|
284
|
+
AMAZON_NOVA_PRO = "amazon.nova-pro-v1:0"
|
|
269
285
|
|
|
270
286
|
ALL = [
|
|
271
287
|
TITAN,
|
|
@@ -273,6 +289,11 @@ class AwsModelVersion:
|
|
|
273
289
|
ANTHROPIC_CLAUDE_3_HAIKU,
|
|
274
290
|
ANTHROPIC_CLAUDE_3_SONNET,
|
|
275
291
|
ANTHROPIC_CLAUDE_3_OPUS,
|
|
292
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V1,
|
|
293
|
+
ANTHROPIC_CLAUDE_3_5_SONNET_V2,
|
|
294
|
+
AMAZON_NOVA_LITE,
|
|
295
|
+
AMAZON_NOVA_MICRO,
|
|
296
|
+
AMAZON_NOVA_PRO,
|
|
276
297
|
]
|
|
277
298
|
|
|
278
299
|
|
|
@@ -288,6 +309,11 @@ AWS_MODEL_TO_AWS_MODEL_VERSION_MAP = {
|
|
|
288
309
|
AwsModel.ANTHROPIC_CLAUDE_3_HAIKU: AwsModelVersion.ANTHROPIC_CLAUDE_3_HAIKU,
|
|
289
310
|
AwsModel.ANTHROPIC_CLAUDE_3_SONNET: AwsModelVersion.ANTHROPIC_CLAUDE_3_SONNET,
|
|
290
311
|
AwsModel.ANTHROPIC_CLAUDE_3_OPUS: AwsModelVersion.ANTHROPIC_CLAUDE_3_OPUS,
|
|
312
|
+
AwsModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1: AwsModelVersion.ANTHROPIC_CLAUDE_3_5_SONNET_V1,
|
|
313
|
+
AwsModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2: AwsModelVersion.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
|
|
314
|
+
AwsModel.AMAZON_NOVA_LITE: AwsModelVersion.AMAZON_NOVA_LITE,
|
|
315
|
+
AwsModel.AMAZON_NOVA_MICRO: AwsModelVersion.AMAZON_NOVA_MICRO,
|
|
316
|
+
AwsModel.AMAZON_NOVA_PRO: AwsModelVersion.AMAZON_NOVA_PRO,
|
|
291
317
|
}
|
|
292
318
|
|
|
293
319
|
|
|
@@ -55,6 +55,7 @@ from datarobot_dome.constants import TargetType
|
|
|
55
55
|
from datarobot_dome.guard_executor import AsyncGuardExecutor
|
|
56
56
|
from datarobot_dome.pipeline.llm_pipeline import LLMPipeline
|
|
57
57
|
from datarobot_dome.pipeline.vdb_pipeline import VDBPipeline
|
|
58
|
+
from datarobot_dome.runtime import get_runtime_parameter_value_bool
|
|
58
59
|
from datarobot_dome.streaming import ModerationIterator
|
|
59
60
|
from datarobot_dome.streaming import StreamingContextBuilder
|
|
60
61
|
|
|
@@ -915,13 +916,11 @@ def init(model_dir: str = os.getcwd()):
|
|
|
915
916
|
pipeline: A Guard pipeline object required to enforce moderations while
|
|
916
917
|
scoring on user data
|
|
917
918
|
"""
|
|
918
|
-
disable_moderation_runtime_value =
|
|
919
|
-
|
|
919
|
+
disable_moderation_runtime_value = get_runtime_parameter_value_bool(
|
|
920
|
+
param_name=DISABLE_MODERATION_RUNTIME_PARAM_NAME,
|
|
921
|
+
default_value=False,
|
|
920
922
|
)
|
|
921
|
-
if
|
|
922
|
-
"payload" in disable_moderation_runtime_value
|
|
923
|
-
and disable_moderation_runtime_value["payload"]
|
|
924
|
-
):
|
|
923
|
+
if disable_moderation_runtime_value:
|
|
925
924
|
_logger.warning("Moderation is disabled via runtime parameter on the model")
|
|
926
925
|
return None
|
|
927
926
|
|
|
@@ -999,6 +998,8 @@ class VdbModerationPipeline(ModerationPipeline):
|
|
|
999
998
|
def moderation_pipeline_factory(
|
|
1000
999
|
target_type: str, model_dir: str = os.getcwd()
|
|
1001
1000
|
) -> Optional[ModerationPipeline]:
|
|
1001
|
+
# Disable ragas tracking while loading the module.
|
|
1002
|
+
os.environ["RAGAS_DO_NOT_TRACK"] = "true"
|
|
1002
1003
|
if target_type in TargetType.guards():
|
|
1003
1004
|
pipeline = init(model_dir=model_dir)
|
|
1004
1005
|
if pipeline:
|
datarobot_dome/guard_helpers.py
CHANGED
|
@@ -34,6 +34,7 @@ from ragas.metrics import AgentGoalAccuracyWithoutReference
|
|
|
34
34
|
from rouge_score import rouge_scorer
|
|
35
35
|
|
|
36
36
|
from datarobot_dome.constants import AWS_MODEL_TO_AWS_MODEL_VERSION_MAP
|
|
37
|
+
from datarobot_dome.constants import ENABLE_LLM_GATEWAY_INFERENCE_RUNTIME_PARAM_NAME
|
|
37
38
|
from datarobot_dome.constants import GOOGLE_MODEL_TO_GOOGLE_MODEL_VERSION_MAP
|
|
38
39
|
from datarobot_dome.constants import LOGGER_NAME_PREFIX
|
|
39
40
|
from datarobot_dome.constants import PROMPT_TOKEN_COUNT_COLUMN_NAME_FROM_USAGE
|
|
@@ -42,6 +43,7 @@ from datarobot_dome.constants import AwsModel
|
|
|
42
43
|
from datarobot_dome.constants import GoogleModel
|
|
43
44
|
from datarobot_dome.constants import GuardLLMType
|
|
44
45
|
from datarobot_dome.llm import DataRobotLLM
|
|
46
|
+
from datarobot_dome.runtime import get_runtime_parameter_value_bool
|
|
45
47
|
|
|
46
48
|
# Ideally, we want to return confidence score between 0.0 and 100.0,
|
|
47
49
|
# but for ROUGE-1 guard, UI allows the user to configure value between
|
|
@@ -227,17 +229,27 @@ def get_llm_gateway_client(
|
|
|
227
229
|
return client
|
|
228
230
|
|
|
229
231
|
|
|
230
|
-
def use_llm_gateway_inference(llm_type:
|
|
232
|
+
def use_llm_gateway_inference(llm_type: str):
|
|
231
233
|
"""
|
|
232
|
-
|
|
233
|
-
|
|
234
|
+
Determine whether the given LLM should use the LLM Gateway for inference.
|
|
235
|
+
|
|
236
|
+
`DATAROBOT` and `NIM LLM` types are not supported by the gateway.
|
|
237
|
+
|
|
238
|
+
Parameters
|
|
239
|
+
----------
|
|
240
|
+
llm_type
|
|
241
|
+
The type of the LLM used in the guard.
|
|
242
|
+
|
|
243
|
+
Returns
|
|
244
|
+
-------
|
|
245
|
+
True if LLM Gateway should be used, False otherwise.
|
|
234
246
|
"""
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return
|
|
247
|
+
is_enabled_by_runtime_parameter = get_runtime_parameter_value_bool(
|
|
248
|
+
param_name=ENABLE_LLM_GATEWAY_INFERENCE_RUNTIME_PARAM_NAME,
|
|
249
|
+
default_value=False,
|
|
250
|
+
)
|
|
251
|
+
is_compatible_llm = llm_type not in [GuardLLMType.DATAROBOT, GuardLLMType.NIM]
|
|
252
|
+
return is_enabled_by_runtime_parameter and is_compatible_llm
|
|
241
253
|
|
|
242
254
|
|
|
243
255
|
def get_azure_openai_client(
|
|
@@ -328,12 +328,7 @@ class Pipeline:
|
|
|
328
328
|
asyncio.run(self.async_upload_custom_metrics(url, payload))
|
|
329
329
|
|
|
330
330
|
async def async_upload_custom_metrics(self, url, payload):
|
|
331
|
-
|
|
332
|
-
self.async_http_client.bulk_upload_custom_metrics(url, payload, self._deployment_id)
|
|
333
|
-
)
|
|
334
|
-
self.upload_custom_metrics_tasks.add(upload_task)
|
|
335
|
-
upload_task.add_done_callback(self.upload_custom_metrics_tasks.discard)
|
|
336
|
-
await asyncio.sleep(0)
|
|
331
|
+
await self.async_http_client.bulk_upload_custom_metrics(url, payload, self._deployment_id)
|
|
337
332
|
|
|
338
333
|
def add_aggregate_metrics_to_payload(self, payload):
|
|
339
334
|
"""
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# ---------------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) 2025 DataRobot, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
# Last updated 2025.
|
|
4
|
+
#
|
|
5
|
+
# DataRobot, Inc. Confidential.
|
|
6
|
+
# This is proprietary source code of DataRobot, Inc. and its affiliates.
|
|
7
|
+
#
|
|
8
|
+
# This file and its contents are subject to DataRobot Tool and Utility Agreement.
|
|
9
|
+
# For details, see
|
|
10
|
+
# https://www.datarobot.com/wp-content/uploads/2021/07/DataRobot-Tool-and-Utility-Agreement.pdf.
|
|
11
|
+
# ---------------------------------------------------------------------------------
|
|
12
|
+
import json
|
|
13
|
+
import os
|
|
14
|
+
|
|
15
|
+
from datarobot_dome.constants import RUNTIME_PARAMETER_PREFIX
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_runtime_parameter_value_bool(param_name: str, default_value: bool) -> bool:
|
|
19
|
+
"""
|
|
20
|
+
Retrieve the value of a boolean-typed model runtime parameter with the specified name.
|
|
21
|
+
|
|
22
|
+
Parameters
|
|
23
|
+
----------
|
|
24
|
+
param_name
|
|
25
|
+
The name of the model runtime parameter to retrieve (without the env variable prefix).
|
|
26
|
+
default_value
|
|
27
|
+
The default value to return if the model runtime parameter is undefined or underspecified.
|
|
28
|
+
|
|
29
|
+
Returns
|
|
30
|
+
-------
|
|
31
|
+
The parsed runtime parameter value.
|
|
32
|
+
"""
|
|
33
|
+
env_var_name = f"{RUNTIME_PARAMETER_PREFIX}{param_name}"
|
|
34
|
+
param_body = json.loads(os.environ.get(env_var_name, "{}"))
|
|
35
|
+
|
|
36
|
+
if not param_body:
|
|
37
|
+
return default_value
|
|
38
|
+
|
|
39
|
+
if "payload" not in param_body:
|
|
40
|
+
return default_value
|
|
41
|
+
|
|
42
|
+
return bool(param_body["payload"])
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
datarobot_dome/__init__.py,sha256=B5Rx8_CNCNsOpxBbRj27XOXCfRZmvmrAR-NzlzIKnDw,583
|
|
2
2
|
datarobot_dome/async_http_client.py,sha256=wkB4irwvnchNGzO1bk2C_HWM-GOSB3AUn5TXKl-X0ZI,9649
|
|
3
3
|
datarobot_dome/chat_helper.py,sha256=BzvtUyZSZxzOqq-5a2wQKhHhr2kMlcP1MFrHaDAeD_o,9671
|
|
4
|
-
datarobot_dome/constants.py,sha256=
|
|
5
|
-
datarobot_dome/drum_integration.py,sha256=
|
|
4
|
+
datarobot_dome/constants.py,sha256=vM2_JkXbn4dkWARCqxNfLriSo0E05LDXVrwNktptpuc,10416
|
|
5
|
+
datarobot_dome/drum_integration.py,sha256=7gXi29t1Huhio68frMksrkWXfMq08V1Q49MmIRjzgMA,42227
|
|
6
6
|
datarobot_dome/guard.py,sha256=1INYx17n9ToiB5bzI-jIReUUuqkK_ucxpOx4jQLts6g,33264
|
|
7
7
|
datarobot_dome/guard_executor.py,sha256=AOI8MZeZETHMoFgBePe0wa2vE9d2975MYQnEDHLZL7s,35462
|
|
8
|
-
datarobot_dome/guard_helpers.py,sha256=
|
|
8
|
+
datarobot_dome/guard_helpers.py,sha256=7jXxRRpO41tumZFZPumpM78qD-hQ-z5yjMtIA8s9_xM,16762
|
|
9
9
|
datarobot_dome/guards/__init__.py,sha256=B5Rx8_CNCNsOpxBbRj27XOXCfRZmvmrAR-NzlzIKnDw,583
|
|
10
10
|
datarobot_dome/guards/guard_llm_mixin.py,sha256=VovlpNZjWIGamF4SSvLF5lzOFyApH5IoOiB_qtCmRg0,12216
|
|
11
11
|
datarobot_dome/llm.py,sha256=L02OvTrflmD34-FrfXebfF-zzKTeuin7fpne1Cl5psg,5719
|
|
@@ -15,9 +15,10 @@ datarobot_dome/metrics/factory.py,sha256=7caa8paI9LuFXDgguXdC4on28V7IwwIsKJT2Z-A
|
|
|
15
15
|
datarobot_dome/metrics/metric_scorer.py,sha256=mGxW3NNP93LpbpOiX3MeYyd0YEEjTPE8WVYMGS4SWoY,2516
|
|
16
16
|
datarobot_dome/pipeline/__init__.py,sha256=B5Rx8_CNCNsOpxBbRj27XOXCfRZmvmrAR-NzlzIKnDw,583
|
|
17
17
|
datarobot_dome/pipeline/llm_pipeline.py,sha256=fOp_OJnQMDUJH-LKv12kEqli-EqfHjAiSTFqtxzMkhM,19942
|
|
18
|
-
datarobot_dome/pipeline/pipeline.py,sha256=
|
|
18
|
+
datarobot_dome/pipeline/pipeline.py,sha256=YrGR3uS7kY9dd30B97cMESBbVNsze25RSoIcjEMqCb0,16251
|
|
19
19
|
datarobot_dome/pipeline/vdb_pipeline.py,sha256=WTOGn1qe_ZvEcdlvHgeXxl2xTqp7GjfL13c6S-FmAfM,5146
|
|
20
|
+
datarobot_dome/runtime.py,sha256=FD8wXOweqoQVzbZMh-mucL66xT2kGxPsJUGAcJBgwxw,1468
|
|
20
21
|
datarobot_dome/streaming.py,sha256=6nYvh6SoxPRLfO6GGdEoHsQuyLP9oX1lDMe8IeGo4lw,17801
|
|
21
|
-
datarobot_moderations-11.1.
|
|
22
|
-
datarobot_moderations-11.1.
|
|
23
|
-
datarobot_moderations-11.1.
|
|
22
|
+
datarobot_moderations-11.1.18.dist-info/METADATA,sha256=pfqGL7fkmf04cOw9vyCL216SWkIm9XQSCNs1r36OUAI,4827
|
|
23
|
+
datarobot_moderations-11.1.18.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
24
|
+
datarobot_moderations-11.1.18.dist-info/RECORD,,
|
|
File without changes
|