""" SummaryValidationAgent - Validates resume/profile claims against experience evidence. """ import json import logging from agents.base_agent import BaseAgent from models.schemas import ExperienceAnalysisOutput, SummaryValidationOutput from prompts.templates import SUMMARY_VALIDATION_PROMPT logger = logging.getLogger(__name__) class SummaryValidationAgent(BaseAgent): def __init__(self, **kwargs): super().__init__( name="SummaryValidationAgent", role=( "Valider le résumé/profil du CV en confrontant chaque affirmation " "aux preuves trouvées dans les expériences. Distinguer les affirmations " "prouvées des déclaratives non étayées." ), **kwargs, ) def run( self, cv_resume: str, experience_analysis: ExperienceAnalysisOutput, ) -> SummaryValidationOutput: """ Validate the summary/profile section against experience analysis. Args: cv_resume: Text of the summary/profile section. experience_analysis: Results from ExperienceAnalysisAgent. Returns: SummaryValidationOutput: Validated analysis results. """ logger.info(f"[{self.name}] Starting summary validation...") exp_json = json.dumps( experience_analysis.model_dump(), ensure_ascii=False, indent=2, ) prompt = SUMMARY_VALIDATION_PROMPT.format( cv_resume=cv_resume, experience_analysis=exp_json[:6000], ) result = self._call_llm_with_retry(prompt, SummaryValidationOutput) logger.info( f"[{self.name}] Validation complete. " f"Resume score: {result.score_resume}/10, " f"Claims proven: {result.taux_affirmations_prouvees}%" ) return result