orca-sdk 0.0.96__py3-none-any.whl → 0.0.98__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.
- orca_sdk/__init__.py +2 -5
- orca_sdk/_shared/__init__.py +1 -0
- orca_sdk/_shared/metrics.py +1 -1
- orca_sdk/_utils/analysis_ui.py +5 -5
- orca_sdk/_utils/auth.py +23 -33
- orca_sdk/_utils/pagination.py +126 -0
- orca_sdk/_utils/pagination_test.py +132 -0
- orca_sdk/classification_model.py +188 -126
- orca_sdk/classification_model_test.py +102 -0
- orca_sdk/client.py +3515 -0
- orca_sdk/conftest.py +10 -0
- orca_sdk/credentials.py +73 -21
- orca_sdk/credentials_test.py +20 -0
- orca_sdk/datasource.py +186 -81
- orca_sdk/datasource_test.py +194 -0
- orca_sdk/embedding_model.py +267 -75
- orca_sdk/embedding_model_test.py +32 -14
- orca_sdk/job.py +59 -54
- orca_sdk/job_test.py +50 -0
- orca_sdk/memoryset.py +372 -345
- orca_sdk/memoryset_test.py +7 -11
- orca_sdk/regression_model.py +120 -111
- orca_sdk/regression_model_test.py +15 -0
- orca_sdk/telemetry.py +229 -115
- {orca_sdk-0.0.96.dist-info → orca_sdk-0.0.98.dist-info}/METADATA +19 -5
- orca_sdk-0.0.98.dist-info/RECORD +40 -0
- orca_sdk/_generated_api_client/__init__.py +0 -3
- orca_sdk/_generated_api_client/api/__init__.py +0 -287
- orca_sdk/_generated_api_client/api/auth/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
- orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
- orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
- orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
- orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/classification_model/create_classification_model_gpu_classification_model_post.py +0 -170
- orca_sdk/_generated_api_client/api/classification_model/delete_classification_model_classification_model_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/classification_model/delete_classification_model_evaluation_classification_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
- orca_sdk/_generated_api_client/api/classification_model/evaluate_classification_model_classification_model_model_name_or_id_evaluation_post.py +0 -183
- orca_sdk/_generated_api_client/api/classification_model/get_classification_model_classification_model_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/classification_model/get_classification_model_evaluation_classification_model_model_name_or_id_evaluation_task_id_get.py +0 -170
- orca_sdk/_generated_api_client/api/classification_model/list_classification_model_evaluations_classification_model_model_name_or_id_evaluation_get.py +0 -161
- orca_sdk/_generated_api_client/api/classification_model/list_classification_models_classification_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/classification_model/predict_label_gpu_classification_model_name_or_id_prediction_post.py +0 -190
- orca_sdk/_generated_api_client/api/classification_model/update_classification_model_classification_model_name_or_id_patch.py +0 -183
- orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/datasource/create_datasource_datasource_post.py +0 -167
- orca_sdk/_generated_api_client/api/datasource/create_embedding_evaluation_datasource_name_or_id_embedding_evaluation_post.py +0 -183
- orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/datasource/download_datasource_datasource_name_or_id_download_get.py +0 -172
- orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/datasource/get_embedding_evaluation_datasource_name_or_id_embedding_evaluation_task_id_get.py +0 -169
- orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
- orca_sdk/_generated_api_client/api/datasource/list_embedding_evaluations_datasource_name_or_id_embedding_evaluation_get.py +0 -235
- orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
- orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/embed_with_finetuned_model_gpu_finetuned_embedding_model_name_or_id_embedding_post.py +0 -189
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/memoryset/analyze_memoryset_memoryset_name_or_id_analysis_post.py +0 -183
- orca_sdk/_generated_api_client/api/memoryset/batch_delete_memoryset_batch_delete_memoryset_post.py +0 -168
- orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
- orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
- orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
- orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
- orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
- orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -210
- orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -186
- orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -188
- orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -235
- orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -180
- orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -212
- orca_sdk/_generated_api_client/api/memoryset/potential_duplicate_groups_memoryset_name_or_id_potential_duplicate_groups_get.py +0 -195
- orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -210
- orca_sdk/_generated_api_client/api/memoryset/suggest_cascading_edits_memoryset_name_or_id_memory_memory_id_cascading_edits_post.py +0 -233
- orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -216
- orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -205
- orca_sdk/_generated_api_client/api/memoryset/update_memoryset_memoryset_name_or_id_patch.py +0 -183
- orca_sdk/_generated_api_client/api/predictive_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/predictive_model/list_predictive_models_predictive_model_get.py +0 -150
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -192
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -161
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/regression_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/regression_model/create_regression_model_gpu_regression_model_post.py +0 -170
- orca_sdk/_generated_api_client/api/regression_model/delete_regression_model_evaluation_regression_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
- orca_sdk/_generated_api_client/api/regression_model/delete_regression_model_regression_model_name_or_id_delete.py +0 -154
- orca_sdk/_generated_api_client/api/regression_model/evaluate_regression_model_regression_model_model_name_or_id_evaluation_post.py +0 -183
- orca_sdk/_generated_api_client/api/regression_model/get_regression_model_evaluation_regression_model_model_name_or_id_evaluation_task_id_get.py +0 -170
- orca_sdk/_generated_api_client/api/regression_model/get_regression_model_regression_model_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/regression_model/list_regression_model_evaluations_regression_model_model_name_or_id_evaluation_get.py +0 -161
- orca_sdk/_generated_api_client/api/regression_model/list_regression_models_regression_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/regression_model/predict_score_gpu_regression_model_name_or_id_prediction_post.py +0 -190
- orca_sdk/_generated_api_client/api/regression_model/update_regression_model_regression_model_name_or_id_patch.py +0 -183
- orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
- orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
- orca_sdk/_generated_api_client/api/task/get_task_task_task_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -293
- orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/telemetry/count_predictions_telemetry_prediction_count_post.py +0 -168
- orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
- orca_sdk/_generated_api_client/api/telemetry/explain_prediction_telemetry_prediction_prediction_id_explanation_get.py +0 -182
- orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -180
- orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
- orca_sdk/_generated_api_client/api/telemetry/list_memories_with_feedback_telemetry_memories_post.py +0 -198
- orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -198
- orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
- orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
- orca_sdk/_generated_api_client/client.py +0 -216
- orca_sdk/_generated_api_client/errors.py +0 -38
- orca_sdk/_generated_api_client/models/__init__.py +0 -295
- orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -116
- orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -137
- orca_sdk/_generated_api_client/models/api_key_metadata_scope_item.py +0 -9
- orca_sdk/_generated_api_client/models/base_label_prediction_result.py +0 -130
- orca_sdk/_generated_api_client/models/base_model.py +0 -55
- orca_sdk/_generated_api_client/models/base_score_prediction_result.py +0 -108
- orca_sdk/_generated_api_client/models/body_create_datasource_datasource_post.py +0 -207
- orca_sdk/_generated_api_client/models/cascade_edit_suggestions_request.py +0 -154
- orca_sdk/_generated_api_client/models/cascading_edit_suggestion.py +0 -92
- orca_sdk/_generated_api_client/models/classification_evaluation_request.py +0 -148
- orca_sdk/_generated_api_client/models/classification_metrics.py +0 -259
- orca_sdk/_generated_api_client/models/classification_model_metadata.py +0 -213
- orca_sdk/_generated_api_client/models/classification_prediction_request.py +0 -220
- orca_sdk/_generated_api_client/models/clone_memoryset_request.py +0 -170
- orca_sdk/_generated_api_client/models/cluster_metrics.py +0 -78
- orca_sdk/_generated_api_client/models/column_info.py +0 -145
- orca_sdk/_generated_api_client/models/column_type.py +0 -14
- orca_sdk/_generated_api_client/models/constraint_violation_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/count_predictions_request.py +0 -195
- orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -120
- orca_sdk/_generated_api_client/models/create_api_key_request_scope_item.py +0 -9
- orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -145
- orca_sdk/_generated_api_client/models/create_api_key_response_scope_item.py +0 -9
- orca_sdk/_generated_api_client/models/create_classification_model_request.py +0 -197
- orca_sdk/_generated_api_client/models/create_memoryset_request.py +0 -325
- orca_sdk/_generated_api_client/models/create_memoryset_request_index_params.py +0 -66
- orca_sdk/_generated_api_client/models/create_memoryset_request_index_type.py +0 -13
- orca_sdk/_generated_api_client/models/create_regression_model_request.py +0 -137
- orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -156
- orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
- orca_sdk/_generated_api_client/models/delete_memorysets_request.py +0 -70
- orca_sdk/_generated_api_client/models/embed_request.py +0 -135
- orca_sdk/_generated_api_client/models/embedding_evaluation_payload.py +0 -187
- orca_sdk/_generated_api_client/models/embedding_evaluation_request.py +0 -179
- orca_sdk/_generated_api_client/models/embedding_evaluation_response.py +0 -158
- orca_sdk/_generated_api_client/models/embedding_evaluation_result.py +0 -86
- orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
- orca_sdk/_generated_api_client/models/embedding_model_result.py +0 -114
- orca_sdk/_generated_api_client/models/evaluation_response.py +0 -153
- orca_sdk/_generated_api_client/models/evaluation_response_classification_metrics.py +0 -140
- orca_sdk/_generated_api_client/models/evaluation_response_regression_metrics.py +0 -140
- orca_sdk/_generated_api_client/models/feedback_metrics.py +0 -85
- orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
- orca_sdk/_generated_api_client/models/filter_item.py +0 -231
- orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -17
- orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -20
- orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
- orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
- orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
- orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
- orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
- orca_sdk/_generated_api_client/models/http_validation_error.py +0 -86
- orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
- orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -210
- orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -288
- orca_sdk/_generated_api_client/models/labeled_memory.py +0 -186
- orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -128
- orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -194
- orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_metrics.py +0 -246
- orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
- orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics.py +0 -207
- orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_feedback_metrics.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
- orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -319
- orca_sdk/_generated_api_client/models/lookup_request.py +0 -81
- orca_sdk/_generated_api_client/models/lookup_score_metrics.py +0 -94
- orca_sdk/_generated_api_client/models/memory_metrics.py +0 -165
- orca_sdk/_generated_api_client/models/memory_type.py +0 -9
- orca_sdk/_generated_api_client/models/memoryset_analysis_configs.py +0 -212
- orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -105
- orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -182
- orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config.py +0 -202
- orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_clustering_method.py +0 -9
- orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_partitioning_method.py +0 -10
- orca_sdk/_generated_api_client/models/memoryset_cluster_metrics.py +0 -100
- orca_sdk/_generated_api_client/models/memoryset_duplicate_analysis_config.py +0 -70
- orca_sdk/_generated_api_client/models/memoryset_duplicate_metrics.py +0 -70
- orca_sdk/_generated_api_client/models/memoryset_label_analysis_config.py +0 -70
- orca_sdk/_generated_api_client/models/memoryset_label_metrics.py +0 -116
- orca_sdk/_generated_api_client/models/memoryset_metadata.py +0 -291
- orca_sdk/_generated_api_client/models/memoryset_metadata_index_params.py +0 -55
- orca_sdk/_generated_api_client/models/memoryset_metadata_index_type.py +0 -13
- orca_sdk/_generated_api_client/models/memoryset_metrics.py +0 -232
- orca_sdk/_generated_api_client/models/memoryset_neighbor_analysis_config.py +0 -83
- orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics.py +0 -76
- orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics_lookup_score_metrics.py +0 -68
- orca_sdk/_generated_api_client/models/memoryset_projection_analysis_config.py +0 -79
- orca_sdk/_generated_api_client/models/memoryset_projection_metrics.py +0 -55
- orca_sdk/_generated_api_client/models/memoryset_update.py +0 -101
- orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -100
- orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -22
- orca_sdk/_generated_api_client/models/paginated_union_labeled_memory_with_feedback_metrics_scored_memory_with_feedback_metrics.py +0 -135
- orca_sdk/_generated_api_client/models/pr_curve.py +0 -86
- orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
- orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
- orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
- orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
- orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_0.py +0 -10
- orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_1.py +0 -9
- orca_sdk/_generated_api_client/models/predictive_model_update.py +0 -91
- orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -107
- orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -17
- orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
- orca_sdk/_generated_api_client/models/rar_head_type.py +0 -8
- orca_sdk/_generated_api_client/models/regression_evaluation_request.py +0 -148
- orca_sdk/_generated_api_client/models/regression_metrics.py +0 -172
- orca_sdk/_generated_api_client/models/regression_model_metadata.py +0 -177
- orca_sdk/_generated_api_client/models/regression_prediction_request.py +0 -195
- orca_sdk/_generated_api_client/models/roc_curve.py +0 -86
- orca_sdk/_generated_api_client/models/score_prediction_memory_lookup.py +0 -196
- orca_sdk/_generated_api_client/models/score_prediction_memory_lookup_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/score_prediction_with_memories_and_feedback.py +0 -252
- orca_sdk/_generated_api_client/models/scored_memory.py +0 -172
- orca_sdk/_generated_api_client/models/scored_memory_insert.py +0 -128
- orca_sdk/_generated_api_client/models/scored_memory_insert_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/scored_memory_lookup.py +0 -180
- orca_sdk/_generated_api_client/models/scored_memory_lookup_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/scored_memory_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/scored_memory_update.py +0 -171
- orca_sdk/_generated_api_client/models/scored_memory_update_metadata_type_0.py +0 -68
- orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics.py +0 -193
- orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_feedback_metrics.py +0 -68
- orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/task.py +0 -198
- orca_sdk/_generated_api_client/models/task_status.py +0 -14
- orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
- orca_sdk/_generated_api_client/models/telemetry_field_type_0_item_type_2.py +0 -9
- orca_sdk/_generated_api_client/models/telemetry_filter_item.py +0 -205
- orca_sdk/_generated_api_client/models/telemetry_filter_item_op.py +0 -15
- orca_sdk/_generated_api_client/models/telemetry_memories_request.py +0 -181
- orca_sdk/_generated_api_client/models/telemetry_sort_options.py +0 -173
- orca_sdk/_generated_api_client/models/telemetry_sort_options_direction.py +0 -9
- orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -72
- orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -133
- orca_sdk/_generated_api_client/models/validation_error.py +0 -99
- orca_sdk/_generated_api_client/py.typed +0 -1
- orca_sdk/_generated_api_client/types.py +0 -56
- orca_sdk-0.0.96.dist-info/RECORD +0 -278
- {orca_sdk-0.0.96.dist-info → orca_sdk-0.0.98.dist-info}/WHEEL +0 -0
orca_sdk/telemetry.py
CHANGED
|
@@ -1,34 +1,22 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
+
import os
|
|
4
5
|
from abc import ABC
|
|
5
6
|
from datetime import datetime
|
|
6
|
-
from typing import TYPE_CHECKING, Any,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
from .
|
|
12
|
-
drop_feedback_category_with_data,
|
|
13
|
-
get_prediction,
|
|
14
|
-
list_feedback_categories,
|
|
15
|
-
list_predictions,
|
|
16
|
-
record_prediction_feedback,
|
|
17
|
-
update_prediction,
|
|
18
|
-
)
|
|
19
|
-
from ._generated_api_client.client import get_client
|
|
20
|
-
from ._generated_api_client.errors import get_error_for_response
|
|
21
|
-
from ._generated_api_client.models import (
|
|
22
|
-
FeedbackType,
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Iterable, Literal, Self, overload
|
|
8
|
+
|
|
9
|
+
from httpx import Timeout
|
|
10
|
+
|
|
11
|
+
from ._utils.common import UNSET
|
|
12
|
+
from .client import (
|
|
23
13
|
LabelPredictionWithMemoriesAndFeedback,
|
|
24
|
-
ListPredictionsRequest,
|
|
25
14
|
PredictionFeedbackCategory,
|
|
26
15
|
PredictionFeedbackRequest,
|
|
27
16
|
ScorePredictionWithMemoriesAndFeedback,
|
|
28
17
|
UpdatePredictionRequest,
|
|
18
|
+
orca_api,
|
|
29
19
|
)
|
|
30
|
-
from ._generated_api_client.types import UNSET as CLIENT_UNSET
|
|
31
|
-
from ._utils.prediction_result_ui import inspect_prediction_result
|
|
32
20
|
from .memoryset import (
|
|
33
21
|
LabeledMemoryLookup,
|
|
34
22
|
LabeledMemoryset,
|
|
@@ -40,6 +28,23 @@ if TYPE_CHECKING:
|
|
|
40
28
|
from .classification_model import ClassificationModel
|
|
41
29
|
from .regression_model import RegressionModel
|
|
42
30
|
|
|
31
|
+
TelemetryMode = Literal["off", "on", "sync", "async"]
|
|
32
|
+
"""
|
|
33
|
+
Mode for saving telemetry. One of:
|
|
34
|
+
|
|
35
|
+
- `"off"`: Do not save telemetry
|
|
36
|
+
- `"on"`: Save telemetry asynchronously unless the `ORCA_SAVE_TELEMETRY_SYNCHRONOUSLY` environment variable is set.
|
|
37
|
+
- `"sync"`: Save telemetry synchronously
|
|
38
|
+
- `"async"`: Save telemetry asynchronously
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _get_telemetry_config(override: TelemetryMode | None = None) -> tuple[bool, bool]:
|
|
43
|
+
return (
|
|
44
|
+
override != "off",
|
|
45
|
+
os.getenv("ORCA_SAVE_TELEMETRY_SYNCHRONOUSLY", "0") != "0" or override == "sync",
|
|
46
|
+
)
|
|
47
|
+
|
|
43
48
|
|
|
44
49
|
def _parse_feedback(feedback: dict[str, Any]) -> PredictionFeedbackRequest:
|
|
45
50
|
category = feedback.get("category", None)
|
|
@@ -48,12 +53,15 @@ def _parse_feedback(feedback: dict[str, Any]) -> PredictionFeedbackRequest:
|
|
|
48
53
|
prediction_id = feedback.get("prediction_id", None)
|
|
49
54
|
if prediction_id is None:
|
|
50
55
|
raise ValueError("`prediction_id` must be specified")
|
|
51
|
-
|
|
52
|
-
prediction_id
|
|
53
|
-
category_name
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
output: PredictionFeedbackRequest = {
|
|
57
|
+
"prediction_id": prediction_id,
|
|
58
|
+
"category_name": category,
|
|
59
|
+
}
|
|
60
|
+
if "value" in feedback:
|
|
61
|
+
output["value"] = feedback["value"]
|
|
62
|
+
if "comment" in feedback:
|
|
63
|
+
output["comment"] = feedback["comment"]
|
|
64
|
+
return output
|
|
57
65
|
|
|
58
66
|
|
|
59
67
|
class FeedbackCategory:
|
|
@@ -77,11 +85,10 @@ class FeedbackCategory:
|
|
|
77
85
|
created_at: datetime
|
|
78
86
|
|
|
79
87
|
def __init__(self, category: PredictionFeedbackCategory):
|
|
80
|
-
|
|
81
|
-
self.
|
|
82
|
-
self.
|
|
83
|
-
self.
|
|
84
|
-
self.created_at = category.created_at
|
|
88
|
+
self.id = category["id"]
|
|
89
|
+
self.name = category["name"]
|
|
90
|
+
self.value_type = bool if category["type"] == "BINARY" else float
|
|
91
|
+
self.created_at = datetime.fromisoformat(category["created_at"])
|
|
85
92
|
|
|
86
93
|
@classmethod
|
|
87
94
|
def all(cls) -> list[FeedbackCategory]:
|
|
@@ -91,7 +98,7 @@ class FeedbackCategory:
|
|
|
91
98
|
Returns:
|
|
92
99
|
List with information about all existing feedback categories.
|
|
93
100
|
"""
|
|
94
|
-
return [FeedbackCategory(category) for category in
|
|
101
|
+
return [FeedbackCategory(category) for category in orca_api.GET("/telemetry/feedback_category")]
|
|
95
102
|
|
|
96
103
|
@classmethod
|
|
97
104
|
def drop(cls, name: str) -> None:
|
|
@@ -108,13 +115,43 @@ class FeedbackCategory:
|
|
|
108
115
|
Raises:
|
|
109
116
|
LookupError: If the category is not found.
|
|
110
117
|
"""
|
|
111
|
-
|
|
118
|
+
orca_api.DELETE("/telemetry/feedback_category/{name_or_id}", params={"name_or_id": name})
|
|
112
119
|
logging.info(f"Deleted feedback category {name} with all associated feedback")
|
|
113
120
|
|
|
114
121
|
def __repr__(self):
|
|
115
122
|
return "FeedbackCategory({" + f"name: {self.name}, " + f"value_type: {self.value_type}" + "})"
|
|
116
123
|
|
|
117
124
|
|
|
125
|
+
class AddMemorySuggestions:
|
|
126
|
+
suggestions: list[tuple[str, str]]
|
|
127
|
+
memoryset_id: str
|
|
128
|
+
model_id: str
|
|
129
|
+
prediction_id: str
|
|
130
|
+
|
|
131
|
+
def __init__(self, suggestions: list[tuple[str, str]], memoryset_id: str, model_id: str, prediction_id: str):
|
|
132
|
+
self.suggestions = suggestions
|
|
133
|
+
self.memoryset_id = memoryset_id
|
|
134
|
+
self.model_id = model_id
|
|
135
|
+
self.prediction_id = prediction_id
|
|
136
|
+
|
|
137
|
+
def __repr__(self):
|
|
138
|
+
return (
|
|
139
|
+
"AddMemorySuggestions({"
|
|
140
|
+
+ f"suggestions: {self.suggestions}, "
|
|
141
|
+
+ f"memoryset_id: {self.memoryset_id}, "
|
|
142
|
+
+ f"model_id: {self.model_id}, "
|
|
143
|
+
+ f"prediction_id: {self.prediction_id}"
|
|
144
|
+
+ "})"
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
def apply(self) -> None:
|
|
148
|
+
memoryset = LabeledMemoryset.open(self.memoryset_id)
|
|
149
|
+
label_name_to_label = {label_name: label for label, label_name in enumerate(memoryset.label_names)}
|
|
150
|
+
memoryset.insert(
|
|
151
|
+
[{"value": suggestion[0], "label": label_name_to_label[suggestion[1]]} for suggestion in self.suggestions]
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
|
|
118
155
|
class _Prediction(ABC):
|
|
119
156
|
prediction_id: str | None
|
|
120
157
|
confidence: float
|
|
@@ -151,55 +188,54 @@ class _Prediction(ABC):
|
|
|
151
188
|
def _telemetry(self) -> LabelPredictionWithMemoriesAndFeedback | ScorePredictionWithMemoriesAndFeedback:
|
|
152
189
|
# for internal use only, do not document
|
|
153
190
|
if self.__telemetry is None:
|
|
154
|
-
self.
|
|
191
|
+
if self.prediction_id is None:
|
|
192
|
+
raise ValueError("Cannot fetch telemetry with no prediction ID")
|
|
193
|
+
self.__telemetry = orca_api.GET(
|
|
194
|
+
"/telemetry/prediction/{prediction_id}", params={"prediction_id": self.prediction_id}
|
|
195
|
+
)
|
|
155
196
|
return self.__telemetry
|
|
156
197
|
|
|
157
198
|
@property
|
|
158
199
|
def input_value(self) -> str:
|
|
159
200
|
if self._input_value is not None:
|
|
160
201
|
return self._input_value
|
|
161
|
-
assert isinstance(self._telemetry
|
|
162
|
-
return self._telemetry
|
|
202
|
+
assert isinstance(self._telemetry["input_value"], str)
|
|
203
|
+
return self._telemetry["input_value"]
|
|
163
204
|
|
|
164
205
|
@property
|
|
165
206
|
def memory_lookups(self) -> list[LabeledMemoryLookup] | list[ScoredMemoryLookup]:
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
207
|
+
if "label" in self._telemetry:
|
|
208
|
+
return [
|
|
209
|
+
LabeledMemoryLookup(self._telemetry["memoryset_id"], lookup) for lookup in self._telemetry["memories"]
|
|
210
|
+
]
|
|
211
|
+
else:
|
|
212
|
+
return [
|
|
213
|
+
ScoredMemoryLookup(self._telemetry["memoryset_id"], lookup) for lookup in self._telemetry["memories"]
|
|
214
|
+
]
|
|
173
215
|
|
|
174
216
|
@property
|
|
175
217
|
def feedback(self) -> dict[str, bool | float]:
|
|
176
218
|
return {
|
|
177
|
-
f
|
|
178
|
-
f
|
|
219
|
+
f["category_name"]: (
|
|
220
|
+
f["value"] if f["category_type"] == "CONTINUOUS" else True if f["value"] == 1 else False
|
|
179
221
|
)
|
|
180
|
-
for f in self._telemetry
|
|
222
|
+
for f in self._telemetry["feedbacks"]
|
|
181
223
|
}
|
|
182
224
|
|
|
183
225
|
@property
|
|
184
226
|
def tags(self) -> set[str]:
|
|
185
|
-
return set(self._telemetry
|
|
186
|
-
|
|
187
|
-
def _explanation_stream(self, refresh: bool = False) -> Generator[str, None, None]:
|
|
188
|
-
httpx_client = get_client().get_httpx_client()
|
|
189
|
-
url = f"/telemetry/prediction/{self.prediction_id}/explanation?refresh={refresh}"
|
|
190
|
-
with httpx_client.stream("GET", url) as res:
|
|
191
|
-
if res.status_code != 200:
|
|
192
|
-
# Read the response body before raising the error
|
|
193
|
-
res.read()
|
|
194
|
-
raise get_error_for_response(res)
|
|
195
|
-
for chunk in res.iter_text():
|
|
196
|
-
yield chunk
|
|
227
|
+
return set(self._telemetry["tags"])
|
|
197
228
|
|
|
198
229
|
@property
|
|
199
230
|
def explanation(self) -> str:
|
|
200
|
-
if self._telemetry
|
|
201
|
-
self._telemetry
|
|
202
|
-
|
|
231
|
+
if self._telemetry["explanation"] is None:
|
|
232
|
+
self._telemetry["explanation"] = orca_api.GET(
|
|
233
|
+
"/telemetry/prediction/{prediction_id}/explanation",
|
|
234
|
+
params={"prediction_id": self._telemetry["prediction_id"]},
|
|
235
|
+
parse_as="text",
|
|
236
|
+
timeout=30,
|
|
237
|
+
)
|
|
238
|
+
return self._telemetry["explanation"]
|
|
203
239
|
|
|
204
240
|
def explain(self, refresh: bool = False) -> None:
|
|
205
241
|
"""
|
|
@@ -208,11 +244,16 @@ class _Prediction(ABC):
|
|
|
208
244
|
Params:
|
|
209
245
|
refresh: Force the explanation agent to re-run even if an explanation already exists.
|
|
210
246
|
"""
|
|
211
|
-
if not refresh and self._telemetry
|
|
212
|
-
print(self._telemetry
|
|
247
|
+
if not refresh and self._telemetry["explanation"] is not None:
|
|
248
|
+
print(self._telemetry["explanation"])
|
|
213
249
|
else:
|
|
214
|
-
|
|
215
|
-
|
|
250
|
+
with orca_api.stream(
|
|
251
|
+
"GET",
|
|
252
|
+
f"/telemetry/prediction/{self.prediction_id}/explanation?refresh={refresh}",
|
|
253
|
+
timeout=Timeout(connect=3, read=None),
|
|
254
|
+
) as res:
|
|
255
|
+
for chunk in res.iter_text():
|
|
256
|
+
print(chunk, end="")
|
|
216
257
|
print() # final newline
|
|
217
258
|
|
|
218
259
|
@overload
|
|
@@ -281,34 +322,33 @@ class _Prediction(ABC):
|
|
|
281
322
|
prediction: LabelPredictionWithMemoriesAndFeedback | ScorePredictionWithMemoriesAndFeedback,
|
|
282
323
|
) -> Self:
|
|
283
324
|
|
|
284
|
-
if
|
|
285
|
-
memoryset = LabeledMemoryset.open(prediction
|
|
286
|
-
model = ClassificationModel.open(prediction
|
|
287
|
-
elif isinstance(prediction, ScorePredictionWithMemoriesAndFeedback):
|
|
288
|
-
memoryset = ScoredMemoryset.open(prediction.memoryset_id)
|
|
289
|
-
model = RegressionModel.open(prediction.model_id)
|
|
325
|
+
if "label" in prediction:
|
|
326
|
+
memoryset = LabeledMemoryset.open(prediction["memoryset_id"])
|
|
327
|
+
model = ClassificationModel.open(prediction["model_id"])
|
|
290
328
|
else:
|
|
291
|
-
|
|
329
|
+
memoryset = ScoredMemoryset.open(prediction["memoryset_id"])
|
|
330
|
+
model = RegressionModel.open(prediction["model_id"])
|
|
292
331
|
|
|
293
332
|
return cls(
|
|
294
|
-
prediction_id=prediction
|
|
295
|
-
label=
|
|
296
|
-
label_name=
|
|
297
|
-
score=
|
|
298
|
-
confidence=prediction
|
|
299
|
-
anomaly_score=prediction
|
|
333
|
+
prediction_id=prediction["prediction_id"],
|
|
334
|
+
label=prediction.get("label", None),
|
|
335
|
+
label_name=prediction.get("label_name", None),
|
|
336
|
+
score=prediction.get("score", None),
|
|
337
|
+
confidence=prediction["confidence"],
|
|
338
|
+
anomaly_score=prediction["anomaly_score"],
|
|
300
339
|
memoryset=memoryset,
|
|
301
340
|
model=model,
|
|
302
341
|
telemetry=prediction,
|
|
303
342
|
)
|
|
304
343
|
|
|
305
344
|
if isinstance(prediction_id, str):
|
|
306
|
-
|
|
307
|
-
|
|
345
|
+
return create_prediction(
|
|
346
|
+
orca_api.GET("/telemetry/prediction/{prediction_id}", params={"prediction_id": prediction_id})
|
|
347
|
+
)
|
|
308
348
|
else:
|
|
309
349
|
return [
|
|
310
350
|
create_prediction(prediction)
|
|
311
|
-
for prediction in
|
|
351
|
+
for prediction in orca_api.POST("/telemetry/prediction", json={"prediction_ids": list(prediction_id)})
|
|
312
352
|
]
|
|
313
353
|
|
|
314
354
|
def refresh(self):
|
|
@@ -327,13 +367,15 @@ class _Prediction(ABC):
|
|
|
327
367
|
if self.prediction_id is None:
|
|
328
368
|
raise ValueError("Cannot update prediction with no prediction ID")
|
|
329
369
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
370
|
+
payload: UpdatePredictionRequest = {}
|
|
371
|
+
if tags is not UNSET:
|
|
372
|
+
payload["tags"] = [] if tags is None else list(tags)
|
|
373
|
+
if expected_label is not UNSET:
|
|
374
|
+
payload["expected_label"] = expected_label
|
|
375
|
+
if expected_score is not UNSET:
|
|
376
|
+
payload["expected_score"] = expected_score
|
|
377
|
+
orca_api.PATCH(
|
|
378
|
+
"/telemetry/prediction/{prediction_id}", params={"prediction_id": self.prediction_id}, json=payload
|
|
337
379
|
)
|
|
338
380
|
self.refresh()
|
|
339
381
|
|
|
@@ -389,12 +431,13 @@ class _Prediction(ABC):
|
|
|
389
431
|
ValueError: If the value does not match previous value types for the category, or is a
|
|
390
432
|
[`float`][float] that is not between `-1.0` and `+1.0`.
|
|
391
433
|
"""
|
|
392
|
-
|
|
393
|
-
|
|
434
|
+
orca_api.PUT(
|
|
435
|
+
"/telemetry/prediction/feedback",
|
|
436
|
+
json=[
|
|
394
437
|
_parse_feedback(
|
|
395
438
|
{"prediction_id": self.prediction_id, "category": category, "value": value, "comment": comment}
|
|
396
439
|
)
|
|
397
|
-
]
|
|
440
|
+
],
|
|
398
441
|
)
|
|
399
442
|
self.refresh()
|
|
400
443
|
|
|
@@ -411,23 +454,12 @@ class _Prediction(ABC):
|
|
|
411
454
|
if self.prediction_id is None:
|
|
412
455
|
raise ValueError("Cannot delete feedback with no prediction ID")
|
|
413
456
|
|
|
414
|
-
|
|
415
|
-
|
|
457
|
+
orca_api.PUT(
|
|
458
|
+
"/telemetry/prediction/feedback",
|
|
459
|
+
json=[PredictionFeedbackRequest(prediction_id=self.prediction_id, category_name=category, value=None)],
|
|
416
460
|
)
|
|
417
461
|
self.refresh()
|
|
418
462
|
|
|
419
|
-
def inspect(self) -> None:
|
|
420
|
-
"""
|
|
421
|
-
Display an interactive UI with the details about this prediction
|
|
422
|
-
|
|
423
|
-
Params:
|
|
424
|
-
**kwargs: Additional keyword arguments to pass to the display function
|
|
425
|
-
|
|
426
|
-
Note:
|
|
427
|
-
This method is only available in Jupyter notebooks.
|
|
428
|
-
"""
|
|
429
|
-
inspect_prediction_result(self) # type: ignore
|
|
430
|
-
|
|
431
463
|
|
|
432
464
|
class ClassificationPrediction(_Prediction):
|
|
433
465
|
"""
|
|
@@ -468,18 +500,18 @@ class ClassificationPrediction(_Prediction):
|
|
|
468
500
|
|
|
469
501
|
@property
|
|
470
502
|
def memory_lookups(self) -> list[LabeledMemoryLookup]:
|
|
471
|
-
assert
|
|
472
|
-
return [LabeledMemoryLookup(self._telemetry
|
|
503
|
+
assert "label" in self._telemetry
|
|
504
|
+
return [LabeledMemoryLookup(self._telemetry["memoryset_id"], lookup) for lookup in self._telemetry["memories"]]
|
|
473
505
|
|
|
474
506
|
@property
|
|
475
507
|
def expected_label(self) -> int | None:
|
|
476
|
-
assert
|
|
477
|
-
return self._telemetry
|
|
508
|
+
assert "label" in self._telemetry
|
|
509
|
+
return self._telemetry["expected_label"]
|
|
478
510
|
|
|
479
511
|
@property
|
|
480
512
|
def expected_label_name(self) -> str | None:
|
|
481
|
-
assert
|
|
482
|
-
return self._telemetry
|
|
513
|
+
assert "label" in self._telemetry
|
|
514
|
+
return self._telemetry["expected_label_name"]
|
|
483
515
|
|
|
484
516
|
def update(
|
|
485
517
|
self,
|
|
@@ -499,6 +531,88 @@ class ClassificationPrediction(_Prediction):
|
|
|
499
531
|
"""
|
|
500
532
|
self._update(tags=tags, expected_label=expected_label)
|
|
501
533
|
|
|
534
|
+
def recommend_action(self, *, refresh: bool = False) -> tuple[str, str]:
|
|
535
|
+
"""
|
|
536
|
+
Get an action recommendation for improving this prediction.
|
|
537
|
+
|
|
538
|
+
Analyzes the prediction and suggests the most effective action to improve model
|
|
539
|
+
performance, such as adding memories, detecting mislabels, removing duplicates,
|
|
540
|
+
or finetuning.
|
|
541
|
+
|
|
542
|
+
Params:
|
|
543
|
+
refresh: Force the action recommendation agent to re-run even if a recommendation already exists
|
|
544
|
+
|
|
545
|
+
Returns:
|
|
546
|
+
Tuple of (action, rationale) where:
|
|
547
|
+
- action: The recommended action ("add_memories", "detect_mislabels", "remove_duplicates", or "finetuning") that would resolve the mislabeling
|
|
548
|
+
- rationale: Explanation for why this action was recommended
|
|
549
|
+
|
|
550
|
+
Raises:
|
|
551
|
+
ValueError: If the prediction has no prediction ID
|
|
552
|
+
RuntimeError: If the lighthouse API key is not configured
|
|
553
|
+
|
|
554
|
+
Examples:
|
|
555
|
+
Get action recommendation for an incorrect prediction:
|
|
556
|
+
>>> action, rationale = prediction.recommend_action()
|
|
557
|
+
>>> print(f"Recommended action: {action}")
|
|
558
|
+
>>> print(f"Rationale: {rationale}")
|
|
559
|
+
"""
|
|
560
|
+
if self.prediction_id is None:
|
|
561
|
+
raise ValueError("Cannot get action recommendation with no prediction ID")
|
|
562
|
+
|
|
563
|
+
response = orca_api.GET(
|
|
564
|
+
"/telemetry/prediction/{prediction_id}/action",
|
|
565
|
+
params={"prediction_id": self.prediction_id, "refresh": refresh},
|
|
566
|
+
timeout=30,
|
|
567
|
+
)
|
|
568
|
+
return (response["action"], response["rationale"])
|
|
569
|
+
|
|
570
|
+
def generate_memory_suggestions(self, *, num_memories: int = 3) -> AddMemorySuggestions:
|
|
571
|
+
"""
|
|
572
|
+
Generate synthetic memory suggestions to improve this prediction.
|
|
573
|
+
|
|
574
|
+
Creates new example memories that are similar to the input but have clearer
|
|
575
|
+
signals for the expected label. These can be added to the memoryset to improve
|
|
576
|
+
model performance on similar inputs.
|
|
577
|
+
|
|
578
|
+
Params:
|
|
579
|
+
num_memories: Number of memory suggestions to generate (default: 3)
|
|
580
|
+
|
|
581
|
+
Returns:
|
|
582
|
+
List of dictionaries that can be directly passed to memoryset.insert().
|
|
583
|
+
Each dictionary contains:
|
|
584
|
+
- "value": The suggested memory text
|
|
585
|
+
- "label": The suggested label as an integer
|
|
586
|
+
|
|
587
|
+
Raises:
|
|
588
|
+
ValueError: If the prediction has no prediction ID
|
|
589
|
+
RuntimeError: If the lighthouse API key is not configured
|
|
590
|
+
|
|
591
|
+
Examples:
|
|
592
|
+
Generate memory suggestions for an incorrect prediction:
|
|
593
|
+
>>> suggestions = prediction.generate_memory_suggestions(num_memories=3)
|
|
594
|
+
>>> for suggestion in suggestions:
|
|
595
|
+
... print(f"Value: {suggestion['value']}, Label: {suggestion['label']}")
|
|
596
|
+
>>>
|
|
597
|
+
>>> # Add suggestions directly to memoryset
|
|
598
|
+
>>> model.memoryset.insert(suggestions)
|
|
599
|
+
"""
|
|
600
|
+
if self.prediction_id is None:
|
|
601
|
+
raise ValueError("Cannot generate memory suggestions with no prediction ID")
|
|
602
|
+
|
|
603
|
+
response = orca_api.GET(
|
|
604
|
+
"/telemetry/prediction/{prediction_id}/memory_suggestions",
|
|
605
|
+
params={"prediction_id": self.prediction_id, "num_memories": num_memories},
|
|
606
|
+
timeout=30,
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
return AddMemorySuggestions(
|
|
610
|
+
suggestions=[(m["value"], m["label_name"]) for m in response["memories"]],
|
|
611
|
+
memoryset_id=self.memoryset.id,
|
|
612
|
+
model_id=self.model.id,
|
|
613
|
+
prediction_id=self.prediction_id,
|
|
614
|
+
)
|
|
615
|
+
|
|
502
616
|
|
|
503
617
|
class RegressionPrediction(_Prediction):
|
|
504
618
|
"""
|
|
@@ -535,8 +649,8 @@ class RegressionPrediction(_Prediction):
|
|
|
535
649
|
|
|
536
650
|
@property
|
|
537
651
|
def memory_lookups(self) -> list[ScoredMemoryLookup]:
|
|
538
|
-
assert
|
|
539
|
-
return [ScoredMemoryLookup(self._telemetry
|
|
652
|
+
assert "score" in self._telemetry
|
|
653
|
+
return [ScoredMemoryLookup(self._telemetry["memoryset_id"], lookup) for lookup in self._telemetry["memories"]]
|
|
540
654
|
|
|
541
655
|
@property
|
|
542
656
|
def explanation(self) -> str:
|
|
@@ -545,8 +659,8 @@ class RegressionPrediction(_Prediction):
|
|
|
545
659
|
|
|
546
660
|
@property
|
|
547
661
|
def expected_score(self) -> float | None:
|
|
548
|
-
assert
|
|
549
|
-
return self._telemetry
|
|
662
|
+
assert "score" in self._telemetry
|
|
663
|
+
return self._telemetry["expected_score"]
|
|
550
664
|
|
|
551
665
|
def update(
|
|
552
666
|
self,
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: orca_sdk
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.98
|
|
4
4
|
Summary: SDK for interacting with Orca Services
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Author: Orca DB Inc.
|
|
7
7
|
Author-email: dev-rel@orcadb.ai
|
|
8
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.11,<4.0
|
|
9
9
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Requires-Dist: attrs (>=22.2.0)
|
|
15
13
|
Requires-Dist: datasets (>=3.1.0,<4.0.0)
|
|
16
14
|
Requires-Dist: gradio (==5.13.0)
|
|
17
15
|
Requires-Dist: httpx (>=0.20.0,<0.29.0)
|
|
18
16
|
Requires-Dist: pandas (>=2.2.3,<3.0.0)
|
|
19
17
|
Requires-Dist: pyarrow (>=18.0.0,<19.0.0)
|
|
20
|
-
Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
|
|
21
18
|
Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
|
|
22
19
|
Requires-Dist: scikit-learn (>=1.6.1,<2.0.0)
|
|
23
20
|
Requires-Dist: torch (>=2.5.1,<3.0.0)
|
|
@@ -71,6 +68,23 @@ model = ClassificationModel("my_model", memoryset)
|
|
|
71
68
|
|
|
72
69
|
# Make predictions
|
|
73
70
|
prediction = model.predict("my input")
|
|
71
|
+
|
|
72
|
+
# Get Action Recommendation
|
|
73
|
+
action, rationale = prediction.recommend_action()
|
|
74
|
+
print(f"Recommended action: {action}")
|
|
75
|
+
print(f"Rationale: {rationale}")
|
|
76
|
+
|
|
77
|
+
# Generate and add synthetic memory suggestions
|
|
78
|
+
if action == "add_memories":
|
|
79
|
+
suggestions = prediction.generate_memory_suggestions(num_memories=3)
|
|
80
|
+
|
|
81
|
+
# Review suggestions
|
|
82
|
+
for suggestion in suggestions:
|
|
83
|
+
print(f"Suggested: '{suggestion['value']}' -> {suggestion['label']}")
|
|
84
|
+
|
|
85
|
+
# Add suggestions to memoryset
|
|
86
|
+
model.memoryset.insert(suggestions)
|
|
87
|
+
print(f"Added {len(suggestions)} new memories to improve model performance!")
|
|
74
88
|
```
|
|
75
89
|
|
|
76
90
|
For a more detailed walkthrough, check out our [Quick Start Guide](https://docs.orcadb.ai/quickstart-sdk/).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
orca_sdk/__init__.py,sha256=bNbT7BlBGo5ZWYHBiPUz77dIc344l7czz7AsuBrdzyM,1001
|
|
2
|
+
orca_sdk/_shared/__init__.py,sha256=3Kt0Hu3QLI5FEp9nqGTxqAm3hAoBJKcagfaGQZ-lbJQ,223
|
|
3
|
+
orca_sdk/_shared/metrics.py,sha256=KDvnvWjfrC_Znihz12HH83Mll2p3LPlBPBEKJTczVlw,13269
|
|
4
|
+
orca_sdk/_shared/metrics_test.py,sha256=3LQ10RcDeq92rmRQgzyq9WCthhEc7yAwe8WKzUoZGx4,7890
|
|
5
|
+
orca_sdk/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
orca_sdk/_utils/analysis_ui.py,sha256=nT-M_YcNRCVPQzvuqYNFKnNHhYkADYBvq1GlIUePrWw,9232
|
|
7
|
+
orca_sdk/_utils/analysis_ui_style.css,sha256=q_ba_-_KtgztepHg829zLzypaxKayl7ySC1-oYDzV3k,836
|
|
8
|
+
orca_sdk/_utils/auth.py,sha256=58Gaa4KA9iy7WP-hMZT4PI6x5lkpctFbbJ6Piwu1ZS4,2484
|
|
9
|
+
orca_sdk/_utils/auth_test.py,sha256=ygVWv1Ex53LaxIP7p2hzPHl8l9qYyBD5IGmEFJMps6s,1056
|
|
10
|
+
orca_sdk/_utils/common.py,sha256=wUm2pNDWytEecC5WiDWd02-yCZw3Akx0bIutG4lHsFA,805
|
|
11
|
+
orca_sdk/_utils/data_parsing.py,sha256=gkAwWEC8qRt3vRUObe7n7Pr0azOayNwc2yFY04WFp7E,5220
|
|
12
|
+
orca_sdk/_utils/data_parsing_test.py,sha256=fNEYzPzE1jt3KWE2Kj91KqIeuv-L5REHFAa98zkNGSQ,8962
|
|
13
|
+
orca_sdk/_utils/pagination.py,sha256=986z0QPZixrZeurJWorF6eMgnTRdDF84AagEA6qNbMw,4245
|
|
14
|
+
orca_sdk/_utils/pagination_test.py,sha256=BUylCrcHnwoKEBmMUzVr0lwLpA35ivcCwdBK4rMw9y8,4887
|
|
15
|
+
orca_sdk/_utils/prediction_result_ui.css,sha256=sqBlkRLnovb5X5EcUDdB6iGpH63nVRlTW4uAmXuD0WM,258
|
|
16
|
+
orca_sdk/_utils/prediction_result_ui.py,sha256=WxsIHVLvJW0yE6QrBQHWn0BjPUFcDYNF3DTtTjIhgrU,4627
|
|
17
|
+
orca_sdk/_utils/tqdm_file_reader.py,sha256=Lw7Cg1UgNuRUoN6jjqZb-IlV00H-kbRcrZLdudr1GxE,324
|
|
18
|
+
orca_sdk/_utils/value_parser.py,sha256=c3qMABCCDQcIjn9N1orYYnlRwDW9JWdGwW_2TDZPLdI,1286
|
|
19
|
+
orca_sdk/_utils/value_parser_test.py,sha256=OybsiC-Obi32RRi9NIuwrVBRAnlyPMV1xVAaevSrb7M,1079
|
|
20
|
+
orca_sdk/classification_model.py,sha256=SUiUgv_o3UUngpz3Le_L6DsijhjXVEB3yo84hrD1MX4,31172
|
|
21
|
+
orca_sdk/classification_model_test.py,sha256=WganVoP-0vw1cqiVWJ2vXyGi4lwYp_hbZHultpxvFqk,19536
|
|
22
|
+
orca_sdk/client.py,sha256=LEqdqMHbidh9NeZ_42RbEDR64KqXnqnX0JBjaoo2pnY,115704
|
|
23
|
+
orca_sdk/conftest.py,sha256=LHA46gDU_D0T_ogS6XOVQvGDDMD01nVZFWVcBYDConc,8885
|
|
24
|
+
orca_sdk/credentials.py,sha256=KrmgP_5uqBKJXFJV6utTHIhU2odsr95VEqEXWe277DY,5074
|
|
25
|
+
orca_sdk/credentials_test.py,sha256=whUweSJIEws6C8Bku-5V31Dv9hD1mFDDW7X2cCsB6g0,1629
|
|
26
|
+
orca_sdk/datasource.py,sha256=344gqZsSV_N3RDlqXuLnDrPSizvciaAsSPmsiljNSmI,19329
|
|
27
|
+
orca_sdk/datasource_test.py,sha256=nKQGjhX0VwCCLCdwl1ns-6kA5Ow-8pWQkSS9WV3CVww,9975
|
|
28
|
+
orca_sdk/embedding_model.py,sha256=YxMXdZ3tvnxnK93nArOr_HZ6QoRB-Mc5VNQJ0mcIdpk,26021
|
|
29
|
+
orca_sdk/embedding_model_test.py,sha256=1aELyCuIzxSxUg7Z4tYtNOd8-hV5hFb-gsZTNh712OQ,7765
|
|
30
|
+
orca_sdk/job.py,sha256=wWJPkkQbkNu_ylBtZN4AscU00VwWTfqlSmysRBUlivw,12787
|
|
31
|
+
orca_sdk/job_test.py,sha256=r4zCyCuJ8eVN-O6_IUSakmSBn64rY7oBmlNtb5RNsi0,3919
|
|
32
|
+
orca_sdk/memoryset.py,sha256=hnhgHxsuV5JEDMnxazmO03VjxzPBENtHDPppHRfh9z4,85354
|
|
33
|
+
orca_sdk/memoryset_test.py,sha256=14WG6u_adVmm6CSn2dM5lEfQYxybwh3s9Q7RBeTuoPE,20486
|
|
34
|
+
orca_sdk/regression_model.py,sha256=je2g1BmoPCuouv5iWqDolja90F2w2vD6TooXA8KjL7c,24552
|
|
35
|
+
orca_sdk/regression_model_test.py,sha256=8LDhtQeh52grZQ2Xd0ju1MQvb_hwosY_ORDDE3wS2LA,14570
|
|
36
|
+
orca_sdk/telemetry.py,sha256=jOOFYYr1s3i5EASbCcmUJ_O469xCK5OFg7NVcVfTAlU,25400
|
|
37
|
+
orca_sdk/telemetry_test.py,sha256=eT66C5lFdNg-pQdo2I__BP7Tn5fTc9aTkVo9ZhWwhU0,5519
|
|
38
|
+
orca_sdk-0.0.98.dist-info/METADATA,sha256=z5MKWnC226a5mzHHN7aKJFvpFm9qTe46-gtaRTH8ppM,3613
|
|
39
|
+
orca_sdk-0.0.98.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
40
|
+
orca_sdk-0.0.98.dist-info/RECORD,,
|