File size: 684 Bytes
6835659
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from typing import Any, Dict

LIST_FIELDS = {
    "primary_entities",
    "secondary_entities",
    "visual_attributes",
    "style",
    "mood_emotion",
    "narrative_tone",
    "audio_intent",
    "audio_elements",
    "must_include",
    "must_avoid",
}


def normalize_plan_fields(data: Dict[str, Any]) -> Dict[str, Any]:
    """
    Ensures all list-based semantic fields are lists,
    even if LLM returns a single string.
    """
    for field in LIST_FIELDS:
        if field in data:
            value = data[field]
            if isinstance(value, str):
                data[field] = [value]
            elif value is None:
                data[field] = []
    return data