from opencompass.openicl.icl_prompt_template import PromptTemplate
from opencompass.openicl.icl_retriever import ZeroRetriever
from opencompass.openicl.icl_inferencer import GenInferencer
from opencompass.openicl.icl_evaluator import AccEvaluator
from opencompass.datasets import HFDataset


wikitext_infer_cfg = dict(
    prompt_template=dict(
        type=PromptTemplate,
        template={0: '{text}'}
    ),
    retriever=dict(type=ZeroRetriever),
    inferencer=dict(type=GenInferencer), # need a new ppl inferencer
)

wikitext_eval_cfg = dict(evaluator=dict(type=AccEvaluator), )

wikitext_2_raw_datasets = []
for _split in ["validation", "test"]:

    wikitext_reader_cfg = dict(
        input_columns=["text"],
        output_column=None,
        train_split="train",
        test_split=_split,
    )

    wikitext_2_raw_datasets.append(
        dict(
            abbr=f"wikitext-2-raw-{_split}",
            type=HFDataset,
            path="wikitext",
            name="wikitext-2-raw-v1",
            reader_cfg=wikitext_reader_cfg,
            infer_cfg=wikitext_infer_cfg,
            eval_cfg=wikitext_eval_cfg,
        )
    )
