class_factory.beamer_bot package
class_factory.beamer_bot.BeamerBot module
BeamerBot Module
The BeamerBot module provides a framework for generating structured LaTeX Beamer slides based on lesson objectives, readings, and prior lesson presentations. By using a language model (LLM), BeamerBot automates the process of slide creation, ensuring a consistent slide structure while allowing for custom guidance and validation.
Key Functionalities
Automated Slide Generation: - BeamerBot generates a LaTeX Beamer presentation for each lesson, incorporating:
A title page with consistent author and institution information
“Where We Came From” and “Where We Are Going” slides
Lesson objectives with highlighted action verbs (e.g., textbf{Analyze} key events)
Discussion questions and in-class exercises
Summary slides with key takeaways
Previous Lesson Integration: - Retrieves and references prior lesson presentations to maintain consistent formatting and flow - Preserves author and institution information across presentations
Prompt Customization and Validation: - Supports custom prompts and specific guidance for tailored slide content - Validates generated LaTeX for correct formatting and content quality - Provides multiple retry attempts if validation fails
Dependencies
This module requires:
langchain_core: For LLM chain creation and prompt handling
pathlib: For file path management
Custom utility modules for: - Document loading (load_documents) - LaTeX validation (llm_validator) - Response parsing (response_parsers) - Slide pipeline utilities (slide_pipeline_utils)
Usage
Initialize BeamerBot: ```python beamer_bot = BeamerBot(
lesson_no=10, llm=llm, course_name=”Political Science”, lesson_loader=lesson_loader, output_dir=output_dir
Generate Slides:
`python # Optional specific guidance guidance = "Focus on comparing democratic and authoritarian systems" slides = beamer_bot.generate_slides(specific_guidance=guidance) `
Save the Slides:
`python beamer_bot.save_slides(slides) `
- class class_factory.beamer_bot.BeamerBot.BeamerBot(lesson_no: int, llm, course_name: str, lesson_loader: LessonLoader, output_dir: Path | str = None, verbose: bool = False, slide_dir: Path | str = None, lesson_objectives: dict = None)[source]
Bases:
BaseModel
A class to generate LaTeX Beamer slides for a specified lesson using a language model (LLM).
BeamerBot automates the slide generation process, creating structured presentations based on lesson readings, objectives, and content from prior presentations when available. Each slide is crafted following a consistent format, and the generated LaTeX is validated for correctness.
- lesson_no
Lesson number for which to generate slides.
- Type:
int
- llm
Language model instance for generating slides.
- course_name
Name of the course for slide context.
- Type:
str
- lesson_loader
Loader for accessing lesson readings and objectives.
- Type:
LessonLoader
- output_dir
Directory to save the generated Beamer slides.
- Type:
Path
- slide_dir
Directory containing existing Beamer slides.
- Type:
Optional[Path]
- llm_response
Stores the generated LaTeX response from the LLM.
- Type:
str
- prompt
Generated prompt for the LLM.
- Type:
str
- lesson_objectives
user-provided lesson objectives if syllabus not available.
- Type:
optional, dict
- generate_slides(specific_guidance
str = None, latex_compiler: str = “pdflatex”) -> str: Generates Beamer slides as LaTeX code for the specified lesson.
- save_slides(latex_content
str) -> None: Saves the generated LaTeX content to a .tex file.
- set_user_objectives(objectives
Union[List[str], Dict[str, str]]): Initialize user-defined lesson objectives, converting lists to dictionaries if needed. Inherited from BaseModel.
- Internal Methods:
- _format_readings_for_prompt() -> str:
Combines readings across lessons into a single string for the LLM prompt.
- _find_prior_lesson(lesson_no: int, max_attempts: int = 3) -> Path:
Finds the most recent prior lesson’s Beamer file to use as a template.
- _load_prior_lesson() -> str:
Loads the LaTeX content of a prior lesson’s Beamer presentation as a string.
- _generate_prompt() -> str:
Constructs the LLM prompt using lesson objectives, readings, and prior lesson content.
- _validate_llm_response(generated_slides: str, objectives: str, readings: str, last_presentation: str,
prompt_specific_guidance: str = “”, additional_guidance: str = “”) -> Dict[str, Any]:
Validates the generated LaTeX for quality and accuracy.
- generate_slides(specific_guidance: str = None, lesson_objectives: dict = None, latex_compiler: str = 'pdflatex') str [source]
Generate LaTeX Beamer slides for the lesson using the language model.
- Parameters:
specific_guidance (str, optional) – Custom instructions for slide content and structure
lesson_objectives (dict, optional) – Override default objectives with custom ones Format: {lesson_number: “objective text”}
latex_compiler (str, optional) – LaTeX compiler to use for validation. Defaults to “pdflatex”
- Returns:
Complete LaTeX content for the presentation, including preamble
- Return type:
str
- Raises:
ValueError – If validation fails after maximum retry attempts
FileNotFoundError – If required prior lesson files cannot be located
Note
The method includes multiple validation steps: 1. Content quality validation through LLM 2. LaTeX syntax validation using specified compiler 3. Up to 3 retry attempts if validation fails