25 lines
1.7 KiB
Python
25 lines
1.7 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Literal, Optional
|
|
|
|
GENRE_VALUES = Literal["kpop", "pop", "ballad", "hip-hop", "rnb", "edm", "jazz", "rock"]
|
|
|
|
# Input 정의
|
|
class LyricPromptInput(BaseModel):
|
|
customer_name : str = Field(..., description = "마케팅 대상 사업체 이름")
|
|
region : str = Field(..., description = "마케팅 대상 지역")
|
|
detail_region_info : str = Field(..., description = "마케팅 대상 지역 상세")
|
|
marketing_intelligence_summary : Optional[str] = Field(None, description = "마케팅 분석 정보 보고서")
|
|
language : str= Field(..., description = "가사 언어")
|
|
genre : str = Field(default="", description = "지정된 음악 장르 (kpop|pop|ballad|hip-hop|rnb|edm|jazz|rock). 비어있으면 GPT가 무드에 맞는 장르를 자유롭게 추천")
|
|
exclude_genre : str = Field(default="", description = "재생성 시 직전에 사용된 장르. genre가 비어있는 경우(자동 선택) 이 장르는 추천에서 제외")
|
|
industry : str = Field(default="", description = "업종 분류 (stay|restaurant|cafe|salon|clinic|fitness|academy|attraction). 통합 프롬프트가 이 값으로 내부 분기")
|
|
|
|
# Output 정의
|
|
class LyricPromptOutput(BaseModel):
|
|
lyric: str = Field(..., description="생성된 가사")
|
|
suno_prompt: str = Field(..., description="Suno AI용 프롬프트")
|
|
recommended_genre: GENRE_VALUES = Field(
|
|
...,
|
|
description="가사에 사용된(또는 가장 잘 맞는) 음악 장르. genre 입력이 주어졌다면 그 값을 그대로 반환하고, "
|
|
"비어있었다면 exclude_genre를 제외한 나머지 중 가사 무드에 가장 잘 맞는 장르를 직접 선택해 반환",
|
|
) |