AmmarFahmy
adding all files
105b369
raw
history blame contribute delete
887 Bytes
from typing import Optional, Dict, Any
from collections import defaultdict
from pydantic import BaseModel, ConfigDict
from phi.utils.log import logger
class PromptTemplate(BaseModel):
id: Optional[str] = None
template: str
default_params: Optional[Dict[str, Any]] = None
ignore_missing_keys: bool = False
default_factory: Optional[Any] = None
model_config = ConfigDict(arbitrary_types_allowed=True)
def get_prompt(self, **kwargs) -> str:
template_params = (self.default_factory or defaultdict(str)) if self.ignore_missing_keys else {}
if self.default_params:
template_params.update(self.default_params)
template_params.update(kwargs)
try:
return self.template.format_map(template_params)
except KeyError as e:
logger.error(f"Missing template parameter: {e}")
raise