__init__.py 1.68 KB
Newer Older
1
2
3
from lm_eval.logger import eval_logger
from promptsource.templates import DatasetTemplates

4
# TODO: decide whether we want jinja2 or f-string prompts. would it be cursed to support both?
lintangsutawika's avatar
lintangsutawika committed
5
# Prompt library.
6
7
8
9
10
11
# Stores prompts in a dictionary indexed by 2 levels:
# prompt category name, and prompt name.
# This allows us to access prompts
PROMPT_REGISTRY = {
    "qa-basic": {
        "question-newline-answer": "Question: {{question}}\nAnswer:",
lintangsutawika's avatar
lintangsutawika committed
12
        "q-newline-a": "Q: {{question}}\nA:",
13
14
15
    },
}

lintangsutawika's avatar
lintangsutawika committed
16

17
def get_prompt(prompt_id: str, dataset_name=None, subset_name=None):
lintangsutawika's avatar
lintangsutawika committed
18
    # unpack prompt name
19
    category_name, prompt_name = prompt_id.split(":")
lintangsutawika's avatar
lintangsutawika committed
20
    eval_logger.info(f"Loading prompt from {category_name}")
21
22
23
    if category_name == "promptsource":
        try:
            # prompts = DatasetTemplates(dataset_name, dataset_path)
lintangsutawika's avatar
lintangsutawika committed
24
            if subset_name is None:
25
26
                prompts = DatasetTemplates(dataset_name=dataset_name)
            else:
lintangsutawika's avatar
lintangsutawika committed
27
28
                prompts = DatasetTemplates(
                    dataset_name=dataset_name, subset_name=subset_name
29
                )
lintangsutawika's avatar
lintangsutawika committed
30
31
        except Exception:
            raise ValueError(f"{dataset_name} and {subset_name} not found")
32
33
        if prompt_name in prompts.all_template_names:
            return prompts[prompt_name]
34
        else:
35
36
            raise ValueError(
                f"{prompt_name} not in prompt list {prompts.all_template_names}"
lintangsutawika's avatar
lintangsutawika committed
37
            )
38
39
40
    else:
        try:
            return PROMPT_REGISTRY[category_name][prompt_name]
lintangsutawika's avatar
lintangsutawika committed
41
        except Exception:
42
43
44
            raise ValueError(
                f"expected only a single `:` as separator between \
                prompt category and name, but got `{prompt_id}` instead"
lintangsutawika's avatar
lintangsutawika committed
45
            )