@@ -24,16 +24,20 @@ def __init__(
2424 self ,
2525 config : LLMConfig ,
2626 system_config : Optional [SystemConfig ] = None ,
27+ judge_id : Optional [str ] = None ,
2728 ):
2829 """Initialize with validated environment and constructed model name.
2930
3031 Args:
3132 config: Primary LLM configuration (also used as fallback)
3233 system_config: Optional full system config for judge panel support
34+ judge_id: Optional identifier for this judge (pool key). If not provided,
35+ defaults to "primary" for single LLM or the pool key for panel judges.
3336 """
3437 self .config = config
3538 self .system_config = system_config
3639 self .model_name = self ._construct_model_name_and_validate (config )
40+ self .judge_id = judge_id or "primary"
3741
3842 # Initialize judge panel if available
3943 self .judge_managers : list ["LLMManager" ] = []
@@ -43,9 +47,9 @@ def __init__(
4347 # Create LLM managers for each judge using resolved configs from llms pool
4448 try :
4549 judge_configs = system_config .get_judge_configs ()
46- for resolved_config in judge_configs :
50+ for pool_key , resolved_config in judge_configs :
4751 # Create child manager without system_config to avoid recursion
48- judge_manager = LLMManager (resolved_config )
52+ judge_manager = LLMManager (resolved_config , judge_id = pool_key )
4953 self .judge_managers .append (judge_manager )
5054 except ValueError as e :
5155 logger .error ("Failed to resolve judge panel: %s" , e )
@@ -163,6 +167,22 @@ def get_primary_judge(self) -> "LLMManager":
163167 return self .judge_managers [0 ]
164168 return self
165169
170+ def get_judges_for_metric (self , metric_identifier : str ) -> list ["LLMManager" ]:
171+ """Get list of judges to use for a specific metric.
172+
173+ Returns all judges if metric should use panel, otherwise returns
174+ list with single primary judge. Always returns a list.
175+
176+ Args:
177+ metric_identifier: Metric identifier (e.g., "ragas:faithfulness")
178+
179+ Returns:
180+ List of LLMManager instances to use for this metric
181+ """
182+ if self .should_use_panel_for_metric (metric_identifier ):
183+ return self .get_judge_managers ()
184+ return [self .get_primary_judge ()]
185+
166186 def should_use_panel_for_metric (self , metric_identifier : str ) -> bool :
167187 """Determine if a metric should use judge panel based on enabled_metrics.
168188
0 commit comments