Ein handgetunter Prompt kam auf 91 %. Ein kompilierter auf 99 %.
Leiten Sie eine Frage zur Lieferkette falsch weiter, und eine Bestandsanfrage kommt mit einer Antwort zur Tourenplanung zurück. Ich habe den handgeschriebenen Klassifikator-Prompt durch einen mit DSPy kompilierten ersetzt und danach mehr Zeit in die Messung gesteckt als in das Kompilieren.
Ein handgetunter Prompt kam auf 91 %. Ein von einem Optimierer geschriebener kam auf 99 %. Beide gemessen an Anfragen, die keiner von beiden im Training gesehen hatte.
Warum das zählt
Die erste Entscheidung eines KI-Systems ist, welche Art von Frage es bekommen hat. Leiten Sie sie falsch weiter, und eine Leitung der Lieferkette, die nach ihrem Bestand fragt, bekommt eine Antwort zur Tourenplanung. Die Empfehlung sieht seriös aus. Die Zahlen gehören zu einem anderen Problem.
Der übliche Anfang ist ein handgeschriebener Prompt, der jede Kategorie beschreibt. Das trägt, bis jemand eine Anfrage so formuliert, wie es die schreibende Person nie vorgesehen hat, und jeder Fehlgriff bringt den nächsten Flicken.
Es gibt einen anderen Weg. Labeln Sie genug Beispiele, um festzulegen, was richtig heißt, und lassen Sie dann einen Optimierer den Prompt gegen dieses Ziel schreiben.
Ich habe aufgehört, den Prompt zu tunen, und angefangen, die Evaluation festzulegen. Acht Punkte kamen aus diesem Wechsel.
Wie es funktioniert
Das DSPy-Framework aus Stanford behandelt Prompts als kompilierte Programme: Sie legen Eingaben, Ausgaben und eine Gütemetrik fest, und ein Optimierer schreibt die Anweisungen und wählt die Beispiele. Programmieren statt prompten.
Ich habe das auf den Intent-Klassifikator eines LangGraph-ERP-Copilots für die Lieferkette angewendet, der Anfragen auf 10 abgegrenzte Kategorien verteilt. Ich habe 100 Anfragen von Hand gelabelt, 10 je Kategorie. Der Optimierer hat die Anweisungen neu geschrieben und die Demonstrationen behalten, die am besten abschnitten.
Die Messung zu entwerfen dauerte länger als das Kompilieren. Eine einzelne Aufteilung in Trainings- und Testdaten ist bei 100 Beispielen zu verrauscht, um ihr zu trauen: ein einziges zurückgehaltenes Beispiel verschiebt den Wert um 5 Punkte. Ich habe deshalb eine 5-fache Kreuzvalidierung gefahren, nach Intent geschichtet, damit jede Anfrage genau einmal bewertet wurde, und zwar von einem Faltungsmodell, das nie auf ihr trainiert hatte. Referenz 91,0 %. Kompiliert 99,0 %. Also 8 Punkte mehr, plus minus 4,5, mit einem Zuwachs in jeder Faltung.
Diese Genauigkeit kostet Tokens: der kompilierte Prompt trägt seine gelernten Anweisungen und vier Demonstrationen in jeden Aufruf.
Überrascht hat mich das Labeln. Zu entscheiden, was „richtig“ bei 100 mehrdeutigen Fragen heißt, hat Regeln herausgetrieben, die ich nie aufgeschrieben hatte. Gehört „finde mir eine günstigere Route für 500 Einheiten“ zur Netzwerkführung oder zur Lieferantenzuteilung? Das hängt davon ab, wer das Logistiknetz steuert und wer die Lieferantenverträge. Diese Unterscheidung lebte in meiner Intuition, bis das Labeln sie sichtbar machte.
Eine Grenze gehört dazu: diese 100 Label stammen allein von mir, der Wert gilt also für die Anfragen, die ich vorhergesehen habe. Die Traces aus dem Betrieb sind die nächste Label-Runde.