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,490 @@
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, Callable, Dict, Optional
11
+
12
+ from pydantic import BaseModel, ConfigDict, Field, PrivateAttr, model_validator
13
+ from typing_extensions import Self
14
+
15
+ from ibm_watsonx_gov.entities.model_provider import (
16
+ AWSBedrockModelProvider, AzureOpenAIModelProvider, CustomModelProvider,
17
+ GoogleAIStudioModelProvider, ModelProvider, OpenAIModelProvider,
18
+ PortKeyModelProvider, RITSModelProvider, VertexAIModelProvider,
19
+ WxAIModelProvider, WxoAIGatewayModelProvider)
20
+ from ibm_watsonx_gov.utils.python_utils import get_environment_variable_value
21
+
22
+
23
+ class FoundationModel(BaseModel):
24
+ """
25
+ Defines the base FoundationModel class.
26
+ """
27
+ model_name: Annotated[
28
+ str | None,
29
+ Field(
30
+ description="The name of the foundation model.",
31
+ default=None,
32
+ ),
33
+ ]
34
+ provider: Annotated[
35
+ ModelProvider, Field(
36
+ description="The provider of the foundation model.")
37
+ ]
38
+ model_config = ConfigDict(protected_namespaces=())
39
+
40
+
41
+ class FoundationModelInfo(BaseModel):
42
+ """
43
+ Represents a foundation model used in an experiment.
44
+ """
45
+ model_name: Annotated[Optional[str], Field(
46
+ description="The name of the foundation model.", default=None)]
47
+
48
+ model_id: Annotated[Optional[str], Field(
49
+ description="The id of the foundation model.", default=None)]
50
+ provider: Annotated[str, Field(
51
+ description="The provider of the foundation model.")]
52
+ type: Annotated[str, Field(description="The type of foundation model.", example=[
53
+ "chat", "embedding", "text-generation"])]
54
+
55
+ def __eq__(self, other):
56
+ if isinstance(other, FoundationModelInfo):
57
+ return (
58
+ self.model_name == other.model_name and
59
+ self.model_id == other.model_id and
60
+ self.provider == other.provider and
61
+ self.type == other.type
62
+ )
63
+ return False
64
+
65
+ def __hash__(self):
66
+ return hash((self.model_name, self.model_id, self.provider, self.type))
67
+
68
+
69
+ class WxAIFoundationModel(FoundationModel):
70
+ """
71
+ The IBM watsonx.ai foundation model details
72
+
73
+ To initialize the foundation model, you can either pass in the credentials directly or set the environment.
74
+ You can follow these examples to create the provider.
75
+
76
+ Examples:
77
+ 1. Create foundation model by specifying the credentials during object creation:
78
+ .. code-block:: python
79
+
80
+ # Specify the credentials during object creation
81
+ wx_ai_foundation_model = WxAIFoundationModel(
82
+ model_id="ibm/granite-3-3-8b-instruct",
83
+ project_id=<PROJECT_ID>,
84
+ provider=WxAIModelProvider(
85
+ credentials=WxAICredentials(
86
+ url=wx_url, # This is optional field, by default US-Dallas region is selected
87
+ api_key=wx_apikey,
88
+ )
89
+ )
90
+ )
91
+
92
+ 2. Create foundation model by setting the credentials environment variables:
93
+ * The api key can be set using one of the environment variables ``WXAI_API_KEY``, ``WATSONX_APIKEY``, or ``WXG_API_KEY``. These will be read in the order of precedence.
94
+ * The url is optional and will be set to US-Dallas region by default. It can be set using one of the environment variables ``WXAI_URL``, ``WATSONX_URL``, or ``WXG_URL``. These will be read in the order of precedence.
95
+
96
+ .. code-block:: python
97
+
98
+ wx_ai_foundation_model = WxAIFoundationModel(
99
+ model_id="ibm/granite-3-3-8b-instruct",
100
+ project_id=<PROJECT_ID>,
101
+ )
102
+
103
+ 3. Create foundation model by specifying watsonx.governance software credentials during object creation:
104
+ .. code-block:: python
105
+
106
+ wx_ai_foundation_model = WxAIFoundationModel(
107
+ model_id="ibm/granite-3-3-8b-instruct",
108
+ project_id=project_id,
109
+ provider=WxAIModelProvider(
110
+ credentials=WxAICredentials(
111
+ url=wx_url,
112
+ api_key=wx_apikey,
113
+ username=wx_username,
114
+ version=wx_version,
115
+ )
116
+ )
117
+ )
118
+
119
+ 4. Create foundation model by setting watsonx.governance software credentials environment variables:
120
+ * The api key can be set using one of the environment variables ``WXAI_API_KEY``, ``WATSONX_APIKEY``, or ``WXG_API_KEY``. These will be read in the order of precedence.
121
+ * The url can be set using one of these environment variable ``WXAI_URL``, ``WATSONX_URL``, or ``WXG_URL``. These will be read in the order of precedence.
122
+ * The username can be set using one of these environment variable ``WXAI_USERNAME``, ``WATSONX_USERNAME``, or ``WXG_USERNAME``. These will be read in the order of precedence.
123
+ * The version of watsonx.governance software can be set using one of these environment variable ``WXAI_VERSION``, ``WATSONX_VERSION``, or ``WXG_VERSION``. These will be read in the order of precedence.
124
+
125
+ .. code-block:: python
126
+
127
+ wx_ai_foundation_model = WxAIFoundationModel(
128
+ model_id="ibm/granite-3-3-8b-instruct",
129
+ project_id=project_id,
130
+ )
131
+
132
+ """
133
+ model_id: Annotated[
134
+ str, Field(description="The unique identifier for the watsonx.ai model.")
135
+ ]
136
+ project_id: Annotated[
137
+ str | None,
138
+ Field(description="The project ID associated with the model.", default=None),
139
+ ]
140
+ space_id: Annotated[
141
+ str | None,
142
+ Field(description="The space ID associated with the model.", default=None),
143
+ ]
144
+ provider: Annotated[
145
+ WxAIModelProvider,
146
+ Field(
147
+ description="The provider of the model.", default_factory=WxAIModelProvider
148
+ ),
149
+ ]
150
+
151
+ @model_validator(mode="after")
152
+ def get_params_from_env(self) -> Self:
153
+ if self.space_id is None and self.project_id is None:
154
+ try:
155
+ self.project_id = get_environment_variable_value(
156
+ ["WX_PROJECT_ID", "WATSONX_PROJECT_ID"])
157
+ except ValueError:
158
+ self.project_id = None
159
+ if self.project_id is None:
160
+ try:
161
+ self.space_id = get_environment_variable_value(
162
+ ["WX_SPACE_ID", "WATSONX_SPACE_ID"])
163
+ except ValueError:
164
+ self.space_id = None
165
+
166
+ return self
167
+
168
+
169
+ class OpenAIFoundationModel(FoundationModel):
170
+ """
171
+ The OpenAI foundation model details
172
+
173
+ Examples:
174
+ 1. Create OpenAI foundation model by passing the credentials during object creation. Note that the url is optional and will be set to the default value for OpenAI. To change the default value, the url should be passed to ``OpenAICredentials`` object.
175
+ .. code-block:: python
176
+
177
+ openai_foundation_model = OpenAIFoundationModel(
178
+ model_id="gpt-4o-mini",
179
+ provider=OpenAIModelProvider(
180
+ credentials=OpenAICredentials(
181
+ api_key=api_key,
182
+ url=openai_url,
183
+ )
184
+ )
185
+ )
186
+
187
+ 2. Create OpenAI foundation model by setting the credentials in environment variables:
188
+ * ``OPENAI_API_KEY`` is used to set the api key for OpenAI.
189
+ * ``OPENAI_URL`` is used to set the url for OpenAI
190
+
191
+ .. code-block:: python
192
+
193
+ openai_foundation_model = OpenAIFoundationModel(
194
+ model_id="gpt-4o-mini",
195
+ )
196
+ """
197
+ model_id: Annotated[str, Field(description="Model name from OpenAI")]
198
+ provider: Annotated[OpenAIModelProvider, Field(
199
+ description="OpenAI provider", default_factory=OpenAIModelProvider)]
200
+
201
+
202
+ class PortKeyGateway(FoundationModel):
203
+ """
204
+ The PortKey gateway details
205
+
206
+ Examples:
207
+ 1. Create PortKeyGateway by passing the credentials during object creation. Note that the url is optional and will be set to the default value for PortKey. To change the default value, the url should be passed to ``PortKeyCredentials`` object.
208
+ .. code-block:: python
209
+
210
+ port_key_gateway = PortKeyGateway(
211
+ model_id="gpt-4o-mini",
212
+ provider=PortKeyModelProvider(
213
+ credentials=PortKeyCredentials(
214
+ api_key=api_key,
215
+ url=openai_url,
216
+ provider_api_key=provider_api_key,
217
+ provider_name=provider_name
218
+ )
219
+ )
220
+ )
221
+
222
+ 2. Create PortKeyGateway by setting the credentials in environment variables:
223
+ * ``PORTKEY_API_KEY`` is used to set the api key for PortKey.
224
+ * ``PORTKEY_URL`` is used to set the url for PortKey.
225
+ * ``PORTKEY_PROVIDER_API_KEY`` is used to set the provider api key for PortKey.
226
+ * ``PORTKEY_PROVIDER_NAME`` is used to set the provider name for PortKey
227
+
228
+ .. code-block:: python
229
+
230
+ port_key_gateway = PortKeyGateway(
231
+ model_id="gpt-4o-mini",
232
+ )
233
+ """
234
+ model_id: Annotated[str, Field(description="Model name from the Provider")]
235
+ provider: Annotated[PortKeyModelProvider, Field(
236
+ description="PortKey Provider", default_factory=PortKeyModelProvider)]
237
+
238
+
239
+ class AzureOpenAIFoundationModel(FoundationModel):
240
+ """
241
+ The Azure OpenAI foundation model details
242
+
243
+ Examples:
244
+ 1. Create Azure OpenAI foundation model by passing the credentials during object creation.
245
+ .. code-block:: python
246
+
247
+ azure_openai_foundation_model = AzureOpenAIFoundationModel(
248
+ model_id="gpt-4o-mini",
249
+ provider=AzureOpenAIModelProvider(
250
+ credentials=AzureOpenAICredentials(
251
+ api_key=azure_api_key,
252
+ url=azure_host_url,
253
+ api_version=azure_api_model_version,
254
+ )
255
+ )
256
+ )
257
+
258
+ 2. Create Azure OpenAI foundation model by setting the credentials in environment variables:
259
+ * ``AZURE_OPENAI_API_KEY`` is used to set the api key for OpenAI.
260
+ * ``AZURE_OPENAI_HOST`` is used to set the url for Azure OpenAI.
261
+ * ``AZURE_OPENAI_API_VERSION`` is uses to set the the api version for Azure OpenAI.
262
+
263
+ .. code-block:: python
264
+
265
+ openai_foundation_model = AzureOpenAIFoundationModel(
266
+ model_id="gpt-4o-mini",
267
+ )
268
+
269
+ """
270
+ model_id: Annotated[str, Field(
271
+ description="Model deployment name from Azure OpenAI")]
272
+ provider: Annotated[AzureOpenAIModelProvider, Field(
273
+ description="Azure OpenAI provider", default_factory=AzureOpenAIModelProvider)]
274
+
275
+
276
+ class VertexAIFoundationModel(FoundationModel):
277
+ """
278
+ Represents a foundation model served via Vertex AI.
279
+
280
+ Examples:
281
+ 1. Create Vertex AI foundation model by passing the credentials during object creation.
282
+ .. code-block:: python
283
+
284
+ model = VertexAIFoundationModel(
285
+ model_id="gemini-1.5-pro-002",
286
+ provider=VertexAIModelProvider(
287
+ credentials=VertexAICredentials(
288
+ project_id="your-project",
289
+ location="us-central1", # This is optional field, by default us-central1 location is selected
290
+ credentials_path="/path/to/service_account.json"
291
+ )
292
+ )
293
+ )
294
+ 2. Create Vertex AI foundation model by setting the credentials in environment variables:
295
+ * ``GOOGLE_APPLICATION_CREDENTIALS`` is used to set the Credentials path for Vertex AI.
296
+ * ``GOOGLE_CLOUD_PROJECT`` is used to set the Project id for Vertex AI.
297
+ * ``GOOGLE_CLOUD_LOCATION`` is uses to set the Location for Vertex AI. By default us-central1 location is used when GOOGLE_CLOUD_LOCATION is not provided .
298
+
299
+ .. code-block:: python
300
+
301
+ os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/service_account.json"
302
+ os.environ["GOOGLE_CLOUD_PROJECT"] = "my-gcp-project"
303
+ os.environ["GOOGLE_CLOUD_LOCATION"] = "us-central1"
304
+
305
+ model = VertexAIFoundationModel(
306
+ model_id="gemini/gpt-4o-mini",
307
+ )
308
+ """
309
+
310
+ model_id: Annotated[str, Field(
311
+ title="Model id",
312
+ description="Model name for Vertex AI. Must be a valid Vertex AI model identifier or a fully-qualified publisher path",
313
+ examples=["gemini-1.5-pro-002"],
314
+ )]
315
+ provider: Annotated[VertexAIModelProvider, Field(
316
+ title="Provider",
317
+ description="Vertex AI provider.",
318
+ default_factory=VertexAIModelProvider
319
+ )]
320
+
321
+
322
+ class GoogleAIStudioFoundationModel(FoundationModel):
323
+ """
324
+ Represents a foundation model served via Google AI Studio.
325
+
326
+ Examples:
327
+ 1. Create Google AI Studio foundation model by passing the credentials during object creation.
328
+ .. code-block:: python
329
+
330
+ model = GoogleAIStudioFoundationModel(
331
+ model_id="gemini-1.5-pro-002",
332
+ provider=GoogleAIStudioModelProvider(
333
+ credentials=GoogleAIStudioCredentials(api_key="your_api_key")
334
+ )
335
+ )
336
+ 2. Create Google AI Studio foundation model by setting the credentials in environment variables:
337
+ * ``GOOGLE_API_KEY`` OR ``GEMINI_API_KEY`` is used to set the Credentials path for Vertex AI.
338
+ .. code-block:: python
339
+
340
+ model = GoogleAIStudioFoundationModel(
341
+ model_id="gemini/gpt-4o-mini",
342
+ )
343
+ """
344
+
345
+ model_id: Annotated[str, Field(
346
+ title="Model id",
347
+ description="Model name for Google AI Studio. Must be a valid Google AI model identifier or a fully-qualified publisher path",
348
+ examples=["gemini-1.5-pro-002"],
349
+ )]
350
+ provider: Annotated[GoogleAIStudioModelProvider, Field(
351
+ title="Provider",
352
+ description="Google AI Studio provider.",
353
+ default_factory=GoogleAIStudioModelProvider
354
+ )]
355
+
356
+
357
+ class AWSBedrockFoundationModel(BaseModel):
358
+ """
359
+ The Amazon Bedrock foundation model details.
360
+
361
+ Examples:
362
+ 1. Create AWS Bedrock foundation model by passing credentials manually:
363
+ .. code-block:: python
364
+
365
+ bedrock_model = AWSBedrockFoundationModel(
366
+ model_id="anthropic.claude-v2",
367
+ provider=AWSBedrockModelProvider(
368
+ credentials=AWSBedrockCredentials(
369
+ aws_access_key_id="your-access-key-id",
370
+ aws_secret_access_key="your-secret-access-key",
371
+ aws_region_name="us-east-1",
372
+ aws_session_token="optional-session-token"
373
+ )
374
+ ),
375
+ parameters={
376
+ "temperature": 0.7,
377
+ "top_p": 0.9,
378
+ "max_tokens": 200,
379
+ "stop_sequences": ["\n"],
380
+ "system": "You are a concise assistant.",
381
+ "reasoning_effort": "high",
382
+ "tool_choice": "auto"
383
+ }
384
+ )
385
+
386
+ 2. Create AWS Bedrock foundation model using environment variables:
387
+ os.environ["AWS_ACCESS_KEY_ID"] = "your-access-key-id"
388
+ os.environ["AWS_SECRET_ACCESS_KEY"] = "your-secret-access-key"
389
+ os.environ["AWS_DEFAULT_REGION"] = "us-east-1"
390
+
391
+ .. code-block:: python
392
+
393
+ bedrock_model = AWSBedrockFoundationModel(
394
+ model_id="anthropic.claude-v2"
395
+ )
396
+ """
397
+ model_id: Annotated[str, Field(
398
+ title="Model ID", description="The AWS Bedrock model name. It must be a valid AWS Bedrock model identifier.", examples=["anthropic.claude-v2"])
399
+
400
+ ]
401
+
402
+ provider: Annotated[AWSBedrockModelProvider, Field(
403
+ title="Provider",
404
+ description="The AWS Bedrock provider details.",
405
+ default_factory=AWSBedrockModelProvider
406
+ )]
407
+
408
+ parameters: Optional[Dict[str, Any]] = Field(
409
+ default_factory=dict,
410
+ title="Parameters",
411
+ description="The model parameters to be used when invoking the model. The parameters may include temperature, top_p, max_tokens, etc.."
412
+ )
413
+
414
+
415
+ class RITSFoundationModel(FoundationModel):
416
+ provider: Annotated[
417
+ RITSModelProvider,
418
+ Field(description="The provider of the model.",
419
+ default_factory=RITSModelProvider),
420
+ ]
421
+
422
+
423
+ class CustomFoundationModel(FoundationModel):
424
+ """
425
+ Defines the CustomFoundationModel class.
426
+
427
+ This class extends the base `FoundationModel` to support custom inference logic through a user-defined scoring function.
428
+ It is intended for use cases where the model is externally hosted and not in the list of supported frameworks.
429
+ Examples:
430
+ 1. Define a custom scoring function and create a model:
431
+ .. code-block:: python
432
+
433
+ import pandas as pd
434
+
435
+ def scoring_fn(data: pd.DataFrame):
436
+ predictions_list = []
437
+ # Custom logic to call an external LLM
438
+ return pd.DataFrame({"generated_text": predictions_list})
439
+
440
+ model = CustomFoundationModel(
441
+ scoring_fn=scoring_fn
442
+ )
443
+ """
444
+
445
+ _scoring_fn: Annotated[Optional[Callable], PrivateAttr(default=None)]
446
+ provider: Annotated[
447
+ ModelProvider,
448
+ Field(
449
+ description="The provider of the model.",
450
+ default_factory=CustomModelProvider,
451
+ ),
452
+ ]
453
+
454
+ def __init__(self, **data):
455
+ scoring_fn = data.pop("scoring_fn", None)
456
+ super().__init__(**data)
457
+ self._scoring_fn = scoring_fn
458
+
459
+ def model_post_init(self, context):
460
+ if self._scoring_fn is None:
461
+ raise ValueError("The scoring function is required.")
462
+
463
+
464
+ class WxoAIGateway(FoundationModel):
465
+ """
466
+ The WXO AI gateway details
467
+
468
+ Examples:
469
+ 1. Create WxoAIGateway by passing the credentials during object creation.
470
+ .. code-block:: python
471
+
472
+ wxo_gateway = WxoAIGateway(
473
+ provider=WxoAIGatewayModelProvider(
474
+ credentials=WxoAIGatewayCredentials(
475
+ api_key=api_key,
476
+ url=wxo_ai_gateway_url
477
+ )
478
+ )
479
+ )
480
+
481
+ 2. Create WxoAIGateway by setting the credentials in environment variables:
482
+ * ``WATSONX_APIKEY`, `WXAI_API_KEY`, or `WXG_API_KEY`` is used to set the api key for WxoAIGateway.
483
+ * ``WXO_AI_GATEWAY_URL`` is used to set the url for WxoAIGateway.
484
+
485
+ .. code-block:: python
486
+
487
+ wxo_gateway = WxoAIGateway()
488
+ """
489
+ provider: Annotated[WxoAIGatewayModelProvider, Field(
490
+ description="WXO AI Gateway Provider", default_factory=WxoAIGatewayModelProvider)]
@@ -0,0 +1,44 @@
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, Union
11
+
12
+ from ibm_watsonx_gov.entities.foundation_model import (
13
+ AWSBedrockFoundationModel, AzureOpenAIFoundationModel,
14
+ GoogleAIStudioFoundationModel, OpenAIFoundationModel, PortKeyGateway,
15
+ RITSFoundationModel, VertexAIFoundationModel, WxAIFoundationModel, CustomFoundationModel, WxoAIGateway)
16
+ from pydantic import BaseModel, Field
17
+
18
+
19
+
20
+ class LLMJudge(BaseModel):
21
+ """
22
+ Defines the LLMJudge.
23
+
24
+ The LLMJudge class contains the details of the llm judge model to be used for computing the metric.
25
+
26
+ Examples:
27
+ 1. Create LLMJudge using watsonx.ai foundation model:
28
+ .. code-block:: python
29
+
30
+ wx_ai_foundation_model = WxAIFoundationModel(
31
+ model_id="ibm/granite-3-3-8b-instruct",
32
+ project_id=PROJECT_ID,
33
+ provider=WxAIModelProvider(
34
+ credentials=WxAICredentials(api_key=wx_apikey)
35
+ )
36
+ )
37
+ llm_judge = LLMJudge(model=wx_ai_foundation_model)
38
+ """
39
+
40
+ model: Annotated[Union[WxAIFoundationModel, OpenAIFoundationModel, AzureOpenAIFoundationModel, PortKeyGateway, RITSFoundationModel, VertexAIFoundationModel, GoogleAIStudioFoundationModel, AWSBedrockFoundationModel, CustomFoundationModel, WxoAIGateway], Field(
41
+ description="The foundation model to be used as judge")]
42
+
43
+ def get_model_provider(self):
44
+ return self.model.provider.type.value
@@ -0,0 +1,17 @@
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 pydantic import BaseModel
12
+
13
+
14
+ class Locale(BaseModel):
15
+ input: list[str] | dict[str, str] | str | None = None
16
+ output: list[str] | None = None
17
+ reference: list[str] | dict[str, str] | str | None = None
@@ -0,0 +1,49 @@
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, List
12
+
13
+ from pydantic import BaseModel, Field
14
+
15
+
16
+ class MappingItem(BaseModel):
17
+ """
18
+ A mapping item is a single definition of how to extract a value from a span or trace and what key to use for the metric computation.
19
+ """
20
+ key: Annotated[str, Field(
21
+ default="input_text", description="The name of the key to use for the metric computation.")]
22
+
23
+ is_root_span: Annotated[bool, Field(
24
+ default=False, description="If the span to search for information is the root span in the trace.")]
25
+
26
+ span_name: Annotated[str | None, Field(
27
+ default=None, description="The name of the span to extract from the spans.")]
28
+
29
+ attribute_name: Annotated[str, Field(
30
+ default="input", description="The name of the attribute to extract from the span. The following values are shorthand: \n"
31
+ "1. 'input' : 'traceloop.entity.input' \n"
32
+ "2. 'output' : 'traceloop.entity.output' \n"
33
+ "3. 'conversation_id': 'traceloop.association.properties.thread_id'"
34
+ )]
35
+
36
+ json_path: Annotated[str | None, Field(
37
+ default=None, description="The JSON path to use to extract the value from the span attribute. If not provided, the complete attribute value will be used.")]
38
+
39
+ include_children: Annotated[bool, Field(
40
+ default=True, description="If true, the children of the span will be included in searching for the attribute value.")]
41
+
42
+
43
+ class Mapping(BaseModel):
44
+ """
45
+ A mapping is a collection of mapping items.
46
+ """
47
+
48
+ items: Annotated[List[MappingItem], Field(
49
+ description="The list of mapping items.")]