Video-agent / planning.py
Ani14's picture
Upload 6 files
95315db verified
"""
Planning utilities for the agentic WAN‑VACE video generator.
This module defines a simple planner that takes a high‑level concept or topic and
returns a refined text prompt and a recommended negative prompt. The planner
adds cinematic and visual descriptors to the concept to encourage more
engaging video outputs and recommends a default negative prompt to avoid
common artifacts and low‑quality renderings.
The planner can be replaced or extended with more sophisticated logic or local
LLMs if desired.
"""
from dataclasses import dataclass
from typing import Tuple
@dataclass
class Plan:
"""A dataclass representing a planned prompt and negative prompt."""
prompt: str
negative_prompt: str
def plan_from_topic(topic: str) -> Plan:
"""
Generate a refined prompt and a recommended negative prompt from a high‑level topic.
The refined prompt enriches the user's concept with cinematic descriptors and
details that tend to produce appealing vertical videos. The negative prompt
includes terms that discourage common undesirable artifacts.
Parameters
----------
topic: str
A short description of what the user wants in the video.
Returns
-------
Plan
An object containing a refined prompt and a negative prompt.
"""
# Base descriptors to enrich the concept. These tokens help guide the model
# towards vibrant, cinematic compositions. You can customise these tokens
# depending on your aesthetic preferences.
base_descriptors = (
"cinematic, dynamic motion, rich details, warm lighting, volumetric lighting, "
"bokeh, warm sun rim light, tracking shot, shallow depth of field, vertical 9:16"
)
# Compose the refined prompt
refined_prompt = f"{topic}, {base_descriptors}"
# Recommended negative prompt to avoid low‑quality outputs. Users can
# override this by supplying their own negative prompt.
recommended_negative = (
"blurry, lowres, artifacts, distorted anatomy, dull colors, washed out, "
"overexposed, underexposed, jitter, bad compression"
)
return Plan(prompt=refined_prompt, negative_prompt=recommended_negative)