"""
evalkit — Simple LLM/RAG evaluation framework for teams.

evalkit lets you define test cases, run them against any LLM or RAG pipeline,
and judge outputs using configurable metrics. Results are stored and viewable
via a lightweight web dashboard.

Basic usage::

    from evalkit import TestCase, EvaluationEngine, RAGQASuite
    from evalkit.judges.openai import OpenAIJudge

    cases = [
        TestCase(
            question="What is the capital of France?",
            context=["France is a country in Western Europe. Its capital is Paris."],
            answer="The capital of France is Paris.",
        )
    ]

    engine = EvaluationEngine(judge=OpenAIJudge())
    report = engine.run(cases, suite=RAGQASuite())
    print(report.summary)
"""

from __future__ import annotations

__version__ = "0.1.0"

from evalkit.client import EvalKitAPIError, EvalKitClient, Evaluation, Project, ServerConfig, Trace
from evalkit.engine import EvaluationEngine
from evalkit.judges.base import BaseJudge
from evalkit.metrics.answer_relevancy import AnswerRelevancyMetric
from evalkit.metrics.base import BaseMetric
from evalkit.metrics.completeness import CompletenessMetric
from evalkit.metrics.contextual_relevancy import ContextualRelevancyMetric
from evalkit.metrics.exact_match import ExactMatchMetric
from evalkit.metrics.faithfulness import FaithfulnessMetric
from evalkit.metrics.hallucination import HallucinationMetric
from evalkit.metrics.string_containment import StringContainmentMetric
from evalkit.metrics.string_similarity import StringSimilarityMetric
from evalkit.metrics.tool_parameter import ToolParameterMetric
from evalkit.metrics.tool_parameter_similarity import ToolParameterSimilarityMetric
from evalkit.metrics.tool_selection import ToolSelectionMetric
from evalkit.models import (
    EvaluationReport,
    EvaluationResult,
    FailureGroup,
    JudgeResponse,
    MetricScore,
    MetricSummary,
    ReportSummary,
    Suite,
    TestCase,
    ToolCall,
)
from evalkit.reports.generator import ReportGenerator
from evalkit.suites import (
    BUILTIN_SUITES,
    AgentToolCallSuite,
    AnswerSimilaritySuite,
    ConversationalSuite,
    DocumentSearchSuite,
    LiveQASuite,
    RAGQASuite,
)

__all__ = [
    "__version__",
    "TestCase",
    "JudgeResponse",
    "MetricScore",
    "EvaluationResult",
    "FailureGroup",
    "MetricSummary",
    "ReportSummary",
    "EvaluationReport",
    "ToolCall",
    "BaseJudge",
    "BaseMetric",
    "FaithfulnessMetric",
    "AnswerRelevancyMetric",
    "ContextualRelevancyMetric",
    "HallucinationMetric",
    "CompletenessMetric",
    "ToolSelectionMetric",
    "ToolParameterMetric",
    "ToolParameterSimilarityMetric",
    "ExactMatchMetric",
    "StringContainmentMetric",
    "StringSimilarityMetric",
    "RAGQASuite",
    "DocumentSearchSuite",
    "ConversationalSuite",
    "AgentToolCallSuite",
    "LiveQASuite",
    "AnswerSimilaritySuite",
    "Suite",
    "BUILTIN_SUITES",
    "EvaluationEngine",
    "ReportGenerator",
    "EvalKitClient",
    "EvalKitAPIError",
    "Project",
    "ServerConfig",
    "Evaluation",
    "Trace",
]
