Tipps & Tricks

Die Entwicklung vom Prompt-Engineering zum Concept-Engineering

10 min Lesezeit
Die Entwicklung vom Prompt-Engineering zum Concept-Engineering

Einführung

Das Konzept des Prompt Engineering hat sich aus gutem Grund etabliert. Es stellte den schnellsten Weg dar, um nützliche Verhaltensweisen aus Sprachmodellen zu extrahieren, ohne dass eine Feinabstimmung oder spezielle Infrastruktur erforderlich war. Doch Teams, die echte Produkte entwickeln, stellten bald fest, dass eine Abhängigkeit von einem einzigen, großen Hinweis dazu führt, dass das System wie mit Klebeband zusammengehalten wirkt.

Das Konzept Engineering stellt die nächste Abstraktion dar. Anstatt eine Interaktion als „clevere Zeichenkette“ zu betrachten, wird sie als eine kleine Menge expliziter Konzepte behandelt: Eingaben, Ausgaben, Einschränkungen, Werkzeuge und Erfolgskriterien. Auf diese Weise werden Prompts nur zu einem Implementierungsdetail.

Dieser Wandel zeigt sich an verschiedenen Stellen: strukturierte Ausgaben und Funktionsaufrufe, die Verträge durchsetzen, Frameworks wie DSPy, die Prompt-Pipelines kompilieren und optimieren, sowie Forschung, die Konzepte innerhalb der Modellrepräsentationen manipuliert, anstatt Textprompts neu zu schreiben.

Warum Prompt Engineering an seine Grenzen stößt

Das Prompting ist effektiv – bis es das nicht mehr ist. Die häufigsten Schwachstellen lassen sich vorhersagen:

  • Brittleness: Eine kleine Änderung der Formulierung kann Formatierung, Ton und Genauigkeit beeinträchtigen.
  • Verborgene Anforderungen: Die Widersprüche zwischen „kurz sein“ und „Randfälle einbeziehen“ werden erst offensichtlich, wenn Nutzer sich beschweren.
  • Keine Verträge: Ein Prompt kann nicht wirklich garantieren, dass die Felder A, B und C vorhanden sind, wenn der nachgelagerte Code diese erwartet.
  • Token-Druck: Mit zunehmenden Beispielen, Richtlinien und Kontext steigen die Kosten, und die Aufmerksamkeit kann sich zerstreuen.

Es gibt einige bewährte Praktiken im Prompt Engineering, die hilfreich sein können (klare Anweisungen, Beispiele, Einschränkungen), aber sie halten einen dennoch im Bereich des „String Craft“.

Das Konzept Engineering in der Praxis definieren

Das Konzept Engineering ist eine Denkweise und eine Sammlung von Modellen, nicht nur ein einfaches Einmalwerkzeug.

Der Ausgangspunkt sind in der Regel Verträge: Man definiert, was das Modell produzieren muss (Schemas, Signaturen, Typen). So wird festgelegt, was „richtig“ bedeutet, damit man es konsistent validieren kann.

Von dort aus wird der Workflow als eine Reihe von zusammensetzbaren Modulen behandelt, die die Arbeit in kleinere Schritte unterteilen, die man austauschen, testen und wiederverwenden kann. Der Verbesserungsprozess basiert dann auf einer bewertungsgetriebenen Iteration: Das Verhalten wird verbessert, indem die Ausgaben anhand eines klaren Metrik gemessen werden, anstatt auf das Bauchgefühl zu vertrauen.

Die Grenzen der Werkzeuge lassen das Modell entscheiden, wann ein Werkzeug aufgerufen werden soll, während die Werkzeuge selbst deterministisch und gut definiert bleiben.

Schließlich gibt es einen aufkommenden Trend zur Kontrolle auf Konzept-Ebene – wo die Forschung darauf abzielt, semantische Attribute direkt innerhalb der internen Repräsentation des Modells anzusprechen.

Vergleich von Prompt- und Konzeptansätzen

Betrachten wir eine realistische Anfrage: „Lese eine Kundenmitteilung und leite sie an das richtige Team weiter, mit einer kurzen Zusammenfassung und Dringlichkeit.“

Anwendung eines Prompt-Ansatzes

Der Prompt-Ansatz ist oft fragil:

Du bist ein Support-Triage-Assistent.
Aufgabe:
1) Fasse die Nachricht in 2 Sätzen zusammen.
2) Wähle genau ein Routing-Team: Abrechnung, Technik, Konto, Vertrieb oder Sonstiges.
3) Setze die Dringlichkeit: Niedrig, Mittel, Hoch.
Regeln:
– Wenn der Nutzer erwähnt, dass er belastet wurde, Rückerstattungen, Rechnungen, Zahlungen oder Kartenprobleme => Abrechnung
– Wenn der Nutzer von Fehlern, Bugs, Anmeldeproblemen, Abstürzen, Integrationen spricht => Technik
– Wenn der Nutzer von Stornierungen, Planänderungen, Plätzen, Berechtigungen spricht => Konto
– Wenn der Nutzer nach Preisen, Demos, Unternehmenslösungen, Upgrades fragt => Vertrieb
Ausgabeformat (streng):
Zusammenfassung:
Team:
Dringlichkeit:
Nachricht:
{{CUSTOMER_MESSAGE}}

Dies kann bemerkenswert gut funktionieren. Allerdings ist „streng“ nicht immer streng, da eine einzige zusätzliche Zeile oder ein einfallsreiches Synonym das Parsing stören kann.

Anwendung eines Konzeptansatzes

Man beginnt damit, die Konzepte zu definieren, die das System benötigt: ein Schema, eine Routing-Politik und einen Validierungsschritt.

  1. Definiere den Ausgabevertrag (Schema)
    Strukturierte Ausgaben beschränken das Modell auf ein vom Entwickler bereitgestelltes JSON-Schema, was die Zuverlässigkeit der Routing-Ausgaben in der Produktion erheblich verbessert.
{
 "type": "object",
 "properties": {
 "summary": { "type": "string" },
 "team": { "type": "string", "enum": ["Billing", "Technical", "Account", "Sales", "Other"] },
 "urgency": { "type": "string", "enum": ["Low", "Medium", "High"] },
 "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
 "signals": { "type": "array", "items": { "type": "string" } }
 },
 "required": ["summary", "team", "urgency", "confidence", "signals"],
 "additionalProperties": false
}
  1. Der Prompt wird kürzer, da der Vertrag das Gewicht trägt
    Du wirst eine Kundenmitteilung in eine Support-Routing-Entscheidung klassifizieren.
    Verwende die Routing-Politik:
    – Abrechnung: Belastungen, Rückerstattungen, Rechnungen, Karte/Zahlung
    – Technik: Fehler, Bugs, Anmeldungen, Abstürze, Integrationen
    – Konto: Stornierungen, Pläne, Plätze, Berechtigungen
    – Vertrieb: Preise, Demos, Unternehmenslösungen, Upgrades
    Gib JSON zurück, das dem bereitgestellten Schema entspricht.
    Nachricht:
    {{CUSTOMER_MESSAGE}}
  2. Füge eine deterministische Rückfallebene hinzu
    Wenn das Vertrauen niedrig ist, leite an „Sonstiges“ weiter und kennzeichne es zur menschlichen Überprüfung. Diese Regel ist deterministischer Code, nicht Prompt-Text.

Das ist Konzept Engineering: Die „Idee der Triage“ wird zu einem soliden Artefakt, das dein gesamtes System verstehen kann.

Die Technologie, die Konzept Engineering ermöglicht

Diese Technologien treiben die Branche über handgefertigte Prompts hinaus.

Nutzung strukturierter Ausgaben und Funktionsaufrufe

Wenn deine Anwendung maschinenlesbare Ergebnisse benötigt, sind Schemata entscheidend. Die strukturierten Ausgaben von OpenAI sind so konzipiert, dass sie den vom Entwickler definierten Schemata zuverlässiger folgen als frühere Ansätze, die lediglich „gültiges JSON“ erforderten.

In der Praxis reduziert dies Parsing-Fehler, seltsame Formatierungen und stille Datenabweichungen und drängt Teams dazu, Verträge und Schnittstellen zu verwenden, was genau der konzeptionelle Wandel ist.

Verwendung deklarativer Pipelines anstelle von Prompt-Strings

DSPy ist ein gutes Beispiel für Programmierung anstelle von Prompting: Du beschreibst Module und Metriken, und das System optimiert Prompts und Strategien innerhalb einer Pipeline.

Die zentrale Idee ist die Abstraktion:

  • Prompts werden zu Parametern
  • Workflows werden zu Graphen
  • Verbesserung wird zur Kompilierung und Bewertung, anstatt manuelle Änderungen basierend auf Instinkt

Zielgerichtete Kontrolle auf Konzept-Ebene über Textanweisungen hinaus

Einige Studien gehen weiter, indem sie Konzepte als Entitäten betrachten, die innerhalb der internen Aktivierungen des Modells modelliert und verwaltet werden können. PaCE (Parsimonious Concept Engineering) ist ein Beispiel in dieser Hinsicht, das darauf abzielt, unerwünschte Konzepte zu entfernen oder anzupassen, während hilfreiches Verhalten erhalten bleibt.

Du benötigst dies nicht, um heute großartige Produkte zu bauen, aber es ist ein Signal dafür, wohin die Abstraktionsebene tendiert: von Tokens zu Semantiken.

Konzept Engineering schrittweise übernehmen

Du kannst die Denkweise in kleinen Schritten übernehmen.

Schritt 1: Schreibe eine „Konzept-Spezifikation“, bevor du einen Prompt schreibst

Auf einer Seite, einfach gehalten, beginne damit, deine Eingaben (was du bereits hast) und deine Ausgaben (was der nächste Schritt oder das nachgelagerte System benötigt) aufzuschreiben.

Füge dann deine Einschränkungen hinzu, die die wesentlichen und verbotenen Elemente definieren, die das Modell daran hindern, abzuweichen.

Definiere schließlich die Werkzeuge, die das Modell aufrufen darf, und die Erfolgsmessgrößen, die erklären, wie du die Ausgaben bewerten wirst. Selbst diese minimale Checkliste kann das Bloat von Prompts verhindern.

Schritt 2: Fördere dein Format zu einem Vertrag

Wenn du einfachen Text zurückgeben musst, stelle sicher, dass er konsistent ist: Verwende eine Standardvorlage und führe grundlegende Prüfungen durch (obligatorische Felder, Formate, erlaubte Werte). Besser: Wechsle zu JSON mit einem Schema, sodass die Struktur durchgesetzt wird und Parsing/Bewertung zuverlässig wird.

Schritt 3: Füge eine Evaluationsschleife hinzu

Um die Ausgabe zu bewerten, wähle eine messbare Metrik:

  • „Gültigkeitsrate des Schemas“
  • „Routing-Genauigkeit im Vergleich zum beschrifteten Set“
  • „Nützlichkeit der Zusammenfassung (Daumen hoch-Rate)“

Iteriere dann basierend auf Zahlen, nicht auf Vermutungen. Umfragen zur automatischen Prompt-Optimierung zeigen, warum manuelle Iterationen nicht gut skalieren.

Schritt 4: Modularisiere einen Workflow

Teile einen großen Prompt in verschiedene Phasen auf: Signale identifizieren, Route entscheiden, Zusammenfassung erstellen und eine finale, organisierte Ausgabe produzieren. Obwohl jede Phase „nur ein Prompt“ bleibt, vereinfacht das Vorhandensein klarer konzeptioneller Grenzen die Wartung des Systems erheblich.

Konzept Engineering in der Praxis navigieren

Auf dem Papier macht Konzept Engineering Sinn. Es ist einfach, unbeabsichtigt den gleichen alten „riesigen Prompt“ in der Produktion zu reproduzieren, jedoch mit höflicherer Sprache. Der Zweck dieses Teils ist es, die Praktikabilität aufrechtzuerhalten.

Identifizierung häufiger Fallstricke

Das Problem des „Schema-Theaters“:

Du fügst ein JSON-Schema hinzu, aber das Modell kann weiterhin Mehrdeutigkeit in Felder wie Notizen, Gründe oder große Freitextblobs einschleusen. Dann hängt die nachgelagerte Logik stillschweigend von diesen Blobs ab.

Was stattdessen zu tun ist:

  • Halte Freitextfelder kurz und zweckgebunden
  • Bevorzuge Aufzählungen und Booleans für wichtige Entscheidungen
  • Füge eine Vertrauensschwelle und einen deterministischen Rückfallpfad hinzu

Konzepten ohne Tests

Wenn du nicht beantworten kannst: „Hat diese Änderung etwas verbessert?“, wirst du wieder in die Welt der gefühlbasierten Prompt-Änderungen zurückfallen. Stattdessen baue ein kleines beschriftetes Set (sogar 50 Beispiele), verfolge einige Kernmetriken (Schema-Gültigkeit, Entscheidungsgenauigkeit, Rückfallquote) und führe die gleiche Bewertung vor und nach jeder Änderung durch.

Übermodularisierung

Alles in viele Schritte zu zerlegen kann auch Latenz, Kosten und kumulative Fehler erzeugen. Modularisierung sollte nur dort eingesetzt werden, wo es eine echte Grenze gibt, und Schritte, bei denen die Zwischenausgabe nicht verwendet oder validiert wird, sollten zusammengeführt werden. Wenn Eingaben wiederholt werden, sollten auch teure Schritte zwischengespeichert werden.

Verwirrung bei den Werkzeugen

Wenn das Modell „Werkzeuge verwenden“ darf, du aber nicht klar definierst, wann ein Werkzeug erforderlich ist, kann es raten, anstatt das Werkzeug aufzurufen, oder Werkzeuge unnötig aufrufen. Setze eine einfache Regel wie „Wenn die Daten nicht in der Eingabe sind, rufe das Werkzeug auf“, halte die Werkzeugausgaben deterministisch und leicht zu parsen und protokolliere Aufrufe, um zu überprüfen, ob sie tatsächlich die Ergebnisse verbessern.

Schutzmaßnahmen einrichten

Um Überraschungen zu reduzieren, setze harte Einschränkungen im Code durch (Schwellenwerte, erlaubte Werte, maximale Längen), anstatt auf Prosa zu vertrauen. Halte Schemata eng, mit weniger Feldern und weniger Freiheitsgraden.

Wenn die Einsätze hoch sind, wende einen zweistufigen Prozess an: Zuerst eine gut organisierte Entscheidung treffen und danach einen benutzerorientierten Text basierend auf dieser Entscheidung erstellen.

Eine einfache Checkliste für „Konzept Engineering“ wiederverwenden

Verwende dies, wenn du einen Prompt in ein langlebigeres System umwandelst:

  • Vertrag: Haben wir ein Schema oder eine typisierte Ausgabe?
  • Konzeptgrenzen: Sind Extraktion, Entscheidung und Generierung dort getrennt, wo es wichtig ist?
  • Rückfälle: Was passiert, wenn das Vertrauen niedrig ist oder erforderliche Informationen fehlen?
  • Metriken: Welche Zahl zeigt uns, dass das System besser geworden ist?
  • Werkzeugpolitik: Wann muss das Modell Werkzeuge aufrufen vs. inferieren?
  • Versionierung: Können wir Verhaltensänderungen sicher zurücksetzen?

Praktische Beispiele analysieren

Eine Schutzmaßnahme zum Triage-Konzept hinzufügen

Wenn du das Triage-Beispiel von zuvor verwendest, ist ein starker Upgrade, die Entscheidung explizit von der Formulierung zu trennen.

Durchgang 1: Nur Entscheidung (strenges JSON)
Klassifiziere die Nachricht mithilfe der Routing-Politik.
Gib JSON zurück, das dem Schema entspricht.
Keine Entschuldigungen oder zusätzlichen Texte einfügen.
Nachricht:
{{CUSTOMER_MESSAGE}}

Durchgang 2: Kundenorientierte Zusammenfassung (verwendet die Entscheidung als Eingabe)
Schreibe eine kurze, freundliche interne Zusammenfassung für einen Agenten.
Verwende diese Felder als Quelle der Wahrheit:
Team: {{team}}
Dringlichkeit: {{urgency}}
Signale: {{signals}}
Regeln:
– Maximal 2 Sätze
– Keine Vermutungen über die Signale hinaus
Gib zurück:
Zusammenfassung:

Obwohl es klein erscheinen mag, ist dies ein großer konzeptioneller Gewinn: Die „Wahrheit“ des Systems wird zur strukturierten Entscheidung, und der menschenlesbare Text wird zur Präsentationsschicht.

Den rollierenden Durchschnitt über drei Monate finden

Betrachten wir diese Interviewfrage, bei der das Ziel darin besteht, den rollierenden Durchschnitt der Gesamteinnahmen aus Käufen über drei Monate zu ermitteln.

Wir haben eine Tabelle mit Käufen, die user_id, created_at (Datum) und purchase_amt enthält. Rückgaben werden durch negative Kaufwerte dargestellt, sodass wir negative Werte ausschließen. Um die Systemdesign-Kenntnisse zu vertiefen, könnten die Leser auch 10 GitHub-Repositories zur Vertiefung von Systemdesign-Kenntnissen erkunden.

„`

Bildquelle: ai-generated-gemini

KI Snack

Schreibe einen Kommentar

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