__init__.py 1.15 KB
Newer Older
1
2
3
4
5
6
7
8
# TODO: decide whether we want jinja2 or f-string prompts. would it be cursed to support both?
# Prompt library. 
# 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:",
9
        "q-newline-a": "Q: {{question}}\nA:"
10
11
12
    },
}

13
def get_prompt(prompt_id: str, dataset_name=None, dataset_path=None):
14
15
    # unpack prompt name 
        category_name, prompt_name = prompt_id.split(":")
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        if category_name == "promptsource":
            from promptsource.templates import DatasetTemplates        
            if prompt_name in prompts.all_template_names:
                prompts = DatasetTemplates(dataset_name, dataset_path)
                return prompts[prompt_name]
        else:
            try:
                return PROMPT_REGISTRY[category_name][prompt_name]
            except:
                raise ValueError(
                    f"expected only a single `:` as separator between \
                    prompt category and name, but got `{prompt_id}` instead"
                    )