Forward judge_language through score, async, and session endpoints

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
wangwei
2026-07-01 18:02:13 +08:00
co-authored by Copilot
parent bd5658c3ac
commit 31fe71eb94
4 changed files with 52 additions and 0 deletions
+46
View File
@@ -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"
+2
View File
@@ -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)
+2
View File
@@ -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 = {}
+2
View File
@@ -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 = {}