# generated by datamodel-codegen:
#   filename:  tmpslpb59ih.json

from __future__ import annotations

from pydantic import BaseModel, Field


class AgentEfficiencyResponse(BaseModel):
    step_efficiency_reason: str | None = Field(
        None, examples=['Agent completed task with minimal redundant steps']
    )
    step_efficiency_score: float | None = Field(None, examples=[0.85])
    task_completion_reason: str | None = Field(
        None, examples=['All required tasks were completed successfully']
    )
    task_completion_score: float | None = Field(None, examples=[0.92])


class AgentFlowQualityResponse(BaseModel):
    reason: str | None = Field(
        None, examples=['Agent followed the expected flow correctly']
    )
    score: float | None = Field(None, examples=[0.89])
    success: bool | None = Field(None, examples=[True])


class AgentGoalAccuracyResponse(BaseModel):
    accuracy_score: float | None = Field(None, examples=[0.88])


class AgentGoalCompletenessResponse(BaseModel):
    reason: str | None = Field(None, examples=['All user goals were accomplished'])
    score: float | None = Field(None, examples=[0.95])
    success: bool | None = Field(None, examples=[True])


class AgentToolErrorDetectorResponse(BaseModel):
    reason: str | None = Field(
        None, examples=['Tool executed successfully without errors']
    )
    success: bool | None = Field(None, examples=[True])


class AgentToolTrajectoryResponse(BaseModel):
    reason: str | None = Field(
        None, examples=['Tool calls match the expected trajectory']
    )
    score: float | None = Field(None, examples=[0.85])
    success: bool | None = Field(None, examples=[True])


class AnswerCompletenessResponse(BaseModel):
    answer_completeness_score: float | None = Field(None, examples=[0.95])


class AnswerCorrectnessResponse(BaseModel):
    correctness_score: float | None = Field(None, examples=[0.91])


class AnswerRelevancyResponse(BaseModel):
    is_relevant: bool | None = Field(None, examples=[True])


class CharCountRatioResponse(BaseModel):
    char_ratio: float | None = Field(None, examples=[0.75])


class CharCountResponse(BaseModel):
    char_count: int | None = Field(None, examples=[42])


class ContextRelevanceResponse(BaseModel):
    relevance_score: float | None = Field(None, examples=[0.88])


class ConversationQualityResponse(BaseModel):
    conversation_quality_score: float | None = Field(None, examples=[0.82])


class ErrorResponse(BaseModel):
    error: str | None = Field(None, examples=['error message'])


class FaithfulnessResponse(BaseModel):
    is_faithful: bool | None = Field(None, examples=[True])


class HtmlComparisonResponse(BaseModel):
    similarity_score: float | None = Field(None, examples=[0.92])


class InstructionAdherenceResponse(BaseModel):
    instruction_adherence_score: float | None = Field(None, examples=[0.87])


class IntentChangeResponse(BaseModel):
    reason: str | None = Field(
        None, examples=['User intent remained consistent throughout the conversation']
    )
    score: int | None = Field(None, examples=[1])
    success: bool | None = Field(None, examples=[True])


class JSONValidatorResponse(BaseModel):
    is_valid_json: bool | None = Field(None, examples=[True])


class PIIDetectorResponse(BaseModel):
    has_pii: bool | None = Field(None, examples=[False])


class PerplexityResponse(BaseModel):
    perplexity_score: float | None = Field(None, examples=[12.5])


class PlaceholderRegexResponse(BaseModel):
    is_valid_regex: bool | None = Field(None, examples=[True])


class ProfanityDetectorResponse(BaseModel):
    is_safe: bool | None = Field(None, examples=[False])


class PromptInjectionResponse(BaseModel):
    has_injection: bool | None = Field(None, examples=[False])


class PromptPerplexityResponse(BaseModel):
    perplexity_score: float | None = Field(None, examples=[8.3])


class RegexValidatorResponse(PlaceholderRegexResponse):
    pass


class SQLValidatorResponse(BaseModel):
    is_valid_sql: bool | None = Field(None, examples=[True])


class SecretsDetectorResponse(BaseModel):
    has_secret: bool | None = Field(None, examples=[False])


class SemanticSimilarityResponse(HtmlComparisonResponse):
    pass


class SexismDetectorResponse(ProfanityDetectorResponse):
    pass


class ToneDetectionResponse(BaseModel):
    score: float | None = Field(None, examples=[0.95])
    tone: str | None = Field(None, examples=['neutral'])


class TopicAdherenceResponse(BaseModel):
    adherence_score: float | None = Field(None, examples=[0.95])


class ToxicityDetectorResponse(ProfanityDetectorResponse):
    pass


class UncertaintyDetectorResponse(BaseModel):
    answer: str | None = Field(None, examples=['Paris'])
    uncertainty: float | None = Field(None, examples=[0.95])


class WordCountRatioResponse(BaseModel):
    word_ratio: float | None = Field(None, examples=[0.85])


class WordCountResponse(BaseModel):
    word_count: int | None = Field(None, examples=[10])
