mirror of
https://github.com/acon96/home-llm.git
synced 2026-01-08 05:14:02 -05:00
65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import babel.dates
|
|
|
|
from utils import Example, generate_random_datetime
|
|
|
|
CURRENT_DATE_PROMPT = {
|
|
"english": "The current time and date is",
|
|
"polish": "Aktualna godzina i data to",
|
|
"german": "Die aktuelle Uhrzeit und das aktuelle Datum sind",
|
|
"french": "L'heure et la date actuelles sont",
|
|
"spanish": "La hora y fecha actuales son"
|
|
}
|
|
|
|
DEVICES_PROMPT = {
|
|
"english": "Devices",
|
|
"polish": "Urządzenia",
|
|
"german": "Ger\u00e4te",
|
|
"french": "Appareils",
|
|
"spanish": "Dispositivos"
|
|
}
|
|
|
|
SERVICES_PROMPT = {
|
|
"english": "Services",
|
|
"polish": "Usługi",
|
|
"german": "Dienste",
|
|
"french": "Services",
|
|
"spanish": "Servicios"
|
|
}
|
|
|
|
BABEL_LOCALE = {
|
|
"english": "en_US",
|
|
"polish": "pl_PL",
|
|
"german": "de_DE",
|
|
"french": "fr_FR",
|
|
"spanish": "es_ES"
|
|
}
|
|
|
|
BABEL_FORMAT = {
|
|
"english": "h:m a 'on' EEEE, MMMM d yyyy",
|
|
"polish": "H:m 'w' EEEE, d MMMM yyyy",
|
|
"german": "H:m EEEE, d MMMM yyyy",
|
|
"french": "H:m EEEE, d MMMM yyyy",
|
|
"spanish": "H:m EEEE, d 'de' MMMM 'de' yyyy"
|
|
}
|
|
|
|
USER_INSTRUCTION_PROMPT = {
|
|
"english": "User instruction",
|
|
"german": "Benutzeranweisung",
|
|
"french": "Instruction de l'utilisateur ",
|
|
"spanish": "Instrucción del usuario",
|
|
"polish": "Instrukcja użytkownika"
|
|
}
|
|
|
|
|
|
def generate_system_prompt(example: Example, persona: str, language: str, pile_of_system_prompts: dict[str, str]) -> str:
|
|
sys_prompt = pile_of_system_prompts[persona]
|
|
random_datetime = generate_random_datetime()
|
|
translate_datetime = babel.dates.format_datetime(random_datetime, BABEL_FORMAT[language], locale=BABEL_LOCALE[language])
|
|
time_block = f"{CURRENT_DATE_PROMPT[language]} {translate_datetime}"
|
|
|
|
states_block = f"{DEVICES_PROMPT[language]}:\n" + "\n".join(example["states"])
|
|
|
|
# replace aliases with their actual values
|
|
states_block = states_block.replace("blinds.", "cover.").replace("garage_door.", "cover.")
|
|
|
|
return "\n".join([sys_prompt, time_block, states_block]) |