File size: 1,880 Bytes
0fadcb9
 
 
 
d005419
0fadcb9
 
 
d005419
 
 
 
7648566
0fadcb9
 
 
 
 
d005419
0fadcb9
d005419
 
 
 
224e4de
d005419
 
 
 
 
d568cb6
d005419
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import datetime
from pathlib import Path

from utils.date_utils import get_today_date_as_dd_mm_yyyy
from form.form import work_categories as wc


class PromptsManager:
    def __init__(self, work_categories: dict[str, str] = None):

        if not work_categories:
            self.work_categories = wc
        base_path = Path(__file__).parent
        with open(Path(base_path, "system_prompt.txt")) as sysprompt_file:
            self.system_prompt: str = sysprompt_file.read()
        with open(Path(base_path, "questions.txt")) as questions_file:
            self.questions: list[str] = questions_file.readlines()
        with open(Path(base_path, "verification_prompt2.txt")) as verification_prompt_file:
            verification_prompt = verification_prompt_file.read()
            todays_date = get_today_date_as_dd_mm_yyyy()
            verification_prompt = verification_prompt.replace("{today}", todays_date)
            self.verification_prompt: str = verification_prompt

    def verify_user_input_prompt(self, user_prompt) -> str:
        return (f"Using only this information \n {user_prompt} \n answer the following questions, if the answer is not present or you are not sure about the answer just answer null. "
                f"Put each answer in a new line, keep the answer brief "
                f"and maintain the order in which the questions are asked. Do not add any preamble: "
                f"{self.verification_prompt}")

    def get_work_category(self, work_description: str) -> str:
        return (f"The work to do is {work_description}. Given the following categories {', '.join(self.work_categories.values())} "
                f"which ones are the most relevant? Only return the categories, separated by a semicolon")

    def ingest_user_answers(self, user_prompt: str) -> str:
        return f"Ingest the following information: {user_prompt}"