eval-studio-client 1.2.1a3__py3-none-any.whl → 1.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eval_studio_client/api/models/adversarial_inputs_service_test_adversarial_inputs_robustness_request.py +5 -5
- eval_studio_client/api/models/perturbation_service_create_perturbation_request.py +11 -11
- eval_studio_client/api/models/prompt_generation_service_auto_generate_prompts_request.py +2 -2
- eval_studio_client/api/models/protobuf_any.py +2 -2
- eval_studio_client/api/models/required_the_dashboard_to_update.py +2 -2
- eval_studio_client/api/models/required_the_document_to_update.py +2 -2
- eval_studio_client/api/models/required_the_leaderboard_to_update.py +8 -8
- eval_studio_client/api/models/required_the_model_to_update.py +2 -2
- eval_studio_client/api/models/required_the_operation_to_finalize.py +2 -2
- eval_studio_client/api/models/required_the_operation_to_update.py +2 -2
- eval_studio_client/api/models/required_the_test_case_to_update.py +2 -2
- eval_studio_client/api/models/required_the_test_to_update.py +2 -2
- eval_studio_client/api/models/required_the_updated_workflow.py +5 -5
- eval_studio_client/api/models/required_the_updated_workflow_node.py +5 -5
- eval_studio_client/api/models/rpc_status.py +5 -5
- eval_studio_client/api/models/test_case_service_batch_delete_test_cases_request.py +2 -2
- eval_studio_client/api/models/test_service_clone_test_request.py +2 -2
- eval_studio_client/api/models/test_service_generate_test_cases_request.py +5 -5
- eval_studio_client/api/models/test_service_grant_test_access_request.py +2 -2
- eval_studio_client/api/models/test_service_import_test_cases_from_library_request.py +2 -2
- eval_studio_client/api/models/test_service_list_test_case_library_items_request.py +2 -2
- eval_studio_client/api/models/test_service_perturb_test_in_place_request.py +5 -5
- eval_studio_client/api/models/test_service_perturb_test_request.py +5 -5
- eval_studio_client/api/models/test_service_revoke_test_access_request.py +2 -2
- eval_studio_client/api/models/v1_abort_operation_response.py +2 -2
- eval_studio_client/api/models/v1_batch_create_leaderboards_request.py +5 -5
- eval_studio_client/api/models/v1_batch_create_leaderboards_response.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_dashboards_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_dashboards_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_documents_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_documents_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_evaluators_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_evaluators_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_leaderboards_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_leaderboards_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_models_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_models_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_test_cases_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_tests_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_tests_response.py +5 -5
- eval_studio_client/api/models/v1_batch_delete_workflows_request.py +2 -2
- eval_studio_client/api/models/v1_batch_delete_workflows_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_dashboards_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_documents_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_leaderboards_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_models_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_operations_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_tests_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_workflow_edges_response.py +5 -5
- eval_studio_client/api/models/v1_batch_get_workflow_nodes_response.py +5 -5
- eval_studio_client/api/models/v1_batch_import_leaderboard_request.py +2 -2
- eval_studio_client/api/models/v1_batch_import_leaderboard_response.py +2 -2
- eval_studio_client/api/models/v1_batch_import_tests_request.py +2 -2
- eval_studio_client/api/models/v1_batch_import_tests_response.py +5 -5
- eval_studio_client/api/models/v1_check_base_models_response.py +2 -2
- eval_studio_client/api/models/v1_clone_test_response.py +2 -2
- eval_studio_client/api/models/v1_clone_workflow_response.py +2 -2
- eval_studio_client/api/models/v1_collection_info.py +2 -2
- eval_studio_client/api/models/v1_context.py +2 -2
- eval_studio_client/api/models/v1_create_dashboard_response.py +2 -2
- eval_studio_client/api/models/v1_create_document_response.py +2 -2
- eval_studio_client/api/models/v1_create_evaluation_request.py +5 -5
- eval_studio_client/api/models/v1_create_evaluator_response.py +2 -2
- eval_studio_client/api/models/v1_create_leaderboard_request.py +2 -2
- eval_studio_client/api/models/v1_create_leaderboard_response.py +2 -2
- eval_studio_client/api/models/v1_create_leaderboard_without_cache_response.py +2 -2
- eval_studio_client/api/models/v1_create_model_response.py +2 -2
- eval_studio_client/api/models/v1_create_perturbation_response.py +2 -2
- eval_studio_client/api/models/v1_create_test_case_response.py +2 -2
- eval_studio_client/api/models/v1_create_test_lab_response.py +2 -2
- eval_studio_client/api/models/v1_create_test_response.py +2 -2
- eval_studio_client/api/models/v1_create_workflow_edge_response.py +2 -2
- eval_studio_client/api/models/v1_create_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_create_workflow_response.py +2 -2
- eval_studio_client/api/models/v1_dashboard.py +2 -2
- eval_studio_client/api/models/v1_delete_dashboard_response.py +2 -2
- eval_studio_client/api/models/v1_delete_document_response.py +2 -2
- eval_studio_client/api/models/v1_delete_evaluator_response.py +2 -2
- eval_studio_client/api/models/v1_delete_leaderboard_response.py +2 -2
- eval_studio_client/api/models/v1_delete_model_response.py +2 -2
- eval_studio_client/api/models/v1_delete_test_case_response.py +2 -2
- eval_studio_client/api/models/v1_delete_test_response.py +2 -2
- eval_studio_client/api/models/v1_delete_workflow_edge_response.py +2 -2
- eval_studio_client/api/models/v1_delete_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_delete_workflow_response.py +2 -2
- eval_studio_client/api/models/v1_dependency_list.py +5 -5
- eval_studio_client/api/models/v1_document.py +2 -2
- eval_studio_client/api/models/v1_estimate_threshold_request.py +5 -5
- eval_studio_client/api/models/v1_evaluation_test.py +8 -8
- eval_studio_client/api/models/v1_evaluator.py +5 -5
- eval_studio_client/api/models/v1_evaluator_parameter.py +2 -2
- eval_studio_client/api/models/v1_finalize_operation_response.py +2 -2
- eval_studio_client/api/models/v1_find_all_test_cases_by_id_response.py +5 -5
- eval_studio_client/api/models/v1_find_test_lab_response.py +2 -2
- eval_studio_client/api/models/v1_find_workflows_by_collection_id_response.py +5 -5
- eval_studio_client/api/models/v1_generate_test_cases_response.py +2 -2
- eval_studio_client/api/models/v1_get_dashboard_response.py +2 -2
- eval_studio_client/api/models/v1_get_document_response.py +2 -2
- eval_studio_client/api/models/v1_get_evaluator_response.py +2 -2
- eval_studio_client/api/models/v1_get_guardrails_configuration_response.py +2 -2
- eval_studio_client/api/models/v1_get_info_response.py +2 -2
- eval_studio_client/api/models/v1_get_leaderboard_report_response.py +2 -2
- eval_studio_client/api/models/v1_get_leaderboard_response.py +2 -2
- eval_studio_client/api/models/v1_get_model_response.py +2 -2
- eval_studio_client/api/models/v1_get_operation_progress_by_parent_response.py +2 -2
- eval_studio_client/api/models/v1_get_operation_response.py +2 -2
- eval_studio_client/api/models/v1_get_perturbator_response.py +2 -2
- eval_studio_client/api/models/v1_get_stats_response.py +2 -2
- eval_studio_client/api/models/v1_get_test_case_response.py +2 -2
- eval_studio_client/api/models/v1_get_test_class_response.py +2 -2
- eval_studio_client/api/models/v1_get_test_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_node_prerequisites_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_result_corpus_patch_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_result_report_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_result_summary_response.py +2 -2
- eval_studio_client/api/models/v1_get_workflow_result_system_prompt_patch_response.py +2 -2
- eval_studio_client/api/models/v1_import_evaluation_request.py +2 -2
- eval_studio_client/api/models/v1_import_leaderboard_request.py +2 -2
- eval_studio_client/api/models/v1_import_leaderboard_response.py +2 -2
- eval_studio_client/api/models/v1_import_test_cases_from_library_response.py +2 -2
- eval_studio_client/api/models/v1_import_test_cases_request.py +2 -2
- eval_studio_client/api/models/v1_info.py +2 -2
- eval_studio_client/api/models/v1_init_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_insight.py +2 -2
- eval_studio_client/api/models/v1_labeled_test_case.py +2 -2
- eval_studio_client/api/models/v1_leaderboard.py +8 -8
- eval_studio_client/api/models/v1_leaderboard_report.py +8 -8
- eval_studio_client/api/models/v1_leaderboard_report_actual_output_data.py +2 -2
- eval_studio_client/api/models/v1_leaderboard_report_actual_output_meta.py +5 -5
- eval_studio_client/api/models/v1_leaderboard_report_evaluator.py +11 -11
- eval_studio_client/api/models/v1_leaderboard_report_evaluator_parameter.py +2 -2
- eval_studio_client/api/models/v1_leaderboard_report_explanation.py +2 -2
- eval_studio_client/api/models/v1_leaderboard_report_metrics_meta_entry.py +2 -2
- eval_studio_client/api/models/v1_leaderboard_report_model.py +2 -2
- eval_studio_client/api/models/v1_leaderboard_report_result.py +11 -11
- eval_studio_client/api/models/v1_leaderboard_report_result_relationship.py +2 -2
- eval_studio_client/api/models/v1_list_base_models_response.py +2 -2
- eval_studio_client/api/models/v1_list_dashboard_access_response.py +5 -5
- eval_studio_client/api/models/v1_list_dashboards_response.py +5 -5
- eval_studio_client/api/models/v1_list_dashboards_shared_with_me_response.py +5 -5
- eval_studio_client/api/models/v1_list_documents_response.py +5 -5
- eval_studio_client/api/models/v1_list_evaluators_response.py +5 -5
- eval_studio_client/api/models/v1_list_leaderboards_response.py +5 -5
- eval_studio_client/api/models/v1_list_llm_models_response.py +2 -2
- eval_studio_client/api/models/v1_list_model_collections_response.py +5 -5
- eval_studio_client/api/models/v1_list_models_response.py +5 -5
- eval_studio_client/api/models/v1_list_most_recent_dashboards_response.py +5 -5
- eval_studio_client/api/models/v1_list_most_recent_leaderboards_response.py +5 -5
- eval_studio_client/api/models/v1_list_most_recent_models_response.py +5 -5
- eval_studio_client/api/models/v1_list_most_recent_tests_response.py +5 -5
- eval_studio_client/api/models/v1_list_operations_response.py +5 -5
- eval_studio_client/api/models/v1_list_perturbators_response.py +5 -5
- eval_studio_client/api/models/v1_list_prompt_library_items_response.py +5 -5
- eval_studio_client/api/models/v1_list_rag_collections_response.py +5 -5
- eval_studio_client/api/models/v1_list_test_access_response.py +5 -5
- eval_studio_client/api/models/v1_list_test_case_library_items_response.py +5 -5
- eval_studio_client/api/models/v1_list_test_case_relationships_response.py +5 -5
- eval_studio_client/api/models/v1_list_test_cases_response.py +5 -5
- eval_studio_client/api/models/v1_list_test_classes_response.py +5 -5
- eval_studio_client/api/models/v1_list_tests_response.py +5 -5
- eval_studio_client/api/models/v1_list_tests_shared_with_me_response.py +5 -5
- eval_studio_client/api/models/v1_list_workflow_access_response.py +5 -5
- eval_studio_client/api/models/v1_list_workflow_dependencies_response.py +8 -8
- eval_studio_client/api/models/v1_list_workflows_response.py +5 -5
- eval_studio_client/api/models/v1_list_workflows_shared_with_me_response.py +5 -5
- eval_studio_client/api/models/v1_metric_score.py +2 -2
- eval_studio_client/api/models/v1_metric_scores.py +5 -5
- eval_studio_client/api/models/v1_model.py +2 -2
- eval_studio_client/api/models/v1_operation.py +2 -2
- eval_studio_client/api/models/v1_operation_progress.py +2 -2
- eval_studio_client/api/models/v1_perturb_test_in_place_response.py +2 -2
- eval_studio_client/api/models/v1_perturb_test_response.py +2 -2
- eval_studio_client/api/models/v1_perturbator.py +2 -2
- eval_studio_client/api/models/v1_perturbator_configuration.py +2 -2
- eval_studio_client/api/models/v1_problem_and_action.py +2 -2
- eval_studio_client/api/models/v1_process_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_prompt_library_item.py +2 -2
- eval_studio_client/api/models/v1_repeated_context.py +5 -5
- eval_studio_client/api/models/v1_repeated_string.py +2 -2
- eval_studio_client/api/models/v1_reset_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_role_binding.py +2 -2
- eval_studio_client/api/models/v1_stats.py +2 -2
- eval_studio_client/api/models/v1_test.py +2 -2
- eval_studio_client/api/models/v1_test_case.py +2 -2
- eval_studio_client/api/models/v1_test_case_relationship.py +2 -2
- eval_studio_client/api/models/v1_test_class.py +2 -2
- eval_studio_client/api/models/v1_test_lab.py +2 -2
- eval_studio_client/api/models/v1_update_dashboard_response.py +2 -2
- eval_studio_client/api/models/v1_update_document_response.py +2 -2
- eval_studio_client/api/models/v1_update_leaderboard_response.py +2 -2
- eval_studio_client/api/models/v1_update_model_response.py +2 -2
- eval_studio_client/api/models/v1_update_operation_response.py +2 -2
- eval_studio_client/api/models/v1_update_test_case_response.py +2 -2
- eval_studio_client/api/models/v1_update_test_response.py +2 -2
- eval_studio_client/api/models/v1_update_workflow_node_response.py +2 -2
- eval_studio_client/api/models/v1_update_workflow_response.py +2 -2
- eval_studio_client/api/models/v1_who_am_i_response.py +2 -2
- eval_studio_client/api/models/v1_workflow.py +5 -5
- eval_studio_client/api/models/v1_workflow_dependency.py +2 -2
- eval_studio_client/api/models/v1_workflow_edge.py +2 -2
- eval_studio_client/api/models/v1_workflow_node.py +5 -5
- eval_studio_client/api/models/v1_workflow_node_artifact.py +2 -2
- eval_studio_client/api/models/v1_workflow_node_artifacts.py +5 -5
- eval_studio_client/api/models/v1_workflow_node_attributes.py +2 -2
- eval_studio_client/api/models/workflow_service_clone_workflow_request.py +2 -2
- eval_studio_client/api/models/workflow_service_revoke_workflow_access_request.py +2 -2
- eval_studio_client/leaderboards.py +17 -0
- eval_studio_client/models.py +153 -8
- {eval_studio_client-1.2.1a3.dist-info → eval_studio_client-1.2.2.dist-info}/METADATA +1 -1
- {eval_studio_client-1.2.1a3.dist-info → eval_studio_client-1.2.2.dist-info}/RECORD +213 -213
- {eval_studio_client-1.2.1a3.dist-info → eval_studio_client-1.2.2.dist-info}/WHEEL +0 -0
eval_studio_client/models.py
CHANGED
|
@@ -67,6 +67,7 @@ class Model:
|
|
|
67
67
|
is_rag: bool
|
|
68
68
|
create_time: Optional[datetime.datetime] = None
|
|
69
69
|
update_time: Optional[datetime.datetime] = None
|
|
70
|
+
_model_parameters: Optional[str] = None
|
|
70
71
|
_client: Optional[api.ApiClient] = None
|
|
71
72
|
|
|
72
73
|
def __post_init__(self):
|
|
@@ -180,6 +181,7 @@ class Model:
|
|
|
180
181
|
description: Optional[str] = None,
|
|
181
182
|
base_models: Optional[List[str]] = None,
|
|
182
183
|
existing_collection: Optional[str] = None,
|
|
184
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
183
185
|
) -> Optional[d8s.Dashboard]:
|
|
184
186
|
"""Runs a new evaluation for the model and creates a new dashboard.
|
|
185
187
|
|
|
@@ -191,6 +193,10 @@ class Model:
|
|
|
191
193
|
existing_collection (str): ID or the resource name of the existing
|
|
192
194
|
collection, which will be used as a corpus for evaluation.
|
|
193
195
|
NOTE: This option works only for the H2OGPTe and Amazon Bedrock model hosts ATM.
|
|
196
|
+
model_parameters (optional): Optional override of the model parameters.
|
|
197
|
+
This can be either a JSON string or a dictionary.
|
|
198
|
+
Examples:
|
|
199
|
+
model_parameters={"llm_args": {"temperature": 0.7, "use_agent": False}}
|
|
194
200
|
"""
|
|
195
201
|
_evaluators = (
|
|
196
202
|
[evaluators] if isinstance(evaluators, e8s.Evaluator) else evaluators
|
|
@@ -198,6 +204,21 @@ class Model:
|
|
|
198
204
|
_test_suites = (
|
|
199
205
|
[test_suites] if isinstance(test_suites, tests.Test) else test_suites
|
|
200
206
|
)
|
|
207
|
+
_model_parameters = None
|
|
208
|
+
if model_parameters:
|
|
209
|
+
if isinstance(model_parameters, str):
|
|
210
|
+
_model_parameters = model_parameters
|
|
211
|
+
elif isinstance(model_parameters, dict):
|
|
212
|
+
try:
|
|
213
|
+
_model_parameters = json.dumps(model_parameters)
|
|
214
|
+
except (TypeError, ValueError) as err:
|
|
215
|
+
raise ValueError("Invalid dictionary for model_parameters") from err
|
|
216
|
+
else:
|
|
217
|
+
_model_parameters = (
|
|
218
|
+
self._model_parameters
|
|
219
|
+
if isinstance(self._model_parameters, str)
|
|
220
|
+
else None
|
|
221
|
+
)
|
|
201
222
|
|
|
202
223
|
create_lb_reqs: List[models.V1CreateLeaderboardRequest] = []
|
|
203
224
|
for evaluator in _evaluators:
|
|
@@ -207,6 +228,7 @@ class Model:
|
|
|
207
228
|
description=description or "",
|
|
208
229
|
base_models=base_models or [],
|
|
209
230
|
existing_collection=existing_collection,
|
|
231
|
+
_model_parameters=_model_parameters,
|
|
210
232
|
_model_name=self.key,
|
|
211
233
|
_evaluator_name=evaluator.key,
|
|
212
234
|
_test_names=[t.key for t in _test_suites],
|
|
@@ -261,6 +283,24 @@ class Model:
|
|
|
261
283
|
|
|
262
284
|
return None
|
|
263
285
|
|
|
286
|
+
@property
|
|
287
|
+
def model_parameters(self) -> dict:
|
|
288
|
+
"""Retrieves the model parameters as a dictionary.
|
|
289
|
+
|
|
290
|
+
Returns:
|
|
291
|
+
dict: The model parameters as a dictionary. Returns empty dict if no parameters are set.
|
|
292
|
+
"""
|
|
293
|
+
if self._model_parameters:
|
|
294
|
+
if isinstance(self._model_parameters, str):
|
|
295
|
+
try:
|
|
296
|
+
return json.loads(self._model_parameters)
|
|
297
|
+
except json.JSONDecodeError:
|
|
298
|
+
print("Failed to parse model parameters")
|
|
299
|
+
return {}
|
|
300
|
+
elif isinstance(self._model_parameters, dict):
|
|
301
|
+
return self._model_parameters
|
|
302
|
+
return {}
|
|
303
|
+
|
|
264
304
|
def delete(self):
|
|
265
305
|
"""Deletes the model"""
|
|
266
306
|
self._model_api.model_service_delete_model(self.key)
|
|
@@ -286,6 +326,7 @@ class Model:
|
|
|
286
326
|
create_time=api_model.create_time,
|
|
287
327
|
update_time=api_model.update_time,
|
|
288
328
|
_client=client,
|
|
329
|
+
_model_parameters=api_model.parameters,
|
|
289
330
|
)
|
|
290
331
|
|
|
291
332
|
@staticmethod
|
|
@@ -342,7 +383,13 @@ class _Models:
|
|
|
342
383
|
return self.get(DEFAULT_LLM_MODEL_KEY)
|
|
343
384
|
|
|
344
385
|
def create_h2ogpte_model(
|
|
345
|
-
self,
|
|
386
|
+
self,
|
|
387
|
+
name: str,
|
|
388
|
+
is_rag: bool,
|
|
389
|
+
description: str,
|
|
390
|
+
url: str,
|
|
391
|
+
api_key: str,
|
|
392
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
346
393
|
) -> Model:
|
|
347
394
|
"""Creates a new H2OGPTe model in Eval Studio.
|
|
348
395
|
|
|
@@ -355,18 +402,24 @@ class _Models:
|
|
|
355
402
|
description: Description of the model.
|
|
356
403
|
url: URL of the model host system.
|
|
357
404
|
api_key: API key for the model host system.
|
|
405
|
+
model_parameters (optional): Optional model parameters.
|
|
406
|
+
This can be either a JSON string or a dictionary.
|
|
407
|
+
Examples:
|
|
408
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
358
409
|
"""
|
|
359
410
|
model_type = (
|
|
360
411
|
models.V1ModelType.MODEL_TYPE_H2_OGPTE_RAG
|
|
361
412
|
if is_rag
|
|
362
413
|
else models.V1ModelType.MODEL_TYPE_H2_OGPTE_LLM
|
|
363
414
|
)
|
|
415
|
+
|
|
364
416
|
req = models.V1Model(
|
|
365
417
|
display_name=name,
|
|
366
418
|
description=description,
|
|
367
419
|
url=url,
|
|
368
420
|
api_key=api_key,
|
|
369
421
|
type=model_type,
|
|
422
|
+
parameters=self._serialize_model_parameters(model_parameters),
|
|
370
423
|
)
|
|
371
424
|
res = self._api.model_service_create_model(req)
|
|
372
425
|
if res and res.model:
|
|
@@ -375,7 +428,12 @@ class _Models:
|
|
|
375
428
|
raise RuntimeError("Failed to create H2OGPTe model")
|
|
376
429
|
|
|
377
430
|
def create_h2ogpt_model(
|
|
378
|
-
self,
|
|
431
|
+
self,
|
|
432
|
+
name: str,
|
|
433
|
+
description: str,
|
|
434
|
+
url: str,
|
|
435
|
+
api_key: str,
|
|
436
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
379
437
|
) -> Model:
|
|
380
438
|
"""Creates a new H2OGPT model in Eval Studio.
|
|
381
439
|
|
|
@@ -384,13 +442,19 @@ class _Models:
|
|
|
384
442
|
description: Description of the model.
|
|
385
443
|
url: URL of the model host system.
|
|
386
444
|
api_key: API key for the model host system.
|
|
445
|
+
model_parameters (optional): Optional model parameters.
|
|
446
|
+
This can be either a JSON string or a dictionary.
|
|
447
|
+
Examples:
|
|
448
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
387
449
|
"""
|
|
450
|
+
|
|
388
451
|
req = models.V1Model(
|
|
389
452
|
display_name=name,
|
|
390
453
|
description=description,
|
|
391
454
|
url=url,
|
|
392
455
|
api_key=api_key,
|
|
393
456
|
type=models.V1ModelType.MODEL_TYPE_H2_OGPT_LLM,
|
|
457
|
+
parameters=self._serialize_model_parameters(model_parameters),
|
|
394
458
|
)
|
|
395
459
|
res = self._api.model_service_create_model(req)
|
|
396
460
|
if res and res.model:
|
|
@@ -399,7 +463,12 @@ class _Models:
|
|
|
399
463
|
raise RuntimeError("Failed to create H2OGPT model")
|
|
400
464
|
|
|
401
465
|
def create_h2o_llmops_model(
|
|
402
|
-
self,
|
|
466
|
+
self,
|
|
467
|
+
name: str,
|
|
468
|
+
description: str,
|
|
469
|
+
url: str,
|
|
470
|
+
api_key: str,
|
|
471
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
403
472
|
) -> Model:
|
|
404
473
|
"""Creates a new H2O LLMOps Model.
|
|
405
474
|
|
|
@@ -408,6 +477,10 @@ class _Models:
|
|
|
408
477
|
description: Description of the model.
|
|
409
478
|
url: URL of the model host system.
|
|
410
479
|
api_key: API key for the model host system.
|
|
480
|
+
model_parameters (optional): Optional model parameters.
|
|
481
|
+
This can be either a JSON string or a dictionary.
|
|
482
|
+
Examples:
|
|
483
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
411
484
|
"""
|
|
412
485
|
req = models.V1Model(
|
|
413
486
|
display_name=name,
|
|
@@ -415,6 +488,7 @@ class _Models:
|
|
|
415
488
|
url=url,
|
|
416
489
|
api_key=api_key,
|
|
417
490
|
type=models.V1ModelType.MODEL_TYPE_H2_OLLMOPS,
|
|
491
|
+
parameters=self._serialize_model_parameters(model_parameters),
|
|
418
492
|
)
|
|
419
493
|
res = self._api.model_service_create_model(req)
|
|
420
494
|
if res and res.model:
|
|
@@ -429,6 +503,7 @@ class _Models:
|
|
|
429
503
|
api_key: str,
|
|
430
504
|
url: str = "",
|
|
431
505
|
is_rag: bool = True,
|
|
506
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
432
507
|
) -> Model:
|
|
433
508
|
"""Creates a new OpenAI model in Eval Studio.
|
|
434
509
|
|
|
@@ -440,6 +515,10 @@ class _Models:
|
|
|
440
515
|
Otherwise can use custom OpenAI compatible API.
|
|
441
516
|
is_rag (optional): If True, uses the OpenAI Assistants API for RAG.
|
|
442
517
|
If False, uses plain OpenAI Chat.
|
|
518
|
+
model_parameters (optional): Optional model parameters.
|
|
519
|
+
This can be either a JSON string or a dictionary.
|
|
520
|
+
Examples:
|
|
521
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
443
522
|
|
|
444
523
|
"""
|
|
445
524
|
if url and is_rag:
|
|
@@ -458,6 +537,7 @@ class _Models:
|
|
|
458
537
|
api_key=api_key,
|
|
459
538
|
url=url or None,
|
|
460
539
|
type=model_type,
|
|
540
|
+
parameters=self._serialize_model_parameters(model_parameters),
|
|
461
541
|
)
|
|
462
542
|
res = self._api.model_service_create_model(req)
|
|
463
543
|
if res and res.model:
|
|
@@ -466,7 +546,13 @@ class _Models:
|
|
|
466
546
|
raise RuntimeError("Failed to create OpenAI model")
|
|
467
547
|
|
|
468
548
|
def create_azure_openai_model(
|
|
469
|
-
self,
|
|
549
|
+
self,
|
|
550
|
+
name: str,
|
|
551
|
+
description: str,
|
|
552
|
+
url: str,
|
|
553
|
+
api_key: str,
|
|
554
|
+
environmentID: str,
|
|
555
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
470
556
|
) -> Model:
|
|
471
557
|
"""Creates a new Azure-hosted OpenAI model in Eval Studio.
|
|
472
558
|
|
|
@@ -476,15 +562,20 @@ class _Models:
|
|
|
476
562
|
url: URL of the model host system.
|
|
477
563
|
api_key: API key for the model host system.
|
|
478
564
|
environmentID: Azure environment ID.
|
|
565
|
+
model_parameters (optional): Optional model parameters.
|
|
566
|
+
This can be either a JSON string or a dictionary.
|
|
567
|
+
Note: The environment_id parameter will be automatically added.
|
|
568
|
+
Examples:
|
|
569
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
479
570
|
"""
|
|
480
|
-
|
|
571
|
+
extra_params = {_AZURE_ENV_ID_PARAM: environmentID}
|
|
481
572
|
req = models.V1Model(
|
|
482
573
|
display_name=name,
|
|
483
574
|
description=description,
|
|
484
575
|
url=url,
|
|
485
576
|
api_key=api_key,
|
|
486
577
|
type=models.V1ModelType.MODEL_TYPE_AZURE_OPENAI_CHAT,
|
|
487
|
-
parameters=
|
|
578
|
+
parameters=self._serialize_model_parameters(model_parameters, extra_params),
|
|
488
579
|
)
|
|
489
580
|
res = self._api.model_service_create_model(req)
|
|
490
581
|
if res and res.model:
|
|
@@ -493,7 +584,12 @@ class _Models:
|
|
|
493
584
|
raise RuntimeError("Failed to create Azure model")
|
|
494
585
|
|
|
495
586
|
def create_ollama_model(
|
|
496
|
-
self,
|
|
587
|
+
self,
|
|
588
|
+
name: str,
|
|
589
|
+
description: str,
|
|
590
|
+
url: str,
|
|
591
|
+
api_key: str,
|
|
592
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
497
593
|
) -> Model:
|
|
498
594
|
"""Creates a new OLLAMA model in Eval Studio.
|
|
499
595
|
|
|
@@ -502,6 +598,10 @@ class _Models:
|
|
|
502
598
|
description: Description of the model.
|
|
503
599
|
url: URL of the model host system.
|
|
504
600
|
api_key: API key for the model host system.
|
|
601
|
+
model_parameters (optional): Optional model parameters.
|
|
602
|
+
This can be either a JSON string or a dictionary.
|
|
603
|
+
Examples:
|
|
604
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
505
605
|
"""
|
|
506
606
|
req = models.V1Model(
|
|
507
607
|
display_name=name,
|
|
@@ -509,6 +609,7 @@ class _Models:
|
|
|
509
609
|
url=url,
|
|
510
610
|
api_key=api_key,
|
|
511
611
|
type=models.V1ModelType.MODEL_TYPE_OLLAMA,
|
|
612
|
+
parameters=self._serialize_model_parameters(model_parameters),
|
|
512
613
|
)
|
|
513
614
|
res = self._api.model_service_create_model(req)
|
|
514
615
|
if res and res.model:
|
|
@@ -524,6 +625,7 @@ class _Models:
|
|
|
524
625
|
aws_secret_access_key: str,
|
|
525
626
|
aws_session_token: str,
|
|
526
627
|
aws_region: str,
|
|
628
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
527
629
|
) -> Model:
|
|
528
630
|
"""Creates a new Amazon Bedrock model in Eval Studio.
|
|
529
631
|
|
|
@@ -534,18 +636,26 @@ class _Models:
|
|
|
534
636
|
aws_secret_access_key: AWS secret access key.
|
|
535
637
|
aws_session_token: AWS session token.
|
|
536
638
|
aws_region: AWS region.
|
|
639
|
+
model_parameters (optional): Optional model parameters.
|
|
640
|
+
This can be either a JSON string or a dictionary.
|
|
641
|
+
Note: The region parameter will be automatically added.
|
|
642
|
+
Examples:
|
|
643
|
+
model_parameters={"llm_args": {"temperature": 0.7}}
|
|
537
644
|
"""
|
|
538
645
|
credentials = {
|
|
539
646
|
"aws_access_key_id": aws_access_key_id,
|
|
540
647
|
"aws_secret_access_key": aws_secret_access_key,
|
|
541
648
|
"aws_session_token": aws_session_token,
|
|
542
649
|
}
|
|
650
|
+
|
|
651
|
+
extra_params = {"region": aws_region}
|
|
652
|
+
|
|
543
653
|
req = models.V1Model(
|
|
544
654
|
display_name=name,
|
|
545
655
|
description=description,
|
|
546
656
|
type=models.V1ModelType.MODEL_TYPE_AMAZON_BEDROCK,
|
|
547
657
|
api_key=json.dumps(credentials),
|
|
548
|
-
parameters=
|
|
658
|
+
parameters=self._serialize_model_parameters(model_parameters, extra_params),
|
|
549
659
|
)
|
|
550
660
|
res = self._api.model_service_create_model(req)
|
|
551
661
|
if res and res.model:
|
|
@@ -569,3 +679,38 @@ class _Models:
|
|
|
569
679
|
return [Model._from_api_model(m, self._client) for m in res_models]
|
|
570
680
|
|
|
571
681
|
return []
|
|
682
|
+
|
|
683
|
+
def _serialize_model_parameters(
|
|
684
|
+
self,
|
|
685
|
+
model_parameters: Optional[Union[dict, str]] = None,
|
|
686
|
+
additional_params: Optional[dict] = None,
|
|
687
|
+
) -> Optional[str]:
|
|
688
|
+
"""Helper method to serialize model parameters."""
|
|
689
|
+
if model_parameters:
|
|
690
|
+
if isinstance(model_parameters, str):
|
|
691
|
+
if additional_params:
|
|
692
|
+
try:
|
|
693
|
+
params_dict = json.loads(model_parameters)
|
|
694
|
+
params_dict.update(additional_params)
|
|
695
|
+
return json.dumps(params_dict)
|
|
696
|
+
except json.JSONDecodeError as err:
|
|
697
|
+
raise ValueError(
|
|
698
|
+
"Invalid JSON string for model_parameters"
|
|
699
|
+
) from err
|
|
700
|
+
|
|
701
|
+
return model_parameters
|
|
702
|
+
elif isinstance(model_parameters, dict):
|
|
703
|
+
if additional_params:
|
|
704
|
+
model_parameters.update(additional_params)
|
|
705
|
+
|
|
706
|
+
try:
|
|
707
|
+
return json.dumps(model_parameters)
|
|
708
|
+
except (TypeError, ValueError) as err:
|
|
709
|
+
raise ValueError("Invalid dictionary for model_parameters") from err
|
|
710
|
+
elif additional_params:
|
|
711
|
+
try:
|
|
712
|
+
return json.dumps(additional_params)
|
|
713
|
+
except (TypeError, ValueError):
|
|
714
|
+
print("Failed to serialize additional model parameters")
|
|
715
|
+
|
|
716
|
+
return None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eval-studio-client
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Project-URL: Source, https://github.com/h2oai/eval-studio/tree/main/client-py/src/
|
|
5
5
|
Project-URL: Issues, https://github.com/h2oai/eval-studio/issues
|
|
6
6
|
Author-email: "H2O.ai" <support@h2o.ai>
|