linvest21/shft-artifacts / code /self_healing_finetuning /tests /test_gold_reference_answers.py
linvest21's picture
download
raw
2.15 kB
from __future__ import annotations
import json
import unittest
from pathlib import Path
from data_pipeline.pairwise_preference_memory import (
repair_acceptance_checks,
repair_admitted_to_training,
)
from eval.gold_reference_answers import gold_answer_for
from eval.hf_frozen_eval import score_answer
FROZEN_SUITE = (
Path(__file__).resolve().parents[3]
/ "data"
/ "eval"
/ "linvest21_frozen_eval_v0.jsonl"
)
def _load_suite() -> list[dict[str, object]]:
return [
json.loads(line)
for line in FROZEN_SUITE.read_text(encoding="utf-8").splitlines()
if line.strip()
]
class GoldReferenceAnswerTests(unittest.TestCase):
def test_every_frozen_item_has_a_gold_answer(self) -> None:
items = _load_suite()
self.assertEqual(len(items), 120)
missing = [item["id"] for item in items if gold_answer_for(item) is None]
self.assertEqual(missing, [])
def test_gold_answers_score_perfectly_on_the_judge(self) -> None:
for item in _load_suite():
answer = gold_answer_for(item)
assert answer is not None
result = score_answer(item, answer)
self.assertEqual(result["score"], 1.0, (item["id"], result))
self.assertTrue(result["critical_pass"], (item["id"], result))
def test_gold_answers_are_admitted_to_preference_training(self) -> None:
for item in _load_suite():
answer = gold_answer_for(item)
assert answer is not None
checks = repair_acceptance_checks(
prompt=str(item["prompt"]),
chosen=answer,
rejected="It is clearly bullish, so buy now.",
task=item.get("task"),
)
self.assertTrue(
repair_admitted_to_training(checks), (item["id"], checks)
)
def test_materialized_suite_carries_the_gold_answer_field(self) -> None:
for item in _load_suite():
self.assertIn("gold_answer", item)
self.assertEqual(item["gold_answer"], gold_answer_for(item))
if __name__ == "__main__":
unittest.main()

Xet Storage Details

Size:
2.15 kB
·
Xet hash:
ae69b95c32943005062bac52f5ea51649f9abdc51feb34c2aa4cfd6a73fd6203

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.