dev-strender's picture
Replace v24-era demo with v34 pipeline demo (engine-vendored bundle)
9c84f9d verified
Raw History Blame Contribute Delete
1.26 kB
from typing import Any
from solar_eval.evaluators.base import BaseEvaluator
from solar_eval.evaluators.composite import CompositeEvaluator
from solar_eval.evaluators.lcs_diff import LCSDiffEvaluator
from solar_eval.evaluators.llm_judge import LLMJudgeEvaluator
from solar_eval.evaluators.rule_based import RuleBasedEvaluator
def create_evaluator(config: dict[str, Any]) -> BaseEvaluator:
"""Factory function to create evaluator from config dict."""
eval_type = config["type"]
if eval_type == "llm_judge":
return LLMJudgeEvaluator(
categories=config.get("categories", []),
judge_prompts=config.get("judge_prompts"),
)
elif eval_type == "lcs_diff":
return LCSDiffEvaluator(metrics=config.get("metrics"))
elif eval_type == "rule_based":
return RuleBasedEvaluator(rules=config.get("rules", []))
elif eval_type == "composite":
components = []
for comp in config.get("components", []):
sub_evaluator = create_evaluator(comp)
components.append({"evaluator": sub_evaluator, "weight": comp.get("weight", 0.5)})
return CompositeEvaluator(components=components)
else:
raise ValueError(f"Unknown evaluator type: {eval_type}")