feat: make contexts optional in /api/score
When contexts is absent, metrics that require retrieved_contexts (faithfulness, context_recall, context_precision, noise_sensitivity) are automatically skipped and appear in skipped_metrics. Only answer_relevancy, factual_correctness, semantic_similarity remain computable without contexts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -57,9 +57,11 @@ class TestScoreRequest:
|
||||
with pytest.raises(ValidationError):
|
||||
ScoreRequest(question="q", contexts="c") # type: ignore[call-arg]
|
||||
|
||||
def test_missing_contexts_raises(self):
|
||||
with pytest.raises(ValidationError):
|
||||
ScoreRequest(question="q", answer="a") # type: ignore[call-arg]
|
||||
def test_missing_contexts_defaults_to_none(self):
|
||||
"""contexts is now optional — missing contexts is allowed."""
|
||||
req = ScoreRequest(question="q", answer="a")
|
||||
assert req.contexts is None
|
||||
assert req.contexts_as_list() == []
|
||||
|
||||
def test_custom_metrics_accepted(self):
|
||||
req = ScoreRequest(
|
||||
@@ -115,6 +117,17 @@ class TestScoreRequest:
|
||||
"factual_correctness",
|
||||
]
|
||||
|
||||
def test_effective_metrics_drops_context_dependent_when_contexts_absent(self):
|
||||
"""Without contexts, context-dependent metrics are excluded."""
|
||||
req = ScoreRequest(
|
||||
question="q", answer="a",
|
||||
metrics=["faithfulness", "answer_relevancy", "context_precision"],
|
||||
)
|
||||
effective = req.effective_metrics()
|
||||
assert "answer_relevancy" in effective
|
||||
assert "faithfulness" not in effective
|
||||
assert "context_precision" not in effective
|
||||
|
||||
|
||||
class TestScoreResponse:
|
||||
def test_score_response_structure(self):
|
||||
|
||||
Reference in New Issue
Block a user