Forward judge_language through score, async, and session endpoints
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""Tests that score endpoints forward the resolved judge_language to the scorer."""
|
||||
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
import webapp.api.score as score_mod
|
||||
from webapp.server import create_app
|
||||
|
||||
|
||||
def _client():
|
||||
return TestClient(create_app())
|
||||
|
||||
|
||||
def test_score_route_forwards_judge_language(monkeypatch):
|
||||
"""A request with judge_language='zh' reaches inline_scorer.score."""
|
||||
captured: dict = {}
|
||||
|
||||
def fake_score(**kwargs):
|
||||
captured.update(kwargs)
|
||||
return {"faithfulness": 0.9}
|
||||
|
||||
monkeypatch.setattr(score_mod.inline_scorer, "score", fake_score)
|
||||
resp = _client().post("/api/score", json={
|
||||
"question": "q", "answer": "a", "contexts": "c",
|
||||
"ground_truth": "g", "metrics": ["faithfulness"], "judge_language": "zh",
|
||||
})
|
||||
assert resp.status_code == 200
|
||||
assert captured.get("judge_language") == "zh"
|
||||
|
||||
|
||||
def test_score_route_defaults_language_to_en(monkeypatch):
|
||||
"""Omitting judge_language falls back to settings default ('en')."""
|
||||
captured: dict = {}
|
||||
|
||||
def fake_score(**kwargs):
|
||||
captured.update(kwargs)
|
||||
return {"faithfulness": 0.9}
|
||||
|
||||
monkeypatch.setattr(score_mod.inline_scorer, "score", fake_score)
|
||||
resp = _client().post("/api/score", json={
|
||||
"question": "q", "answer": "a", "contexts": "c",
|
||||
"ground_truth": "g", "metrics": ["faithfulness"],
|
||||
})
|
||||
assert resp.status_code == 200
|
||||
assert captured.get("judge_language") == "en"
|
||||
@@ -116,6 +116,7 @@ def score_sample(
|
||||
|
||||
judge_model = request.judge_model or settings.ragas_judge_model
|
||||
embedding_model = request.embedding_model or settings.ragas_embedding_model
|
||||
judge_language = request.judge_language or settings.ragas_judge_language
|
||||
effective = request.effective_metrics()
|
||||
requested = set(request.metrics)
|
||||
skipped = sorted(requested - set(effective))
|
||||
@@ -139,6 +140,7 @@ def score_sample(
|
||||
judge_model=judge_model,
|
||||
embedding_model=embedding_model,
|
||||
settings=settings,
|
||||
judge_language=judge_language,
|
||||
)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
latency_ms = int((time.monotonic() - t0) * 1000)
|
||||
|
||||
@@ -120,6 +120,7 @@ class ScoreJobManager:
|
||||
settings = EvaluationSettings()
|
||||
judge_model = request.judge_model or settings.ragas_judge_model
|
||||
embedding_model = request.embedding_model or settings.ragas_embedding_model
|
||||
judge_language = request.judge_language or settings.ragas_judge_language
|
||||
effective = request.effective_metrics()
|
||||
requested = set(request.metrics)
|
||||
skipped = sorted(requested - set(effective))
|
||||
@@ -138,6 +139,7 @@ class ScoreJobManager:
|
||||
judge_model=judge_model,
|
||||
embedding_model=embedding_model,
|
||||
settings=settings,
|
||||
judge_language=judge_language,
|
||||
)
|
||||
else:
|
||||
raw_scores = {}
|
||||
|
||||
@@ -205,6 +205,7 @@ class SessionScoreJobManager:
|
||||
settings = EvaluationSettings()
|
||||
judge_model = request.judge_model or settings.ragas_judge_model
|
||||
embedding_model = request.embedding_model or settings.ragas_embedding_model
|
||||
judge_language = request.judge_language or settings.ragas_judge_language
|
||||
effective = request.effective_metrics()
|
||||
requested = set(request.metrics)
|
||||
skipped = sorted(requested - set(effective))
|
||||
@@ -223,6 +224,7 @@ class SessionScoreJobManager:
|
||||
judge_model=judge_model,
|
||||
embedding_model=embedding_model,
|
||||
settings=settings,
|
||||
judge_language=judge_language,
|
||||
)
|
||||
else:
|
||||
raw_scores = {}
|
||||
|
||||
Reference in New Issue
Block a user