diff --git a/openseek/competition/LongContext-ICL-Annotation/src/main.py b/openseek/competition/LongContext-ICL-Annotation/src/main.py index c2949795..207cde9a 100644 --- a/openseek/competition/LongContext-ICL-Annotation/src/main.py +++ b/openseek/competition/LongContext-ICL-Annotation/src/main.py @@ -4,20 +4,20 @@ # from method import build_prompt, select_examples, annotate -from method import build_prompt, select_examples +from method import build_prompt, select_examples, select_examples_M04, select_examples_M05, select_examples_M06, select_examples_M07, select_examples_M08, select_examples_M12, select_examples_M13, select_examples_M19, select_examples_M20, select_examples_M09, select_examples_M10, select_examples_M11, build_prompt_cot, build_prompt_by_task_type -from method import annotate_nvidia as annotate # For Nvidia GPU -# from method import annotate_ascend as annotate # For Huawei Ascend +# from method import annotate_nvidia as annotate # For Nvidia GPU +from method import annotate_ascend as annotate # For Huawei Ascend TASK_FILES = { - 1: './data/openseek-1_closest_integers.json', - 2: './data/openseek-2_count_nouns_verbs.json', - 3: './data/openseek-3_collatz_conjecture.json', - 4: './data/openseek-4_conala_concat_strings.json', - 5: './data/openseek-5_semeval_2018_task1_tweet_sadness_detection.json', - 6: './data/openseek-6_mnli_same_genre_classification.json', - 7: './data/openseek-7_jeopardy_answer_generation_all.json', - 8: '../data/openseek-8_kernel_generation.json', + 1: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-1_closest_integers.json', + 2: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-2_count_nouns_verbs.json', + 3: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-3_collatz_conjecture.json', + 4: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-4_conala_concat_strings.json', + 5: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-5_semeval_2018_task1_tweet_sadness_detection.json', + 6: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-6_mnli_same_genre_classification.json', + 7: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-7_jeopardy_answer_generation_all.json', + 8: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-8_kernel_generation.json', } def parser_args(): @@ -30,7 +30,7 @@ def parser_args(): default='../outputs/', help='Prefix path to save the evaluation logs.') parser.add_argument('--tokenizer_path', type=str, - default='/share/project/wuhaiming/spaces/data_agent/OpenSeek-main/openseek/competition/LongContext-ICL-Annotation/src/Qwen3-4B') + default='/root/Qwen3-4B') args = parser.parse_args() return args @@ -48,7 +48,7 @@ def evaluate(task_id:int, task_name = task_dict['task_name'] task_description = task_dict['Definition'][0] - icl_examples = task_dict['examples'][:100] + icl_examples = task_dict['examples'][:50] test_samples = task_dict['test_samples'] version = 1 @@ -62,7 +62,13 @@ def evaluate(task_id:int, pass examples_str = None - for test_sample in tqdm(test_samples, desc=f'Evaluation on Task {task_id}: {task_name}'): + # 从环境变量获取要使用的select_examples函数名称 + select_method = os.environ.get('SELECT_METHOD', 'select_examples_M06') + + # 获取对应的函数 + select_func = globals().get(select_method, select_examples_M06) + + for sample_idx, test_sample in enumerate(tqdm(test_samples, desc=f'Evaluation on Task {task_id}: {task_name}')): test_record = dict() test_sample_id = test_sample['id'] @@ -70,18 +76,23 @@ def evaluate(task_id:int, text2annotate = test_sample['input'] - prompt = build_prompt(task_description, text2annotate) + + # M03优化:使用任务分型Prompt路由系统 + # 根据任务类型自动选择最合适的prompt策略 + prompt = build_prompt_by_task_type(task_id, task_description, text2annotate) + if examples_str is None: - examples_str = select_examples(icl_examples, task_description, text2annotate) + # 使用动态选择的select_examples函数 + examples_str = select_func(icl_examples, task_description, text2annotate, task_id, sample_idx) input_prompt = prompt.replace("[[EXAMPLES]]\n\n", examples_str+'\n\n') # tokenized_input = qwen_tokenizer(input_prompt, return_tensors="pt") # if tokenized_input['input_ids'].shape[1] > max_input_length: # test_record['prediction'] = None # else: - # prediction = annotate(input_prompt) + # prediction = annotate(input_prompt, task_id) # test_record['prediction'] = prediction - prediction = annotate(input_prompt) + prediction = annotate(input_prompt, task_id) test_record['prediction'] = prediction with open(output_file, 'a') as f: f.write(json.dumps(test_record)+'\n') diff --git a/openseek/competition/LongContext-ICL-Annotation/src/method.py b/openseek/competition/LongContext-ICL-Annotation/src/method.py index 386daf22..dd7a8032 100644 --- a/openseek/competition/LongContext-ICL-Annotation/src/method.py +++ b/openseek/competition/LongContext-ICL-Annotation/src/method.py @@ -40,12 +40,196 @@ def build_prompt____(task_description: str, text2annotate: str) -> str: "### Text to Annotate\n" f"{text2annotate}\n\n" - "### Final Output Command (Re-emphasized)\n" - "You may complete any internal reasoning process, but your FINAL OUTPUT MUST consist solely of the annotation result wrapped in