gdamian.pl
← Wszystkie wpisy
10 min

Jak pisać prompty do generowania obrazów: struktura promptu, 9 warstw i 4 warianty tego samego kadru 

Damian GębalaAutor

Prompt do generowania obrazu to specyfikacja, a nie magiczne słowo. Działa wtedy, gdy opisujesz co ma być na kadrze, jak ma być zrobione i czego nie chcesz widzieć. Poniżej masz gotową strukturę: dziewięć warstw promptu, różnice między generatorami i cztery warianty tego samego kadru z jednego promptu.

Prompt to specyfikacja, a nie hasło

Dokumentacja Midjourney definiuje prompt najprościej, jak się da: „A prompt is simply the text or phrase you use to tell Midjourney what kind of image or video you want”. Brzmi banalnie, ale stąd wziął się cały problem. Generator nie domyśli się, że chcesz portretu w dobrym świetle, a nie zdjęcia katalogowego. Nie wie, że klient ma kolory marki, a właściciel sklepu nie chce ilustracji, tylko realną fotografię.

Różnica między promptem opartym na przeczuciu a specyfikacją widać na przykładzie z dokumentacji. Wersja pierwsza: „Show me a picture of lots of blooming California poppies, make them bright, vibrant orange, and draw them in an illustrated style with colored pencils”. Wersja druga: „Colored pencil illustration of bright orange California poppies”. Ta druga jest krótsza, a daje modelowi wszystko, czego potrzebuje: medium, kolor i temat. Mniej tekstu, lepszy wynik.

Ten sam mechanizm działa przy promptach do tekstu, tyle że tam do opisu dochodzi rola, format i odbiorca. Jeśli nie pisałeś jeszcze promptów do modeli tekstowych, zacznij od siedmiu elementów dobrego promptu do AI. Do obrazów lista wygląda inaczej i dlatego warto ją znać osobno.

Siedem warstw, które wymienia dokumentacja Midjourney

Midjourney publikuje wprost listę obszarów do rozważenia. W nawiasach dokumentacja podaje przykładowe wartości, które możesz wziąć dosłownie.

WarstwaPytaniePrzykłady z dokumentacji
SubjectKto albo co?person, animal, character, location, object
MediumW jakiej formie?photo, painting, illustration, sculpture, doodle, tapestry
EnvironmentGdzie?indoors, outdoors, on the moon, underwater, in the city
LightingJaki rodzaj światła?soft, ambient, overcast, neon, studio lights
ColorW jakiej tonacji?vibrant, muted, bright, monochromatic, pastel
MoodJaki nastrój?playful, calm, gloomy, energetic
CompositionJak skadrowane?portrait, headshot, closeup, birds-eye view

Do tego dokumentacja dorzuca dwie praktyczne wskazówki. Pierwsza: zamiast „big” użyj „huge”, „gigantic” albo „enormous”. Druga: forma mnoga bywa nieprecyzyjna, więc zamiast „cats” napisz „three cats”, a zamiast „birds” użyj „flock of birds”. Model liczy lepiej niż szacuje.

Dwie warstwy, których ta lista nie obejmuje

Siedem to liczba z dokumentacji. Do praktycznej specyfikacji dodałbym dwie warstwy, bo bez nich prompty regularnie zawodzą przy zastosowaniach biznesowych.

Wykluczenia. Dokumentacja OpenAI radzi wprost, żeby stanowić o wykluczeniach wprost: „State exclusions such as unwanted text, logos, or watermarks”. Znaki wodne i przypadkowe logotypy to najczęstszy powód, dla którego wygenerowana grafika nie nadaje się do druku.

Tekst w obrazie i wolne miejsce na tekst. Jeśli w kadrze ma być napis, warto podać go w cudzysłowie i opisać typografię, tak jak robi to dokumentacja OpenAI. Jeśli natomiast grafika ma przyjmować nagłówek w DTP, zostaw puste pole. Adobe Firefly ma do tego gotowe prompty, np. „Outdoor café scene with two friends talking at a table, leaving open space on the right for a headline”. W praktyce to jedna z najbardziej niedocenianych warstw: generujesz tło, ale nie wiesz, gdzie padnie tytuł.

Dlatego w tym artykule mówię o dziewięciu warstwach. Siedem z nich ma Midjourney w dokumentacji, dwie doszły z praktyki i z innych generatorów. To zestawienie, nie cytat.

Krótko czy długo - zależy od modelu

Tu dokumentacje się nie zgadzają i warto to powiedzieć wprost, zamiast udawać, że istnieje jedna dobra reguła.

  • Midjourney radzi krótko. „Short and simple prompts typically generate the best images with Midjourney. […] Avoid making long lists or detailed instructions; these can confuse the process.”
  • OpenAI wręcz przeciwnie. „For complex requests, organize the prompt as scene, subject, details, and constraints, using labeled sections.” Przykłady w dokumentacji mają po kilkanaście linii.
  • Google Gemini każe być coraz konkretniejszym. „Be hyper-specific: The more detail you provide, the more control you have.”
  • Adobe Firefly przy modelach własnych odwrotnie odradza opisywania stylu. „Focus on describing the specific visual you want to create rather than the style itself”, bo model zna już Twoją estetykę z treningu.

Praktyczna konsekwencja: jedna reguła długości nie istnieje. Jeśli pracujesz w Midjourney, wygrywasz krótkimi frazami. Jeśli w GPT Image albo Gemini, wygrywasz rozbudowanym briefem z opisanymi sekcjami. Przeniesienie promptu z jednego narzędzia do drugiego bez przeróbki to najczęstszy powód rozczarowania wynikiem.

Negatyw: trzy różne implementacje

Słowo „nie” działa w generatorach na trzy zupełnie różne sposoby.

W Midjournie --no to nie osobne pole, tylko waga minus 0,5. Dokumentacja: „Using the --no parameter is the same as using a -0.5 weight”. Użycie: „still life gouache painting --no fruit, apple, pear”. W Stable Diffusion przez AUTOMATIC1111 jest prawdziwe, osobne pole negative prompt, w którym wpisujesz rzeczy, których model nie ma tworzyć.

Gemini i OpenAI nie mają negatywu jako składni. Gemini zaleca „semantic negative prompts”, czyli opis pozytywny: zamiast „no cars” piszesz „an empty, deserted street with no signs of traffic”. Midjourney kieruje się tą samą zasadą ogólną: „Describe what you do want instead of what you don't. If you mention a party with ‘no cake’, a cake might still appear.”

Jest jeszcze pułapka, o której dokumentacja Midjourney pisze wyraźnie. System moderacji czyta każde słowo w --no osobno, więc zapis „--no modern clothing” zostanie odczytany jako „no modern” oraz „no clothing” i może przypadkiem uruchomić ostrzeżenie. W takiej sytuacji dokumentacja radzi wpisać właściwy rodzaj ubioru do samego promptu, zamiast blokować go negatywem.

Wagi i składnia są nieprzenośne

Jeśli przenosisz wiedzę techniczną z promptów tekstowych, łatwo założyć, że składnia wag jest wspólna. Nie jest.

Midjourney używa podwójnego dwukropka: „You add a double colon :: between the different ideas in your prompt. This acts like a divider.” Waga domyślnie wynosi 1, w wersjach 1, 2 i 3 można użyć tylko liczb całkowitych, od wersji 4 również ułamkowych. Jest twarde ograniczenie: suma wszystkich wag musi być dodatnia, więc „still life painting:: fruit::-2” zwróci błąd. Dwa wąskie szczegóły, które oszczędzają godzinę prób: przed :: nie ma spacji, a parametry zawsze trafiają na koniec promptu.

AUTOMATIC1111 używa nawiasów. Nawias pojedynczy podnosi wagę słowa o czynnik 1,1, podwójny o 1,21, a zapis (tekst:1.4) ustawia wagę ręcznie. Działa też BREAK, który zaczyna nowy fragment, oraz <lora:nazwa:mnożnik> do dokładania modeli.

OpenAI wprost odrzuca całą tradycję znaków specjalnych: „Choose the format that makes the requirements easiest to read and update rather than relying on special syntax.” Prompt może być krótkim zdaniem, akapitem, listą albo strukturą podobną do JSON-a. Liczy się czytelność, nie składnia.

Parametry, które dokłada się poza promptem

W Midjourney duża część kontroli jest poza polem tekstowym, w parametrach na końcu linii.

ParametrDomyślnieZakres i uwagi
--ar1:1proporcje; dziesiętne są zabronione, używaj 139:100 zamiast 1.39:1
--s (stylize)100od 0 do 1000
--q (quality)1w wersji 7 wartości 2 lub 4, czyli 2× i 4× więcej GPU; wartości 3 nie ma
--c (chaos)0od 0 do 100, steruje rozrzutem wyników
--w (weird)0do 3000, od wersji 5, funkcja eksperymentalna
--seedlosowyliczba całkowita od 0 do 4294967295
--vV8.2wersja modelu; wersja HD kosztuje 1,3 minuty GPU, SD 0,8 minuty

Warto wiedzieć, że jeden prompt daje domyślnie cztery obrazy, a --q działa tylko na tę pierwszą czwórkę. Późniejsze wariacje, inpainting i upscale już go nie dotyczą.

Cztery warianty tego samego kadru

Warianty bez ponownego pisania promptu możesz dostać na trzy sposoby. Najbardziej interesujący opisuje dokumentacja AUTOMATIC1111: prompt matrix. Zapisujesz kilka części oddzielonych znakiem pionowej kreski, a system generuje obraz dla każdej kombinacji.

Przykład z dokumentacji: „a busy city street in a modern city|illustration|cinematic lighting” daje dokładnie cztery warianty, pierwsza część zawsze zostaje:

  1. „a busy city street in a modern city”
  2. „a busy city street in a modern city, illustration”
  3. „a busy city street in a modern city, cinematic lighting”
  4. „a busy city street in a modern city, illustration, cinematic lighting”

Wszystkie cztery powstają z tym samym seedem, czyli wariacja dotyczy wskazanego parametru, a nie przypadkowości. Pięć częściowych promptów daje w ten sposób 16 wariantów. Jeśli potrzebujesz katalogu produktowego albo serii wariantów jednej marki, ten mechanizm skaluje się lepiej niż czterdzieści osobnych promptów. Zobacz, jak wygląda to na szerszym przykładzie: generator obrazów AI na podstawie zdjęcia, katalog produktowy i warianty marki.

Drugi sposób to podmiana jednej zmiennej. Dokumentacja Midjourney „The Art of Prompting” pokazuje szablony w rodzaju „______ style cat” albo „illustration of a ______ cat” i podmienia w nich jedną warstwę: medium, epokę, emocję, kolor albo środowisko. Ten sam mechanizm działa na Twojej materii, nie tylko na kotach.

Trzeci sposób wymaga dyscypliny. Learn Prompting opisuje serię dziesięciu promptów, w których stał szkielet, a zmieniał się tylko podmiot: „A low poly world, with an astronaut in a white suit and blue visor sitting in a sparse green meadow with low poly mountains in the background. Highly detailed, isometric, 4K”, potem ta sama scena z rakietą, laptopem i klejnotem. Dopiero taki szkielet daje powtarzalny styl, a nie cztery różne kadry, które tylko udają serię.

Pułapki opisane w dokumentacji jednym zdaniem

Kilka rzeczy kosztuje więcej czasu niż powinno, bo dokumentacja ostrzega o nich jednym zdaniu.

  • Seed nie zapamiętuje stylu. „Seeds can’t capture or bookmark a specific style, character, or appearance across different prompts.” Nie zakładaj, że zapamiętany seed da ci tę samą estetykę w innym temacie.
  • Tryb Turbo psuje seed. „Don’t use Turbo mode when using seeds. Turbo mode focuses on speed, and as a result seed locking is not reliable.” Funkcja --weird też nie współgra z seedami w pełni.
  • --q 4 nie działa razem z Omni Reference.
  • Ekstremalnie szerokie i wysokie proporcje są eksperymentalne i potrafią dać nieprzewidywalny wynik. Proporcje to przy okazji nie to samo co wymiary pliku.
  • Gemini dokłada znak wodny do każdego obrazu: „All generated images include a SynthID watermark”. Przy pracy komercyjnej licencje i znaki wodne to osobny temat, który rozładowuję osobno.

Ile to kosztuje

Tylko Midjourney publikuje pełną tabelę cenową, więc dla porównania poziomu wejścia ona wystarczy.

PlanMiesięcznieRocznieSzybki czas GPU
Basic10 USD96 USD (8 USD mies.)3,3 h (200 min)
Standard30 USD288 USD (24 USD mies.)15 h
Pro60 USD576 USD (48 USD mies.)30 h
Mega120 USD1152 USD (96 USD mies.)60 h

Roczny plan daje 20% rabatu, dodatkowy czas GPU kosztuje 4 USD za godzinę, a tryb bez kolejki jest dostępny dopiero od planu Pro. Dwie zasady, które oszczędzają pieniądze firmom: plan Standard w trybie Relaks daje nielimitowane generowanie obrazów, więc przy dużej wolumenie dobowym ten próg zwykle zwraca się w pierwszym miesiącu. Druga: jeśli przychód firmy przekracza milion USD rocznie, Midjourney wymusza plan Pro albo Mega, Standard nie wystarczy zgodnie z regulaminem.

Cen API dla GPT Image, Gemini i Firefly w dokumentacji, którą tu wykorzystuję, nie ma, więc nie podaję zmyślonych stawek. Zestaw narzędzi z limitami darmowymi opisałem osobno w tekście o dziesięciu generatorach obrazów i ich ograniczeniach.

Checklista przed wysłaniem promptu

Dziewięć pytań, które warto zadać sobie przed kliknięciem generowania:

  1. Czy nazwałem podmiot, a nie tylko nastrój?
  2. Czy podałem medium, bo inaczej dostanę inny styl niż chcę?
  3. Czy opisałem światło, kadr i kolor?
  4. Czy wymieniłem, czego nie chcę na kadrze?
  5. Czy parametry są na końcu promptu, a nie w środku zdania?
  6. Czy dobrałem długość promptu do modelu, z którym pracuję?
  7. Czy składnię wag wziąłem z dokumentacji tego konkretnego narzędzia?
  8. Czy zapisałem seed, jeśli chcę wrócić do tego kadru?
  9. Czy mam plan na warianty, zamiast liczyć na to, że model sam je dobierze?

Jeśli pracujesz na własnym serwerze, Stable Diffusion daje tę kontrolę bez abonamentu i bez czekania na kolejkę. Opisałem to przy AI postawionym samodzielnie. Jeśli natomiast dopiero zaczynasz i nie wiesz, czy Twoje prompty w ogóle trafiają w cel, sensowniej zacząć od testu na realnych zadaniach: dlaczego samo promptowanie przestało wystarczać.

Potrzebujesz, żebym przetestował te warstwy na Twoich materiałach i ustawił powtarzalny generator grafik marki? Napisz do mnie, odpowiadam zwykle tego samego dnia.

Robisz coś podobnego u siebie?Napisz do mnie

Masz proces, który zjada tydzień pracy? Odzyskajmy ten tydzień.

Napisz do mnie