ibm-watsonx-gov 1.3.3__cp313-cp313-macosx_11_0_arm64.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.
- ibm_watsonx_gov/__init__.py +8 -0
- ibm_watsonx_gov/agent_catalog/__init__.py +8 -0
- ibm_watsonx_gov/agent_catalog/clients/__init__.py +14 -0
- ibm_watsonx_gov/agent_catalog/clients/ai_agent_client.py +333 -0
- ibm_watsonx_gov/agent_catalog/core/__init__.py +8 -0
- ibm_watsonx_gov/agent_catalog/core/agent_loader.py +202 -0
- ibm_watsonx_gov/agent_catalog/core/agents.py +134 -0
- ibm_watsonx_gov/agent_catalog/entities/__init__.py +8 -0
- ibm_watsonx_gov/agent_catalog/entities/ai_agent.py +599 -0
- ibm_watsonx_gov/agent_catalog/utils/__init__.py +8 -0
- ibm_watsonx_gov/agent_catalog/utils/constants.py +36 -0
- ibm_watsonx_gov/agent_catalog/utils/notebook_utils.py +70 -0
- ibm_watsonx_gov/ai_experiments/__init__.py +8 -0
- ibm_watsonx_gov/ai_experiments/ai_experiments_client.py +980 -0
- ibm_watsonx_gov/ai_experiments/utils/__init__.py +8 -0
- ibm_watsonx_gov/ai_experiments/utils/ai_experiment_utils.py +139 -0
- ibm_watsonx_gov/clients/__init__.py +0 -0
- ibm_watsonx_gov/clients/api_client.py +99 -0
- ibm_watsonx_gov/clients/segment_client.py +46 -0
- ibm_watsonx_gov/clients/usage_client.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/clients/wx_ai_client.py +87 -0
- ibm_watsonx_gov/config/__init__.py +14 -0
- ibm_watsonx_gov/config/agentic_ai_configuration.py +225 -0
- ibm_watsonx_gov/config/gen_ai_configuration.py +129 -0
- ibm_watsonx_gov/config/model_risk_configuration.py +173 -0
- ibm_watsonx_gov/config/predictive_ai_configuration.py +20 -0
- ibm_watsonx_gov/entities/__init__.py +8 -0
- ibm_watsonx_gov/entities/agentic_app.py +209 -0
- ibm_watsonx_gov/entities/agentic_evaluation_result.py +185 -0
- ibm_watsonx_gov/entities/ai_evaluation.py +290 -0
- ibm_watsonx_gov/entities/ai_experiment.py +419 -0
- ibm_watsonx_gov/entities/base_classes.py +134 -0
- ibm_watsonx_gov/entities/container.py +54 -0
- ibm_watsonx_gov/entities/credentials.py +633 -0
- ibm_watsonx_gov/entities/criteria.py +508 -0
- ibm_watsonx_gov/entities/enums.py +274 -0
- ibm_watsonx_gov/entities/evaluation_result.py +444 -0
- ibm_watsonx_gov/entities/foundation_model.py +490 -0
- ibm_watsonx_gov/entities/llm_judge.py +44 -0
- ibm_watsonx_gov/entities/locale.py +17 -0
- ibm_watsonx_gov/entities/mapping.py +49 -0
- ibm_watsonx_gov/entities/metric.py +211 -0
- ibm_watsonx_gov/entities/metric_threshold.py +36 -0
- ibm_watsonx_gov/entities/model_provider.py +329 -0
- ibm_watsonx_gov/entities/model_risk_result.py +43 -0
- ibm_watsonx_gov/entities/monitor.py +71 -0
- ibm_watsonx_gov/entities/prompt_setup.py +40 -0
- ibm_watsonx_gov/entities/state.py +22 -0
- ibm_watsonx_gov/entities/utils.py +99 -0
- ibm_watsonx_gov/evaluators/__init__.py +26 -0
- ibm_watsonx_gov/evaluators/agentic_evaluator.py +2725 -0
- ibm_watsonx_gov/evaluators/agentic_traces_evaluator.py +115 -0
- ibm_watsonx_gov/evaluators/base_evaluator.py +22 -0
- ibm_watsonx_gov/evaluators/impl/__init__.py +0 -0
- ibm_watsonx_gov/evaluators/impl/evaluate_metrics_impl.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/evaluators/impl/evaluate_model_risk_impl.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/evaluators/metrics_evaluator.py +187 -0
- ibm_watsonx_gov/evaluators/model_risk_evaluator.py +89 -0
- ibm_watsonx_gov/evaluators/traces_evaluator.py +93 -0
- ibm_watsonx_gov/metric_groups/answer_quality/answer_quality_decorator.py +66 -0
- ibm_watsonx_gov/metric_groups/content_safety/content_safety_decorator.py +76 -0
- ibm_watsonx_gov/metric_groups/readability/readability_decorator.py +59 -0
- ibm_watsonx_gov/metric_groups/retrieval_quality/retrieval_quality_decorator.py +63 -0
- ibm_watsonx_gov/metric_groups/usage/usage_decorator.py +58 -0
- ibm_watsonx_gov/metrics/__init__.py +74 -0
- ibm_watsonx_gov/metrics/answer_relevance/__init__.py +8 -0
- ibm_watsonx_gov/metrics/answer_relevance/answer_relevance_decorator.py +63 -0
- ibm_watsonx_gov/metrics/answer_relevance/answer_relevance_metric.py +260 -0
- ibm_watsonx_gov/metrics/answer_similarity/__init__.py +0 -0
- ibm_watsonx_gov/metrics/answer_similarity/answer_similarity_decorator.py +66 -0
- ibm_watsonx_gov/metrics/answer_similarity/answer_similarity_metric.py +219 -0
- ibm_watsonx_gov/metrics/average_precision/__init__.py +0 -0
- ibm_watsonx_gov/metrics/average_precision/average_precision_decorator.py +62 -0
- ibm_watsonx_gov/metrics/average_precision/average_precision_metric.py +174 -0
- ibm_watsonx_gov/metrics/base_metric_decorator.py +193 -0
- ibm_watsonx_gov/metrics/context_relevance/__init__.py +8 -0
- ibm_watsonx_gov/metrics/context_relevance/context_relevance_decorator.py +60 -0
- ibm_watsonx_gov/metrics/context_relevance/context_relevance_metric.py +414 -0
- ibm_watsonx_gov/metrics/cost/__init__.py +8 -0
- ibm_watsonx_gov/metrics/cost/cost_decorator.py +58 -0
- ibm_watsonx_gov/metrics/cost/cost_metric.py +155 -0
- ibm_watsonx_gov/metrics/duration/__init__.py +8 -0
- ibm_watsonx_gov/metrics/duration/duration_decorator.py +59 -0
- ibm_watsonx_gov/metrics/duration/duration_metric.py +111 -0
- ibm_watsonx_gov/metrics/evasiveness/__init__.py +8 -0
- ibm_watsonx_gov/metrics/evasiveness/evasiveness_decorator.py +61 -0
- ibm_watsonx_gov/metrics/evasiveness/evasiveness_metric.py +103 -0
- ibm_watsonx_gov/metrics/faithfulness/__init__.py +8 -0
- ibm_watsonx_gov/metrics/faithfulness/faithfulness_decorator.py +65 -0
- ibm_watsonx_gov/metrics/faithfulness/faithfulness_metric.py +254 -0
- ibm_watsonx_gov/metrics/hap/__init__.py +16 -0
- ibm_watsonx_gov/metrics/hap/hap_decorator.py +58 -0
- ibm_watsonx_gov/metrics/hap/hap_metric.py +98 -0
- ibm_watsonx_gov/metrics/hap/input_hap_metric.py +104 -0
- ibm_watsonx_gov/metrics/hap/output_hap_metric.py +110 -0
- ibm_watsonx_gov/metrics/harm/__init__.py +8 -0
- ibm_watsonx_gov/metrics/harm/harm_decorator.py +60 -0
- ibm_watsonx_gov/metrics/harm/harm_metric.py +103 -0
- ibm_watsonx_gov/metrics/harm_engagement/__init__.py +8 -0
- ibm_watsonx_gov/metrics/harm_engagement/harm_engagement_decorator.py +61 -0
- ibm_watsonx_gov/metrics/harm_engagement/harm_engagement_metric.py +103 -0
- ibm_watsonx_gov/metrics/hit_rate/__init__.py +0 -0
- ibm_watsonx_gov/metrics/hit_rate/hit_rate_decorator.py +59 -0
- ibm_watsonx_gov/metrics/hit_rate/hit_rate_metric.py +167 -0
- ibm_watsonx_gov/metrics/input_token_count/__init__.py +8 -0
- ibm_watsonx_gov/metrics/input_token_count/input_token_count_decorator.py +58 -0
- ibm_watsonx_gov/metrics/input_token_count/input_token_count_metric.py +112 -0
- ibm_watsonx_gov/metrics/jailbreak/__init__.py +8 -0
- ibm_watsonx_gov/metrics/jailbreak/jailbreak_decorator.py +60 -0
- ibm_watsonx_gov/metrics/jailbreak/jailbreak_metric.py +103 -0
- ibm_watsonx_gov/metrics/keyword_detection/keyword_detection_decorator.py +58 -0
- ibm_watsonx_gov/metrics/keyword_detection/keyword_detection_metric.py +111 -0
- ibm_watsonx_gov/metrics/llm_validation/__init__.py +8 -0
- ibm_watsonx_gov/metrics/llm_validation/evaluation_criteria.py +84 -0
- ibm_watsonx_gov/metrics/llm_validation/llm_validation_constants.py +24 -0
- ibm_watsonx_gov/metrics/llm_validation/llm_validation_decorator.py +54 -0
- ibm_watsonx_gov/metrics/llm_validation/llm_validation_impl.py +525 -0
- ibm_watsonx_gov/metrics/llm_validation/llm_validation_metric.py +258 -0
- ibm_watsonx_gov/metrics/llm_validation/llm_validation_prompts.py +106 -0
- ibm_watsonx_gov/metrics/llmaj/__init__.py +0 -0
- ibm_watsonx_gov/metrics/llmaj/llmaj_metric.py +298 -0
- ibm_watsonx_gov/metrics/ndcg/__init__.py +0 -0
- ibm_watsonx_gov/metrics/ndcg/ndcg_decorator.py +61 -0
- ibm_watsonx_gov/metrics/ndcg/ndcg_metric.py +166 -0
- ibm_watsonx_gov/metrics/output_token_count/__init__.py +8 -0
- ibm_watsonx_gov/metrics/output_token_count/output_token_count_decorator.py +58 -0
- ibm_watsonx_gov/metrics/output_token_count/output_token_count_metric.py +112 -0
- ibm_watsonx_gov/metrics/pii/__init__.py +16 -0
- ibm_watsonx_gov/metrics/pii/input_pii_metric.py +102 -0
- ibm_watsonx_gov/metrics/pii/output_pii_metric.py +107 -0
- ibm_watsonx_gov/metrics/pii/pii_decorator.py +59 -0
- ibm_watsonx_gov/metrics/pii/pii_metric.py +96 -0
- ibm_watsonx_gov/metrics/profanity/__init__.py +8 -0
- ibm_watsonx_gov/metrics/profanity/profanity_decorator.py +60 -0
- ibm_watsonx_gov/metrics/profanity/profanity_metric.py +103 -0
- ibm_watsonx_gov/metrics/prompt_safety_risk/__init__.py +8 -0
- ibm_watsonx_gov/metrics/prompt_safety_risk/prompt_safety_risk_decorator.py +57 -0
- ibm_watsonx_gov/metrics/prompt_safety_risk/prompt_safety_risk_metric.py +128 -0
- ibm_watsonx_gov/metrics/reciprocal_rank/__init__.py +0 -0
- ibm_watsonx_gov/metrics/reciprocal_rank/reciprocal_rank_decorator.py +62 -0
- ibm_watsonx_gov/metrics/reciprocal_rank/reciprocal_rank_metric.py +162 -0
- ibm_watsonx_gov/metrics/regex_detection/regex_detection_decorator.py +58 -0
- ibm_watsonx_gov/metrics/regex_detection/regex_detection_metric.py +106 -0
- ibm_watsonx_gov/metrics/retrieval_precision/__init__.py +0 -0
- ibm_watsonx_gov/metrics/retrieval_precision/retrieval_precision_decorator.py +62 -0
- ibm_watsonx_gov/metrics/retrieval_precision/retrieval_precision_metric.py +170 -0
- ibm_watsonx_gov/metrics/sexual_content/__init__.py +8 -0
- ibm_watsonx_gov/metrics/sexual_content/sexual_content_decorator.py +61 -0
- ibm_watsonx_gov/metrics/sexual_content/sexual_content_metric.py +103 -0
- ibm_watsonx_gov/metrics/social_bias/__init__.py +8 -0
- ibm_watsonx_gov/metrics/social_bias/social_bias_decorator.py +62 -0
- ibm_watsonx_gov/metrics/social_bias/social_bias_metric.py +103 -0
- ibm_watsonx_gov/metrics/status/__init__.py +0 -0
- ibm_watsonx_gov/metrics/status/status_metric.py +113 -0
- ibm_watsonx_gov/metrics/text_grade_level/__init__.py +8 -0
- ibm_watsonx_gov/metrics/text_grade_level/text_grade_level_decorator.py +59 -0
- ibm_watsonx_gov/metrics/text_grade_level/text_grade_level_metric.py +127 -0
- ibm_watsonx_gov/metrics/text_reading_ease/__init__.py +8 -0
- ibm_watsonx_gov/metrics/text_reading_ease/text_reading_ease_decorator.py +59 -0
- ibm_watsonx_gov/metrics/text_reading_ease/text_reading_ease_metric.py +123 -0
- ibm_watsonx_gov/metrics/tool_call_accuracy/__init__.py +0 -0
- ibm_watsonx_gov/metrics/tool_call_accuracy/tool_call_accuracy_decorator.py +67 -0
- ibm_watsonx_gov/metrics/tool_call_accuracy/tool_call_accuracy_metric.py +162 -0
- ibm_watsonx_gov/metrics/tool_call_parameter_accuracy/__init__.py +0 -0
- ibm_watsonx_gov/metrics/tool_call_parameter_accuracy/tool_call_parameter_accuracy_decorator.py +68 -0
- ibm_watsonx_gov/metrics/tool_call_parameter_accuracy/tool_call_parameter_accuracy_metric.py +151 -0
- ibm_watsonx_gov/metrics/tool_call_relevance/__init__.py +0 -0
- ibm_watsonx_gov/metrics/tool_call_relevance/tool_call_relevance_decorator.py +71 -0
- ibm_watsonx_gov/metrics/tool_call_relevance/tool_call_relevance_metric.py +166 -0
- ibm_watsonx_gov/metrics/tool_call_syntactic_accuracy/__init__.py +0 -0
- ibm_watsonx_gov/metrics/tool_call_syntactic_accuracy/tool_call_syntactic_accuracy_decorator.py +66 -0
- ibm_watsonx_gov/metrics/tool_call_syntactic_accuracy/tool_call_syntactic_accuracy_metric.py +121 -0
- ibm_watsonx_gov/metrics/topic_relevance/__init__.py +8 -0
- ibm_watsonx_gov/metrics/topic_relevance/topic_relevance_decorator.py +57 -0
- ibm_watsonx_gov/metrics/topic_relevance/topic_relevance_metric.py +106 -0
- ibm_watsonx_gov/metrics/unethical_behavior/__init__.py +8 -0
- ibm_watsonx_gov/metrics/unethical_behavior/unethical_behavior_decorator.py +61 -0
- ibm_watsonx_gov/metrics/unethical_behavior/unethical_behavior_metric.py +103 -0
- ibm_watsonx_gov/metrics/unsuccessful_requests/__init__.py +0 -0
- ibm_watsonx_gov/metrics/unsuccessful_requests/unsuccessful_requests_decorator.py +66 -0
- ibm_watsonx_gov/metrics/unsuccessful_requests/unsuccessful_requests_metric.py +128 -0
- ibm_watsonx_gov/metrics/user_id/__init__.py +0 -0
- ibm_watsonx_gov/metrics/user_id/user_id_metric.py +111 -0
- ibm_watsonx_gov/metrics/utils.py +440 -0
- ibm_watsonx_gov/metrics/violence/__init__.py +8 -0
- ibm_watsonx_gov/metrics/violence/violence_decorator.py +60 -0
- ibm_watsonx_gov/metrics/violence/violence_metric.py +103 -0
- ibm_watsonx_gov/prompt_evaluator/__init__.py +9 -0
- ibm_watsonx_gov/prompt_evaluator/impl/__init__.py +8 -0
- ibm_watsonx_gov/prompt_evaluator/impl/prompt_evaluator_impl.py +554 -0
- ibm_watsonx_gov/prompt_evaluator/impl/pta_lifecycle_evaluator.py +2332 -0
- ibm_watsonx_gov/prompt_evaluator/prompt_evaluator.py +262 -0
- ibm_watsonx_gov/providers/__init__.py +8 -0
- ibm_watsonx_gov/providers/detectors_provider.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/providers/detectors_provider.py +415 -0
- ibm_watsonx_gov/providers/eval_assist_provider.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/providers/eval_assist_provider.py +266 -0
- ibm_watsonx_gov/providers/inference_engines/__init__.py +0 -0
- ibm_watsonx_gov/providers/inference_engines/custom_inference_engine.py +165 -0
- ibm_watsonx_gov/providers/inference_engines/portkey_inference_engine.py +57 -0
- ibm_watsonx_gov/providers/llmevalkit/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/ciso_agent/main.py +516 -0
- ibm_watsonx_gov/providers/llmevalkit/ciso_agent/preprocess_log.py +111 -0
- ibm_watsonx_gov/providers/llmevalkit/ciso_agent/utils.py +186 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/README.md +411 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/__init__.py +27 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/README.md +306 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/__init__.py +89 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/__init__.py +30 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/base.py +411 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/code_agent.py +1254 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/exact_match.py +134 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/fuzzy_string.py +104 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/hybrid.py +516 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/llm_judge.py +1882 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/pipeline.py +387 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/types.py +178 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/utils.py +298 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/consts.py +33 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/__init__.py +31 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/base.py +26 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/__init__.py +4 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/general.py +46 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/general_metrics.json +783 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/general_metrics_runtime.json +580 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/__init__.py +6 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/function_selection.py +28 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/function_selection_metrics.json +599 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/function_selection_metrics_runtime.json +477 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/loader.py +259 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/__init__.py +7 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/parameter.py +52 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/parameter_metrics.json +613 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/parameter_metrics_runtime.json +489 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/trajectory/__init__.py +7 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/trajectory/trajectory.py +43 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/trajectory/trajectory_metrics.json +161 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/adapters.py +102 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/pipeline.py +355 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/semantic_checker.py +816 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/static_checker.py +297 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/transformation_prompts.py +509 -0
- ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/types.py +596 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/README.md +375 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/__init__.py +137 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/base.py +426 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/output_parser.py +364 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/consts.py +7 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/ibm_watsonx_ai/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/ibm_watsonx_ai/ibm_watsonx_ai.py +656 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/litellm.py +509 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/rits.py +224 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/watsonx.py +60 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/mock_llm_client.py +75 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/openai/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/openai/openai.py +639 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/wxo_ai_gateway/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/wxo_ai_gateway/wxo_ai_gateway.py +134 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/providers/wxo_ai_gateway/wxo_ai_gateway_inference.py +214 -0
- ibm_watsonx_gov/providers/llmevalkit/llm/types.py +136 -0
- ibm_watsonx_gov/providers/llmevalkit/metrics/__init__.py +4 -0
- ibm_watsonx_gov/providers/llmevalkit/metrics/field.py +255 -0
- ibm_watsonx_gov/providers/llmevalkit/metrics/metric.py +332 -0
- ibm_watsonx_gov/providers/llmevalkit/metrics/metrics_runner.py +188 -0
- ibm_watsonx_gov/providers/llmevalkit/metrics/prompt.py +403 -0
- ibm_watsonx_gov/providers/llmevalkit/metrics/utils.py +46 -0
- ibm_watsonx_gov/providers/llmevalkit/prompt/__init__.py +0 -0
- ibm_watsonx_gov/providers/llmevalkit/prompt/runner.py +144 -0
- ibm_watsonx_gov/providers/tool_call_metric_provider.py +455 -0
- ibm_watsonx_gov/providers/unitxt_provider.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/tools/__init__.py +10 -0
- ibm_watsonx_gov/tools/clients/__init__.py +11 -0
- ibm_watsonx_gov/tools/clients/ai_tool_client.py +405 -0
- ibm_watsonx_gov/tools/clients/detector_client.py +82 -0
- ibm_watsonx_gov/tools/core/__init__.py +8 -0
- ibm_watsonx_gov/tools/core/tool_loader.py +237 -0
- ibm_watsonx_gov/tools/entities/__init__.py +8 -0
- ibm_watsonx_gov/tools/entities/ai_tools.py +435 -0
- ibm_watsonx_gov/tools/onboarding/create/answer_relevance_detector.json +57 -0
- ibm_watsonx_gov/tools/onboarding/create/chromadb_retrieval_tool.json +63 -0
- ibm_watsonx_gov/tools/onboarding/create/context_relevance_detector.json +57 -0
- ibm_watsonx_gov/tools/onboarding/create/duduckgo_search_tool.json +53 -0
- ibm_watsonx_gov/tools/onboarding/create/google_search_tool.json +62 -0
- ibm_watsonx_gov/tools/onboarding/create/hap_detector.json +70 -0
- ibm_watsonx_gov/tools/onboarding/create/jailbreak_detector.json +70 -0
- ibm_watsonx_gov/tools/onboarding/create/pii_detector.json +36 -0
- ibm_watsonx_gov/tools/onboarding/create/prompt_safety_risk_detector.json +69 -0
- ibm_watsonx_gov/tools/onboarding/create/topic_relevance_detector.json +57 -0
- ibm_watsonx_gov/tools/onboarding/create/weather_tool.json +39 -0
- ibm_watsonx_gov/tools/onboarding/create/webcrawler_tool.json +34 -0
- ibm_watsonx_gov/tools/onboarding/create/wikipedia_search_tool.json +53 -0
- ibm_watsonx_gov/tools/onboarding/delete/delete_tools.json +4 -0
- ibm_watsonx_gov/tools/onboarding/update/google_search_tool.json +38 -0
- ibm_watsonx_gov/tools/ootb/__init__.py +8 -0
- ibm_watsonx_gov/tools/ootb/detectors/__init__.py +8 -0
- ibm_watsonx_gov/tools/ootb/detectors/hap_detector_tool.py +109 -0
- ibm_watsonx_gov/tools/ootb/detectors/jailbreak_detector_tool.py +104 -0
- ibm_watsonx_gov/tools/ootb/detectors/pii_detector_tool.py +83 -0
- ibm_watsonx_gov/tools/ootb/detectors/prompt_safety_risk_detector_tool.py +111 -0
- ibm_watsonx_gov/tools/ootb/detectors/topic_relevance_detector_tool.py +101 -0
- ibm_watsonx_gov/tools/ootb/rag/__init__.py +8 -0
- ibm_watsonx_gov/tools/ootb/rag/answer_relevance_detector_tool.py +119 -0
- ibm_watsonx_gov/tools/ootb/rag/context_relevance_detector_tool.py +118 -0
- ibm_watsonx_gov/tools/ootb/search/__init__.py +8 -0
- ibm_watsonx_gov/tools/ootb/search/duckduckgo_search_tool.py +62 -0
- ibm_watsonx_gov/tools/ootb/search/google_search_tool.py +105 -0
- ibm_watsonx_gov/tools/ootb/search/weather_tool.py +95 -0
- ibm_watsonx_gov/tools/ootb/search/web_crawler_tool.py +69 -0
- ibm_watsonx_gov/tools/ootb/search/wikipedia_search_tool.py +63 -0
- ibm_watsonx_gov/tools/ootb/vectordb/__init__.py +8 -0
- ibm_watsonx_gov/tools/ootb/vectordb/chromadb_retriever_tool.py +111 -0
- ibm_watsonx_gov/tools/rest_api/__init__.py +10 -0
- ibm_watsonx_gov/tools/rest_api/restapi_tool.py +72 -0
- ibm_watsonx_gov/tools/schemas/__init__.py +10 -0
- ibm_watsonx_gov/tools/schemas/search_tool_schema.py +46 -0
- ibm_watsonx_gov/tools/schemas/vectordb_retrieval_schema.py +55 -0
- ibm_watsonx_gov/tools/utils/__init__.py +14 -0
- ibm_watsonx_gov/tools/utils/constants.py +69 -0
- ibm_watsonx_gov/tools/utils/display_utils.py +38 -0
- ibm_watsonx_gov/tools/utils/environment.py +108 -0
- ibm_watsonx_gov/tools/utils/package_utils.py +40 -0
- ibm_watsonx_gov/tools/utils/platform_url_mapping.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/tools/utils/python_utils.py +68 -0
- ibm_watsonx_gov/tools/utils/tool_utils.py +206 -0
- ibm_watsonx_gov/traces/__init__.py +8 -0
- ibm_watsonx_gov/traces/span_exporter.py +195 -0
- ibm_watsonx_gov/traces/span_node.py +251 -0
- ibm_watsonx_gov/traces/span_util.py +153 -0
- ibm_watsonx_gov/traces/trace_utils.py +1074 -0
- ibm_watsonx_gov/utils/__init__.py +8 -0
- ibm_watsonx_gov/utils/aggregation_util.py +346 -0
- ibm_watsonx_gov/utils/async_util.py +62 -0
- ibm_watsonx_gov/utils/authenticator.py +144 -0
- ibm_watsonx_gov/utils/constants.py +15 -0
- ibm_watsonx_gov/utils/errors.py +40 -0
- ibm_watsonx_gov/utils/gov_sdk_logger.py +39 -0
- ibm_watsonx_gov/utils/insights_generator.py +1285 -0
- ibm_watsonx_gov/utils/python_utils.py +425 -0
- ibm_watsonx_gov/utils/rest_util.py +73 -0
- ibm_watsonx_gov/utils/segment_batch_manager.py +162 -0
- ibm_watsonx_gov/utils/singleton_meta.py +25 -0
- ibm_watsonx_gov/utils/url_mapping.cpython-313-darwin.so +0 -0
- ibm_watsonx_gov/utils/validation_util.py +126 -0
- ibm_watsonx_gov/visualizations/__init__.py +13 -0
- ibm_watsonx_gov/visualizations/metric_descriptions.py +57 -0
- ibm_watsonx_gov/visualizations/model_insights.py +1304 -0
- ibm_watsonx_gov/visualizations/visualization_utils.py +75 -0
- ibm_watsonx_gov-1.3.3.dist-info/METADATA +93 -0
- ibm_watsonx_gov-1.3.3.dist-info/RECORD +353 -0
- ibm_watsonx_gov-1.3.3.dist-info/WHEEL +6 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# ----------------------------------------------------------------------------------------------------
|
|
2
|
+
# IBM Confidential
|
|
3
|
+
# Licensed Materials - Property of IBM
|
|
4
|
+
# 5737-H76, 5900-A3Q
|
|
5
|
+
# © Copyright IBM Corp. 2025 All Rights Reserved.
|
|
6
|
+
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by
|
|
7
|
+
# GSA ADPSchedule Contract with IBM Corp.
|
|
8
|
+
# ----------------------------------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
from typing import Annotated, Dict, List
|
|
12
|
+
from pydantic import BaseModel, Field, validator
|
|
13
|
+
|
|
14
|
+
from ibm_watsonx_gov.entities.foundation_model import FoundationModelInfo
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Node(BaseModel):
|
|
18
|
+
id: Annotated[
|
|
19
|
+
str,
|
|
20
|
+
Field(
|
|
21
|
+
description="The ID of node for AI Experiemnt.",
|
|
22
|
+
examples=["node-001"],
|
|
23
|
+
default="",
|
|
24
|
+
),
|
|
25
|
+
]
|
|
26
|
+
name: Annotated[
|
|
27
|
+
str,
|
|
28
|
+
Field(
|
|
29
|
+
description="The name of node for AI Experiment.",
|
|
30
|
+
examples=["Node_1"],
|
|
31
|
+
default="",
|
|
32
|
+
),
|
|
33
|
+
]
|
|
34
|
+
type: Annotated[
|
|
35
|
+
str,
|
|
36
|
+
Field(
|
|
37
|
+
description="The type of node for AI Experiment.",
|
|
38
|
+
examples=["tool", "agent"],
|
|
39
|
+
default="tool",
|
|
40
|
+
),
|
|
41
|
+
]
|
|
42
|
+
foundation_models: Annotated[
|
|
43
|
+
List[FoundationModelInfo],
|
|
44
|
+
Field(
|
|
45
|
+
description="The Foundation models invoked by the node",
|
|
46
|
+
default=[],
|
|
47
|
+
),
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
def to_json(self):
|
|
51
|
+
"""
|
|
52
|
+
Transform the Node instance to json.
|
|
53
|
+
"""
|
|
54
|
+
return self.model_dump(mode="json")
|
|
55
|
+
|
|
56
|
+
@validator('foundation_models', pre=True, each_item=True)
|
|
57
|
+
def convert_foundation_models(cls, v):
|
|
58
|
+
if isinstance(v, dict):
|
|
59
|
+
return FoundationModelInfo(**v)
|
|
60
|
+
return v
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class AIExperimentRun(BaseModel):
|
|
64
|
+
"""
|
|
65
|
+
The class for AIExperimentRun
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
--------
|
|
69
|
+
.. code-block:: python
|
|
70
|
+
|
|
71
|
+
experiment_run_details = AIExperimentRun(
|
|
72
|
+
run_id=str(uuid.uuid4()),
|
|
73
|
+
run_name="",
|
|
74
|
+
test_data={},
|
|
75
|
+
node=[]
|
|
76
|
+
)
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
run_id: Annotated[
|
|
80
|
+
str, Field(description="The ID of the AI experiment run.",
|
|
81
|
+
examples=["run-001"])
|
|
82
|
+
]
|
|
83
|
+
run_name: Annotated[
|
|
84
|
+
str,
|
|
85
|
+
Field(
|
|
86
|
+
description="The name of the AI experiment run.", examples=["Test run 1"]
|
|
87
|
+
),
|
|
88
|
+
]
|
|
89
|
+
created_at: Annotated[
|
|
90
|
+
str,
|
|
91
|
+
Field(
|
|
92
|
+
description="The timestamp of the AI experiment run.",
|
|
93
|
+
examples=["2025-04-01T12:00:00Z"],
|
|
94
|
+
default="",
|
|
95
|
+
),
|
|
96
|
+
]
|
|
97
|
+
created_by: Annotated[
|
|
98
|
+
str,
|
|
99
|
+
Field(
|
|
100
|
+
description="The ID of the user creating AI experiment run.",
|
|
101
|
+
examples=["user-123"],
|
|
102
|
+
default="",
|
|
103
|
+
),
|
|
104
|
+
]
|
|
105
|
+
test_data: Annotated[
|
|
106
|
+
dict,
|
|
107
|
+
Field(description="The test data used for the evaluation run.", default={}),
|
|
108
|
+
]
|
|
109
|
+
tracked: Annotated[
|
|
110
|
+
bool,
|
|
111
|
+
Field(
|
|
112
|
+
description="The experiment run is tracked or not.",
|
|
113
|
+
examples=[False, True],
|
|
114
|
+
default=False,
|
|
115
|
+
),
|
|
116
|
+
]
|
|
117
|
+
id_deleted: Annotated[
|
|
118
|
+
bool,
|
|
119
|
+
Field(
|
|
120
|
+
description="The experiment run is deleted or not.",
|
|
121
|
+
examples=[False, True],
|
|
122
|
+
default=False,
|
|
123
|
+
),
|
|
124
|
+
]
|
|
125
|
+
attachment_id: Annotated[
|
|
126
|
+
str,
|
|
127
|
+
Field(
|
|
128
|
+
description="The ID of attachment of evaluation result of the AI experiment run.",
|
|
129
|
+
examples=["att-456"],
|
|
130
|
+
default="",
|
|
131
|
+
),
|
|
132
|
+
]
|
|
133
|
+
nodes: Annotated[
|
|
134
|
+
List[Node],
|
|
135
|
+
Field(
|
|
136
|
+
description="The list of nodes for AI Experiment run.",
|
|
137
|
+
examples=[{"id": "node-001", "name": "Node_1", "type": "tool"}],
|
|
138
|
+
default=[],
|
|
139
|
+
),
|
|
140
|
+
]
|
|
141
|
+
description: Annotated[
|
|
142
|
+
str,
|
|
143
|
+
Field(
|
|
144
|
+
description="The description of AI Experiment run.",
|
|
145
|
+
examples=["This is the experiment run for AI Experiment"],
|
|
146
|
+
default="",
|
|
147
|
+
),
|
|
148
|
+
]
|
|
149
|
+
source_name: Annotated[
|
|
150
|
+
str,
|
|
151
|
+
Field(
|
|
152
|
+
description="The name of the notebook used to create experiment run",
|
|
153
|
+
examples=[""],
|
|
154
|
+
default="",
|
|
155
|
+
),
|
|
156
|
+
]
|
|
157
|
+
source_url: Annotated[
|
|
158
|
+
str,
|
|
159
|
+
Field(
|
|
160
|
+
description="The URL of the notebook used to create experiment run",
|
|
161
|
+
examples=[""],
|
|
162
|
+
default="",
|
|
163
|
+
),
|
|
164
|
+
]
|
|
165
|
+
duration: Annotated[
|
|
166
|
+
int,
|
|
167
|
+
Field(
|
|
168
|
+
description="The time taken to complete the run.",
|
|
169
|
+
examples=[""],
|
|
170
|
+
default=None,
|
|
171
|
+
),
|
|
172
|
+
]
|
|
173
|
+
custom_tags: Annotated[
|
|
174
|
+
List[Dict],
|
|
175
|
+
Field(
|
|
176
|
+
description="The list of custom tags key value pair.",
|
|
177
|
+
examples=[""],
|
|
178
|
+
default=[],
|
|
179
|
+
),
|
|
180
|
+
]
|
|
181
|
+
properties: Annotated[
|
|
182
|
+
Dict,
|
|
183
|
+
Field(
|
|
184
|
+
description="Freeform field to store additional metadata related to runs",
|
|
185
|
+
default={},
|
|
186
|
+
),
|
|
187
|
+
]
|
|
188
|
+
agent_method_name: Annotated[
|
|
189
|
+
str,
|
|
190
|
+
Field(
|
|
191
|
+
description="Name of the method which returns the agent.",
|
|
192
|
+
examples=[""],
|
|
193
|
+
default="",
|
|
194
|
+
),
|
|
195
|
+
]
|
|
196
|
+
|
|
197
|
+
def to_json(self):
|
|
198
|
+
"""
|
|
199
|
+
Transform the AIExperimentRun instance to json.
|
|
200
|
+
"""
|
|
201
|
+
return self.model_dump(mode="json")
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class AIExperiment(BaseModel):
|
|
205
|
+
"""
|
|
206
|
+
The class for AIExperiment
|
|
207
|
+
|
|
208
|
+
Example:
|
|
209
|
+
--------
|
|
210
|
+
Creating instance of AIExperiment
|
|
211
|
+
.. code-block:: python
|
|
212
|
+
|
|
213
|
+
ai_experiment = AIExperiment(name="",
|
|
214
|
+
description="",
|
|
215
|
+
component_type="agent",
|
|
216
|
+
component_name="")
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
container_id: Annotated[
|
|
220
|
+
str,
|
|
221
|
+
Field(
|
|
222
|
+
description="The container ID of the AI Experiment",
|
|
223
|
+
examples=["proj-001"],
|
|
224
|
+
default="",
|
|
225
|
+
),
|
|
226
|
+
]
|
|
227
|
+
container_type: Annotated[
|
|
228
|
+
str,
|
|
229
|
+
Field(
|
|
230
|
+
description="The container type of the AI Experiment.",
|
|
231
|
+
examples=["project", "space"],
|
|
232
|
+
default="",
|
|
233
|
+
),
|
|
234
|
+
]
|
|
235
|
+
container_name: Annotated[
|
|
236
|
+
str,
|
|
237
|
+
Field(
|
|
238
|
+
description="The container name of the AI Experiment.",
|
|
239
|
+
examples=["project_1"],
|
|
240
|
+
default="",
|
|
241
|
+
),
|
|
242
|
+
]
|
|
243
|
+
name: Annotated[
|
|
244
|
+
str,
|
|
245
|
+
Field(
|
|
246
|
+
description="The name of the AI Experiment.",
|
|
247
|
+
examples=["AI Experiment for Agent 1"],
|
|
248
|
+
default="AI Experiment for Agent",
|
|
249
|
+
),
|
|
250
|
+
]
|
|
251
|
+
description: Annotated[
|
|
252
|
+
str,
|
|
253
|
+
Field(
|
|
254
|
+
description="The description of the AI Experiment",
|
|
255
|
+
examples=["AI Experiment asset for Agent governance"],
|
|
256
|
+
default="",
|
|
257
|
+
),
|
|
258
|
+
]
|
|
259
|
+
asset_type: Annotated[
|
|
260
|
+
str, Field(description="", examples=["ai_experiment"], default="")
|
|
261
|
+
]
|
|
262
|
+
created_at: Annotated[
|
|
263
|
+
str,
|
|
264
|
+
Field(
|
|
265
|
+
description="The timestamp of the AI Experiment creation.",
|
|
266
|
+
examples=["2025-04-08T10:00:43Z"],
|
|
267
|
+
default="",
|
|
268
|
+
),
|
|
269
|
+
]
|
|
270
|
+
owner_id: Annotated[
|
|
271
|
+
str,
|
|
272
|
+
Field(
|
|
273
|
+
description="The owner of the AI Experiment.",
|
|
274
|
+
examples=["user-123"],
|
|
275
|
+
default="",
|
|
276
|
+
),
|
|
277
|
+
]
|
|
278
|
+
asset_id: Annotated[
|
|
279
|
+
str,
|
|
280
|
+
Field(
|
|
281
|
+
description="The ID of the AI Experiment.",
|
|
282
|
+
examples=["ai_experimet-001"],
|
|
283
|
+
default="",
|
|
284
|
+
),
|
|
285
|
+
]
|
|
286
|
+
creator_id: Annotated[
|
|
287
|
+
str,
|
|
288
|
+
Field(
|
|
289
|
+
description="The ID of the user creating AI Experiment.",
|
|
290
|
+
examples=["user-123"],
|
|
291
|
+
default="",
|
|
292
|
+
),
|
|
293
|
+
]
|
|
294
|
+
component_id: Annotated[
|
|
295
|
+
str,
|
|
296
|
+
Field(
|
|
297
|
+
description="The ID of the component of the AI Experiemnt.",
|
|
298
|
+
examples=["comp-001"],
|
|
299
|
+
default="",
|
|
300
|
+
),
|
|
301
|
+
]
|
|
302
|
+
component_type: Annotated[
|
|
303
|
+
str,
|
|
304
|
+
Field(
|
|
305
|
+
description="The type of AI component for which the AI Experiment is to be created.",
|
|
306
|
+
examples=["agent"],
|
|
307
|
+
default="agent",
|
|
308
|
+
),
|
|
309
|
+
]
|
|
310
|
+
component_name: Annotated[
|
|
311
|
+
str,
|
|
312
|
+
Field(
|
|
313
|
+
description="The name of AI component of AI Experiment.",
|
|
314
|
+
examples=["Test agent"],
|
|
315
|
+
default="Test agent",
|
|
316
|
+
),
|
|
317
|
+
]
|
|
318
|
+
runs: Annotated[
|
|
319
|
+
List[AIExperimentRun],
|
|
320
|
+
Field(
|
|
321
|
+
description="Experiment runs for the AI Experiment",
|
|
322
|
+
examples=[
|
|
323
|
+
{
|
|
324
|
+
"run_id": "run-001",
|
|
325
|
+
"run_name": "Test run 1",
|
|
326
|
+
"created_at": "2025-04-01T12:00:00Z",
|
|
327
|
+
"created_by": "user-123",
|
|
328
|
+
"test_data": {},
|
|
329
|
+
"attachment_id": "att-456",
|
|
330
|
+
"nodes": [
|
|
331
|
+
{
|
|
332
|
+
"id": "node-001",
|
|
333
|
+
"name": "Node_1",
|
|
334
|
+
"type": "example_type",
|
|
335
|
+
"foundation_models": [
|
|
336
|
+
{
|
|
337
|
+
"type": "chat",
|
|
338
|
+
"model_name": "gpt-4o-mini",
|
|
339
|
+
"provider": "openai"
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
],
|
|
344
|
+
}
|
|
345
|
+
],
|
|
346
|
+
default=[],
|
|
347
|
+
),
|
|
348
|
+
]
|
|
349
|
+
|
|
350
|
+
def to_json(self):
|
|
351
|
+
"""
|
|
352
|
+
Transform the AI Experiment instance to json.
|
|
353
|
+
"""
|
|
354
|
+
return self.model_dump(mode="json")
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
class AIExperimentRunRequest(BaseModel):
|
|
358
|
+
""" The class for AIExperimentRunRequest
|
|
359
|
+
|
|
360
|
+
Example:
|
|
361
|
+
--------
|
|
362
|
+
Creating instance of AIExperiment
|
|
363
|
+
.. code-block:: python
|
|
364
|
+
|
|
365
|
+
ai_experiment_run_request = AIExperimentRunRequest(name="",
|
|
366
|
+
description="",
|
|
367
|
+
source_name="",
|
|
368
|
+
source_url="",
|
|
369
|
+
custom_tags=[])
|
|
370
|
+
"""
|
|
371
|
+
|
|
372
|
+
name: Annotated[
|
|
373
|
+
str,
|
|
374
|
+
Field(
|
|
375
|
+
description="The name of experiment run.",
|
|
376
|
+
examples=["run_1"],
|
|
377
|
+
default="run_1",
|
|
378
|
+
),
|
|
379
|
+
]
|
|
380
|
+
description: Annotated[
|
|
381
|
+
str,
|
|
382
|
+
Field(
|
|
383
|
+
description="The description of AI Experiment run.",
|
|
384
|
+
examples=["This is the experiment run for AI Experiment"],
|
|
385
|
+
default="",
|
|
386
|
+
),
|
|
387
|
+
]
|
|
388
|
+
source_name: Annotated[
|
|
389
|
+
str,
|
|
390
|
+
Field(
|
|
391
|
+
description="The name of the notebook used to create experiment run",
|
|
392
|
+
examples=[""],
|
|
393
|
+
default="",
|
|
394
|
+
),
|
|
395
|
+
]
|
|
396
|
+
source_url: Annotated[
|
|
397
|
+
str,
|
|
398
|
+
Field(
|
|
399
|
+
description="The URL of the notebook used to create experiment run",
|
|
400
|
+
examples=[""],
|
|
401
|
+
default="",
|
|
402
|
+
),
|
|
403
|
+
]
|
|
404
|
+
custom_tags: Annotated[
|
|
405
|
+
List[Dict],
|
|
406
|
+
Field(
|
|
407
|
+
description="The list of custom tags key value pair.",
|
|
408
|
+
examples=[""],
|
|
409
|
+
default=[],
|
|
410
|
+
),
|
|
411
|
+
]
|
|
412
|
+
agent_method_name: Annotated[
|
|
413
|
+
str,
|
|
414
|
+
Field(
|
|
415
|
+
description="Name of the method which returns the agent.",
|
|
416
|
+
examples=[""],
|
|
417
|
+
default="",
|
|
418
|
+
),
|
|
419
|
+
]
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# ----------------------------------------------------------------------------------------------------
|
|
2
|
+
# IBM Confidential
|
|
3
|
+
# Licensed Materials - Property of IBM
|
|
4
|
+
# 5737-H76, 5900-A3Q
|
|
5
|
+
# © Copyright IBM Corp. 2025 All Rights Reserved.
|
|
6
|
+
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by
|
|
7
|
+
# GSA ADPSchedule Contract with IBM Corp.
|
|
8
|
+
# ----------------------------------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
from typing import Annotated, Any
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field, PrivateAttr, computed_field
|
|
13
|
+
|
|
14
|
+
from ibm_watsonx_gov.entities.enums import (MetricGroup, MetricType,
|
|
15
|
+
MetricValueType)
|
|
16
|
+
from ibm_watsonx_gov.entities.metric_threshold import MetricThreshold
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class BaseConfiguration(BaseModel):
|
|
20
|
+
model_config = ConfigDict(
|
|
21
|
+
arbitrary_types_allowed=True)
|
|
22
|
+
|
|
23
|
+
record_id_field: Annotated[str, Field(title="Record id field",
|
|
24
|
+
description="The record identifier field name.",
|
|
25
|
+
examples=["record_id"],
|
|
26
|
+
default="record_id")]
|
|
27
|
+
record_timestamp_field: Annotated[str, Field(title="Record timestamp field",
|
|
28
|
+
description="The record timestamp field name.",
|
|
29
|
+
examples=["record_timestamp"],
|
|
30
|
+
default="record_timestamp")]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class BaseMetric(BaseModel):
|
|
34
|
+
name: Annotated[str, Field(title="Metric Name",
|
|
35
|
+
description="The name of the metric.",
|
|
36
|
+
frozen=True,
|
|
37
|
+
examples=["answer_relevance",
|
|
38
|
+
"context_relevance"],)]
|
|
39
|
+
display_name: Annotated[str | None, Field(title="Metric display name",
|
|
40
|
+
description="The display name of the metric.",
|
|
41
|
+
examples=["Answer Relevance",
|
|
42
|
+
"Context Relevance"],
|
|
43
|
+
default=None)]
|
|
44
|
+
type_: Annotated[str, Field(title="Metric type",
|
|
45
|
+
description="The type of the metric. Indicates whether the metric is ootb or custom.",
|
|
46
|
+
serialization_alias="type",
|
|
47
|
+
default=MetricType.OOTB.value,
|
|
48
|
+
frozen=True,
|
|
49
|
+
examples=MetricType.values())]
|
|
50
|
+
value_type: Annotated[str, Field(title="Metric value type",
|
|
51
|
+
description="The type of the metric value. Indicates whether the metric value is numeric or categorical.",
|
|
52
|
+
serialization_alias="type", default=MetricValueType.NUMERIC.value,
|
|
53
|
+
examples=MetricValueType.values())]
|
|
54
|
+
_id: Annotated[str, PrivateAttr(default=None)]
|
|
55
|
+
|
|
56
|
+
@computed_field(return_type=str)
|
|
57
|
+
@property
|
|
58
|
+
def id(self):
|
|
59
|
+
if self._id is None:
|
|
60
|
+
self._id = self.name
|
|
61
|
+
return self._id
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class BaseMetricGroup(BaseModel):
|
|
65
|
+
name: Annotated[str, Field(description="The name of the metric group")]
|
|
66
|
+
_metrics: Annotated[list[BaseMetric], Field(
|
|
67
|
+
description="Metrics to be computed when selecting this metric group", default=[])]
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def metrics(self) -> list[BaseMetric]:
|
|
71
|
+
return self._metrics
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class Error(BaseModel):
|
|
75
|
+
code: Annotated[str, Field(description="The error code")]
|
|
76
|
+
message_en: Annotated[str, Field(
|
|
77
|
+
description="The error message in English.")]
|
|
78
|
+
parameters: Annotated[list[Any], Field(
|
|
79
|
+
description="The list of parameters to construct the message in a different locale.", default=[])]
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class BaseMetricResult(BaseModel):
|
|
83
|
+
name: Annotated[str, Field(title="Metric Name",
|
|
84
|
+
description="The name of the metric.",
|
|
85
|
+
examples=["answer_relevance",
|
|
86
|
+
"context_relevance"],)]
|
|
87
|
+
display_name: Annotated[str | None, Field(title="Metric display name",
|
|
88
|
+
description="The display name of the metric.",
|
|
89
|
+
examples=["Answer Relevance",
|
|
90
|
+
"Context Relevance"],
|
|
91
|
+
default=None)]
|
|
92
|
+
value_type: Annotated[str, Field(title="Metric value type",
|
|
93
|
+
description="The type of the metric value. Indicates whether the metric value is numeric or categorical.",
|
|
94
|
+
serialization_alias="type", default=MetricValueType.NUMERIC.value,
|
|
95
|
+
examples=MetricValueType.values())]
|
|
96
|
+
method: Annotated[str | None, Field(title="Method",
|
|
97
|
+
description="The method used to compute this metric result.",
|
|
98
|
+
examples=["token_recall"],
|
|
99
|
+
default=None)]
|
|
100
|
+
provider: Annotated[str | None, Field(title="Provider",
|
|
101
|
+
description="The provider used to compute this metric result.",
|
|
102
|
+
default=None)]
|
|
103
|
+
value: Annotated[float | str | bool | dict[str, int] | None, Field(title="Value",
|
|
104
|
+
description="The metric value.",
|
|
105
|
+
default=None)]
|
|
106
|
+
label: Annotated[str | None, Field(title="Label",
|
|
107
|
+
description="The string equivalent of the metric value. This is used for metrics with categorical value type.",
|
|
108
|
+
default=None)]
|
|
109
|
+
errors: Annotated[list[Error] | None, Field(title="Errors",
|
|
110
|
+
description="The list of error messages",
|
|
111
|
+
default=None)]
|
|
112
|
+
additional_info: Annotated[dict | None, Field(title="Additional Info",
|
|
113
|
+
description="The additional information about the metric result.",
|
|
114
|
+
default=None)]
|
|
115
|
+
explanation: Annotated[str | None, Field(title="Explanation",
|
|
116
|
+
description="The explanation about the metric result.",
|
|
117
|
+
default=None)]
|
|
118
|
+
group: Annotated[MetricGroup | None, Field(title="Group",
|
|
119
|
+
description="The metric group",
|
|
120
|
+
default=None)]
|
|
121
|
+
thresholds: Annotated[list[MetricThreshold], Field(title="Thresholds",
|
|
122
|
+
description="The metric thresholds",
|
|
123
|
+
default=[])]
|
|
124
|
+
category_classification: Annotated[dict[str, list[str]], Field(
|
|
125
|
+
title="Category Classification",
|
|
126
|
+
description="The category classification of the metrics values.",
|
|
127
|
+
default={},
|
|
128
|
+
)]
|
|
129
|
+
evidences: Annotated[list | None, Field(title="Evidences",
|
|
130
|
+
description="The evidences for the metric result.",
|
|
131
|
+
default=None)]
|
|
132
|
+
|
|
133
|
+
model_config = ConfigDict(
|
|
134
|
+
arbitrary_types_allowed=True, use_enum_values=True)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ----------------------------------------------------------------------------------------------------
|
|
2
|
+
# IBM Confidential
|
|
3
|
+
# OCO Source Materials
|
|
4
|
+
# 5900-A3Q, 5737-H76
|
|
5
|
+
# Copyright IBM Corp. 2025
|
|
6
|
+
# The source code for this program is not published or other-wise divested of its trade
|
|
7
|
+
# secrets, irrespective of what has been deposited with the U.S.Copyright Office.
|
|
8
|
+
# ----------------------------------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
14
|
+
from typing_extensions import Annotated
|
|
15
|
+
|
|
16
|
+
from ibm_watsonx_gov.entities.enums import ContainerType, EvaluationStage
|
|
17
|
+
from ibm_watsonx_gov.entities.monitor import BaseMonitor
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BaseContainer(BaseModel):
|
|
21
|
+
model_config = ConfigDict(
|
|
22
|
+
arbitrary_types_allowed=True)
|
|
23
|
+
container_id: Annotated[str, Field(description="Space or project id", examples=[
|
|
24
|
+
"550547b0-1be2-4426-8e62-f3423b0b83dd"])]
|
|
25
|
+
container_type: Annotated[ContainerType, Field(description="The container type, project or space", examples=[
|
|
26
|
+
ContainerType.PROJECT, ContainerType.SPACE])]
|
|
27
|
+
stage: Annotated[EvaluationStage, Field(description="The stage of the container", examples=[
|
|
28
|
+
EvaluationStage.DEVELOPMENT, EvaluationStage.PRODUCTION])]
|
|
29
|
+
prompt_setup: Annotated[dict[str, Any] | None, Field(
|
|
30
|
+
default=None, description="The prompt setup details for the container")]
|
|
31
|
+
monitors: Annotated[list[BaseMonitor] | None, Field(
|
|
32
|
+
default=None, description="List of monitors to set up for the container")]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ProjectContainer(BaseContainer):
|
|
36
|
+
model_config = ConfigDict(
|
|
37
|
+
arbitrary_types_allowed=True)
|
|
38
|
+
container_type: ContainerType = ContainerType.PROJECT
|
|
39
|
+
stage: EvaluationStage = EvaluationStage.DEVELOPMENT
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class SpaceContainer(BaseContainer):
|
|
43
|
+
model_config = ConfigDict(
|
|
44
|
+
arbitrary_types_allowed=True)
|
|
45
|
+
container_type: ContainerType = ContainerType.SPACE
|
|
46
|
+
stage: EvaluationStage = EvaluationStage.PRODUCTION
|
|
47
|
+
serving_name: Annotated[str, Field(
|
|
48
|
+
description="Serving name of the deployment. This should be unique per space")]
|
|
49
|
+
base_model_id: Annotated[str, Field(
|
|
50
|
+
description="The model id of the space deployment base model")]
|
|
51
|
+
description: Annotated[str, Field(
|
|
52
|
+
description="Space deployment description")]
|
|
53
|
+
name: Annotated[str, Field(description="Space deployment name")]
|
|
54
|
+
version_date: Annotated[str, Field(description="Space deployment version")]
|