class_factory.beamer_bot package¶
Submodules¶
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:
BaseModelA 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:
- 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
class_factory.beamer_bot.beamer_prompts module¶
beamer_prompts.py¶
This module defines prompt templates for generating LaTeX Beamer presentations using large language models (LLMs). It provides both system and human message templates, as well as a composite prompt, to guide the LLM in creating structured, pedagogically sound slides for college-level lessons.
Key Components: - beamer_system_prompt: System message template for LLM context (course, standards). - beamer_human_prompt: Human message template with explicit slide structure and lesson requirements.
Usage: Import beamer_system_prompt and beamer_human_prompt for use in LLM chains or prompt construction in BeamerBot.
class_factory.beamer_bot.beamer_slides module¶
beamer_slides.py¶
Defines structured classes for robust LaTeX Beamer slide generation.
- class_factory.beamer_bot.beamer_slides.escape_latex(text: str) str[source]¶
Escape LaTeX special characters in a string. WARNING: Only use this for plain-text fields (e.g., slide titles). Do NOT use on LaTeX content, as it will break valid LaTeX code.
- class class_factory.beamer_bot.beamer_slides.Slide(*, title: str, content: str, slide_type: str | None)[source]¶
Bases:
BaseModel- title: str¶
- content: str¶
- slide_type: str | None¶
- model_config = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class class_factory.beamer_bot.beamer_slides.BeamerSlides(*, slides: List[Slide], title: str | None = None, author: str = '', institute: str = '', date: str = '\\today')[source]¶
Bases:
BaseModel- title: str | None¶
- author: str¶
- institute: str¶
- date: str¶
- model_config = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
class_factory.beamer_bot.slide_preamble module¶
slide_preamble.py¶
This module provides the LaTeX preamble used for all Beamer presentations generated by BeamerBot. It defines document class, themes, color schemes, packages, and custom commands to ensure consistent formatting and style across all slides.
Usage: Import preamble and prepend it to generated LaTeX content before saving or compiling Beamer presentations.