KI selber bauen – Schritt 8: Warum mehr Regeln nicht automatisch bessere Antworten bringen

In Schritt 7 hatte ich endgültig akzeptiert: Ein großes Sprachmodell baue ich mit privaten Mitteln nicht nach. Das war ernüchternd, aber auch befreiend. Denn wenn das Modell selbst kein eigener Baustein wird, dann bleibt mir ein anderer Hebel: der Auftrag, den ich dem Modell gebe. Genau dort setzte Schritt 8 an.

Einstieg: Warum der Prompt plötzlich im Mittelpunkt stand

Ich hatte verstanden, dass ich das Sprachmodell nicht selbst ersetzen oder neu trainieren würde. Also konzentrierte ich mich auf den Teil, den ich direkt beeinflussen konnte: die Anweisung an das Modell, den sogenannten Prompt.

Der Prompt wurde für mich damit immer wichtiger. Und zunächst klang die Lösung sehr einfach:

Wenn das Modell etwas falsch macht, muss ich die Regeln eben genauer formulieren.

Hinweis zur Serie: Du arbeitest bereits mit unterschiedlichen Prompts für unterschiedliche Aufgaben? Dann kannst du direkt zu Schritt 9 springen – dort zeige ich, wie daraus bei mir der Flex-Prompt entstand.

Die ersten Prompts: Noch kurz und klar

Am Anfang waren meine Anweisungen relativ kurz. Ich habe dem Modell sinngemäß gesagt:

  • Beantworte die Frage.
  • Nutze vorhandene Informationen.
  • Erfinde nichts.
  • Antworte möglichst knapp.

Das funktionierte erstaunlich gut. Aber natürlich gab es auch Situationen, in denen die Antwort trotzdem nicht passte. Und dann wurde eine Regel ergänzt.

Wie meine Prompts immer größer wurden

Der Ablauf war immer derselbe:

Ein Fehler taucht auf. Ich ergänze eine Regel. Ein anderer Fehler taucht auf. Ich ergänze die nächste Regel. Irgendwann enthält der Prompt immer mehr Sonderfälle.

Das fühlte sich zunächst nach Kontrolle an. Ich hatte das Gefühl, jedes Problem ließe sich durch eine zusätzliche Vorgabe lösen. Aber langsam entstand ein neues Problem: Der Prompt wurde so voll, dass er kaum noch zu überblicken war.

Das Modell wird nicht automatisch richtiger

Technisch betrachtet versucht ein Sprachmodell, auf der Grundlage des aktuellen Kontexts und der gegebenen Anweisungen eine passende Textfortsetzung zu erzeugen. Es führt keine festen Regeln aus, sondern wählt aus dem, was es als „passend“ gelernt hat.

Wenn der Prompt sehr eng, überladen oder teilweise widersprüchlich wird, kann das Modell Schwierigkeiten bekommen, alle Vorgaben sinnvoll miteinander zu verbinden. Es kann dann zum Beispiel:

  • unnatürlich antworten,
  • wichtige Informationen weglassen,
  • sich zu stark an einzelne Regeln klammern,
  • widersprüchliche Vorgaben unterschiedlich gewichten,
  • trotzdem versuchen, eine Antwort zu erzeugen, obwohl die vorhandenen Informationen dafür eigentlich nicht ausreichen.

Wichtig: Das Modell hat keine Angst und keine Gefühle. Es fühlt sich nicht „eingeengt“. Aber viele gleichzeitige Einschränkungen verkleinern den möglichen Antwortbereich so stark, dass die Ergebnissicherheit sinkt.

Mein damaliger Eindruck: Ich drängte das Modell in eine Ecke

Für mich wirkte es zeitweise fast so, als würde ich das Modell mit meinen Regeln in eine Ecke drängen. Ich wollte verhindern, dass es sich etwas ausdenkt. Also formulierte ich alles immer enger.

Das Ergebnis war frustrierend: Je enger ich alles vorgab, desto häufiger kamen Antworten, die zwar irgendwie meinen Regeln folgten, aber trotzdem nicht das waren, was ich eigentlich wollte. Die Antworten wurden steifer, vorsichtiger und manchmal sogar unbrauchbarer.

Genau die Regeln, die Fehler verhindern sollten, erzeugten so neue Probleme.

Prompt ist keine Programmlogik

Dieser Punkt war für mich ein wichtiger Lernschritt:

Ein Prompt ist keine klassische Programmlogik.

Eine Python-Bedingung wie if X: mache Y ist etwas anderes als die Anweisung an ein Sprachmodell: „Wenn X passiert, dann mache möglichst Y.“ Das Modell interpretiert Sprache. Es führt jede Formulierung nicht wie einen festen Programmcode aus.

Diese Erkenntnis hat mein Projekt stark verändert. Ich konnte nicht einfach „Programmregeln“ in den Prompt schreiben und erwarten, dass sie deterministisch umgesetzt werden.

Regeln gehören nicht alle ins Modell

Irgendwann stellte ich mir eine grundlegende Frage: Warum versuche ich eigentlich, jede Entscheidung in den Prompt zu packen?

Ein Teil dieser Regeln könnte doch mein eigenes Python-Programm übernehmen. Zum Beispiel:

  • wann überhaupt ein Modell gefragt wird,
  • welche Informationen mitgeschickt werden,
  • welche Art von Antwort gebraucht wird,
  • ob eine Antwort gespeichert werden darf,
  • welcher Auftrag für diese konkrete Situation sinnvoll ist.

Damit begann sich die Verantwortung langsam vom Prompt zur eigenen Programmlogik zu verschieben. Noch hatte ich keine fertige Architektur, aber die Richtung wurde klar.

Nicht jede Frage braucht denselben Prompt

Mir wurde auch bewusst: Nicht jede Frage braucht dieselben Anweisungen.

Eine Begrüßung braucht andere Vorgaben als eine Wissensfrage. Eine Erklärung braucht andere Regeln als eine Reparaturanleitung. Und eine Frage, die gespeichertes Wissen nutzen soll, braucht möglicherweise andere Informationen als eine offene Recherchefrage.

Trotzdem hatte ich lange versucht, möglichst viel davon in einen einzigen großen Prompt zu packen. Das war unbequem, unübersichtlich und vor allem unnötig.

So entstand die nächste Idee:

Warum überhaupt immer denselben Prompt benutzen?

Der erste Gedanke zum Flex-Prompt

Vielleicht sollte der Prompt nicht starr sein. Vielleicht sollte mein eigenes System zuerst erkennen, was gerade gebraucht wird. Und erst danach den passenden Auftrag für das Sprachmodell zusammenstellen.

Damit entstand die Idee, die später zu meinem Flex-Prompt wurde. Ich wusste noch nicht genau, wie ich das technisch umsetzen sollte, aber das Prinzip war klar:

Nicht die Frage wird in einen starren Prompt gezwängt, sondern der Prompt passt sich der Aufgabe an.

Ein wichtiger Architekturwechsel beginnt

Bis dahin hatte ich versucht, das Sprachmodell durch immer mehr Text zu kontrollieren. Jetzt änderte sich mein Denken:

Nicht das Modell sollte alle Regeln kennen. Mein eigenes System sollte entscheiden, welche Regeln für die aktuelle Aufgabe überhaupt relevant sind.

Das war ein kleiner Gedanke, hatte aber später große Auswirkungen auf den Aufbau von Eureka – so nenne ich mein eigenes KI-System.

Was ich aus diesem Versuch gelernt habe

Die Erfahrung mit immer längeren Prompts hat mir einige Dinge deutlich gemacht:

  • Ein längerer Prompt ist nicht automatisch ein besserer Prompt.
  • Viele Regeln können sich gegenseitig behindern.
  • Ein Sprachmodell führt Anweisungen nicht wie klassischen Programmcode aus.
  • Feste Entscheidungen gehören oft besser in die eigene Programmlogik.
  • Unterschiedliche Aufgaben brauchen unterschiedliche Anweisungen.
  • Der Prompt sollte nur das enthalten, was für die aktuelle Aufgabe wirklich gebraucht wird.

Schritt 8 ist geschafft, wenn …

Nach diesem Schritt solltest du verstanden haben, warum immer mehr Prompt-Regeln irgendwann zum Problem werden können. Und warum ein Prompt kein Ersatz für eigene Programmlogik ist.

Außerdem geht es darum, zu erkennen: Nicht jede Frage braucht denselben Auftrag. Der nächste logische Schritt ist deshalb ein dynamischer Prompt – ein Prompt, der sich der jeweiligen Aufgabe anpasst.

Ausblick auf Schritt 9

Schritt 9 trägt bei mir den Titel: „Der Flex-Prompt: Nicht jede Aufgabe braucht dieselben Regeln“.

Dort erzähle ich, wie mein eigenes Programm begann, abhängig von der jeweiligen Aufgabe unterschiedliche Anweisungen für das Modell zusammenzustellen.

Das Ziel ist dann nicht mehr:

  • eine Frage → ein großer fester Prompt → Ollama

Sondern:

  • eine Frage → eigenes System erkennt die Aufgabe → passender Prompt wird zusammengestellt → Ollama formuliert

Damit ist Schritt 8 geschafft. Der nächste Schritt bringt uns endlich zu der Stelle, an der das eigene System anfängt, intelligenter zu werden als ein einzelner, starrer Prompt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert