in pyrit/prompt_converter/pdf_converter.py [0:0]
def _prepare_content(self, prompt: str) -> str:
"""
Prepares the content for the PDF, either from a template or directly from the prompt.
Args:
prompt (str): The input prompt.
Returns:
str: The prepared content.
"""
if self._prompt_template:
logger.debug(f"Preparing content with template: {self._prompt_template.value}")
try:
# Parse string prompt to dictionary
dynamic_data = ast.literal_eval(prompt) if isinstance(prompt, str) else prompt
logger.debug(f"Parsed dynamic data: {dynamic_data}")
if not isinstance(dynamic_data, dict):
raise ValueError("Prompt must be a dictionary-compatible object after parsing.")
# Use SeedPrompt's render_template_value for rendering
rendered_content = self._prompt_template.render_template_value(**dynamic_data)
logger.debug(f"Rendered content: {rendered_content}")
return rendered_content
except (ValueError, KeyError) as e:
logger.error(f"Error rendering prompt: {e}")
raise ValueError(f"Failed to render the prompt: {e}")
# If no template is provided, return the raw prompt as content
if isinstance(prompt, str):
logger.debug("No template provided. Using raw prompt.")
return prompt
else:
logger.error("Prompt must be a string when no template is provided.")
raise ValueError("Prompt must be a string when no template is provided.")