Wie kann man überlagerte Bilder generieren lassen wie dieses? Und wie kann man das ganz schnell machen, wenn man es mal wieder braucht?
Dazu wurde gerade in einem Newsletter ein Tweet empfohlen:
Puh… das ist ein Brocken von einem Tweet! Schwer zu verstehen, oder?
Er ist ein schönes Beispiel dafür, wie so mancher Tipp von einem Techie im Internet am Ziel vorbeischießt. Der Tweet macht, so finde ich, die Sache nicht wirklich einfacher.
Vor allem sind in ihm zwei Dinge vermischt:
Wie kann man überlagerte Bilder generieren?
Wie kann man immer wieder solche Bilder generieren?
Ich will das mal auseinandernehmen und für den zweiten Punkt viel einfachere Lösungen vorstellen.
Überlagerte Bilder generieren (Superimposition)
Die überlagerten Bilder, d.h. ein Hintergrund in einer Silhouette, sind ganz einfach zu erzeugen:
Im Prompt sind drei Angaben zu machen:
Farbe des Bildes
Hintergrundmotiv
Silhouettenmotiv
Das Prompt sieht dann z.B. so aus:
Construct a blue double exposure image where a forrest is intricately superimposed within the confines of a howling wolf, all set against a stark white background.
Im Tweet ist diese simple Anweisung gut versteckt:
Sie macht nur einen kleinen Teil des Tweets aus. Wozu dann aber der ganze Rest?
Wiederholt dasselbe Prompt benutzen
Der Rest dreht sich vor allem darum, der KI ein Kommando beizubringen:
Man soll nicht so umständlich prompten müssen. Eine Prompt wie blue::forrest::howling wolf soll reichen.
Man soll die KI in einen Modus schalten können, dass sie solche einfacheren Prompts für Überlagerungen akzeptiert. Das ist nötig, weil der Autor es cool findet, diese Regel in den custom instructions nur einmalig zu definieren. Er will sich dadurch Wiederholungen sparen.
Techies mag so ein Ansatz reizen — normale Benutzer wollen jedoch lieber etwas Simpleres. Die custom instructions mit solchen Kommandos mehr und mehr aufzublähen — denn morgen kommt bestimmt ein neues hinzu für einen anderen Bildeffekt —, birgt außerdem das Risiko, dass Nutzer und KI den Überblick verlieren.
Eine besser verständlichere Lösung für den Alltag wäre also hilfreich. Die möchte ich im Folgenden vorstellen:
1. Das Prompten verallgemeinern und vereinfachen
Die Verkürzung der Eingabe für Überlagerungen gefällt mir. Der KI beizubringen, die Bildbeschreibung in verkürzter Form zu verstehen, ist simpel:
Statt ein konkretes Motiv zu wünschen, muss der KI das Schema erklärt werden. Dafür wird der Wunsch beschrieben und dann das Format für die Eingabe:
I'd like you to create double exposure images in a <color> where <subject1> is intricately superimposed within the confines of <subject2>, all set against a stark white background.
From here on wait for my prompts of the format:
<color>::<subject1>::<subject2>
Example:
blue::forrest::howling wolf
If you understand this, answer just with ok for now.
Statt konkrete Angaben im Prompt zu machen (z.B. Farbe “blue”), werden Platzhalter eingesetzt (z.B. “<color>”).
Dann wird das allgemeine Schema für einen Bildgenerierungswunsch mit den Platzhaltern definiert.
Und dann noch ein Beispiel, damit die KI wirklich weiß, wie das Schema zu verstehen ist.
Nach diesem Prompt generiert die KI noch kein Bild, sondern hat nur eine neue Regel gelernt.
Ab dann wird sie Eingaben im beschriebenen Format akzeptieren. Der Beweis ist im Bild.
Custom instructions sind nicht nötig. Es muss kein zusätzliches Kommando definiert werden, um einen Modus anzuschalten. Es braucht keine so umständliche Beschreibung wie im Tweet.
In dem Chat, in dem das Prompt wie oben abgesetzt wurde, können jetzt viele Bilder nach dem kurzen Schema generiert werden.
Aber was, wenn solche Bilder immer mal wieder gewünscht sind. Muss dann die Regel auch immer wieder definiert werden? Ja. Das würde sich mit custom instructions erübrigen — doch die zu pflegen ist umständlich.
2. Wiederholt in derselben Weise prompten
Es gibt zwei einfachere Wege, um dieselben Prompts öfter anzuwenden.
Der erste besteht darin, sich einen Link zum Chat zu merken. Bei ChatGPT hat jeder Chat eine eigene URL, im Bild auf der linken Seite zu sehen:
Diese URL kann man sich merken (z.B. in einem Notizenprogramm oder in den Lesezeichen des Browsers). Damit kann man jederzeit zum Chat zurückkommen und weitere Bilder nach demselben Schema generieren.
Allerdings ist diese URL erstens an das eigene ChatGPT-Konto gebunden und zweitens geht der Chat dann immer weiter. Das könnte dazu führen, dass die Anweisung irgendwann nicht mehr gut verstanden wird, weil die Definition aus dem Kontextfenster der KI gelaufen ist.
Neben dem privaten Link kann jeder Chat jedoch auch einen öffentlichen haben. Hier als Beispiel einer für den obigen Chat mit der Überlagerungsregel: https://chat.openai.com/share/36ffd809-c707-4b28-8de0-3f7262b57b65
Wer auf so einen teilbaren Link klickt, bekommt einen neuen Chat, der mit dem Prompt schon initialisiert ist. Dieser Chat kann unabhängig vom Original fortgeführt werden.
Die zweite Möglichkeit setzt auf Textbausteine. Man kann das definierende Prompt als Textbaustein mit einem Kürzel (hier: “<dx”) hinterlegen. Im Bild ist das Textbaustein-Tool Alfred für macOS mit einem Snippet zu sehen.
Sobald das Snippet definiert ist, kann man sein Keyword überall eingeben und es wird sofort durch den hinterlegten Prompt-Text ersetzt:
Das geschieht sofort beim Eintippen des letzten Buchstabens:
Dafür kann man sich z.B. in Alfred eine eigene Liste für Prompts anlegen. Auf diese Weise behält man sie leicht im Überblick.
Ein weiterer Vorteil gegenüber den Chat-Links: Textbaustein-Prompts lassen sich in jeden Chat einsetzen, egal wie weit der schon fortgeschritten ist.
Zusammenfassung
Vorlagen für Prompts, die man öfter braucht, haben nichts in den custom instructions zu suchen. Viel praktikabler ist es, sich entweder geteilte Links für Chats zu merken, die damit schon initialisiert sind. Oder noch besser: Die Prompts als Textbausteine in einem Tool verwalten, das sie “auf Knopfdruck” in jeden Chat einsetzt.