from __future__ import annotations

from evalkit.metrics import (
    AnswerRelevancyMetric,
    CompletenessMetric,
    ContextualRelevancyMetric,
    FaithfulnessMetric,
    HallucinationMetric,
)
from evalkit.models import Suite
from evalkit.suites.base import EvaluationSuite


def RAGQASuite() -> EvaluationSuite:
    """Standard Q&A RAG evaluation suite.

    All 5 metrics. Best for evaluating question-answering RAG systems
    where expected answers are available.

    Note: CompletenessMetric is included but will return score=0.0 for
    test cases without expected_answer.
    """
    return EvaluationSuite(
        name=Suite.RAG_QA,
        description="Full Q&A RAG evaluation: faithfulness, relevancy, context quality, hallucination detection, completeness",
        metrics=[
            FaithfulnessMetric(),
            AnswerRelevancyMetric(),
            ContextualRelevancyMetric(),
            HallucinationMetric(),
            CompletenessMetric(),
        ],
    )
