t2m / task_generator /__init__.py
thanhkt's picture
Upload 75 files
9b5ca29 verified
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