dp-zp-agent/test/test_rag_delivery.py

54 lines
1.7 KiB
Python

import copy
import pytest
from tools.evaluation.rag_delivery import finalize_rag_answer
def test_notice_is_rendered_without_changing_facts_or_raw_answer():
original = {
"answer": "Eva má prácu z roku 2026.",
"context_issues": ["missing_incompleteness_notice"],
"citations_ok": True,
"accepted_for_delivery": False,
}
before = copy.deepcopy(original)
out = finalize_rag_answer(original)
assert original == before
assert out["model_answer"] == before["answer"]
assert out["answer"] == "Výpis je neúplný.\n\n" + before["answer"]
assert out["accepted_for_delivery"] and out["display_notice_added"]
assert not out["first_pass_accepted_for_delivery"]
assert finalize_rag_answer(out) == out
@pytest.mark.parametrize(
"issues,citations_ok",
[
(["unsupported_exhaustive_statement", "missing_incompleteness_notice"], True),
(["missing_incompleteness_notice"], False),
([], False),
],
)
def test_notice_never_bypasses_other_rejections(issues, citations_ok):
original = {
"answer": "Úplný zoznam.",
"context_issues": issues,
"citations_ok": citations_ok,
"accepted_for_delivery": False,
}
out = finalize_rag_answer(original)
assert not out["accepted_for_delivery"] and not out["display_notice_added"]
assert out["answer"] == original["answer"]
def test_complete_valid_answer_does_not_get_a_notice():
original = {
"answer": "Eva.",
"context_issues": [],
"citations_ok": True,
"accepted_for_delivery": True,
}
out = finalize_rag_answer(original)
assert out["answer"] == original["answer"] and not out["display_notice_added"]
assert out["accepted_for_delivery"]