|
from .prompts_raw import ( |
|
_prompt_code_generation, |
|
_prompt_fix_error, |
|
_prompt_visual_fix_error, |
|
_prompt_scene_plan, |
|
_prompt_scene_vision_storyboard, |
|
_prompt_scene_technical_implementation, |
|
_prompt_scene_animation_narration, |
|
_prompt_animation_simple, |
|
_prompt_animation_fix_error, |
|
_prompt_animation_rag_query_generation, |
|
_prompt_animation_rag_query_generation_fix_error, |
|
_banned_reasonings, |
|
_prompt_context_learning_scene_plan, |
|
_prompt_context_learning_vision_storyboard, |
|
_prompt_context_learning_technical_implementation, |
|
_prompt_context_learning_animation_narration, |
|
_prompt_context_learning_code, |
|
_prompt_detect_plugins, |
|
_prompt_rag_query_generation_code, |
|
_prompt_rag_query_generation_vision_storyboard, |
|
_prompt_rag_query_generation_technical, |
|
_prompt_rag_query_generation_narration, |
|
_prompt_rag_query_generation_fix_error |
|
) |
|
from typing import Union, List |
|
|
|
def get_prompt_scene_plan(topic: str, description: str) -> str: |
|
""" |
|
Generate a prompt for scene planning based on the given parameters. |
|
|
|
Args: |
|
topic (str): The topic of the video. |
|
description (str): A brief description of the video content. |
|
|
|
Returns: |
|
str: The formatted prompt for scene planning. |
|
""" |
|
prompt = _prompt_scene_plan.format(topic=topic, description=description) |
|
return prompt |
|
|
|
def get_prompt_scene_vision_storyboard(scene_number: int, topic: str, description: str, scene_outline: str, relevant_plugins: List[str]) -> str: |
|
prompt = _prompt_scene_vision_storyboard.format( |
|
scene_number=scene_number, |
|
topic=topic, |
|
description=description, |
|
scene_outline=scene_outline, |
|
relevant_plugins=", ".join(relevant_plugins) |
|
) |
|
return prompt |
|
|
|
def get_prompt_scene_technical_implementation(scene_number: int, topic: str, description: str, scene_outline: str, scene_vision_storyboard: str, relevant_plugins: List[str], additional_context: Union[str, List[str]] = None) -> str: |
|
prompt = _prompt_scene_technical_implementation.format( |
|
scene_number=scene_number, |
|
topic=topic, |
|
description=description, |
|
scene_outline=scene_outline, |
|
scene_vision_storyboard=scene_vision_storyboard, |
|
relevant_plugins=", ".join(relevant_plugins) |
|
) |
|
if additional_context is not None: |
|
if isinstance(additional_context, str): |
|
prompt += f"\nAdditional context: {additional_context}" |
|
elif isinstance(additional_context, list): |
|
prompt += f"\nAdditional context: {additional_context[0]}" |
|
if len(additional_context) > 1: |
|
prompt += f"\n" + "\n".join(additional_context[1:]) |
|
return prompt |
|
|
|
def get_prompt_scene_animation_narration(scene_number: int, topic: str, description: str, scene_outline: str, scene_vision_storyboard: str, technical_implementation_plan: str, relevant_plugins: List[str]) -> str: |
|
prompt = _prompt_scene_animation_narration.format( |
|
scene_number=scene_number, |
|
topic=topic, |
|
description=description, |
|
scene_outline=scene_outline, |
|
scene_vision_storyboard=scene_vision_storyboard, |
|
technical_implementation_plan=technical_implementation_plan, |
|
relevant_plugins=", ".join(relevant_plugins) |
|
) |
|
return prompt |
|
|
|
def get_prompt_code_generation(topic: str, |
|
description: str, |
|
scene_outline: str, |
|
scene_implementation: str, |
|
scene_number: int, |
|
additional_context: Union[str, List[str]] = None) -> str: |
|
""" |
|
Generate a prompt for code generation based on the given video plan and implementation details. |
|
|
|
Args: |
|
topic (str): The topic of the video. |
|
description (str): A brief description of the video content. |
|
scene_outline (str): The scene outline. |
|
scene_implementation (str): The detailed scene implementation. |
|
scene_number (int): The scene number |
|
additional_context (Union[str, List[str]]): Additional context to include in the prompt |
|
Returns: |
|
str: The formatted prompt for code generation. |
|
""" |
|
prompt = _prompt_code_generation.format( |
|
topic=topic, |
|
description=description, |
|
scene_outline=scene_outline, |
|
scene_implementation=scene_implementation, |
|
scene_number=scene_number |
|
) |
|
if additional_context is not None: |
|
if isinstance(additional_context, str): |
|
prompt += f"\nAdditional context: {additional_context}" |
|
elif isinstance(additional_context, list): |
|
prompt += f"\nAdditional context: {additional_context[0]}" |
|
if len(additional_context) > 1: |
|
prompt += f"\n" + "\n".join(additional_context[1:]) |
|
return prompt |
|
|
|
def get_prompt_fix_error(implementation_plan: str, manim_code: str, error: str, additional_context: Union[str, List[str]] = None) -> str: |
|
""" |
|
Generate a prompt to fix errors in the given manim code. |
|
|
|
Args: |
|
implementation_plan (str): The implementation plan of the scene. |
|
code (str): The manim code with errors. |
|
error (str): The error message encountered. |
|
|
|
Returns: |
|
str: The formatted prompt to fix the code errors. |
|
""" |
|
prompt = _prompt_fix_error.format( |
|
implementation_plan=implementation_plan, |
|
manim_code=manim_code, |
|
error_message=error |
|
) |
|
if additional_context is not None: |
|
if isinstance(additional_context, str): |
|
prompt += f"\nAdditional context: {additional_context}" |
|
elif isinstance(additional_context, list) and additional_context: |
|
prompt += f"\nAdditional context: {additional_context[0]}" |
|
if len(additional_context) > 1: |
|
prompt += f"\n" + "\n".join(additional_context[1:]) |
|
return prompt |
|
|
|
def get_prompt_visual_fix_error(implementation: str, generated_code: str) -> str: |
|
prompt = _prompt_visual_fix_error.format( |
|
implementation=implementation, |
|
generated_code=generated_code |
|
) |
|
return prompt |
|
|
|
def get_banned_reasonings() -> List[str]: |
|
return _banned_reasonings.split("\n") |
|
|
|
def get_prompt_rag_query_generation_vision_storyboard(scene_plan: str, relevant_plugins: str) -> str: |
|
prompt = _prompt_rag_query_generation_vision_storyboard.format( |
|
scene_plan=scene_plan, |
|
relevant_plugins=relevant_plugins |
|
) |
|
return prompt |
|
|
|
def get_prompt_rag_query_generation_technical(storyboard: str, relevant_plugins: str) -> str: |
|
"""For generating RAG queries during storyboard to technical implementation stage""" |
|
prompt = _prompt_rag_query_generation_technical.format( |
|
storyboard=storyboard, |
|
relevant_plugins=relevant_plugins |
|
) |
|
return prompt |
|
|
|
def get_prompt_rag_query_generation_narration(storyboard: str, relevant_plugins: str) -> str: |
|
"""For generating RAG queries during storyboard to narration stage""" |
|
prompt = _prompt_rag_query_generation_narration.format( |
|
storyboard=storyboard, |
|
relevant_plugins=relevant_plugins |
|
) |
|
return prompt |
|
|
|
def get_prompt_rag_query_generation_code(implementation_plan: str, relevant_plugins: str) -> str: |
|
"""For generating RAG queries during technical implementation to code generation stage""" |
|
prompt = _prompt_rag_query_generation_code.format( |
|
implementation_plan=implementation_plan, |
|
relevant_plugins=relevant_plugins |
|
) |
|
return prompt |
|
|
|
def get_prompt_rag_query_generation_fix_error(error: str, code: str, relevant_plugins: str) -> str: |
|
prompt = _prompt_rag_query_generation_fix_error.format( |
|
error=error, |
|
code=code, |
|
relevant_plugins=relevant_plugins |
|
) |
|
return prompt |
|
|
|
def get_prompt_context_learning_scene_plan(examples: str) -> str: |
|
prompt = _prompt_context_learning_scene_plan.format( |
|
examples=examples |
|
) |
|
return prompt |
|
|
|
def get_prompt_context_learning_vision_storyboard(examples: str) -> str: |
|
prompt = _prompt_context_learning_vision_storyboard.format( |
|
examples=examples |
|
) |
|
return prompt |
|
|
|
def get_prompt_context_learning_technical_implementation(examples: str) -> str: |
|
prompt = _prompt_context_learning_technical_implementation.format( |
|
examples=examples |
|
) |
|
return prompt |
|
|
|
def get_prompt_context_learning_animation_narration(examples: str) -> str: |
|
prompt = _prompt_context_learning_animation_narration.format( |
|
examples=examples |
|
) |
|
return prompt |
|
|
|
def get_prompt_context_learning_code(examples: str) -> str: |
|
prompt = _prompt_context_learning_code.format( |
|
examples=examples |
|
) |
|
return prompt |
|
|
|
def get_prompt_detect_plugins(topic: str, description: str, plugin_descriptions: str) -> str: |
|
""" |
|
Generate a prompt for detecting relevant plugins based on topic and description. |
|
|
|
Args: |
|
topic (str): The video topic |
|
description (str): The video description |
|
plugin_descriptions (str): JSON string of available plugin descriptions |
|
|
|
Returns: |
|
str: The formatted prompt for plugin detection |
|
""" |
|
prompt = _prompt_detect_plugins.format( |
|
topic=topic, |
|
description=description, |
|
plugin_descriptions=plugin_descriptions |
|
) |
|
return prompt |
|
|
|
def get_prompt_animation(topic: str, description: str, additional_context: Union[str, List[str]] = None) -> str: |
|
prompt = _prompt_animation_simple.format( |
|
topic=topic, |
|
description=description |
|
) |
|
if additional_context is not None: |
|
if isinstance(additional_context, str): |
|
prompt += f"\nAdditional context: {additional_context}" |
|
elif isinstance(additional_context, list) and additional_context: |
|
prompt += f"\nAdditional context: {additional_context[0]}" |
|
if len(additional_context) > 1: |
|
prompt += f"\n" + "\n".join(additional_context[1:]) |
|
return prompt |
|
|
|
def get_prompt_animation_fix_error(text_explanation: str, manim_code: str, error: str, additional_context: Union[str, List[str]] = None) -> str: |
|
""" |
|
Generate a prompt to fix errors in the given manim code. |
|
|
|
Args: |
|
text_explanation (str): The implementation plan of the scene. |
|
code (str): The manim code with errors. |
|
error (str): The error message encountered. |
|
|
|
Returns: |
|
str: The formatted prompt to fix the code errors. |
|
""" |
|
prompt = _prompt_animation_fix_error.format( |
|
text_explanation=text_explanation, |
|
manim_code=manim_code, |
|
error_message=error |
|
) |
|
if additional_context is not None: |
|
if isinstance(additional_context, str): |
|
prompt += f"\nAdditional context: {additional_context}" |
|
elif isinstance(additional_context, list): |
|
prompt += f"\nAdditional context: {additional_context[0]}" |
|
if len(additional_context) > 1: |
|
prompt += f"\n" + "\n".join(additional_context[1:]) |
|
return prompt |
|
|
|
def get_prompt_animation_rag_query_generation(topic: str, context: str, relevant_plugins: str) -> str: |
|
if context is None: |
|
context = "" |
|
prompt = _prompt_animation_rag_query_generation.format( |
|
topic=topic, |
|
context=context, |
|
relevant_plugins=relevant_plugins |
|
) |
|
return prompt |
|
|
|
def get_prompt_animation_rag_query_generation_fix_error(text_explanation: str, error: str, code: str) -> str: |
|
prompt = _prompt_animation_rag_query_generation_fix_error.format( |
|
text_explanation=text_explanation, |
|
error=error, |
|
code=code |
|
) |
|
return prompt |