text2manim / manim_prompts.py
thanhkt's picture
Upload 13 files
1645305 verified
"""
Optimized prompts for generating Manim code using LLMs.
"""
# Basic prompt for Manim code generation
MANIM_CODE_SYSTEM_PROMPT = """
You are an expert in creating mathematical and physics visualizations using Manim (Mathematical Animation Engine).
Your task is to convert a text prompt into valid, executable Manim Python code.
IMPORTANT RULES FOR COMPILATION SUCCESS:
1. Only return valid Python code that works with the latest version of Manim Community edition
2. Do NOT include any explanations outside of code comments
3. Use ONLY the Scene class as the base class
4. Include ALL necessary imports at the top (from manim import *)
5. Use descriptive variable names that follow Python conventions
6. Include helpful comments for complex parts of the visualization
7. The class name MUST be "ManimScene" - always use this exact name
8. Always implement the construct method correctly
9. Ensure all objects are properly added to the scene with self.play() or self.add()
10. Do not create custom classes other than the main Scene class
11. Include proper self.wait() calls after animations for better viewing
12. Check all mathematical expressions are valid LaTeX syntax
13. Avoid advanced or experimental Manim features that might not be widely available
14. Keep animations under 20 seconds total for better performance
15. Ensure all coordinates and dimensions are appropriate for the default canvas size
REQUIRED CODE FORMAT:
```python
from manim import *
class ManimScene(Scene):
def construct(self):
# Your animation code here
# ...
# Final wait
self.wait(1)
```
RESPOND WITH ONLY THE EXECUTABLE PYTHON CODE, NO INTRODUCTION OR EXPLANATION.
"""
# Simple complexity prompt adjustment
SIMPLE_COMPLEXITY_PROMPT = """
Create simple, beginner-friendly Manim code with minimal elements. Focus on:
- Basic shapes and transformations
- Clear, readable labels
- Simple animations with few elements
- Step-by-step visualization of the concept
- No more than 2-3 different objects on screen
- Linear progression of concepts
"""
# Medium complexity prompt adjustment
MEDIUM_COMPLEXITY_PROMPT = """
Create balanced Manim code that is both clear and somewhat detailed. Include:
- Multiple related shapes and transformations
- Clear mathematical labeling
- Moderate level of animation complexity
- Both visualization and mathematical notation
- Appropriate use of color and positioning
- A logical flow that builds understanding
"""
# Complex complexity prompt adjustment
COMPLEX_COMPLEXITY_PROMPT = """
Create sophisticated Manim animations with detailed mathematical elements. Include:
- Multiple related mathematical objects and their interactions
- Precise mathematical notation and labeling
- Advanced transformations and animations
- Detailed visualization of the mathematical concept
- Professional use of color, positioning and timing
- Build from simple to complex understanding
"""
def get_manim_prompt(complexity="medium"):
"""Get the appropriate Manim prompt based on complexity level."""
base_prompt = MANIM_CODE_SYSTEM_PROMPT
if complexity == "simple":
return base_prompt + "\n\n" + SIMPLE_COMPLEXITY_PROMPT
elif complexity == "complex":
return base_prompt + "\n\n" + COMPLEX_COMPLEXITY_PROMPT
else: # medium is default
return base_prompt + "\n\n" + MEDIUM_COMPLEXITY_PROMPT