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.
Files changed (269) hide show
  1. orca_sdk/__init__.py +2 -5
  2. orca_sdk/_shared/__init__.py +1 -0
  3. orca_sdk/_shared/metrics.py +1 -1
  4. orca_sdk/_utils/analysis_ui.py +5 -5
  5. orca_sdk/_utils/auth.py +23 -33
  6. orca_sdk/_utils/pagination.py +126 -0
  7. orca_sdk/_utils/pagination_test.py +132 -0
  8. orca_sdk/classification_model.py +188 -126
  9. orca_sdk/classification_model_test.py +102 -0
  10. orca_sdk/client.py +3515 -0
  11. orca_sdk/conftest.py +10 -0
  12. orca_sdk/credentials.py +73 -21
  13. orca_sdk/credentials_test.py +20 -0
  14. orca_sdk/datasource.py +186 -81
  15. orca_sdk/datasource_test.py +194 -0
  16. orca_sdk/embedding_model.py +267 -75
  17. orca_sdk/embedding_model_test.py +32 -14
  18. orca_sdk/job.py +59 -54
  19. orca_sdk/job_test.py +50 -0
  20. orca_sdk/memoryset.py +372 -345
  21. orca_sdk/memoryset_test.py +7 -11
  22. orca_sdk/regression_model.py +120 -111
  23. orca_sdk/regression_model_test.py +15 -0
  24. orca_sdk/telemetry.py +229 -115
  25. {orca_sdk-0.0.96.dist-info → orca_sdk-0.0.98.dist-info}/METADATA +19 -5
  26. orca_sdk-0.0.98.dist-info/RECORD +40 -0
  27. orca_sdk/_generated_api_client/__init__.py +0 -3
  28. orca_sdk/_generated_api_client/api/__init__.py +0 -287
  29. orca_sdk/_generated_api_client/api/auth/__init__.py +0 -0
  30. orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
  31. orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
  32. orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
  33. orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
  34. orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
  35. orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
  36. orca_sdk/_generated_api_client/api/classification_model/create_classification_model_gpu_classification_model_post.py +0 -170
  37. orca_sdk/_generated_api_client/api/classification_model/delete_classification_model_classification_model_name_or_id_delete.py +0 -156
  38. 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
  39. orca_sdk/_generated_api_client/api/classification_model/evaluate_classification_model_classification_model_model_name_or_id_evaluation_post.py +0 -183
  40. orca_sdk/_generated_api_client/api/classification_model/get_classification_model_classification_model_name_or_id_get.py +0 -156
  41. 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
  42. orca_sdk/_generated_api_client/api/classification_model/list_classification_model_evaluations_classification_model_model_name_or_id_evaluation_get.py +0 -161
  43. orca_sdk/_generated_api_client/api/classification_model/list_classification_models_classification_model_get.py +0 -127
  44. orca_sdk/_generated_api_client/api/classification_model/predict_label_gpu_classification_model_name_or_id_prediction_post.py +0 -190
  45. orca_sdk/_generated_api_client/api/classification_model/update_classification_model_classification_model_name_or_id_patch.py +0 -183
  46. orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
  47. orca_sdk/_generated_api_client/api/datasource/create_datasource_datasource_post.py +0 -167
  48. orca_sdk/_generated_api_client/api/datasource/create_embedding_evaluation_datasource_name_or_id_embedding_evaluation_post.py +0 -183
  49. orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
  50. orca_sdk/_generated_api_client/api/datasource/download_datasource_datasource_name_or_id_download_get.py +0 -172
  51. orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
  52. orca_sdk/_generated_api_client/api/datasource/get_embedding_evaluation_datasource_name_or_id_embedding_evaluation_task_id_get.py +0 -169
  53. orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
  54. orca_sdk/_generated_api_client/api/datasource/list_embedding_evaluations_datasource_name_or_id_embedding_evaluation_get.py +0 -235
  55. orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
  56. orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
  57. orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
  58. orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
  59. orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
  60. orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
  61. 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
  62. orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
  63. orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
  64. orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
  65. orca_sdk/_generated_api_client/api/memoryset/analyze_memoryset_memoryset_name_or_id_analysis_post.py +0 -183
  66. orca_sdk/_generated_api_client/api/memoryset/batch_delete_memoryset_batch_delete_memoryset_post.py +0 -168
  67. orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
  68. orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
  69. orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
  70. orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
  71. orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
  72. orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
  73. orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -210
  74. orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -186
  75. orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
  76. orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -188
  77. orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -235
  78. orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -180
  79. orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -212
  80. orca_sdk/_generated_api_client/api/memoryset/potential_duplicate_groups_memoryset_name_or_id_potential_duplicate_groups_get.py +0 -195
  81. orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -210
  82. orca_sdk/_generated_api_client/api/memoryset/suggest_cascading_edits_memoryset_name_or_id_memory_memory_id_cascading_edits_post.py +0 -233
  83. orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -216
  84. orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -205
  85. orca_sdk/_generated_api_client/api/memoryset/update_memoryset_memoryset_name_or_id_patch.py +0 -183
  86. orca_sdk/_generated_api_client/api/predictive_model/__init__.py +0 -0
  87. orca_sdk/_generated_api_client/api/predictive_model/list_predictive_models_predictive_model_get.py +0 -150
  88. orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
  89. orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -192
  90. orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -161
  91. orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
  92. orca_sdk/_generated_api_client/api/regression_model/__init__.py +0 -0
  93. orca_sdk/_generated_api_client/api/regression_model/create_regression_model_gpu_regression_model_post.py +0 -170
  94. 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
  95. orca_sdk/_generated_api_client/api/regression_model/delete_regression_model_regression_model_name_or_id_delete.py +0 -154
  96. orca_sdk/_generated_api_client/api/regression_model/evaluate_regression_model_regression_model_model_name_or_id_evaluation_post.py +0 -183
  97. 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
  98. orca_sdk/_generated_api_client/api/regression_model/get_regression_model_regression_model_name_or_id_get.py +0 -156
  99. orca_sdk/_generated_api_client/api/regression_model/list_regression_model_evaluations_regression_model_model_name_or_id_evaluation_get.py +0 -161
  100. orca_sdk/_generated_api_client/api/regression_model/list_regression_models_regression_model_get.py +0 -127
  101. orca_sdk/_generated_api_client/api/regression_model/predict_score_gpu_regression_model_name_or_id_prediction_post.py +0 -190
  102. orca_sdk/_generated_api_client/api/regression_model/update_regression_model_regression_model_name_or_id_patch.py +0 -183
  103. orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
  104. orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
  105. orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
  106. orca_sdk/_generated_api_client/api/task/get_task_task_task_id_get.py +0 -156
  107. orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -293
  108. orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
  109. orca_sdk/_generated_api_client/api/telemetry/count_predictions_telemetry_prediction_count_post.py +0 -168
  110. orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
  111. orca_sdk/_generated_api_client/api/telemetry/explain_prediction_telemetry_prediction_prediction_id_explanation_get.py +0 -182
  112. orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
  113. orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -180
  114. orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
  115. orca_sdk/_generated_api_client/api/telemetry/list_memories_with_feedback_telemetry_memories_post.py +0 -198
  116. orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -198
  117. orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
  118. orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
  119. orca_sdk/_generated_api_client/client.py +0 -216
  120. orca_sdk/_generated_api_client/errors.py +0 -38
  121. orca_sdk/_generated_api_client/models/__init__.py +0 -295
  122. orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -116
  123. orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -137
  124. orca_sdk/_generated_api_client/models/api_key_metadata_scope_item.py +0 -9
  125. orca_sdk/_generated_api_client/models/base_label_prediction_result.py +0 -130
  126. orca_sdk/_generated_api_client/models/base_model.py +0 -55
  127. orca_sdk/_generated_api_client/models/base_score_prediction_result.py +0 -108
  128. orca_sdk/_generated_api_client/models/body_create_datasource_datasource_post.py +0 -207
  129. orca_sdk/_generated_api_client/models/cascade_edit_suggestions_request.py +0 -154
  130. orca_sdk/_generated_api_client/models/cascading_edit_suggestion.py +0 -92
  131. orca_sdk/_generated_api_client/models/classification_evaluation_request.py +0 -148
  132. orca_sdk/_generated_api_client/models/classification_metrics.py +0 -259
  133. orca_sdk/_generated_api_client/models/classification_model_metadata.py +0 -213
  134. orca_sdk/_generated_api_client/models/classification_prediction_request.py +0 -220
  135. orca_sdk/_generated_api_client/models/clone_memoryset_request.py +0 -170
  136. orca_sdk/_generated_api_client/models/cluster_metrics.py +0 -78
  137. orca_sdk/_generated_api_client/models/column_info.py +0 -145
  138. orca_sdk/_generated_api_client/models/column_type.py +0 -14
  139. orca_sdk/_generated_api_client/models/constraint_violation_error_response.py +0 -80
  140. orca_sdk/_generated_api_client/models/count_predictions_request.py +0 -195
  141. orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -120
  142. orca_sdk/_generated_api_client/models/create_api_key_request_scope_item.py +0 -9
  143. orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -145
  144. orca_sdk/_generated_api_client/models/create_api_key_response_scope_item.py +0 -9
  145. orca_sdk/_generated_api_client/models/create_classification_model_request.py +0 -197
  146. orca_sdk/_generated_api_client/models/create_memoryset_request.py +0 -325
  147. orca_sdk/_generated_api_client/models/create_memoryset_request_index_params.py +0 -66
  148. orca_sdk/_generated_api_client/models/create_memoryset_request_index_type.py +0 -13
  149. orca_sdk/_generated_api_client/models/create_regression_model_request.py +0 -137
  150. orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -156
  151. orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
  152. orca_sdk/_generated_api_client/models/delete_memorysets_request.py +0 -70
  153. orca_sdk/_generated_api_client/models/embed_request.py +0 -135
  154. orca_sdk/_generated_api_client/models/embedding_evaluation_payload.py +0 -187
  155. orca_sdk/_generated_api_client/models/embedding_evaluation_request.py +0 -179
  156. orca_sdk/_generated_api_client/models/embedding_evaluation_response.py +0 -158
  157. orca_sdk/_generated_api_client/models/embedding_evaluation_result.py +0 -86
  158. orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
  159. orca_sdk/_generated_api_client/models/embedding_model_result.py +0 -114
  160. orca_sdk/_generated_api_client/models/evaluation_response.py +0 -153
  161. orca_sdk/_generated_api_client/models/evaluation_response_classification_metrics.py +0 -140
  162. orca_sdk/_generated_api_client/models/evaluation_response_regression_metrics.py +0 -140
  163. orca_sdk/_generated_api_client/models/feedback_metrics.py +0 -85
  164. orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
  165. orca_sdk/_generated_api_client/models/filter_item.py +0 -231
  166. orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -17
  167. orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -20
  168. orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
  169. orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
  170. orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
  171. orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
  172. orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
  173. orca_sdk/_generated_api_client/models/http_validation_error.py +0 -86
  174. orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -80
  175. orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
  176. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -210
  177. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
  178. orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -288
  179. orca_sdk/_generated_api_client/models/labeled_memory.py +0 -186
  180. orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -128
  181. orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
  182. orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -194
  183. orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
  184. orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
  185. orca_sdk/_generated_api_client/models/labeled_memory_metrics.py +0 -246
  186. orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
  187. orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
  188. orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics.py +0 -207
  189. orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_feedback_metrics.py +0 -68
  190. orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_metadata.py +0 -68
  191. orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
  192. orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -319
  193. orca_sdk/_generated_api_client/models/lookup_request.py +0 -81
  194. orca_sdk/_generated_api_client/models/lookup_score_metrics.py +0 -94
  195. orca_sdk/_generated_api_client/models/memory_metrics.py +0 -165
  196. orca_sdk/_generated_api_client/models/memory_type.py +0 -9
  197. orca_sdk/_generated_api_client/models/memoryset_analysis_configs.py +0 -212
  198. orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -105
  199. orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -182
  200. orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config.py +0 -202
  201. orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_clustering_method.py +0 -9
  202. orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_partitioning_method.py +0 -10
  203. orca_sdk/_generated_api_client/models/memoryset_cluster_metrics.py +0 -100
  204. orca_sdk/_generated_api_client/models/memoryset_duplicate_analysis_config.py +0 -70
  205. orca_sdk/_generated_api_client/models/memoryset_duplicate_metrics.py +0 -70
  206. orca_sdk/_generated_api_client/models/memoryset_label_analysis_config.py +0 -70
  207. orca_sdk/_generated_api_client/models/memoryset_label_metrics.py +0 -116
  208. orca_sdk/_generated_api_client/models/memoryset_metadata.py +0 -291
  209. orca_sdk/_generated_api_client/models/memoryset_metadata_index_params.py +0 -55
  210. orca_sdk/_generated_api_client/models/memoryset_metadata_index_type.py +0 -13
  211. orca_sdk/_generated_api_client/models/memoryset_metrics.py +0 -232
  212. orca_sdk/_generated_api_client/models/memoryset_neighbor_analysis_config.py +0 -83
  213. orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics.py +0 -76
  214. orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics_lookup_score_metrics.py +0 -68
  215. orca_sdk/_generated_api_client/models/memoryset_projection_analysis_config.py +0 -79
  216. orca_sdk/_generated_api_client/models/memoryset_projection_metrics.py +0 -55
  217. orca_sdk/_generated_api_client/models/memoryset_update.py +0 -101
  218. orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -100
  219. orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -22
  220. orca_sdk/_generated_api_client/models/paginated_union_labeled_memory_with_feedback_metrics_scored_memory_with_feedback_metrics.py +0 -135
  221. orca_sdk/_generated_api_client/models/pr_curve.py +0 -86
  222. orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
  223. orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
  224. orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
  225. orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
  226. orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_0.py +0 -10
  227. orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_1.py +0 -9
  228. orca_sdk/_generated_api_client/models/predictive_model_update.py +0 -91
  229. orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -107
  230. orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -17
  231. orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
  232. orca_sdk/_generated_api_client/models/rar_head_type.py +0 -8
  233. orca_sdk/_generated_api_client/models/regression_evaluation_request.py +0 -148
  234. orca_sdk/_generated_api_client/models/regression_metrics.py +0 -172
  235. orca_sdk/_generated_api_client/models/regression_model_metadata.py +0 -177
  236. orca_sdk/_generated_api_client/models/regression_prediction_request.py +0 -195
  237. orca_sdk/_generated_api_client/models/roc_curve.py +0 -86
  238. orca_sdk/_generated_api_client/models/score_prediction_memory_lookup.py +0 -196
  239. orca_sdk/_generated_api_client/models/score_prediction_memory_lookup_metadata.py +0 -68
  240. orca_sdk/_generated_api_client/models/score_prediction_with_memories_and_feedback.py +0 -252
  241. orca_sdk/_generated_api_client/models/scored_memory.py +0 -172
  242. orca_sdk/_generated_api_client/models/scored_memory_insert.py +0 -128
  243. orca_sdk/_generated_api_client/models/scored_memory_insert_metadata.py +0 -68
  244. orca_sdk/_generated_api_client/models/scored_memory_lookup.py +0 -180
  245. orca_sdk/_generated_api_client/models/scored_memory_lookup_metadata.py +0 -68
  246. orca_sdk/_generated_api_client/models/scored_memory_metadata.py +0 -68
  247. orca_sdk/_generated_api_client/models/scored_memory_update.py +0 -171
  248. orca_sdk/_generated_api_client/models/scored_memory_update_metadata_type_0.py +0 -68
  249. orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics.py +0 -193
  250. orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_feedback_metrics.py +0 -68
  251. orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_metadata.py +0 -68
  252. orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -80
  253. orca_sdk/_generated_api_client/models/task.py +0 -198
  254. orca_sdk/_generated_api_client/models/task_status.py +0 -14
  255. orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
  256. orca_sdk/_generated_api_client/models/telemetry_field_type_0_item_type_2.py +0 -9
  257. orca_sdk/_generated_api_client/models/telemetry_filter_item.py +0 -205
  258. orca_sdk/_generated_api_client/models/telemetry_filter_item_op.py +0 -15
  259. orca_sdk/_generated_api_client/models/telemetry_memories_request.py +0 -181
  260. orca_sdk/_generated_api_client/models/telemetry_sort_options.py +0 -173
  261. orca_sdk/_generated_api_client/models/telemetry_sort_options_direction.py +0 -9
  262. orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -72
  263. orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -80
  264. orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -133
  265. orca_sdk/_generated_api_client/models/validation_error.py +0 -99
  266. orca_sdk/_generated_api_client/py.typed +0 -1
  267. orca_sdk/_generated_api_client/types.py +0 -56
  268. orca_sdk-0.0.96.dist-info/RECORD +0 -278
  269. {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, Generator, Iterable, Self, overload
7
- from uuid import UUID
8
-
9
- from orca_sdk._utils.common import UNSET
10
-
11
- from ._generated_api_client.api import (
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
- return PredictionFeedbackRequest(
52
- prediction_id=prediction_id,
53
- category_name=category,
54
- value=feedback.get("value", CLIENT_UNSET),
55
- comment=feedback.get("comment", CLIENT_UNSET),
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
- # for internal use only, do not document
81
- self.id = category.id
82
- self.name = category.name
83
- self.value_type = bool if category.type == FeedbackType.BINARY else float
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 list_feedback_categories()]
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
- drop_feedback_category_with_data(name)
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.__telemetry = get_prediction(prediction_id=UUID(self.prediction_id))
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.input_value, str)
162
- return self._telemetry.input_value
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
- match self._telemetry:
167
- case LabelPredictionWithMemoriesAndFeedback():
168
- return [
169
- LabeledMemoryLookup(self._telemetry.memoryset_id, lookup) for lookup in self._telemetry.memories
170
- ]
171
- case ScorePredictionWithMemoriesAndFeedback():
172
- return [ScoredMemoryLookup(self._telemetry.memoryset_id, lookup) for lookup in self._telemetry.memories]
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.category_name: (
178
- f.value if f.category_type == FeedbackType.CONTINUOUS else True if f.value == 1 else False
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.feedbacks
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.tags)
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.explanation is None:
201
- self._telemetry.explanation = "".join(self._explanation_stream())
202
- return self._telemetry.explanation
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.explanation is not None:
212
- print(self._telemetry.explanation)
247
+ if not refresh and self._telemetry["explanation"] is not None:
248
+ print(self._telemetry["explanation"])
213
249
  else:
214
- for chunk in self._explanation_stream(refresh):
215
- print(chunk, end="")
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 isinstance(prediction, LabelPredictionWithMemoriesAndFeedback):
285
- memoryset = LabeledMemoryset.open(prediction.memoryset_id)
286
- model = ClassificationModel.open(prediction.model_id)
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
- raise ValueError(f"Invalid prediction type: {type(prediction)}")
329
+ memoryset = ScoredMemoryset.open(prediction["memoryset_id"])
330
+ model = RegressionModel.open(prediction["model_id"])
292
331
 
293
332
  return cls(
294
- prediction_id=prediction.prediction_id,
295
- label=getattr(prediction, "label", None),
296
- label_name=getattr(prediction, "label_name", None),
297
- score=getattr(prediction, "score", None),
298
- confidence=prediction.confidence,
299
- anomaly_score=prediction.anomaly_score,
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
- prediction = get_prediction(prediction_id=UUID(prediction_id))
307
- return create_prediction(prediction)
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 list_predictions(body=ListPredictionsRequest(prediction_ids=list(prediction_id)))
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
- update_prediction(
331
- prediction_id=self.prediction_id,
332
- body=UpdatePredictionRequest(
333
- expected_label=expected_label if expected_label is not UNSET else CLIENT_UNSET,
334
- expected_score=expected_score if expected_score is not UNSET else CLIENT_UNSET,
335
- tags=[] if tags is None else list(tags) if tags is not UNSET else CLIENT_UNSET,
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
- record_prediction_feedback(
393
- body=[
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
- record_prediction_feedback(
415
- body=[PredictionFeedbackRequest(prediction_id=self.prediction_id, category_name=category, value=None)]
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 isinstance(self._telemetry, LabelPredictionWithMemoriesAndFeedback)
472
- return [LabeledMemoryLookup(self._telemetry.memoryset_id, lookup) for lookup in self._telemetry.memories]
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 isinstance(self._telemetry, LabelPredictionWithMemoriesAndFeedback)
477
- return self._telemetry.expected_label
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 isinstance(self._telemetry, LabelPredictionWithMemoriesAndFeedback)
482
- return self._telemetry.expected_label_name
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 isinstance(self._telemetry, ScorePredictionWithMemoriesAndFeedback)
539
- return [ScoredMemoryLookup(self._telemetry.memoryset_id, lookup) for lookup in self._telemetry.memories]
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 isinstance(self._telemetry, ScorePredictionWithMemoriesAndFeedback)
549
- return self._telemetry.expected_score
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.96
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.10,<3.13
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,,
@@ -1,3 +0,0 @@
1
- import logging
2
-
3
- logging.getLogger("httpx").setLevel(logging.WARNING)