DAMHelper / prompts /prompts_manager.py
enricorampazzo's picture
now saving personal, location and contractor details in the browser local storage
aa2cc5f
raw
history blame
2.71 kB
import datetime
from enum import Enum
from pathlib import Path
from utils.date_utils import get_today_date_as_dd_mm_yyyy
class Questions(Enum):
FULL_NAME = 0
WORK_TO_DO = 1
COMMUNITY = 2
BUILDING = 3
UNIT_APT_NUMBER = 4
OWNER_OR_TENANT = 5
START_DATE = 6
END_DATE = 7
CONTACT_NUMBER = 8
COMPANY_NAME = 9
COMPANY_EMAIL = 10
COMPANY_NUMBER = 11
YOUR_EMAIL = 12
class PromptsManager:
def __init__(self, work_categories: dict[str, str] = None):
self.work_categories = work_categories
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, for each question that you cannot 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}: choose the most accurate categories among the following:"
f"{', '.join(self.work_categories.values())}\n"
f"Only return the categories, separated by a semicolon")
@staticmethod
def questions_to_field_labels():
return {
Questions.FULL_NAME: "Full name", Questions.WORK_TO_DO: "Work to do", Questions.COMMUNITY: "Community",
Questions.BUILDING:"Building name", Questions.UNIT_APT_NUMBER: "Unit/apartment number",
Questions.OWNER_OR_TENANT: "Owner/Tenant", Questions.START_DATE: "Start date",
Questions.END_DATE: "End date", Questions.CONTACT_NUMBER: "Your contact number",
Questions.COMPANY_NAME: "Contractor company name", Questions.COMPANY_EMAIL: "Contracting company email",
Questions.COMPANY_NUMBER: "Contracting company contact number", Questions.YOUR_EMAIL: "Your email"
}