Skip to the content
Krizaka Blog
All posts

October 16, 2026 · 7 min read

The anatomy of an AI prompt: what each added line really changes

A six-word prompt, then three layers of detail, on my Mac with the same seed. What gets better, what gets worse, what a negative prompt can do, and what I didn't prove.

By Oussama AbidLire en français

I had the story in my head before I made the pictures. You type six words, the model gives you a three-legged player, and you learn you should have written a better prompt. It's the story you read everywhere. I only wanted to illustrate it.

The model didn't play along. What it showed me was less dramatic, and more useful. So here is what I actually got, with the prompt, the seed and the time under every picture.

A prompt is an order you give a cook

Before the pictures, a mental picture. When you order "a plate of pasta", the cook decides everything else: the sauce, the plate, the portion. They fill in the blanks. An image model does the same. Whatever you don't say, it chooses for you.

The seed is where the randomness starts. With the same seed and the same prompt, the model makes exactly the same picture again. That's what lets me change one thing at a time and see its effect.

Level 0: six words

The prompt: a basketball player dunking in snow. The kind of line you type without thinking.

A basketball player in a navy jersey dunking in a snowy park, a hill and trees behind
Level 0, FLUX.2 [klein] 4B. Two arms, two legs, a hoop, a net. The letters on the jersey spell nothing.
How this was made
Model
FLUX.2 [klein] 4B (Q8_0 GGUF) · Apache-2.0
Engine
stable-diffusion.cpp (sd-cli) on Metal, 4 steps, guidance 1.0, Euler, 1024×1024
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
a basketball player dunking in snow
Seed
2026
Size
1024×1024
Time
77 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.

No monster. FLUX.2 [klein] 4B, an open model with a permissive licence, made a believable dunk in the snow from six words. What I hadn't specified, it decided: a navy jersey, a hill, no particular framing. Its one visible miss is a classic: the letters on the jersey don't form a word.

Levels 1 to 3: saying what you actually mean

At each level I added one family of detail to the previous one. Same model, same seed, same size. Between 77 and 82 seconds a picture.

A basketball player in a red jersey leaping at a hoop in an indoor gym
Level 1, the player and the move: red jersey, both legs visible, ball above the rim.
How this was made
Model
FLUX.2 [klein] 4B (Q8_0 GGUF) · Apache-2.0
Engine
stable-diffusion.cpp (sd-cli) on Metal, 4 steps, guidance 1.0, Euler, 1024×1024
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
A professional male athletic basketball player in a red numbered jersey leaping gracefully toward the rim, one arm extended with the ball above the hoop, both legs visible and anatomically correct, a steel rim with a white net
Seed
2026
Size
1024×1024
Time
80 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.
A player in a red jersey dunking on an outdoor asphalt court dusted with snow
Level 2, the place: an outdoor court, fresh snow, flakes falling.
How this was made
Model
FLUX.2 [klein] 4B (Q8_0 GGUF) · Apache-2.0
Engine
stable-diffusion.cpp (sd-cli) on Metal, 4 steps, guidance 1.0, Euler, 1024×1024
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
A professional male athletic basketball player in a red numbered jersey leaping gracefully toward the rim, one arm extended with the ball above the hoop, both legs visible and anatomically correct, a steel rim with a white net, on an outdoor asphalt court dusted with fresh snow, gentle snowflakes drifting through cold winter air, breath visible in the cold
Seed
2026
Size
1024×1024
Time
81 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.
A player in a red jersey dunking on a snowy court, overcast light, background blurred
Level 3, camera and light: medium shot, 35 mm, f/2.2, overcast sky.
How this was made
Model
FLUX.2 [klein] 4B (Q8_0 GGUF) · Apache-2.0
Engine
stable-diffusion.cpp (sd-cli) on Metal, 4 steps, guidance 1.0, Euler, 1024×1024
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
A professional male athletic basketball player in a red numbered jersey leaping gracefully toward the rim, one arm extended with the ball above the hoop, both legs visible and anatomically correct, a steel rim with a white net, on an outdoor asphalt court dusted with fresh snow, gentle snowflakes drifting through cold winter air, breath visible in the cold, cinematic medium shot, captured on a 35mm lens, f/2.2 shallow depth of field, natural soft overcast daylight, sharp focus
Seed
2026
Size
1024×1024
Time
82 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.

Level 1 surprised me. I described the player in detail, and the snow disappeared. The model put him in a brightly lit indoor hall. I hadn't said where, and by focusing on the player I'd left the setting blank. The cook filled the blank. That's the real lesson of this post: adding detail in one place can move something somewhere else.

Level 2 brought the snow back and put the court outdoors, because I wrote it.

Level 3 changed the framing and softened the background. The content stayed put. The jersey letters are still unreadable, and the backboard grew an odd second backboard underneath. As for the light, it was already grey at level 2, since the scene was in the snow. So I can't say my words about light changed anything.

The full prompts are under each picture, in "How this was made". Read in order, they follow the usual recipe: subject, then setting, then camera.

The negative prompt, and the model that ignores it

The usual recipe has a fourth step: the negative prompt, the list of what you don't want (deformed, extra limbs, bad anatomy, low quality). To see why it doesn't work everywhere, we need to talk about guidance.

Guidance is how strongly the model obeys the text. To apply it, many models compute two versions at every step, one that follows the prompt and one that follows the negative prompt, then steer away from the second. FLUX.2 [klein] runs at a guidance of 1: it skips that second pass. So the negative prompt is never read, and I can't show that step on this model. That's also why, with a model like this one, exclusions like "no text, no logos" have to be written into the positive prompt.

Stable Diffusion 1.5, older and smaller, uses a guidance of 7 and does read the negative prompt. And there, the six-word prompt does produce the promised defects. Left to right: level 0, level 3 without a negative, level 3 with one. 512×512, seed 2026, 63 to 68 seconds each.

A basketball player in white dunking in snow, one red shoe and one grey shoe, a lone pole beside him
SD 1.5, level 0: two different shoes, a pole holding nothing.
How this was made
Model
Stable Diffusion 1.5 · CreativeML OpenRAIL-M
Engine
stable-diffusion.cpp (sd-cli) on Metal, 20 steps, guidance 7, Euler a, 512×512
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
a basketball player dunking in snow
Seed
2026
Size
512×512
Time
65 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.
A player in a red jersey under a doubled hoop, an orange slab under the backboard
SD 1.5, level 3 without a negative: the hoop is doubled and melts into an orange slab.
How this was made
Model
Stable Diffusion 1.5 · CreativeML OpenRAIL-M
Engine
stable-diffusion.cpp (sd-cli) on Metal, 20 steps, guidance 7, Euler a, 512×512
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
A professional male athletic basketball player in a red numbered jersey leaping gracefully toward the rim, one arm extended with the ball above the hoop, both legs visible and anatomically correct, a steel rim with a white net, on an outdoor asphalt court dusted with fresh snow, gentle snowflakes drifting through cold winter air, breath visible in the cold, cinematic medium shot, captured on a 35mm lens, f/2.2 shallow depth of field, natural soft overcast daylight, sharp focus
Seed
2026
Size
512×512
Time
63 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.
A player in a red jersey reaching for a single hoop on a bent pole, mismatched shoes
SD 1.5, level 3 with a negative: one hoop, a bent pole, shoes still mismatched.
How this was made
Model
Stable Diffusion 1.5 · CreativeML OpenRAIL-M
Engine
stable-diffusion.cpp (sd-cli) on Metal, 20 steps, guidance 7, Euler a, 512×512
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Prompt
A professional male athletic basketball player in a red numbered jersey leaping gracefully toward the rim, one arm extended with the ball above the hoop, both legs visible and anatomically correct, a steel rim with a white net, on an outdoor asphalt court dusted with fresh snow, gentle snowflakes drifting through cold winter air, breath visible in the cold, cinematic medium shot, captured on a 35mm lens, f/2.2 shallow depth of field, natural soft overcast daylight, sharp focus
Negative prompt
deformed, extra limbs, bad anatomy, glitch, jitter, low quality
Seed
2026
Size
512×512
Time
68 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded
Note
Made today with the engine's command line (sd-cli), not through an Orazaka Studio: there is no run id. Same seed for every picture of the ladder.

With the negative prompt there's only one hoop. It's tempting to call that proof it works. I can't. With one picture per prompt, the change could just as well be chance. Proving it would take twenty seeds and a count. I didn't do that.

A checklist to keep at hand

I use a five-point reminder when I write a prompt: subject, action, camera, light, and what to exclude. It's a habit of mine, nothing more. Here's what the pictures above really say about it:

To specifyExampleWhat these pictures show
SubjectWho, the outfit, the postureLevel 1 fixed the jersey and the pose, and let the model pick the place.
ActionWhat moves, what touches what"Dunking" was enough from level 0. A still picture doesn't show motion.
CameraFocal length, aperture, framingLevel 3 changed the framing and blurred the background.
LightSource, materialsCan't be isolated: the light was already grey at level 2.
ExclusionsWhat you don't wantIgnored by FLUX.2 [klein]. Inconclusive on SD 1.5 with one seed.

What the model actually receives

Nobody should have to remember focal lengths to get a good picture. You can take what a person types and wrap it in a structured direction before it reaches the model. That's what we do in Orazaka, the open-source engine I'm building. The prompt under the picture below is exactly what the model received, in this order: the person's subject first, then the direction (light, lens, materials, palette), then the exclusions, written into the positive prompt because this model doesn't read a negative one.

A man in a white djellaba pouring mint tea from a silver teapot inside a Berber tent at golden hour
A short subject wrapped in a golden-hour direction. The full prompt, as the model received it, is under the picture.
How this was made
Model
FLUX.2 [klein] 4B (Q8_0 GGUF) · Apache-2.0
Engine
stable-diffusion.cpp on Metal, 4 steps, guidance 1.0
Machine
MacBook Pro, Apple M1 Max, 64 GB (Metal)
Through
Orazaka Studio run on dev.orazaka.com
Studio
art-golden-hour
Prompt
A man in a crisp white djellaba pours mint tea from a silver teapot held high above a small engraved tea glass, a long thin amber stream in the air, inside a Berber tent in the Sahara, fresh mint and almonds on a weathered wooden table. Editorial lifestyle photograph at golden hour: warm low sunlight raking from the side, long soft shadows, dust motes glowing in the air. 85mm lens at f/2, shallow depth of field, natural skin and fabric texture, rich tactile materials — weathered wood, wool, brass, linen. Warm palette of amber, terracotta, saffron and sand, gentle film grain, refined composition with breathing space. No text, no lettering, no logos.
Seed
20261011
Size
1024×1280
Time
120 s, as recorded by the run
Cost
no cash cost (own hardware; electricity not metered)
Orazaka run
not recorded

The same prompt was used for a five-second clip, made by a hosted video model:

Hosted text to video: 134 s, $0.60. · 0.4 MB
How this was made
Model
Wan 2.2 T2V A14B · Apache-2.0
Engine
hosted: DigitalOcean serverless inference (steps and guidance not exposed)
Machine
hosted by the provider (not our machine)
Through
orazaka video --model wan2-2-t2v-a14b, routed by Orazaka
Prompt
Extreme close-up, slow motion: a stream of amber mint tea pours from a silver teapot held high into a small engraved glass, steam curling through a shaft of golden-hour light inside a Berber tent, dust motes floating, shallow depth of field, anamorphic lens flare, 35mm film grain, cinematic color grade.
Seed
20261011
Size
832×480 · 16 fps, 5.06 s
Time
134 s, as recorded by the run
Cost
US$0.60 (the provider's price)
Orazaka run
25948442-7c68-4e66-94d6-39cd8b96438d
Sound
music bed made by Orazaka (Studio video-sound, ACE-Step 1.5, MIT), -14 LUFS, AAC

What you can take away

A prompt doesn't need to be long. It needs to say what matters to you, because the model will decide everything else. When you add a detail, look at what moved elsewhere. And before you write a negative prompt, check that your model reads it.

What I didn't measure: variance (another seed could flip every conclusion), quality scored by anyone but me, and video, for lack of a plain-versus-detailed pair of clips. A hosted clip costs $0.60 and I didn't spend it on this. The times and prices of these models are in the post about costs.

Subscribe to the feed to follow new posts

Related posts

October 16, 2026 · 8 min read

What it really costs to generate images and video: my bills, measured

A Mac, a hosted API and a rented H100, on the same pictures and clips. The seconds, the dollars, the mistakes that cost money, and a small calculation for when renting a GPU pays off.

  • Costs
  • Measurements
  • Orazaka

October 16, 2026 · 6 min read

An AI platform on one Mac: what breaks, what Spring AI 2 changed, and where the laptop gives up

A Mac out of breath, a ClassCastException that killed the chat, models that became database rows. What I learned running Orazaka on a laptop.

  • Orazaka
  • AI

October 16, 2026 · 4 min read

Why I build sovereign AI in Montréal

A GPU rented in Montréal, a Quebec privacy law, and three plain questions to ask any AI tool. What sovereign means at Krizaka, what it costs, and what is still unsolved.

  • Sovereignty
  • AI
  • Montréal