Zurück zum Blog

Schluss mit Prompt-Coding: Einen selbstkorrigierenden KI-Agenten mit n8n & Supabase bauen

Der First-Principles-Ansatz zur Behebung von KI-Halluzinationen.

KI Neuronales Netzwerk

Die meisten Entwickler versuchen, KI-Fehler zu beheben, indem sie längere, komplexere System-Prompts schreiben. Sie fügen Regeln hinzu wie „Verwende kein Wix für SaaS-Apps" oder „Empfehle immer Bubble für Marktplätze."

Dieser Ansatz ist grundlegend fehlerhaft. Mit wachsendem Regelwerk wird der Prompt unhandlich, die Token-Kosten steigen und die Aufmerksamkeit des Modells verwässert, was zu „Instruction Drift" führt.

💡 Die überlegene Alternative: Dynamic Few-Shot Prompting (RAG für Beispiele) Anstatt Regeln fest zu codieren, speichern wir Hunderte von „korrekten Entscheidungen" in einer Vektordatenbank und injizieren zur Laufzeit nur die 3-4 relevantesten Beispiele in den Prompt.

Diese Anleitung führt durch den Aufbau einer automatisierten Pipeline mit n8n und Supabase, bei der Sie die KI einfach durch Hinzufügen einer Zeile in einer Tabelle „trainieren" können.

Die Architektur

Wir benötigen drei Komponenten, um die Logik (Prompt) vom Wissen (Beispiele) zu entkoppeln:

Datenbank-Architektur
  • Das Gehirn (OpenAI): Zum Generieren von Embeddings und finalen Antworten.
  • Das Gedächtnis (Supabase): Eine Vektordatenbank, die „Problem → Lösung"-Paare speichert.
  • Das Nervensystem (n8n): Orchestriert den Datenfluss zwischen Benutzer, DB und LLM.

Warum das funktioniert

LLMs sind Muster-Matcher, keine Logik-Engines. Wenn Sie dem Modell zeigen, wie Sie ein ähnliches Problem in der Vergangenheit gelöst haben, ahmt es das Muster nach. Das ist mathematisch robuster, als die Logik in abstraktem englischem Text zu beschreiben.

The Why

Phase 1: Der Vector Store (Supabase)

Wir brauchen eine Datenbank, die die „semantische Bedeutung" einer Anforderung versteht, nicht nur Keyword-Matching.

  1. Erstellen Sie ein Projekt bei Supabase.
  2. Navigieren Sie zum SQL Editor und führen Sie das folgende Setup-Skript aus.
⚠️ Hinweis Wir verwenden 1024 Dimensionen, um mit OpenAIs text-embedding-3-large Modell übereinzustimmen.
-- 1. Vector Extension aktivieren
create extension if not exists vector;

-- 2. Speichertabelle erstellen
create table examples (
  id uuid primary key,
  content text,        -- Die "User Requirement" (was gesucht wird)
  metadata jsonb,      -- Der vollständige Kontext (Empfehlung + Erklärung)
  embedding vector(1024)  -- MUSS deinen eingebeteten Model Ausmaßen entsprechen
);

-- 3. Ähnlichkeitssuchfunktion erstellen
create or replace function relevant_examples (
  query_embedding vector(1024),
  match_threshold float,
  match_count int
)
returns table (
  id uuid,
  content text,
  metadata jsonb,
  similarity float
)
language plpgsql
as $$
begin
  return query
  select
    examples.id,
    examples.content,
    examples.metadata,
    1 - (examples.embedding <=> query_embedding) as similarity
  from examples
  where 1 - (examples.embedding <=> query_embedding) > match_threshold
  order by examples.embedding <=> query_embedding
  limit match_count;
end;
$$;

Phase 2: Die Ground Truth (n8n Data Tables)

Anstatt Vektoren direkt zu verwalten, verwenden wir n8ns interne Data Tables als unser CMS.

  1. Erstellen Sie in n8n eine Data Table namens Website Recommendation Examples.
  2. Fügen Sie drei String-Spalten hinzu:
    • requirements (Das Eingabeszenario)
    • recommendation (Die korrekte Ausgabe)
    • explanation (Die „Chain of Thought")

Seed-Daten: Fügen Sie 10-15 unterschiedliche Beispiele hinzu.

  • Zeile 1: „Einfaches Portfolio für einen Fotografen" → „Squarespace"
  • Zeile 2: „Multi-Vendor-Marktplatz wie Airbnb" → „Bubble oder Sharetribe"

Phase 3: Der Lernzyklus (Synchronisierter Workflow)

Wir benötigen einen Workflow, der die n8n-Tabelle überwacht und den Supabase-Vektorspeicher aktualisiert. Dadurch wird sichergestellt, dass die KI neue „Lektionen“ automatisch lernt, sobald diese hinzugefügt werden.

  1. Auslöser: Zeitplan (täglich)
  2. Zeilen abrufen (n8n-Tabelle): Alle Zeilen abrufen, die updatedAt aktuell sind (z. B. die letzten 48 Stunden).
  3. Elemente durchlaufen: Bearbeiten Sie jeweils ein Beispiel.
  4. Alte Version löschen (Supabase):
    Entscheidender Schritt Bevor Sie das aktualisierte Beispiel hinzufügen, löschen Sie bitte alle vorhandenen Zeilen mit der gleichen ID, um Duplikate zu vermeiden.
  5. Dokument hinzufügen (Supabase Vector Store):
    • Modell: text-embedding-3-large
    • Abmessungen:1024
    • Mapping Daten:
      • Seiteninhalt → requirements (Das ist es, was wir einbetten).
      • Metadaten → Das vollständige Objekt zuordnen (id, recommendation, explanation).

Phase 4: Die Denkschleife (Inferenz-Workflow)

Dies ist der Live-Agent, der auf Benutzeranfragen antwortet.

  1. Auslöser: Chat oder Webhook (Input: user_requirements)
  2. Abrufen (Supabase Vector Store):
    • Operation: Get Many (Abrufen sortierter Dokumente).
    • Abfrage: {{ $trigger.user_requirements }}
    • Limit: 4
    • Funktions Name: relevant_examples
  3. Formatkontext (Code Node): Nimm die 4 JSON-Ergebnisse und wandle sie in einen String um.
  4. LLM Chain (OpenAI GPT-4):

System Prompt:

Sie sind ein Experte für Webseitenempfehlungen.
Um Ihnen die Beantwortung der Benutzeranfrage zu erleichtern, finden Sie hier Beispiele dafür, wie wir ähnliche Anfragen in der Vergangenheit bearbeitet haben:

{{ $json.formatted_examples }}

Analysieren Sie die Anfrage des Nutzers anhand dieser Präzedenzfälle:
Benutzeranfrage: {{ $trigger.user_requirements }}

Das „Teaching"-Paradigma

Die Schönheit dieses Systems liegt darin, wie Sie mit Fehlern umgehen.

Wenn der Benutzer nach einer „Komplexen SaaS-App" fragt und die KI fälschlicherweise „Wix" empfiehlt:

✓ Bearbeiten Sie NICHT den System-Prompt. ✓ Schreiben Sie KEINEN Code.

Aktion: Gehen Sie zu Ihrer n8n Data Table. Fügen Sie eine neue Zeile hinzu:
  • Requirement: „Aufbau einer komplexen SaaS-App mit Auth und Datenbank."
  • Recommendation: „Bubble oder Custom Code."
  • Explanation: „Wix ist auf statische Inhalte und einfachen E-Commerce beschränkt; SaaS-Logik erfordert ein dediziertes Backend."
Dae Lehr-Diagramm

Beim nächsten Sync-Lauf wird dieser Vektor hinzugefügt. Wenn ein Benutzer eine ähnliche Frage stellt, ruft das System diese spezifische Korrektur ab und gibt die richtige Antwort.

Das Resultat

Kritische Analyse

Obwohl leistungsfähig, hat dieser „Managed Memory"-Ansatz Kompromisse:

Managed Memory

Latenz

Der zusätzliche Hop zu Supabase und die Embedding-Generierung fügen ~500ms-1s zur Antwortzeit hinzu.

Widersprüche

⚠️ Datenhygiene ist kritisch Wenn Ihre Beispieltabelle widersprüchliche Ratschläge enthält, wird das Modell verwirrt.

Fazit

Diese Architektur bewegt Sie vom „KI-Konsumenten" zum „KI-Architekten" – Sie bauen Systeme, die sich durch Datenkuration im Laufe der Zeit verbessern, anstatt durch endloses Prompt-Tweaking.

Bereit, Ihr eigenes zu bauen?

Starten Sie mit n8n und Supabase, um selbstverbessernde KI-Agenten zu erstellen.

Kontakt aufnehmen