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.
Files changed (353) hide show
  1. ibm_watsonx_gov/__init__.py +8 -0
  2. ibm_watsonx_gov/agent_catalog/__init__.py +8 -0
  3. ibm_watsonx_gov/agent_catalog/clients/__init__.py +14 -0
  4. ibm_watsonx_gov/agent_catalog/clients/ai_agent_client.py +333 -0
  5. ibm_watsonx_gov/agent_catalog/core/__init__.py +8 -0
  6. ibm_watsonx_gov/agent_catalog/core/agent_loader.py +202 -0
  7. ibm_watsonx_gov/agent_catalog/core/agents.py +134 -0
  8. ibm_watsonx_gov/agent_catalog/entities/__init__.py +8 -0
  9. ibm_watsonx_gov/agent_catalog/entities/ai_agent.py +599 -0
  10. ibm_watsonx_gov/agent_catalog/utils/__init__.py +8 -0
  11. ibm_watsonx_gov/agent_catalog/utils/constants.py +36 -0
  12. ibm_watsonx_gov/agent_catalog/utils/notebook_utils.py +70 -0
  13. ibm_watsonx_gov/ai_experiments/__init__.py +8 -0
  14. ibm_watsonx_gov/ai_experiments/ai_experiments_client.py +980 -0
  15. ibm_watsonx_gov/ai_experiments/utils/__init__.py +8 -0
  16. ibm_watsonx_gov/ai_experiments/utils/ai_experiment_utils.py +139 -0
  17. ibm_watsonx_gov/clients/__init__.py +0 -0
  18. ibm_watsonx_gov/clients/api_client.py +99 -0
  19. ibm_watsonx_gov/clients/segment_client.py +46 -0
  20. ibm_watsonx_gov/clients/usage_client.cpython-313-darwin.so +0 -0
  21. ibm_watsonx_gov/clients/wx_ai_client.py +87 -0
  22. ibm_watsonx_gov/config/__init__.py +14 -0
  23. ibm_watsonx_gov/config/agentic_ai_configuration.py +225 -0
  24. ibm_watsonx_gov/config/gen_ai_configuration.py +129 -0
  25. ibm_watsonx_gov/config/model_risk_configuration.py +173 -0
  26. ibm_watsonx_gov/config/predictive_ai_configuration.py +20 -0
  27. ibm_watsonx_gov/entities/__init__.py +8 -0
  28. ibm_watsonx_gov/entities/agentic_app.py +209 -0
  29. ibm_watsonx_gov/entities/agentic_evaluation_result.py +185 -0
  30. ibm_watsonx_gov/entities/ai_evaluation.py +290 -0
  31. ibm_watsonx_gov/entities/ai_experiment.py +419 -0
  32. ibm_watsonx_gov/entities/base_classes.py +134 -0
  33. ibm_watsonx_gov/entities/container.py +54 -0
  34. ibm_watsonx_gov/entities/credentials.py +633 -0
  35. ibm_watsonx_gov/entities/criteria.py +508 -0
  36. ibm_watsonx_gov/entities/enums.py +274 -0
  37. ibm_watsonx_gov/entities/evaluation_result.py +444 -0
  38. ibm_watsonx_gov/entities/foundation_model.py +490 -0
  39. ibm_watsonx_gov/entities/llm_judge.py +44 -0
  40. ibm_watsonx_gov/entities/locale.py +17 -0
  41. ibm_watsonx_gov/entities/mapping.py +49 -0
  42. ibm_watsonx_gov/entities/metric.py +211 -0
  43. ibm_watsonx_gov/entities/metric_threshold.py +36 -0
  44. ibm_watsonx_gov/entities/model_provider.py +329 -0
  45. ibm_watsonx_gov/entities/model_risk_result.py +43 -0
  46. ibm_watsonx_gov/entities/monitor.py +71 -0
  47. ibm_watsonx_gov/entities/prompt_setup.py +40 -0
  48. ibm_watsonx_gov/entities/state.py +22 -0
  49. ibm_watsonx_gov/entities/utils.py +99 -0
  50. ibm_watsonx_gov/evaluators/__init__.py +26 -0
  51. ibm_watsonx_gov/evaluators/agentic_evaluator.py +2725 -0
  52. ibm_watsonx_gov/evaluators/agentic_traces_evaluator.py +115 -0
  53. ibm_watsonx_gov/evaluators/base_evaluator.py +22 -0
  54. ibm_watsonx_gov/evaluators/impl/__init__.py +0 -0
  55. ibm_watsonx_gov/evaluators/impl/evaluate_metrics_impl.cpython-313-darwin.so +0 -0
  56. ibm_watsonx_gov/evaluators/impl/evaluate_model_risk_impl.cpython-313-darwin.so +0 -0
  57. ibm_watsonx_gov/evaluators/metrics_evaluator.py +187 -0
  58. ibm_watsonx_gov/evaluators/model_risk_evaluator.py +89 -0
  59. ibm_watsonx_gov/evaluators/traces_evaluator.py +93 -0
  60. ibm_watsonx_gov/metric_groups/answer_quality/answer_quality_decorator.py +66 -0
  61. ibm_watsonx_gov/metric_groups/content_safety/content_safety_decorator.py +76 -0
  62. ibm_watsonx_gov/metric_groups/readability/readability_decorator.py +59 -0
  63. ibm_watsonx_gov/metric_groups/retrieval_quality/retrieval_quality_decorator.py +63 -0
  64. ibm_watsonx_gov/metric_groups/usage/usage_decorator.py +58 -0
  65. ibm_watsonx_gov/metrics/__init__.py +74 -0
  66. ibm_watsonx_gov/metrics/answer_relevance/__init__.py +8 -0
  67. ibm_watsonx_gov/metrics/answer_relevance/answer_relevance_decorator.py +63 -0
  68. ibm_watsonx_gov/metrics/answer_relevance/answer_relevance_metric.py +260 -0
  69. ibm_watsonx_gov/metrics/answer_similarity/__init__.py +0 -0
  70. ibm_watsonx_gov/metrics/answer_similarity/answer_similarity_decorator.py +66 -0
  71. ibm_watsonx_gov/metrics/answer_similarity/answer_similarity_metric.py +219 -0
  72. ibm_watsonx_gov/metrics/average_precision/__init__.py +0 -0
  73. ibm_watsonx_gov/metrics/average_precision/average_precision_decorator.py +62 -0
  74. ibm_watsonx_gov/metrics/average_precision/average_precision_metric.py +174 -0
  75. ibm_watsonx_gov/metrics/base_metric_decorator.py +193 -0
  76. ibm_watsonx_gov/metrics/context_relevance/__init__.py +8 -0
  77. ibm_watsonx_gov/metrics/context_relevance/context_relevance_decorator.py +60 -0
  78. ibm_watsonx_gov/metrics/context_relevance/context_relevance_metric.py +414 -0
  79. ibm_watsonx_gov/metrics/cost/__init__.py +8 -0
  80. ibm_watsonx_gov/metrics/cost/cost_decorator.py +58 -0
  81. ibm_watsonx_gov/metrics/cost/cost_metric.py +155 -0
  82. ibm_watsonx_gov/metrics/duration/__init__.py +8 -0
  83. ibm_watsonx_gov/metrics/duration/duration_decorator.py +59 -0
  84. ibm_watsonx_gov/metrics/duration/duration_metric.py +111 -0
  85. ibm_watsonx_gov/metrics/evasiveness/__init__.py +8 -0
  86. ibm_watsonx_gov/metrics/evasiveness/evasiveness_decorator.py +61 -0
  87. ibm_watsonx_gov/metrics/evasiveness/evasiveness_metric.py +103 -0
  88. ibm_watsonx_gov/metrics/faithfulness/__init__.py +8 -0
  89. ibm_watsonx_gov/metrics/faithfulness/faithfulness_decorator.py +65 -0
  90. ibm_watsonx_gov/metrics/faithfulness/faithfulness_metric.py +254 -0
  91. ibm_watsonx_gov/metrics/hap/__init__.py +16 -0
  92. ibm_watsonx_gov/metrics/hap/hap_decorator.py +58 -0
  93. ibm_watsonx_gov/metrics/hap/hap_metric.py +98 -0
  94. ibm_watsonx_gov/metrics/hap/input_hap_metric.py +104 -0
  95. ibm_watsonx_gov/metrics/hap/output_hap_metric.py +110 -0
  96. ibm_watsonx_gov/metrics/harm/__init__.py +8 -0
  97. ibm_watsonx_gov/metrics/harm/harm_decorator.py +60 -0
  98. ibm_watsonx_gov/metrics/harm/harm_metric.py +103 -0
  99. ibm_watsonx_gov/metrics/harm_engagement/__init__.py +8 -0
  100. ibm_watsonx_gov/metrics/harm_engagement/harm_engagement_decorator.py +61 -0
  101. ibm_watsonx_gov/metrics/harm_engagement/harm_engagement_metric.py +103 -0
  102. ibm_watsonx_gov/metrics/hit_rate/__init__.py +0 -0
  103. ibm_watsonx_gov/metrics/hit_rate/hit_rate_decorator.py +59 -0
  104. ibm_watsonx_gov/metrics/hit_rate/hit_rate_metric.py +167 -0
  105. ibm_watsonx_gov/metrics/input_token_count/__init__.py +8 -0
  106. ibm_watsonx_gov/metrics/input_token_count/input_token_count_decorator.py +58 -0
  107. ibm_watsonx_gov/metrics/input_token_count/input_token_count_metric.py +112 -0
  108. ibm_watsonx_gov/metrics/jailbreak/__init__.py +8 -0
  109. ibm_watsonx_gov/metrics/jailbreak/jailbreak_decorator.py +60 -0
  110. ibm_watsonx_gov/metrics/jailbreak/jailbreak_metric.py +103 -0
  111. ibm_watsonx_gov/metrics/keyword_detection/keyword_detection_decorator.py +58 -0
  112. ibm_watsonx_gov/metrics/keyword_detection/keyword_detection_metric.py +111 -0
  113. ibm_watsonx_gov/metrics/llm_validation/__init__.py +8 -0
  114. ibm_watsonx_gov/metrics/llm_validation/evaluation_criteria.py +84 -0
  115. ibm_watsonx_gov/metrics/llm_validation/llm_validation_constants.py +24 -0
  116. ibm_watsonx_gov/metrics/llm_validation/llm_validation_decorator.py +54 -0
  117. ibm_watsonx_gov/metrics/llm_validation/llm_validation_impl.py +525 -0
  118. ibm_watsonx_gov/metrics/llm_validation/llm_validation_metric.py +258 -0
  119. ibm_watsonx_gov/metrics/llm_validation/llm_validation_prompts.py +106 -0
  120. ibm_watsonx_gov/metrics/llmaj/__init__.py +0 -0
  121. ibm_watsonx_gov/metrics/llmaj/llmaj_metric.py +298 -0
  122. ibm_watsonx_gov/metrics/ndcg/__init__.py +0 -0
  123. ibm_watsonx_gov/metrics/ndcg/ndcg_decorator.py +61 -0
  124. ibm_watsonx_gov/metrics/ndcg/ndcg_metric.py +166 -0
  125. ibm_watsonx_gov/metrics/output_token_count/__init__.py +8 -0
  126. ibm_watsonx_gov/metrics/output_token_count/output_token_count_decorator.py +58 -0
  127. ibm_watsonx_gov/metrics/output_token_count/output_token_count_metric.py +112 -0
  128. ibm_watsonx_gov/metrics/pii/__init__.py +16 -0
  129. ibm_watsonx_gov/metrics/pii/input_pii_metric.py +102 -0
  130. ibm_watsonx_gov/metrics/pii/output_pii_metric.py +107 -0
  131. ibm_watsonx_gov/metrics/pii/pii_decorator.py +59 -0
  132. ibm_watsonx_gov/metrics/pii/pii_metric.py +96 -0
  133. ibm_watsonx_gov/metrics/profanity/__init__.py +8 -0
  134. ibm_watsonx_gov/metrics/profanity/profanity_decorator.py +60 -0
  135. ibm_watsonx_gov/metrics/profanity/profanity_metric.py +103 -0
  136. ibm_watsonx_gov/metrics/prompt_safety_risk/__init__.py +8 -0
  137. ibm_watsonx_gov/metrics/prompt_safety_risk/prompt_safety_risk_decorator.py +57 -0
  138. ibm_watsonx_gov/metrics/prompt_safety_risk/prompt_safety_risk_metric.py +128 -0
  139. ibm_watsonx_gov/metrics/reciprocal_rank/__init__.py +0 -0
  140. ibm_watsonx_gov/metrics/reciprocal_rank/reciprocal_rank_decorator.py +62 -0
  141. ibm_watsonx_gov/metrics/reciprocal_rank/reciprocal_rank_metric.py +162 -0
  142. ibm_watsonx_gov/metrics/regex_detection/regex_detection_decorator.py +58 -0
  143. ibm_watsonx_gov/metrics/regex_detection/regex_detection_metric.py +106 -0
  144. ibm_watsonx_gov/metrics/retrieval_precision/__init__.py +0 -0
  145. ibm_watsonx_gov/metrics/retrieval_precision/retrieval_precision_decorator.py +62 -0
  146. ibm_watsonx_gov/metrics/retrieval_precision/retrieval_precision_metric.py +170 -0
  147. ibm_watsonx_gov/metrics/sexual_content/__init__.py +8 -0
  148. ibm_watsonx_gov/metrics/sexual_content/sexual_content_decorator.py +61 -0
  149. ibm_watsonx_gov/metrics/sexual_content/sexual_content_metric.py +103 -0
  150. ibm_watsonx_gov/metrics/social_bias/__init__.py +8 -0
  151. ibm_watsonx_gov/metrics/social_bias/social_bias_decorator.py +62 -0
  152. ibm_watsonx_gov/metrics/social_bias/social_bias_metric.py +103 -0
  153. ibm_watsonx_gov/metrics/status/__init__.py +0 -0
  154. ibm_watsonx_gov/metrics/status/status_metric.py +113 -0
  155. ibm_watsonx_gov/metrics/text_grade_level/__init__.py +8 -0
  156. ibm_watsonx_gov/metrics/text_grade_level/text_grade_level_decorator.py +59 -0
  157. ibm_watsonx_gov/metrics/text_grade_level/text_grade_level_metric.py +127 -0
  158. ibm_watsonx_gov/metrics/text_reading_ease/__init__.py +8 -0
  159. ibm_watsonx_gov/metrics/text_reading_ease/text_reading_ease_decorator.py +59 -0
  160. ibm_watsonx_gov/metrics/text_reading_ease/text_reading_ease_metric.py +123 -0
  161. ibm_watsonx_gov/metrics/tool_call_accuracy/__init__.py +0 -0
  162. ibm_watsonx_gov/metrics/tool_call_accuracy/tool_call_accuracy_decorator.py +67 -0
  163. ibm_watsonx_gov/metrics/tool_call_accuracy/tool_call_accuracy_metric.py +162 -0
  164. ibm_watsonx_gov/metrics/tool_call_parameter_accuracy/__init__.py +0 -0
  165. ibm_watsonx_gov/metrics/tool_call_parameter_accuracy/tool_call_parameter_accuracy_decorator.py +68 -0
  166. ibm_watsonx_gov/metrics/tool_call_parameter_accuracy/tool_call_parameter_accuracy_metric.py +151 -0
  167. ibm_watsonx_gov/metrics/tool_call_relevance/__init__.py +0 -0
  168. ibm_watsonx_gov/metrics/tool_call_relevance/tool_call_relevance_decorator.py +71 -0
  169. ibm_watsonx_gov/metrics/tool_call_relevance/tool_call_relevance_metric.py +166 -0
  170. ibm_watsonx_gov/metrics/tool_call_syntactic_accuracy/__init__.py +0 -0
  171. ibm_watsonx_gov/metrics/tool_call_syntactic_accuracy/tool_call_syntactic_accuracy_decorator.py +66 -0
  172. ibm_watsonx_gov/metrics/tool_call_syntactic_accuracy/tool_call_syntactic_accuracy_metric.py +121 -0
  173. ibm_watsonx_gov/metrics/topic_relevance/__init__.py +8 -0
  174. ibm_watsonx_gov/metrics/topic_relevance/topic_relevance_decorator.py +57 -0
  175. ibm_watsonx_gov/metrics/topic_relevance/topic_relevance_metric.py +106 -0
  176. ibm_watsonx_gov/metrics/unethical_behavior/__init__.py +8 -0
  177. ibm_watsonx_gov/metrics/unethical_behavior/unethical_behavior_decorator.py +61 -0
  178. ibm_watsonx_gov/metrics/unethical_behavior/unethical_behavior_metric.py +103 -0
  179. ibm_watsonx_gov/metrics/unsuccessful_requests/__init__.py +0 -0
  180. ibm_watsonx_gov/metrics/unsuccessful_requests/unsuccessful_requests_decorator.py +66 -0
  181. ibm_watsonx_gov/metrics/unsuccessful_requests/unsuccessful_requests_metric.py +128 -0
  182. ibm_watsonx_gov/metrics/user_id/__init__.py +0 -0
  183. ibm_watsonx_gov/metrics/user_id/user_id_metric.py +111 -0
  184. ibm_watsonx_gov/metrics/utils.py +440 -0
  185. ibm_watsonx_gov/metrics/violence/__init__.py +8 -0
  186. ibm_watsonx_gov/metrics/violence/violence_decorator.py +60 -0
  187. ibm_watsonx_gov/metrics/violence/violence_metric.py +103 -0
  188. ibm_watsonx_gov/prompt_evaluator/__init__.py +9 -0
  189. ibm_watsonx_gov/prompt_evaluator/impl/__init__.py +8 -0
  190. ibm_watsonx_gov/prompt_evaluator/impl/prompt_evaluator_impl.py +554 -0
  191. ibm_watsonx_gov/prompt_evaluator/impl/pta_lifecycle_evaluator.py +2332 -0
  192. ibm_watsonx_gov/prompt_evaluator/prompt_evaluator.py +262 -0
  193. ibm_watsonx_gov/providers/__init__.py +8 -0
  194. ibm_watsonx_gov/providers/detectors_provider.cpython-313-darwin.so +0 -0
  195. ibm_watsonx_gov/providers/detectors_provider.py +415 -0
  196. ibm_watsonx_gov/providers/eval_assist_provider.cpython-313-darwin.so +0 -0
  197. ibm_watsonx_gov/providers/eval_assist_provider.py +266 -0
  198. ibm_watsonx_gov/providers/inference_engines/__init__.py +0 -0
  199. ibm_watsonx_gov/providers/inference_engines/custom_inference_engine.py +165 -0
  200. ibm_watsonx_gov/providers/inference_engines/portkey_inference_engine.py +57 -0
  201. ibm_watsonx_gov/providers/llmevalkit/__init__.py +0 -0
  202. ibm_watsonx_gov/providers/llmevalkit/ciso_agent/main.py +516 -0
  203. ibm_watsonx_gov/providers/llmevalkit/ciso_agent/preprocess_log.py +111 -0
  204. ibm_watsonx_gov/providers/llmevalkit/ciso_agent/utils.py +186 -0
  205. ibm_watsonx_gov/providers/llmevalkit/function_calling/README.md +411 -0
  206. ibm_watsonx_gov/providers/llmevalkit/function_calling/__init__.py +27 -0
  207. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/README.md +306 -0
  208. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/__init__.py +89 -0
  209. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/__init__.py +30 -0
  210. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/base.py +411 -0
  211. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/code_agent.py +1254 -0
  212. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/exact_match.py +134 -0
  213. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/fuzzy_string.py +104 -0
  214. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/hybrid.py +516 -0
  215. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/comparators/llm_judge.py +1882 -0
  216. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/pipeline.py +387 -0
  217. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/types.py +178 -0
  218. ibm_watsonx_gov/providers/llmevalkit/function_calling/comparison/utils.py +298 -0
  219. ibm_watsonx_gov/providers/llmevalkit/function_calling/consts.py +33 -0
  220. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/__init__.py +31 -0
  221. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/base.py +26 -0
  222. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/__init__.py +4 -0
  223. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/general.py +46 -0
  224. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/general_metrics.json +783 -0
  225. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_call/general_metrics_runtime.json +580 -0
  226. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/__init__.py +6 -0
  227. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/function_selection.py +28 -0
  228. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/function_selection_metrics.json +599 -0
  229. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/function_selection/function_selection_metrics_runtime.json +477 -0
  230. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/loader.py +259 -0
  231. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/__init__.py +7 -0
  232. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/parameter.py +52 -0
  233. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/parameter_metrics.json +613 -0
  234. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/parameter/parameter_metrics_runtime.json +489 -0
  235. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/trajectory/__init__.py +7 -0
  236. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/trajectory/trajectory.py +43 -0
  237. ibm_watsonx_gov/providers/llmevalkit/function_calling/metrics/trajectory/trajectory_metrics.json +161 -0
  238. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/__init__.py +0 -0
  239. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/adapters.py +102 -0
  240. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/pipeline.py +355 -0
  241. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/semantic_checker.py +816 -0
  242. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/static_checker.py +297 -0
  243. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/transformation_prompts.py +509 -0
  244. ibm_watsonx_gov/providers/llmevalkit/function_calling/pipeline/types.py +596 -0
  245. ibm_watsonx_gov/providers/llmevalkit/llm/README.md +375 -0
  246. ibm_watsonx_gov/providers/llmevalkit/llm/__init__.py +137 -0
  247. ibm_watsonx_gov/providers/llmevalkit/llm/base.py +426 -0
  248. ibm_watsonx_gov/providers/llmevalkit/llm/output_parser.py +364 -0
  249. ibm_watsonx_gov/providers/llmevalkit/llm/providers/__init__.py +0 -0
  250. ibm_watsonx_gov/providers/llmevalkit/llm/providers/consts.py +7 -0
  251. ibm_watsonx_gov/providers/llmevalkit/llm/providers/ibm_watsonx_ai/__init__.py +0 -0
  252. ibm_watsonx_gov/providers/llmevalkit/llm/providers/ibm_watsonx_ai/ibm_watsonx_ai.py +656 -0
  253. ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/__init__.py +0 -0
  254. ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/litellm.py +509 -0
  255. ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/rits.py +224 -0
  256. ibm_watsonx_gov/providers/llmevalkit/llm/providers/litellm/watsonx.py +60 -0
  257. ibm_watsonx_gov/providers/llmevalkit/llm/providers/mock_llm_client.py +75 -0
  258. ibm_watsonx_gov/providers/llmevalkit/llm/providers/openai/__init__.py +0 -0
  259. ibm_watsonx_gov/providers/llmevalkit/llm/providers/openai/openai.py +639 -0
  260. ibm_watsonx_gov/providers/llmevalkit/llm/providers/wxo_ai_gateway/__init__.py +0 -0
  261. ibm_watsonx_gov/providers/llmevalkit/llm/providers/wxo_ai_gateway/wxo_ai_gateway.py +134 -0
  262. ibm_watsonx_gov/providers/llmevalkit/llm/providers/wxo_ai_gateway/wxo_ai_gateway_inference.py +214 -0
  263. ibm_watsonx_gov/providers/llmevalkit/llm/types.py +136 -0
  264. ibm_watsonx_gov/providers/llmevalkit/metrics/__init__.py +4 -0
  265. ibm_watsonx_gov/providers/llmevalkit/metrics/field.py +255 -0
  266. ibm_watsonx_gov/providers/llmevalkit/metrics/metric.py +332 -0
  267. ibm_watsonx_gov/providers/llmevalkit/metrics/metrics_runner.py +188 -0
  268. ibm_watsonx_gov/providers/llmevalkit/metrics/prompt.py +403 -0
  269. ibm_watsonx_gov/providers/llmevalkit/metrics/utils.py +46 -0
  270. ibm_watsonx_gov/providers/llmevalkit/prompt/__init__.py +0 -0
  271. ibm_watsonx_gov/providers/llmevalkit/prompt/runner.py +144 -0
  272. ibm_watsonx_gov/providers/tool_call_metric_provider.py +455 -0
  273. ibm_watsonx_gov/providers/unitxt_provider.cpython-313-darwin.so +0 -0
  274. ibm_watsonx_gov/tools/__init__.py +10 -0
  275. ibm_watsonx_gov/tools/clients/__init__.py +11 -0
  276. ibm_watsonx_gov/tools/clients/ai_tool_client.py +405 -0
  277. ibm_watsonx_gov/tools/clients/detector_client.py +82 -0
  278. ibm_watsonx_gov/tools/core/__init__.py +8 -0
  279. ibm_watsonx_gov/tools/core/tool_loader.py +237 -0
  280. ibm_watsonx_gov/tools/entities/__init__.py +8 -0
  281. ibm_watsonx_gov/tools/entities/ai_tools.py +435 -0
  282. ibm_watsonx_gov/tools/onboarding/create/answer_relevance_detector.json +57 -0
  283. ibm_watsonx_gov/tools/onboarding/create/chromadb_retrieval_tool.json +63 -0
  284. ibm_watsonx_gov/tools/onboarding/create/context_relevance_detector.json +57 -0
  285. ibm_watsonx_gov/tools/onboarding/create/duduckgo_search_tool.json +53 -0
  286. ibm_watsonx_gov/tools/onboarding/create/google_search_tool.json +62 -0
  287. ibm_watsonx_gov/tools/onboarding/create/hap_detector.json +70 -0
  288. ibm_watsonx_gov/tools/onboarding/create/jailbreak_detector.json +70 -0
  289. ibm_watsonx_gov/tools/onboarding/create/pii_detector.json +36 -0
  290. ibm_watsonx_gov/tools/onboarding/create/prompt_safety_risk_detector.json +69 -0
  291. ibm_watsonx_gov/tools/onboarding/create/topic_relevance_detector.json +57 -0
  292. ibm_watsonx_gov/tools/onboarding/create/weather_tool.json +39 -0
  293. ibm_watsonx_gov/tools/onboarding/create/webcrawler_tool.json +34 -0
  294. ibm_watsonx_gov/tools/onboarding/create/wikipedia_search_tool.json +53 -0
  295. ibm_watsonx_gov/tools/onboarding/delete/delete_tools.json +4 -0
  296. ibm_watsonx_gov/tools/onboarding/update/google_search_tool.json +38 -0
  297. ibm_watsonx_gov/tools/ootb/__init__.py +8 -0
  298. ibm_watsonx_gov/tools/ootb/detectors/__init__.py +8 -0
  299. ibm_watsonx_gov/tools/ootb/detectors/hap_detector_tool.py +109 -0
  300. ibm_watsonx_gov/tools/ootb/detectors/jailbreak_detector_tool.py +104 -0
  301. ibm_watsonx_gov/tools/ootb/detectors/pii_detector_tool.py +83 -0
  302. ibm_watsonx_gov/tools/ootb/detectors/prompt_safety_risk_detector_tool.py +111 -0
  303. ibm_watsonx_gov/tools/ootb/detectors/topic_relevance_detector_tool.py +101 -0
  304. ibm_watsonx_gov/tools/ootb/rag/__init__.py +8 -0
  305. ibm_watsonx_gov/tools/ootb/rag/answer_relevance_detector_tool.py +119 -0
  306. ibm_watsonx_gov/tools/ootb/rag/context_relevance_detector_tool.py +118 -0
  307. ibm_watsonx_gov/tools/ootb/search/__init__.py +8 -0
  308. ibm_watsonx_gov/tools/ootb/search/duckduckgo_search_tool.py +62 -0
  309. ibm_watsonx_gov/tools/ootb/search/google_search_tool.py +105 -0
  310. ibm_watsonx_gov/tools/ootb/search/weather_tool.py +95 -0
  311. ibm_watsonx_gov/tools/ootb/search/web_crawler_tool.py +69 -0
  312. ibm_watsonx_gov/tools/ootb/search/wikipedia_search_tool.py +63 -0
  313. ibm_watsonx_gov/tools/ootb/vectordb/__init__.py +8 -0
  314. ibm_watsonx_gov/tools/ootb/vectordb/chromadb_retriever_tool.py +111 -0
  315. ibm_watsonx_gov/tools/rest_api/__init__.py +10 -0
  316. ibm_watsonx_gov/tools/rest_api/restapi_tool.py +72 -0
  317. ibm_watsonx_gov/tools/schemas/__init__.py +10 -0
  318. ibm_watsonx_gov/tools/schemas/search_tool_schema.py +46 -0
  319. ibm_watsonx_gov/tools/schemas/vectordb_retrieval_schema.py +55 -0
  320. ibm_watsonx_gov/tools/utils/__init__.py +14 -0
  321. ibm_watsonx_gov/tools/utils/constants.py +69 -0
  322. ibm_watsonx_gov/tools/utils/display_utils.py +38 -0
  323. ibm_watsonx_gov/tools/utils/environment.py +108 -0
  324. ibm_watsonx_gov/tools/utils/package_utils.py +40 -0
  325. ibm_watsonx_gov/tools/utils/platform_url_mapping.cpython-313-darwin.so +0 -0
  326. ibm_watsonx_gov/tools/utils/python_utils.py +68 -0
  327. ibm_watsonx_gov/tools/utils/tool_utils.py +206 -0
  328. ibm_watsonx_gov/traces/__init__.py +8 -0
  329. ibm_watsonx_gov/traces/span_exporter.py +195 -0
  330. ibm_watsonx_gov/traces/span_node.py +251 -0
  331. ibm_watsonx_gov/traces/span_util.py +153 -0
  332. ibm_watsonx_gov/traces/trace_utils.py +1074 -0
  333. ibm_watsonx_gov/utils/__init__.py +8 -0
  334. ibm_watsonx_gov/utils/aggregation_util.py +346 -0
  335. ibm_watsonx_gov/utils/async_util.py +62 -0
  336. ibm_watsonx_gov/utils/authenticator.py +144 -0
  337. ibm_watsonx_gov/utils/constants.py +15 -0
  338. ibm_watsonx_gov/utils/errors.py +40 -0
  339. ibm_watsonx_gov/utils/gov_sdk_logger.py +39 -0
  340. ibm_watsonx_gov/utils/insights_generator.py +1285 -0
  341. ibm_watsonx_gov/utils/python_utils.py +425 -0
  342. ibm_watsonx_gov/utils/rest_util.py +73 -0
  343. ibm_watsonx_gov/utils/segment_batch_manager.py +162 -0
  344. ibm_watsonx_gov/utils/singleton_meta.py +25 -0
  345. ibm_watsonx_gov/utils/url_mapping.cpython-313-darwin.so +0 -0
  346. ibm_watsonx_gov/utils/validation_util.py +126 -0
  347. ibm_watsonx_gov/visualizations/__init__.py +13 -0
  348. ibm_watsonx_gov/visualizations/metric_descriptions.py +57 -0
  349. ibm_watsonx_gov/visualizations/model_insights.py +1304 -0
  350. ibm_watsonx_gov/visualizations/visualization_utils.py +75 -0
  351. ibm_watsonx_gov-1.3.3.dist-info/METADATA +93 -0
  352. ibm_watsonx_gov-1.3.3.dist-info/RECORD +353 -0
  353. 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")]