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

from __future__ import annotations

from typing import Optional

from pydantic import BaseModel, Field


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


class AgentFlowQualityResponse(BaseModel):
    reason: Optional[str] = Field(
        None, examples=['Agent followed the expected flow correctly']
    )
    result: Optional[str] = Field(None, examples=['pass'])
    score: Optional[float] = Field(None, examples=[0.89])


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


class AgentGoalCompletenessResponse(BaseModel):
    reason: Optional[str] = Field(None, examples=['All user goals were accomplished'])
    result: Optional[str] = Field(None, examples=['complete'])
    score: Optional[float] = Field(None, examples=[0.95])


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


class ProfanityDetectorResponse(BaseModel):
    has_profanity: Optional[bool] = Field(None, examples=[False])


class PromptInjectionResponse(BaseModel):
    has_injection: Optional[str] = Field(None, examples=['safe'])


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


class RegexValidatorResponse(PlaceholderRegexResponse):
    pass


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


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


class SemanticSimilarityResponse(BaseModel):
    similarity_score: Optional[float] = Field(None, examples=[0.92])


class SexismDetectorResponse(BaseModel):
    is_safe: Optional[str] = Field(None, examples=['safe'])


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


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


class ToxicityDetectorResponse(SexismDetectorResponse):
    pass


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


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


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