AmmarFahmy
adding all files
105b369
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