@@ -652,7 +652,8 @@ def delete_model_config(self, id: str) -> bool:
652
652
params = {"id" : id }
653
653
result = self .execute (query , params )
654
654
if not result :
655
- raise labelbox .exceptions .ResourceNotFoundError (Entity .ModelConfig , params )
655
+ raise labelbox .exceptions .ResourceNotFoundError (
656
+ Entity .ModelConfig , params )
656
657
return result ['deleteModelConfig' ]['success' ]
657
658
658
659
def create_dataset (self ,
@@ -740,85 +741,17 @@ def create_project(self, **kwargs) -> Project:
740
741
Raises:
741
742
InvalidAttributeError: If the Project type does not contain
742
743
any of the attribute names given in kwargs.
743
- """
744
-
745
- auto_audit_percentage = kwargs .get ("auto_audit_percentage" )
746
- auto_audit_number_of_labels = kwargs .get ("auto_audit_number_of_labels" )
747
- if auto_audit_percentage is not None or auto_audit_number_of_labels is not None :
748
- raise ValueError (
749
- "quality_mode must be set instead of auto_audit_percentage or auto_audit_number_of_labels."
750
- )
751
-
752
- name = kwargs .get ("name" )
753
- if name is None or not name .strip ():
754
- raise ValueError ("project name must be a valid string." )
755
-
756
- queue_mode = kwargs .get ("queue_mode" )
757
- if queue_mode is QueueMode .Dataset :
758
- raise ValueError (
759
- "Dataset queue mode is deprecated. Please prefer Batch queue mode."
760
- )
761
- elif queue_mode is QueueMode .Batch :
762
- logger .warning (
763
- "Passing a queue mode of batch is redundant and will soon no longer be supported."
764
- )
765
744
766
- media_type = kwargs .get ("media_type" )
767
- if media_type and MediaType .is_supported (media_type ):
768
- media_type_value = media_type .value
769
- elif media_type :
770
- raise TypeError (f"{ media_type } is not a valid media type. Use"
771
- f" any of { MediaType .get_supported_members ()} "
772
- " from MediaType. Example: MediaType.Image." )
773
- else :
774
- logger .warning (
775
- "Creating a project without specifying media_type"
776
- " through this method will soon no longer be supported." )
777
- media_type_value = None
778
-
779
- ontology_kind = kwargs .pop ("ontology_kind" , None )
780
- if ontology_kind and OntologyKind .is_supported (ontology_kind ):
781
- editor_task_type_value = EditorTaskTypeMapper .to_editor_task_type (
782
- ontology_kind , media_type ).value
783
- elif ontology_kind :
784
- raise OntologyKind .get_ontology_kind_validation_error (ontology_kind )
785
- else :
786
- editor_task_type_value = None
787
-
788
- quality_mode = kwargs .get ("quality_mode" )
789
- if not quality_mode :
790
- logger .info ("Defaulting quality mode to Benchmark." )
791
-
792
- data = kwargs
793
- data .pop ("quality_mode" , None )
794
- if quality_mode is None or quality_mode is QualityMode .Benchmark :
795
- data [
796
- "auto_audit_number_of_labels" ] = BENCHMARK_AUTO_AUDIT_NUMBER_OF_LABELS
797
- data ["auto_audit_percentage" ] = BENCHMARK_AUTO_AUDIT_PERCENTAGE
798
- elif quality_mode is QualityMode .Consensus :
799
- data [
800
- "auto_audit_number_of_labels" ] = CONSENSUS_AUTO_AUDIT_NUMBER_OF_LABELS
801
- data ["auto_audit_percentage" ] = CONSENSUS_AUTO_AUDIT_PERCENTAGE
802
- else :
803
- raise ValueError (f"{ quality_mode } is not a valid quality mode." )
804
-
805
- params = {** data }
806
- if media_type_value :
807
- params ["media_type" ] = media_type_value
808
- if editor_task_type_value :
809
- params ["editor_task_type" ] = editor_task_type_value
810
-
811
- extra_params = {
812
- Field .String ("dataset_name_or_id" ):
813
- params .pop ("dataset_name_or_id" , None ),
814
- Field .Boolean ("append_to_existing_dataset" ):
815
- params .pop ("append_to_existing_dataset" , None ),
816
- Field .Int ("data_row_count" ):
817
- params .pop ("data_row_count" , None ),
818
- }
819
- extra_params = {k : v for k , v in extra_params .items () if v is not None }
820
-
821
- return self ._create (Entity .Project , params , extra_params )
745
+ NOTE: the following attributes are used only in chat model evaluation projects:
746
+ dataset_name_or_id, append_to_existing_dataset, data_row_count, editor_task_type
747
+ They are not used for general projects and not supported in this method
748
+ """
749
+ # The following arguments are not supported for general projects, only for chat model evaluation projects
750
+ kwargs .pop ("dataset_name_or_id" , None )
751
+ kwargs .pop ("append_to_existing_dataset" , None )
752
+ kwargs .pop ("data_row_count" , None )
753
+ kwargs .pop ("editor_task_type" , None )
754
+ return self ._create_project (** kwargs )
822
755
823
756
@overload
824
757
def create_model_evaluation_project (self ,
@@ -881,13 +814,99 @@ def create_model_evaluation_project(self,
881
814
dataset_name_or_id = dataset_name
882
815
883
816
kwargs ["media_type" ] = MediaType .Conversational
884
- kwargs ["ontology_kind" ] = OntologyKind .ModelEvaluation
885
817
kwargs ["dataset_name_or_id" ] = dataset_name_or_id
886
818
kwargs ["append_to_existing_dataset" ] = append_to_existing_dataset
887
819
kwargs ["data_row_count" ] = data_row_count
820
+ kwargs ["editor_task_type" ] = EditorTaskType .ModelChatEvaluation .value
821
+
822
+ return self ._create_project (** kwargs )
823
+
824
+ def create_offline_model_evaluation_project (self , ** kwargs ) -> Project :
825
+ """
826
+ Creates a project for offline model evaluation.
827
+ Args:
828
+ **kwargs: Additional parameters to pass see the create_project method
829
+ Returns:
830
+ Project: The created project
831
+ """
832
+ kwargs [
833
+ "media_type" ] = MediaType .Conversational # Only Conversational is supported
834
+ kwargs [
835
+ "editor_task_type" ] = EditorTaskType .OfflineModelChatEvaluation .value # Special editor task type for offline model evaluation
836
+
837
+ # The following arguments are not supported for offline model evaluation
838
+ kwargs .pop ("dataset_name_or_id" , None )
839
+ kwargs .pop ("append_to_existing_dataset" , None )
840
+ kwargs .pop ("data_row_count" , None )
888
841
889
842
return self .create_project (** kwargs )
890
843
844
+ def _create_project (self , ** kwargs ) -> Project :
845
+ auto_audit_percentage = kwargs .get ("auto_audit_percentage" )
846
+ auto_audit_number_of_labels = kwargs .get ("auto_audit_number_of_labels" )
847
+ if auto_audit_percentage is not None or auto_audit_number_of_labels is not None :
848
+ raise ValueError (
849
+ "quality_mode must be set instead of auto_audit_percentage or auto_audit_number_of_labels."
850
+ )
851
+
852
+ name = kwargs .get ("name" )
853
+ if name is None or not name .strip ():
854
+ raise ValueError ("project name must be a valid string." )
855
+
856
+ queue_mode = kwargs .get ("queue_mode" )
857
+ if queue_mode is QueueMode .Dataset :
858
+ raise ValueError (
859
+ "Dataset queue mode is deprecated. Please prefer Batch queue mode."
860
+ )
861
+ elif queue_mode is QueueMode .Batch :
862
+ logger .warning (
863
+ "Passing a queue mode of batch is redundant and will soon no longer be supported."
864
+ )
865
+
866
+ media_type = kwargs .get ("media_type" )
867
+ if media_type and MediaType .is_supported (media_type ):
868
+ media_type_value = media_type .value
869
+ elif media_type :
870
+ raise TypeError (f"{ media_type } is not a valid media type. Use"
871
+ f" any of { MediaType .get_supported_members ()} "
872
+ " from MediaType. Example: MediaType.Image." )
873
+ else :
874
+ logger .warning (
875
+ "Creating a project without specifying media_type"
876
+ " through this method will soon no longer be supported." )
877
+ media_type_value = None
878
+
879
+ quality_mode = kwargs .get ("quality_mode" )
880
+ if not quality_mode :
881
+ logger .info ("Defaulting quality mode to Benchmark." )
882
+
883
+ data = kwargs
884
+ data .pop ("quality_mode" , None )
885
+ if quality_mode is None or quality_mode is QualityMode .Benchmark :
886
+ data [
887
+ "auto_audit_number_of_labels" ] = BENCHMARK_AUTO_AUDIT_NUMBER_OF_LABELS
888
+ data ["auto_audit_percentage" ] = BENCHMARK_AUTO_AUDIT_PERCENTAGE
889
+ elif quality_mode is QualityMode .Consensus :
890
+ data [
891
+ "auto_audit_number_of_labels" ] = CONSENSUS_AUTO_AUDIT_NUMBER_OF_LABELS
892
+ data ["auto_audit_percentage" ] = CONSENSUS_AUTO_AUDIT_PERCENTAGE
893
+ else :
894
+ raise ValueError (f"{ quality_mode } is not a valid quality mode." )
895
+
896
+ params = {** data }
897
+ if media_type_value :
898
+ params ["media_type" ] = media_type_value
899
+
900
+ extra_params = {
901
+ Field .String ("dataset_name_or_id" ):
902
+ params .pop ("dataset_name_or_id" , None ),
903
+ Field .Boolean ("append_to_existing_dataset" ):
904
+ params .pop ("append_to_existing_dataset" , None ),
905
+ }
906
+ extra_params = {k : v for k , v in extra_params .items () if v is not None }
907
+
908
+ return self ._create (Entity .Project , params , extra_params )
909
+
891
910
def get_roles (self ) -> List [Role ]:
892
911
"""
893
912
Returns:
0 commit comments