Siddhesh Patil
Initial commit - Self-Correcting Data Validation Agent
b67668b
from __future__ import annotations
from typing import List, Dict, Any, Optional
from pydantic import ValidationError
from src.agent.schemas import ExtractedData
def run_offline_agent(raw_text: str, candidate_json_outputs: List[str], max_attempts: int = 3):
"""
Offline testing: instead of calling OpenAI, we feed the agent JSON outputs
and see if validation passes, and how many attempts it takes.
"""
log = []
last = ""
attempt = 1
for out in candidate_json_outputs[:max_attempts]:
last = out
log.append({"step": "extract", "attempt": attempt, "output": out})
try:
data = ExtractedData.model_validate_json(out)
log.append({"step": "validate", "attempt": attempt, "status": "pass"})
return {"result": data.model_dump(), "log": log, "last_json_text": last}
except ValidationError as e:
log.append({"step": "validate", "attempt": attempt, "status": "fail", "error": str(e)})
attempt += 1
return {"result": None, "log": log, "last_json_text": last}