{"record":{"id":"916b3e7f04466eea","repo":"rohitg00/ai-engineering-from-scratch","slug":"unknown-metric-name-name","errorCode":null,"errorMessage":"unknown metric name: {name}","messagePattern":"unknown metric name: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/41-eval-pipeline/code/main.py","lineNumber":636,"sourceCode":"    \"exact_match\": 0.3,\n    \"token_f1\": 0.3,\n    \"judge\": 0.2,\n}\n\n\ndef normalise_metric(name: str, value: float) -> float:\n    \"\"\"Map a raw metric onto [0, 1].\"\"\"\n    if name == \"perplexity\":\n        if value <= 0 or math.isinf(value) or math.isnan(value):\n            return 0.0\n        return 1.0 / (1.0 + math.log(max(value, 1.0)))\n    if name == \"exact_match\":\n        return max(0.0, min(1.0, float(value)))\n    if name == \"token_f1\":\n        return max(0.0, min(1.0, float(value)))\n    if name == \"judge\":\n        return max(0.0, min(1.0, float(value) / 5.0))\n    raise ValueError(f\"unknown metric name: {name}\")\n\n\n@dataclass\nclass FinalReport:\n    per_eval: Dict[str, float]\n    normalised: Dict[str, float]\n    weights: Dict[str, float]\n    aggregate: float\n    details: Dict[str, EvalResult] = field(default_factory=dict)\n\n    def to_dict(self) -> Dict[str, Any]:\n        return {\n            \"per_eval\": self.per_eval,\n            \"normalised\": self.normalised,\n            \"weights\": self.weights,\n            \"aggregate\": self.aggregate,\n            \"details\": {k: v.to_dict() for k, v in self.details.items()},\n        }","sourceCodeStart":618,"sourceCodeEnd":654,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/41-eval-pipeline/code/main.py#L618-L654","documentation":"Error \"unknown metric name: {name}\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/19-capstone-projects/41-eval-pipeline/code/main.py:636 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}