Spaces:
Running
Running
| import logging | |
| from typing import List | |
| class PromptBuilder: | |
| """Builder class for creating prompt strings with dynamic data.""" | |
| def __init__(self): | |
| self.premise: List[str] = [] | |
| self.end: List[str] = [] | |
| self.data: List[str] = [] | |
| self.data_only = False | |
| def add_data(self, data): | |
| self.data.append(data) | |
| return self | |
| def add_end(self, end): | |
| self.end.append(end) | |
| return self | |
| def set_data_only(self, data_only): | |
| self.data_only = data_only | |
| return self | |
| def add_premise(self, premise): | |
| self.premise.append(premise) | |
| return self | |
| def build(self): | |
| """Builds and returns the prompt as a string based on data, premise and end that were added to the builder.""" | |
| if len(self.data) == 0: | |
| logging.warning( | |
| "This prompt did not contain any data, was that intentional ?" | |
| ) | |
| data = "\n".join(self.data) | |
| if self.data_only: | |
| return data | |
| end = "".join(self.end) | |
| premise = "".join(self.premise) | |
| return f"{premise}\n{data}\n{end}" | |