import yaml | |
from typing import Dict, Any, Optional | |
from openai import OpenAI | |
from dataclasses import dataclass | |
class PromptTemplate: | |
"""A simple prompt template that handles parameter substitution and generation settings.""" | |
template: str | |
parameters: Dict[str, Any] | |
def format(self, **kwargs) -> str: | |
return self.template.format(**kwargs) | |
class PromptLoader: | |
"""Loads prompts and their parameters from a YAML file.""" | |
def load_prompts(yaml_path: str) -> Dict[str, PromptTemplate]: | |
with open(yaml_path, 'r') as f: | |
data = yaml.safe_load(f) | |
prompts = {} | |
for name, content in data.items(): | |
prompts[name] = PromptTemplate( | |
template=content['template'], | |
parameters=content.get('parameters', {}) | |
) | |
return prompts |