from mmengine.config import read_base from opencompass.openicl.icl_prompt_template import PromptTemplate from opencompass.openicl.icl_retriever import ZeroRetriever from opencompass.openicl.icl_inferencer import GenInferencer from opencompass.datasets import TheoremQADatasetV3, TheoremQA_postprocess_v3, TheoremQAEvaluatorV3 with read_base(): from .TheoremQA_few_shot_examples import examples num_shot = 5 rounds = [] for index, (query, response) in enumerate(examples[:num_shot]): if index == 0: desc = "You are supposed to provide a solution to a given problem.\n\n" else: desc = "" rounds += [ dict(role="HUMAN", prompt=f"{desc}Problem:\n{query}\nSolution:"), dict(role="BOT", prompt=f"{response}") ] rounds += [dict(role="HUMAN", prompt="Problem:\n{Question}\nSolution:")] TheoremQA_reader_cfg = dict(input_columns=["Question", "Answer_type"], output_column="Answer", train_split="test", test_split="test") TheoremQA_infer_cfg = dict( prompt_template=dict(type=PromptTemplate, template=dict(round=rounds)), retriever=dict(type=ZeroRetriever), inferencer=dict(type=GenInferencer, max_out_len=1024, stopping_criteria=["Problem:", "Problem"]), ) TheoremQA_eval_cfg = dict( evaluator=dict(type=TheoremQAEvaluatorV3), pred_postprocessor=dict(type=TheoremQA_postprocess_v3) ) TheoremQA_datasets = [ dict( abbr="TheoremQA", type=TheoremQADatasetV3, path="data/TheoremQA/theoremqa_test.json", reader_cfg=TheoremQA_reader_cfg, infer_cfg=TheoremQA_infer_cfg, eval_cfg=TheoremQA_eval_cfg, ) ]