(filtered_data, input_list, output_list, task_type, output_dir, output_metrics_path, output_metrics_overall_path, use_llm=False, extract_answer=False, domain_fields=None, api_base_url=None, model_name=None)
| 251 | |
| 252 | |
| 253 | def run_evaluation(filtered_data, input_list, output_list, task_type, output_dir, output_metrics_path, output_metrics_overall_path, use_llm=False, extract_answer=False, domain_fields=None, api_base_url=None, model_name=None): |
| 254 | # Initialize domain metrics dictionary |
| 255 | domain_metrics = defaultdict(lambda: { |
| 256 | 'total': 0, |
| 257 | 'correct': 0, |
| 258 | 'em': [], |
| 259 | 'acc': [], |
| 260 | 'f1': [], |
| 261 | 'math_equal': [], |
| 262 | 'llm_equal': [], |
| 263 | 'pass@1': [] |
| 264 | }) |
| 265 | |
| 266 | # Helper function to get domain from item |
| 267 | def get_domain(item): |
| 268 | for field in domain_fields: |
| 269 | if field in item and item[field] is not None: |
| 270 | return item[field] |
| 271 | return 'Unknown' |
| 272 | |
| 273 | if task_type == 'code': |
| 274 | # Prepare samples and generations for codegen_metrics |
| 275 | samples_list = [] |
| 276 | generations_list = [] |
| 277 | num_valid_answer = 0 |
| 278 | |
| 279 | for item, input_prompt, result in zip(filtered_data, input_list, output_list): |
| 280 | if type(result) == str: |
| 281 | item['Output'] = result |
| 282 | else: |
| 283 | item['Output'] = result.outputs[0].text |
| 284 | |
| 285 | if item['Output'] == '': |
| 286 | item['Pred_Answer'] = '' |
| 287 | item['Question'] = input_prompt |
| 288 | item['Metrics'] = {'pass@1': 0} |
| 289 | item['Results'] = {} |
| 290 | item['Final_metadata'] = {} |
| 291 | continue |
| 292 | |
| 293 | pred_code = extract_answer_fn(item['Output'], mode='codegen', extract_answer=extract_answer) |
| 294 | if pred_code != '': |
| 295 | num_valid_answer += 1 |
| 296 | |
| 297 | public_test_cases = json.loads(item.get("test_cases", "{}")) |
| 298 | |
| 299 | inputs = public_test_cases.get("inputs", []) |
| 300 | outputs = public_test_cases.get("outputs", []) |
| 301 | |
| 302 | sample = { |
| 303 | "input_output": json.dumps({ |
| 304 | "inputs": inputs, |
| 305 | "outputs": outputs |
| 306 | }), |
| 307 | } |
| 308 | |
| 309 | samples_list.append(sample) |
| 310 | generations_list.append([pred_code]) |
no test coverage detected