def compute_model_metrics(
        self,
        metric_names: Union[str, List[str]] = None,
        question_name: Union[
            str, LabelQuestion, MultiLabelQuestion, RatingQuestion, TextQuestion, RankingQuestion
        ] = None,
        strategy: Optional[
            Union[str, LabelQuestionStrategy, MultiLabelQuestion, RatingQuestionStrategy, RankingQuestion]
        ] = None,
    ) -> Union[Dict[str, List["ModelMetricResult"]], "ModelMetricResult", List["ModelMetricResult"]]:
        """Compute metrics for the annotators using the suggestions as the ground truth, and the responses
        as the predicted value, or if a strategy is provided, the same but applied to unified responses.

        The metric interpretation is the same whether the responses are unified or not.

        Args:
            metric_names: Metric name or list of metric names of the metrics, dependent on the question type.
            question_name: Question for which we want to compute the metrics.
            strategy: Unification strategy. If given, will unify the responses of the dataset and compute
                the metrics on the unified responses vs the suggestions instead on a per user level.
                See `unified_responses` method for more information. Defaults to None.

        Note:
            Currently, the following types of questions are supported:
            - For annotator level questions: all the types of questions
            - For unified responses: all the questions except the `TextQuestion`.

        Returns:
            metrics_container: If strategy is provided it will unify the annotations and return
                the metrics for the unified responses. Otherwise, it will return the metrics for
                each annotator as a dict, where the key corresponds to the annotator id and the
                values are a list with the metrics.
        """
        from argilla_v1.client.feedback.metrics.annotator_metrics import ModelMetric, UnifiedModelMetric

        if strategy:
            self.compute_unified_responses(question_name, strategy)
            return UnifiedModelMetric(self, question_name).compute(metric_names)
        else:
            return ModelMetric(self, question_name).compute(metric_names)
Compute metrics for the annotators using the suggestions as the ground truth, and the responses
        as the predicted value, or if a strategy is provided, the same but applied to unified responses.

        The metric interpretation is the same whether the responses are unified or not.

        Args:
            metric_names: Metric name or list of metric names of the metrics, dependent on the question type.
            question_name: Question for which we want to compute the metrics.
            strategy: Unification strategy. If given, will unify the responses of the dataset and compute
                the metrics on the unified responses vs the suggestions instead on a per user level.
                See `unified_responses` method for more information. Defaults to None.

        Note:
            Currently, the following types of questions are supported:
            - For annotator level questions: all the types of questions
            - For unified responses: all the questions except the `TextQuestion`.

        Returns:
            metrics_container: If strategy is provided it will unify the annotations and return
                the metrics for the unified responses. Otherwise, it will return the metrics for
                each annotator as a dict, where the key corresponds to the annotator id and the
                values are a list with the metrics.
        
argilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py