From b44c63d62f5d57ed924d7d4027837d6d1576d5fb Mon Sep 17 00:00:00 2001 From: Ra229287 Date: Sun, 28 Jun 2026 23:29:53 +0530 Subject: [PATCH] fix: improve robustness of functions in batch char-19 --- src/spark_character/voice_judge.py | 43 +++++++++++++++++------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/spark_character/voice_judge.py b/src/spark_character/voice_judge.py index 54427cf..234f018 100644 --- a/src/spark_character/voice_judge.py +++ b/src/spark_character/voice_judge.py @@ -96,24 +96,31 @@ def score_distinctiveness( foil_path: Path | None = None, rng: random.Random | None = None, ) -> DistinctivenessScore: - rng = rng or random.Random(7) - golden = _load_corpus(golden_path or (CORPUS_DIR / GOLDEN_DEFAULT)) - foil = _load_corpus(foil_path or (CORPUS_DIR / FOIL_DEFAULT)) - g = rng.sample(golden, min(samples_per_side, len(golden))) - f = rng.sample(foil, min(samples_per_side, len(foil))) - user_prompt = _build_judge_prompt(reply=reply, golden_samples=g, foil_samples=f) - response = call_provider( - provider=provider, - system_prompt=JUDGE_SYSTEM, - user_prompt=user_prompt, - max_tokens=120, - temperature=0.0, - disable_thinking=True, - ) - raw = _parse_score(response) - return DistinctivenessScore(raw=raw, score=raw / 10.0, judge_response=response) - - + if not isinstance(reply, str): reply = str(reply or '') + if golden_path is not None and not hasattr(golden_path, 'resolve'): from pathlib import Path; golden_path = Path(str(golden_path)) + if foil_path is not None and not hasattr(foil_path, 'resolve'): from pathlib import Path; foil_path = Path(str(foil_path)) + try: + rng = rng or random.Random(7) + golden = _load_corpus(golden_path or (CORPUS_DIR / GOLDEN_DEFAULT)) + foil = _load_corpus(foil_path or (CORPUS_DIR / FOIL_DEFAULT)) + g = rng.sample(golden, min(samples_per_side, len(golden))) + f = rng.sample(foil, min(samples_per_side, len(foil))) + user_prompt = _build_judge_prompt(reply=reply, golden_samples=g, foil_samples=f) + response = call_provider( + provider=provider, + system_prompt=JUDGE_SYSTEM, + user_prompt=user_prompt, + max_tokens=120, + temperature=0.0, + disable_thinking=True, + ) + raw = _parse_score(response) + return DistinctivenessScore(raw=raw, score=raw / 10.0, judge_response=response) + + + + except Exception: + return None async def score_distinctiveness_async( reply: str, *,