33# // SPDX-License-Identifier: Apache-2.0
44#
55import pandas as pd
6- from typing import List , Dict , Optional
6+ from typing import List , Dict , Any , Optional
77from itertools import product
88from dynaconf import Dynaconf
99from .data_utils import write_dataset , load_latest_dataset
10- from .prompts_judge import generate_input_prompt , generate_system_prompt , get_rubric , rewrite_prompt
11-
1210from .completion import batch_get_bedrock_completions
1311import re
1412import boto3
1513
14+ # Import prompt functions based on settings
15+ def get_prompt_functions (settings : Dynaconf ):
16+ """Get the appropriate prompt functions based on settings."""
17+ if settings .custom_prompts :
18+ from wraval .custom_prompts .prompts_judge import (
19+ generate_input_prompt ,
20+ generate_system_prompt ,
21+ get_rubric
22+ )
23+ else :
24+ from .prompts_judge import (
25+ generate_input_prompt ,
26+ generate_system_prompt ,
27+ get_rubric
28+ )
29+ return generate_input_prompt , generate_system_prompt , get_rubric
30+
1631def extract_score (text : str ) -> Optional [int ]:
1732 """Extract score from text using regex pattern.
1833
@@ -60,9 +75,8 @@ def process_tone_data(
6075 Returns:
6176 Processed DataFrame with scores
6277 """
63-
64- if settings .custom_prompts == True :
65- from wraval .custom_prompts .prompts_judge import generate_input_prompt , generate_system_prompt
78+ # Get the appropriate prompt functions
79+ generate_input_prompt , generate_system_prompt , _ = get_prompt_functions (settings )
6680
6781 temp_results = results .copy ()
6882 rubrics = list (tone_rubrics .keys ())
@@ -118,9 +132,6 @@ def judge(
118132 endpoint_type: Type of endpoint to use
119133 """
120134
121- if settings .custom_prompts == True :
122- from wraval .custom_prompts .prompts_judge import get_rubric
123-
124135 try :
125136 results = load_latest_dataset (settings .data_dir )
126137 print (f"Loaded dataset with { len (results )} rows" )
@@ -139,11 +150,15 @@ def judge(
139150 if settings .type != "all" :
140151 tones = [settings .type ]
141152
153+ # Get the appropriate prompt functions
154+ _ , _ , get_rubric = get_prompt_functions (settings )
155+
142156 # Process each tone-model combination that needs scoring
143157 for tone , inf_model in product (tones , inf_models ):
144158 mask = (results .inference_model == inf_model ) & (results .tone == tone )
145159 # check if any score is missing for this inference model and this tone
146- # If yes, run the eval below
160+ if 'overall_score' not in results .columns :
161+ results ['overall_score' ] = None
147162 if not results [mask ].overall_score .isna ().any ():
148163 continue
149164
0 commit comments