SYSTEM PROMPT
# The System Prompt — Design Rationale The system prompt lives at `src/realism_prompt/system_prompt.py`. This doc explains *why* each section exists and which failure modes it defends against. ## Section: "What photo-realistic means here" I2V diffusion models trained on captioned video clips learn that words like "cinematic", "stunning", "8k", "masterpiece" co-occur with low-quality upscaled stock footage and AI-tagged Stable Diffusion samples. Banning these words and *replacing* them with concrete optical and lighting vocabulary (focal length, T-stop, color temperature, dolly speed) is the single biggest realism unlock. The prompt enumerates the bans explicitly so the model doesn't sneak them back in. ## Section: "Length scaling rules" Most LLMs default to a familiar shape — three short paragraphs — regardless of input length. This destroys long briefs. The rules force: - Short brief (≤ 25 words): expand modestly (80–140 words). - Medium brief (≤ 100 words): expand to a single dense scene (180–320). - Long brief (≤ 400 words): roughly 1.0–1.5x growth. - Very long brief (> 400 words): preserve length within 0.9–1.4x, and *preserve every named subject, location, action, prop, and emotional beat*. The matching code lives in `realism_prompt.scaling.expected_word_range` so tests can assert the model actually obeyed. ## Section: "Presets provided by the caller" The caller's choice of lens / lighting / grain / tone / motion is injected into the user message as labeled lines. The prompt instructs the model to honor preset fragments **literally** — paste them in, do not paraphrase. This is what makes preset choice deterministic enough for series work (every shot of a music video looking like the same DP shot it). ## Section: "Output format (strict)" We force `response_format: {"type": "json_object"}` on the API call AND restate the JSON schema in the system prompt. Redundant, but combined they eliminate fence-wrapped output, leading prose ("Here is the JSON:"), and trailing commentary — all of which I've observed in the wild. The engine has a `_salvage_json` recovery for the rare case the model still wraps the JSON in ` ``` ` fences. If even that fails, the engine falls back to the local synthesiser rather than returning garbage. ## Section: "Negative prompt guidance" The default negative is in `realism_prompt.negative._BASE_NEGATIVES`. The prompt instructs the model to *extend* this with scene-specific negatives (e.g. for a night scene: "daylight, blue sky, sun"), not replace it. ## Section: "Hard rules" - Strict JSON, no leading/trailing text. - Do not invent characters. - Refuse rather than censor illegal content. - Always third-person, descriptive, present-tense. The present-tense rule matters for I2V: many models bias toward photographing a *moment* when given present-tense prompts, and toward montage / summary when given past-tense.
fill the variables
This prompt has 1 variable. Pro fills them into a ready-to-paste prompt for you — no manual find-and-replace.
{"type": "json_object"}
Unlock with Pro →when to use it
Community prompt sourced from the open-source GitHub repo SiddharthFulia/realism-prompt-engine (MIT). A "SYSTEM PROMPT" style prompt — adapt the placeholders and specifics to your task. Imported as-is and not independently retested here, so check the output before relying on it.
tags
roleplaycommunitygeneral
source
SiddharthFulia/realism-prompt-engine · MIT