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
|