from pydantic import BaseModel, create_model, Field from typing import List from functools import lru_cache # Input 정의 class SubtitlePromptInput(BaseModel): marketing_intelligence : str = Field(..., description="마케팅 인텔리전스 정보") pitching_tag_list_string : str = Field(..., description="필요한 피칭 레이블 리스트 stringify") customer_name : str = Field(..., description = "마케팅 대상 사업체 이름") detail_region_info : str = Field(..., description = "마케팅 대상 지역 상세") language : str = Field(default="Korean", description="자막 출력 언어 (Korean, English, Chinese, Japanese, Thai, Vietnamese)") industry : str = Field(default="", description = "업종 분류 (stay|restaurant|cafe|salon|clinic|fitness|academy|attraction). 통합 프롬프트가 이 값으로 내부 분기") # Output 정의 class PitchingOutput(BaseModel): pitching_tag: str = Field(..., description="피칭 레이블") pitching_data: str = Field(..., description = "피칭 내용물") class SubtitlePromptOutput(BaseModel): pitching_results: List[PitchingOutput] = Field(..., description = "피칭 리스트") @classmethod @lru_cache() def __class_getitem__(cls, n: int): return create_model( cls.__name__, pitching_results=( List[PitchingOutput], Field(..., min_length=n, max_length=n, description="피칭 리스트") ), )