До списку уроків
8A · Урок 13 з 16

Як працює генеративна модель. Анатомія промпта

виконано0%
Крок 1

Що робимо сьогодні

Модуль I · Тема 7 «Генеративний ШІ» · урок 1 з 2 · 120 хвилин

На минулому уроці скрипт перегнав цілу теку файлів і склав звіт manifest.json. Усі картинки там уже лежали готові.

Сьогодні готової картинки не буде. Буде текст — і з нього народиться файл gen-1.png. Такого зображення не існувало ніде.

Ти складеш запит із семи частин і збережеш його в prompts.json.

А під картинкою підпишеш: це зробила машина, ось яка саме.

Чого навчишся за цей урок

Слова «дифузія», «латент» і «seed» поки нічого не означають. Розберемо їх по черзі.

Хід уроку

ЕтапХвЩо робимо
Вхід: «справжнє чи згенероване?»15Дивимося на пари зображень, шукаємо, що видає машину
Як модель «вчиться»20Токени, латент, дифузія з шуму, seed
Анатомія промпта25Сім блоків, негативний промпт, конструктор
Перерва10
Етика й авторське право25Три кейси, власне правило маркування
Перша ітерація промпта20Генерація локально, prompts.json, сторінка
Підсумок і ДЗ5Правило доброчесності модуля
Разом120
Картинки на сервер не їдуть Генеруєш ти на своєму комп'ютері або в дозволеному веб-сервісі. Результат кладеш у локальну теку media/lesson-07/. По FTP у кабінет їде тільки текст: prompts.json і index.html. У prompts.json ти пишеш промпт, негативний промпт, модель, параметри, що змінив і чим результат вийшов. У index.html має бути блок .ai-disclosure. Самі зображення вчитель дивиться очно, на твоєму екрані. Якщо gen-1.png опиниться в кабінеті, критерій не зарахують.
Чому тека зветься lesson-07, а урок — тринадцятий Теки практики звуться за темою, а не за номером уроку. Тема 7 — це уроки 13 і 14. Обидва працюють в одній теці lesson-07/. Теки lesson-13 немає, не шукай її.
Крок 2

Модель не шукає картинку. Вона її вигадує

Всередині немає ані бази зображень, ані доступу до інтернету

Багато хто думає так: модель знайшла в інтернеті схожу картинку й трохи її підправила. Це не так.

Під час генерації модель нікуди не звертається. Інтернету в неї немає, бази картинок теж.

Усе, що в неї є, — величезний набір чисел. Ці числа накопичилися, поки модель навчалася. Звуться вони ваги.

Проста арифметика, яка це доводить

Візьмімо Stable Diffusion 1.5. Цю модель можна завантажити й запустити в себе. Її файл важить приблизно 4 ГБ.

Навчалася вона на наборі LAION-5B. Це 5,85 мільярда пар «зображення + опис».

Що рахуємоЧисло
Розмір файлу моделі≈ 4 000 000 000 байтів
Пар «зображення + опис» у навчальному наборі5 850 000 000
Скільки байтів «припадає» на одне зображення≈ 0,7 байта

На один кольоровий піксель треба щонайменше 3 байти. У 0,7 байта не влізе навіть він. Отже, картинок усередині моделі немає.

Є інше — закономірності. Які форми, кольори й текстури зазвичай стоять поруч зі словом «туман». Які — поруч зі словом «пухнастий». Які — поруч зі словом «акварель».

Крок перший: твій текст стає числами

Модель не читає букв. Спершу твій текст ріжуть на шматки. Коротке слово лишається цілим, довге розпадається на частини. Ці шматки звуться токени.

Кожен токен має свій номер у словнику. Замість слів модель отримує низку номерів.

Далі кожен номер перетворюється на довгий список чисел. Робить це окрема програма — текстовий кодувальник. У Stable Diffusion його звуть CLIP. Саме ці числа й «бачить» генератор.

Від тексту до чисел 1 · твій текст a red fox in a foggy pine forest 2 · токени a red fox in a foggy pine forest … далі до 77 токенів 3 · номери й вектори 320 736 3240 530 320 15417 4844 3878 [0.21 −0.84 1.07 … ] — матриця чисел для генератора
Номери токенів тут ілюстративні: у кожної моделі свій словник. Важлива сама послідовність: текст → шматки → номери → числа.
Ліміт 77 токенів CLIP у Stable Diffusion 1.x приймає рівно 77 токенів. Це 75 твоїх плюс два службові. Усе, що не вмістилося, відрізається. Тому промпт-поема на 300 слів не працює: кінця модель не побачить. Деякі інтерфейси це обходять. Але правило те саме — головне став на початок.

Крок другий: картинку стискають

Картинка 512×512 у трьох кольорах — це 512 × 512 × 3 = 786 432 числа. Перебирати таку купу на кожному кроці дорого й довго.

Тому Stable Diffusion працює не з пікселями. Вона стискає картинку до 64 × 64 × 4 = 16 384 чисел. Це у 48 разів менше. Такий стиснений вигляд зветься латент.

Уся генерація йде саме в цьому маленькому вигляді. Аж наприкінці окрема програма розгортає латент назад у пікселі. Її звуть декодер.

Звідси перший практичний наслідок. Дрібні деталі ламаються першими: літери, тонкі пальці, візерунок на тканині. У стисненому вигляді на них припадає надто мало чисел.

Питання

Ти написав «кіт у скафандрі на Марсі» і отримав картинку, якої точно ніде не існувало. Звідки вона взялася?

Крок 3

Як із шуму виходить зображення

Модель не малює лінії. Вона крок за кроком прибирає шум

Уяви старий телевізор без антени. На екрані сіра «сніжинка» й більше нічого. Приблизно з такого стану модель і починає.

Навчали її з кінця. Брали справжнє фото й підсипали в нього шум крок за кроком. Так робили, аж поки не лишалася сама каша.

Потім модель учили робити навпаки. Вона дивиться на зашумлену картинку й на підпис до неї. І вгадує, який саме шум туди підсипали.

Генерація — та сама навичка з нуля. Беруть чистий шум і просять модель прибирати з нього потроху. Щоразу вона звіряється з твоїм текстом. Через 20–50 кроків із каші проступає зображення. Це і зветься дифузія.

Один прохід генерації крок 0 чистий шум, породжений seed крок N шуму не лишилося, декодер робить пікселі крок 0 з 30 — суцільний шум
Це схема, а не справжня генерація. Шум тут малює браузер, а «зображення» намальоване вручну. Порядок дій показаний чесно: шум зменшується, картинка проступає, а починається все зі стану, який задав seed.
крок дифузії: 0 з 30 seed: 1842
Тягни повзунок праворуч — шум прибирається крок за кроком.

Скільки кроків ставити

КроківЩо виходить
1–5модель не встигла прибрати шум — розмита мазанина без форм
10–15композиція вгадується, деталі «пливуть»
20–35робочий діапазон для більшості моделей і семплерів
60+час і гроші майже без користі: зміни ледь помітні оком

Числа орієнтовні: конкретний діапазон залежить від моделі й семплера. Перевіряй на своїй — це і є перша серйозна ітерація.

Поруч із кроками є ще одна ручка. Вона каже, наскільки строго триматися тексту. Зветься CFG scale.

Поставиш мало — модель фантазує й слабко слухає промпт. Поставиш багато (умовно понад 12) — кольори кричать, форми ламаються. Робоче значення для Stable Diffusion — 7–8. Воно ж стоїть за замовчуванням.

Питання

Щоб швидше, ти поставив 4 кроки замість 30. Вийшла розмита кольорова мазанина. Що саме не встигло статися?

Крок 4

Seed: чому той самий промпт дає різні картинки

Випадковий шум не такий уже й випадковий

Стартовий шум не береться нізвідки. Комп'ютер не вміє в справжню випадковість. Він рахує «випадкові» числа за формулою.

Такій формулі треба з чогось почати. Це стартове число й зветься seed. Працює воно як номер варіанта контрольної: той самий номер — той самий набір завдань.

Однакове seed дає однаковий шум. Інше seed — інший шум. А отже й інша картинка за тим самим текстом.

Той самий промпт, три різні seed a red fox in a foggy pine forest, watercolor seed 10 245 seed 77 003 seed 404 812
Промпт, модель і параметри тут однакові. Різниться тільки стартове число. Цього досить, щоб вийшли три різні зображення.
Що треба, щоб повторити картинку Збігтися має все одразу: той самий промпт, той самий негативний промпт, та сама модель, ті самі кроки й CFG. І той самий seed. Тоді картинка повториться піксель у піксель. Забув один складник — повторити вже не вийде.

Тому seed записують одразу, а не «потім». Це єдиний спосіб повернутися до вдалого кадру. А далі міняти в ньому по одному слову. Саме цим ми й займемося на уроці 14.

Якщо seed сховано Деякі веб-сервіси не показують seed узагалі. Тоді фіксуй те, що можеш. Точну назву моделі й версію. Дату. Повний текст промпта. Скріншот панелі параметрів. А в полі params файлу prompts.json так і пиши: seed недоступний у цьому сервісі. Чесна прогалина краща за вигадане число.
Питання

Ти згенерував ідеальну картинку, зберіг файл, але seed не записав. Чи зможеш завтра отримати рівно ту саму — щоб змінити в ній одне слово?

Крок 5

Анатомія промпта: сім блоків

Усе, чого ти не сказав, модель добере сама — і зазвичай не так

Напиши «гарний дракон» — і модель вирішить решту сама. Де стоїть дракон. Звідки падає світло. Олівцем це намальовано чи фарбою.

Ці рішення нікуди не діваються. Питання тільки в тому, хто їх ухвалює. У робочому промпті їх ухвалюєш ти — і кажеш уголос.

БлокНа що впливаєПриклад
1Суб'єктхто або що головне в кадріa red fox
2Діящо він робить, у якій позіsitting on a mossy stone
3Оточенняде це відбувається, погода, часin a foggy pine forest
4Стильтехніка: фото, олія, вектор, 3Dwatercolor illustration
5Освітленнянапрямок, м'якість, колір світлаsoft morning backlight
6Ракурсзвідки дивиться камера, крупністьlow angle, close-up
7Якістьдеталізація, різкість, чистота кадруhighly detailed, sharp focus
Той самий промпт, розібраний на блоки a red fox sitting on a mossy stone in a foggy pine forest watercolor illustration 1 · суб'єкт 2 · дія 3 · оточення 4 · стиль soft morning backlight low angle, close-up highly detailed, sharp focus 5 · освітлення 6 · ракурс 7 · якість негативний промпт — чого не має бути text, watermark, signature, extra fingers, blurry
Порядок має значення. Слова на початку промпта більшість моделей враховує сильніше. Тому головне став на початок, а дрібні уточнення — у кінець.

Негативний промпт

Це другий список — чого на картинці бути не має.

Слова моделі не «заборонені». На кожному кроці вона рахує два варіанти: один за твоїм промптом, другий за негативним. І тікає від другого.

Це та сама ручка CFG. Тільки замість порожнього рядка в неї підставили твій список заборон.

Стартовий набір збирають із трьох груп. Кожна закриває свою типову поломку.

Перша група — написи. text — будь-які літери на картинці. watermark — водяний знак фотобанку. signature — підпис художника в куті.

Модель бачила такі написи на мільйонах чужих зображень. Тому домальовує їх за звичкою, навіть коли ти про них не просив.

Друга група — руки. extra fingers — зайві пальці. deformed hands — зламані кисті. Рахувати модель не вміє, тому руки псуються найчастіше.

Третя група — якість кадру. blurry — розмито. low quality — каша замість дрібних деталей. cropped — герою зрізало маківку або ноги.

Ці вісім слів і є типовий стартовий набір. Далі дописуєш своє — те, що зіпсувало саме твою картинку.

Окреме поле для негативу є не всюди. У частині веб-сервісів його немає. Тоді бажане описують прямо: замість «без тексту» пишуть «clean surface».

Дужки й ваги — це не мова моделі Запис на кшталт (fox:1.4) розуміє не сама модель. Його читає конкретний інтерфейс і сам підсилює ці слова перед відправкою. В іншому сервісі той самий запис піде в промпт як звичайний текст із дужками. Тому в prompts.json завжди пиши, у чому саме генерував.
Питання

На кожній генерації в правому нижньому куті з'являється щось схоже на розмитий підпис художника. Модель це підглянула в даних. Що робиш найпростіше?

Крок 6

Конструктор промпта

Збери свій запит із блоків — сторінка складе готовий текст англійською

Обери значення в кожному списку. Внизу видно, скільки блоків із семи ти вже задав і яких бракує.

Готовий промпт копіюється однією кнопкою. Поруч — заготовка запису для prompts.json, який ти сьогодні здаєш.

Негативний промпт

Натисни те, чого не має бути на зображенні.

Вимога чекера: промпт не коротший за 60 символів Це не примха. У двох словах сім блоків не помістяться. А без блоків ти не керуєш результатом — ти його вгадуєш. Лічильник у конструкторі показує, скільки символів уже набралося.

Куди це потім потрапляє

Кожна генерація описується одним записом у prompts.json. Сьогодні запис буде один. На уроці 14 їх стане чотири.

prompts.json — структура одного запису
[ { "n": 1, "prompt": "a red fox sitting on a mossy stone, in a foggy pine forest, watercolor illustration, soft morning backlight, low angle, close-up, highly detailed", "negative": "text, watermark, extra fingers, blurry", "model": "Stable Diffusion 1.5 (локально, ComfyUI)", "params": "steps 30, cfg 7.5, seed 10245, 512x512", "changed": "перша версія", "verdict": "туман вийшов, лапи змазані, спробую додати ракурс" } ]
Пастка з кодуванням Пиши prompts.json у звичайному редакторі: VS Code, Notepad++. Зберігай як UTF-8. Якщо створити файл у Windows PowerShell 5.1 командою echo … > prompts.json, він вийде у UTF-16. Чекер побачить не JSON, а кашу. Тож коли він каже «невалідний JSON», а дужки на місці, — першим перевіряй кодування файлу.
Питання

Твій промпт — «beautiful dragon». Щоразу виходить щось інше і жодного разу не те, що ти уявляв. Що виправляти першим?

Крок 7

Пальці, літери й упевнені помилки

Чому модель ламається саме там, де ламається

Руки

У кисті людини 27 кісток. Вона згинається в десятках напрямків.

На фотографіях руки майже завжди дрібні. Розмиті, перекриті, обрізані краєм кадру. Модель бачила мільйони плям «щось видовжене біля зап'ястя» — і домальовує щось схоже.

Пальці вона не рахує. Рахувати вона взагалі не вміє. У неї є тільки ймовірність, що поруч із пальцем буває ще один палець.

Текст на зображенні

Для генератора літера — просто форма. Він не знає, що «А» має бути саме таким. Правил письма в нього немає.

Додай сюди стиснення до 64×64. На вивіску в глибині кадру припадає кілька чисел. З них треба розгорнути осмислений напис — і не виходить.

Новіші великі моделі пишуть помітно краще. Але «краще» — ще не «правильно». Напис на картинці перечитуй завжди.

Куди дивитися першим зона 1 · кількість шостий палець пальці, зуби, ніжки стільця, ґудзики зона 2 · текст літери, схожі на літери, але не літери вивіски, обкладинки, номери, підписи
Дві зони, куди варто дивитися першими. Ламаються вони з однієї причини: модель відтворює форму, а не зміст.

Решта зон, які варто перевірити

ЗонаЩо шукати
Симетріярізні сережки, різні очі, різне взуття, несиметричний комір
Кількістьпальці, зуби, ніжки меблів, колеса, вікна в ряду
Фоноб'єкти, що зливаються, обірвані лінії, люди без ніг
Тінітіні падають у різні боки — кілька сонць одночасно
Візерункиклітинка, цегла чи літери на одязі «пливуть» і не сходяться
Стикитам, де окуляри переходять у вухо, а ремінець — у годинник
Питання

Друг показує «фото» невідомого рок-гурту і клянеться, що воно справжнє. Куди ти дивишся в першу чергу?

Чому модель помиляється впевнено

У генератора немає етапу перевірки. Він не звіряє результат із реальністю. Слів «я цього не знаю» у нього теж немає.

На виході завжди щось буде. Це «щось» — найімовірніше за статистикою продовження твого опису.

Тому впевнений вигляд картинки не означає нічого. Схема ока з нечитабельними підписами виглядає переконливо саме тому, що модель гналася за правдоподібністю. Правильність вона не перевіряла. Це доводиться робити тобі.

Питання

Ти попросив схему будови ока з підписами для реферату. Модель видала красиву картинку, де підписи — набір псевдобукв. Чому вона не написала «я не вмію робити схеми з текстом»?

Крок 8

Етика: дані, авторство, маркування, люди

Це не мораль наприкінці уроку. Це половина вміння користуватися інструментом

1. На чому вона вчилася

Великі моделі навчають на наборах, зібраних із відкритого інтернету.

LAION-5B — це не архів картинок. Це 5,85 мільярда посилань: адреса зображення плюс підпис до нього. Зібрані вони з Common Crawl — величезної копії веб-сторінок.

Згоди в авторів ніхто не питав. Багато хто й досі не знає, що його малюнки туди потрапили.

Звідси й судові справи. Getty Images проти Stability AI. Andersen та інші проти Stability AI, Midjourney і DeviantArt. Частина питань досі без остаточної відповіді — в жодній країні.

З'явилися й сервіси перевірки. На Have I Been Trained художник шукає свою роботу в наборах і подає відмову від навчання.

2. Кому належить згенероване

ДеЯк зараз
СШАБюро авторського права: твір, створений без творчого внеску людини, охороні не підлягає. Так вирішено у справі коміксу «Zarya of the Dawn» (2023) і підтверджено у справі Thaler v. Perlmutter
УкраїнаЗакон «Про авторське право і суміжні права» № 2811-IX, стаття 33. Картинку намалювала програма, а не людина — отже, авторського права на неї немає. Замість нього діє інше право, слабше й коротше: 25 років. У законі його звуть правом особливого роду, латиною sui generis
Сервісиумови користування в різних генераторів різні: десь тобі передають права на використання, десь лише ліцензію, а безкоштовні плани часто забороняють комерційне використання

Що з цього тобі. Згенероване — не «твій малюнок». Твоє тут інше: сам запит, вибір із десятка варіантів, правки й доробка.

Саме це й пиши в prompts.json. Не «я намалював», а «я склав запит і відібрав результат».

Питання

Ти згенерував обкладинку для шкільного проєкту й вона гарна. Як вчинити правильно?

3. Чому AI-контент позначають

Європейський Акт про штучний інтелект (Регламент ЄС 2024/1689) у статті 50 вимагає двох речей.

Перше: хто зробив генератор, той має ставити на результат позначку, яку прочитає програма. Друге: хто публікує дипфейк, той має прямо сказати, що це згенеровано. Обидва обов'язки діють з 2 серпня 2026 року.

Платформи вимагають цього вже зараз. YouTube просить розкривати реалістичний синтетичний контент. Meta й TikTok чіпляють позначку «AI info», часто самі.

Є й технічний стандарт такої позначки — C2PA, він же Content Credentials. Це підпис усередині файлу: чим і коли зроблено зображення. Такі приховані записи ми й правитимемо exiftool на уроці 14.

Причина тут не юридична. Людина має право знати, на що дивиться: на знімок події чи на вигадку.

Без позначки згенероване фото стає доказом того, чого не було.

Мінімальний блок розкриття на твоїй сторінці Блок class="ai-disclosure" обов'язковий. У ньому має бути назва моделі й слова «згенеровано» та «ШІ» (або «AI»). Поки цього блока немає, чекер тему не зарахує.
index.html — блок розкриття
<p class="ai-disclosure"> Зображення на цій сторінці згенеровано засобами ШІ: модель Stable Diffusion 1.5, промпт і параметри наведені у файлі prompts.json. Автор промпта і добору — Прізвище Ім'я. </p>

4. Реальні люди

Генерувати зображення реальної людини без її згоди не можна. Однокласники, вчителі, знайомі, публічні особи — правило для всіх одне.

Навіть жарт тут працює як підробка. Картинка показує те, чого не було, а виглядає як знімок. Такі підробки звуться дипфейками.

В Україні це не лише етика. Цивільний кодекс, статті 307 і 308: знімати людину й поширювати її зображення можна лише за її згодою.

Згенерована «фотографія» від цього не звільняє. Навпаки — вона ще й неправдива.

Правило класу на всю тему Жодних облич реальних людей. Ані однокласників, ані вчителів. Ані блогерів, ані політиків. Тут ідеться вже не про бал за роботу, а про довіру — і розбирати таке доведеться окремо. Потрібна людина в кадрі — генеруй вигаданого персонажа. Так і напиши в prompts.json.

5. Стереотипи в даних

Попроси «лікаря», «прибиральницю» чи «програміста» без уточнень. Модель видасть той типаж, який частіше траплявся в навчальних даних.

Це не думка моделі — думок у неї немає. Це відбиток того, які фото й підписи частіше лежать в інтернеті.

Наслідки при цьому справжні. Тому описувати зовнішність і обставини в промпті — теж частина роботи.

Питання

Однокласник просить: «згенеруй смішне фото нашого вчителя, ми в чат кинемо». Що ти робиш?

Крок 9

Практика: перша ітерація

Кроки 1—8 — у себе на комп'ютері, кроки 9 і 10 — у кабінеті на сервері. Галочки зберігаються, сторінку можна закрити.

Що нікуди не завантажується gen-1.png лишається в локальній теці media/lesson-07/. FTP-приймальня відхиляє зображення понад 500 КБ. Чекер окремо шукає gen-*.png у ~/www/ і ~/upload/. Зображення вчитель дивиться очно, на твоєму екрані. Тому не видаляй файл і не закривай теку до перевірки.
Крок 10

Автоперевірка

Чекер зайде у твій кабінет і перевірить текст. Спроби не обмежені.

Демонстраційний режим: результат згенеровано для показу. На сервері ця кнопка викликає POST /api/check, який запускає check 07 від імені учня.

Що вчитель дивиться на екрані

Крок 11

Шкала виконання

Це те, що бачить учитель, коли виставляє оцінку.

СкладникВагаРезультат
Виконано
0%
Рекомендований бал за 12-бальною

Чотири речі, які треба винести з уроку

  1. Модель не шукає — вона генерує. Усередині немає картинок, є закономірності, вивчені з мільярдів пар «зображення + опис».
  2. Дифузія — це прибирання шуму кроками. Стартовий шум задає seed. Немає seed — немає способу повторити.
  3. Промпт — це сім блоків. Усе, чого ти не сказав, модель вирішить за тебе.
  4. Маркування обов'язкове. Назва моделі, слово «згенеровано» і промпт. Поки блока .ai-disclosure немає, тему не зарахують.

Домашнє завдання

Візьми одну свою ідею. Напиши на папері три версії промпта до неї.

У кожній наступній міняй рівно один блок. У другій — стиль. У третій — ракурс або освітлення.

Під кожною версією допиши одне речення: якої зміни ти чекаєш. На уроці 14 ці три версії стануть ітераціями gen-2, gen-3, gen-4.

Джерела

Звідки взяті числа й формулювання

Наукові статті, документація моделей, тексти законів і офіційні рішення. Перевіряти дозволено й корисно.

Повний список із поясненнями, що саме звідки взято і які числа є ілюстративними, — у файлі urok-13-джерела.md поруч із цією сторінкою.