Gemini Bildgenerierung mit Prompt

Beschreiben Sie das Problem/den Fehler/die Frage

Hallo zusammen,
Ich habe ein Problem mit einem verschachtelungsähnlichen Ausführungsverhalten in einem Loop Over Images-Knoten.

Mein Setup:

  1. Loop Over Images: Verarbeitet eine Liste von Bildern, die von Google Drive einzeln abgerufen werden (Batch Size = 1).
  2. Innerhalb der Schleife: Für jedes Bild erstellt es einen Ordner (Create Concept Folder) und lädt die Bilddatei herunter.
  3. Item-Erweiterung: Dann nimmt ein Code-Knoten (Build Prompts) die Einzelbilddaten und generiert 6 verschiedene Prompt-Variationen (erweitert erfolgreich 1 eingehendes Element in 6 ausgehende Elemente).
  4. Verarbeitung: Die nachfolgenden Knoten (Gemini data, HTTP Request, Upload Concept Image) werden beim ersten Bild perfekt 6 Mal ausgeführt.
  5. Schleife zurück: Am Ende der Ausführungskette verwende ich einen Limit-Knoten mit Max Items = 1, um die 6 Elemente auf genau 1 Element zu reduzieren, bevor ich sie zurück in den Loop Over Images-Eingangsport einspeise.

Das Problem:

  • Die erste Iteration funktioniert einwandfrei (erstellt den Ordner, generiert und lädt alle 6 Konzeptbilder hoch).
  • In der zweiten Iteration (für das zweite Bild) wird die Schleife korrekt ausgelöst, und der Create Concept Folder-Knoten wird erfolgreich ausgeführt.
  • Unmittelbar nach der Ordnererstellung stoppt der Workflow jedoch vollständig. Die nachfolgenden Knoten (Download Image, Build Prompts usw.) werden für das zweite Element überhaupt nicht ausgeführt.
    Es scheint, dass n8n die Ausführungsreihenfolge oder den Element-Index während der zweiten Schleifeniteration verliert, weil die Elementanzahl von 1 auf 6 im Schleifenrumpf erweitert wurde, obwohl ich einen Limit-Knoten verwendet habe, um genau 1 Element an den Schleifenzähler zurückzugeben.
    Wie kann ich den Element-Kontext/Index innerhalb der Schleife ordnungsgemäß zurücksetzen, damit die zweite Iteration vollständig ausgeführt wird?
    (Hinweis: Ich habe einen Screenshot meines Workflow-Layouts unten beigefügt)

Welche Fehlermeldung liegt vor (falls zutreffend)?

Bitte teilen Sie Ihren Workflow


(Wählen Sie die Knoten auf der Canvas aus und verwenden Sie die Tastenkombinationen CMD+C/STRG+C und CMD+V/STRG+V, um den Workflow zu kopieren und einzufügen.)

Teilen Sie die vom letzten Knoten zurückgegebene Ausgabe

Informationen zu Ihrer n8n-Einrichtung

  • n8n-Version:
  • Datenbank (Standard: SQLite):
  • n8n EXECUTIONS_PROCESS-Einstellung (Standard: own, main):
  • n8n ausführen über (Docker, npm, n8n cloud, Desktop-App):
  • Betriebssystem:

Hallo, das sieht eher nach einem Schleifenstruktur-Problem aus, als nach etwas, das man durch “Zurücksetzen” des Item-Index beheben kann. Der Limit-Node reduziert nur die Anzahl der weitergereichten Items; er stellt den ursprünglichen Kontext des äußeren Schleife-Items nicht wieder her. In n8n ist Item-Verknüpfung wichtig, wenn ein Node Items erweitert oder transformiert, besonders wenn Ausdrücke später von .item oder Daten aus vorherigen Nodes abhängen.

Ich würde es als ordnungsgemäße verschachtelte Schleife umstrukturieren:

Äußere Schleife: Loop Over Images
Create Concept Folder
Download Image
Build Prompts

Dann innere Schleife: Loop Over Prompts
Gemini data
Generate Concept Image
Prepare Binary
Upload Concept Image
→ zurück zu Loop Over Prompts

Nachdem die innere Loop Over Prompts fertig ist, verbinde deren Done-Ausgang zurück mit dem äußeren Loop Over Images-Node, damit das nächste Bild startet. Leite nicht eines der sechs generierten Prompt-/Image-Items zurück in die äußere Bildschleife. n8ns Loop Over Items-Node ist dazu gedacht, Batches zu verarbeiten und dann von den Schleife/fertig-Pfaden fortzufahren, und Nodes verarbeiten Listen oft automatisch, also sollte die Item-Anzahl durch die Schleifenstruktur gesteuert werden, statt mit Limit zu flicken.

Kopiere auch im Build Prompts-Code-Node die ursprünglichen Bild-/Ordner-Felder in jedes der 6 generierten Prompt-Items, zum Beispiel imageId, imageName, folderId und den heruntergeladenen Dateipfad. Auf diese Weise muss der Upload-Schritt sich nicht auf fragile Verweise auf äußere Schleife-Items verlassen. Falls du später .item-Ausdrücke verwendest, stelle sicher, dass der Code-Node die Item-Verknüpfung/pairedItem beibehält, denn n8n braucht diese Verknüpfung, wenn ein Input-Item zu mehreren Output-Items wird.

Hallo @Gokhan_ARSLANTAS Willkommen!
Du kannst die Schleife ganz entfernen. Create Concept Folder wird bereits einmal pro eingehendem Bild ausgeführt, also speise die Drive-Dateiliste direkt hinein und lass einen Code-Node jede Bild-x-Prompt-Kombination als flache Elemente ausgeben (2 Bilder, 6 Prompts = 12 Elemente), jedes mit seiner eigenen folderId, fileId und prompt:

const scenarios = ['scenario 1', 'scenario 2', 'scenario 3', 'scenario 4', 'scenario 5', 'scenario 6'];
const images = $('List Images').all();

return $input.all().flatMap((folder, i) => scenarios.map((s, n) => ({
  json: {
    folderId: folder.json.id,
    fileId: images[i].json.id,
    filename: `${images[i].json.name}-v${n + 1}.png`,
    prompt: `${images[i].json.name}, ${s}`
  }
})));

Ersetze List Images durch den Namen deines Drive-List-Nodes. Download Image, Gemini data, HTTP Request und Upload Concept Image werden dann jeweils einmal pro Element ausgeführt, sodass das Ganze eine gerade Linie ist ohne Loop-Node und ohne Kante, die auf etwas zurückführt.
Wenn die Bild-API dich mit Rate Limits bremst, drossele den HTTP Request-Node mit Add Option > Batching (Items per Batch = 1, Batch Interval = 1000), anstatt eine Schleife zurückzuführen.

Hallo James, vielen Dank für dein Feedback. Ich habe es versucht, kann das Problem aber nicht beheben. Ich bekomme auch Hilfe von einem KI-Agenten, um Informationen in die Knoten einzufügen. Vielleicht liegt es daran. Viele Grüße

Lieber Anshul, ich werde es jetzt versuchen. Danke für dein Feedback. Deshalb nutze ich pro Bild 6 verschiedene Prompts. Es gibt nicht zwei Eingabebilder gleichzeitig. Ist deine Lösung immer noch OK?

Hallo @Gokhan_ARSLANTAS
Ja. Ein Bild bedeutet nur, dass der Code-Node 6 Elemente statt 12 ausgibt, und Download Image, Gemini data, HTTP Request und Upload Concept Image werden jeweils 6 Mal ausgeführt. Sonst ändert sich nichts.
Wenn es immer genau ein Bild ist, kannst du die Index-Paarung weglassen und es flach halten:

const scenarios = ['scenario 1', 'scenario 2', 'scenario 3', 'scenario 4', 'scenario 5', 'scenario 6'];
const image = $('List Images').first().json;
const folderId = $input.first().json.id;

return scenarios.map((s, n) =
  {
    json: {
      folderId,
      fileId: image.id,
      filename: `${image.name}-v${n + 1}.png`,
      prompt: `${image.name}, ${s}`
    }
  });

Lass den Code-Node im Modus „Run Once for All Items

Ich bestätige die Diagnose von James, das ist genau das klassische Problem, mehrere Loop-Ebenen in n8n zu vermischen.

Der Limit-Node „setzt