Files
2026-07-13 13:08:41 +08:00

32 lines
953 B
Python

from typing import List
from pydantic import BaseModel, Field, field_validator
from constants.presentation import MAX_NUMBER_OF_SLIDES, MAX_OUTLINE_CONTENT_WORDS
from utils.outline_limits import normalize_outline_content
class SlideOutlineModel(BaseModel):
content: str = Field(
...,
description=f"Markdown content for the slide. Maximum {MAX_OUTLINE_CONTENT_WORDS} words.",
)
@field_validator("content", mode="before")
@classmethod
def limit_content_words(cls, value):
return normalize_outline_content(value)
class PresentationOutlineModel(BaseModel):
slides: List[SlideOutlineModel] = Field(
description="List of slide outlines",
max_length=MAX_NUMBER_OF_SLIDES,
)
def to_string(self):
message = ""
for i, slide in enumerate(self.slides):
message += f"## Slide {i+1}:\n"
message += f" - Content: {slide} \n"
return message