paint-brush
Das System-Prompt-Leck von Claude Sonnet 3.5: Eine forensische Analysevon@tyingshoelaces
5,783 Lesungen
5,783 Lesungen

Das System-Prompt-Leck von Claude Sonnet 3.5: Eine forensische Analyse

von tyingshoelaces.com9m2024/06/24
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Eine forensische Analyse des System-Prompt-Lecks von Claude Sonnet 3.5. Artefakte sind für strukturierte Ausgabeaufgaben wie Codegenerierung das, was die Vektorsuche für Rag ist, das Such- und Abfragesystem für definierte Ausgabe.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Das System-Prompt-Leck von Claude Sonnet 3.5: Eine forensische Analyse
tyingshoelaces.com HackerNoon profile picture
0-item

Inhaltsverzeichnis

  • Einführung in Artefakte

    Ein Schritt vorwärts bei der strukturierten Ausgabegenerierung.


  • Denken

    Logisches Denken ist ein wesentlicher Bestandteil des Generierungsprozesses.


  • Kennungen und Suche

    Die Suche und der Abruf von Artefakten ist ein wichtiger Teil der Systemaufforderung.


  • Struktur der Template-Sprache

    Eine Rendering-Vorlage, die sich je nach Eingabevariablen ändert


  • Abschluss

    Ein kleines Artefakt für Claude, ein riesiger Sprung für die KI.


  • Claude 3.5-System

    Das System fordert Sie vollständig auf

Einführung in Artefakte

Ein Schritt vorwärts bei der strukturierten Ausgabegenerierung.


Dies ist eine Analyse der Systemeingabeaufforderungsgenerierung für Claude 3.5 Sonnet. Der Link zum Code für diese Analyse ist unten mit der Quelle verfügbar. Der Hauptschwerpunkt dieser Analyse ist die Einführung des Konzepts der Artefakte und wie dies als Teil eines intelligenten Kategorisierungs- und Abfragesystems funktionieren könnte.


„Artefakte sind wesentliche, in sich geschlossene Inhalte, die Benutzer ändern oder wiederverwenden können.


Ein Artefakt ist ein Paradigmenwechsel, weil es ein neues Konzept formalisiert. Das Konzept persistenter Daten. Persistente Daten sind für uns ein Sprungbrett, um auf eine hoch kuratierte und strukturierte Inhaltsbibliothek zuzugreifen. Indem wir feste Referenzen bereitstellen, geben wir die Iteration frei und ermöglichen es uns, die Ausgabe schrittweise zu verbessern und zu verfeinern. Dies ist ein Schritt in Richtung Kontrolle der flüchtigen Natur ausführlicher LLM-Ausgaben.


Eines der inhärenten Probleme der generativen KI bei funktionalen Aufgaben wie der Codevervollständigung besteht darin, dass sie bei einfachen Änderungen oft ganze Dateien wiederholt. Es besteht eine große Nachfrage nach einer „Diff“-Funktion, mit der wir den Unterschied zwischen vorher und nachher ausgeben, anstatt denselben Inhalt zu wiederholen.


Artefakte erfüllen somit einen doppelten Zweck: Erstens dienen sie als Referenzpunkt dafür, wie und wo wir die Ausgabe benötigen. Dies ist wie die Festlegung des Umfangs oder die Definition eines Referenzpunkts. Dadurch wird verhindert, dass das LLM den Fokus auf das ursprüngliche Problem verliert, und die Struktur und Kategorisierung der Ausgabe bleiben erhalten.


Als Bonuspunkt haben wir auch eine Autovervollständigungsfunktion. Indem wir den „Basis“-Code und den Umfang der Änderungen definiert haben, haben wir unser LLM nun so ausgerichtet, dass es sich auf eine bestimmte Aufgabe oder ein bestimmtes Problem konzentriert, und zwar auf eine eigensinnige und kuratierte Weise. Dies verhindert sprunghafte Zoomverschiebungen und stellt außerdem die gesamte laufende Arbeit an der Eingabeaufforderung bereit. Jeder Ingenieur, der seinen Code versehentlich mit „Rest des Codes hier“ gelöscht hat, wird Ihnen danken. Wir können die Einstellung des Umfangs hier sehen:


„In sich geschlossene, komplexe Inhalte, die für sich allein verständlich sind, ohne Kontext aus dem Gespräch


Wir lenken den Fokus von unkontrollierter, ausführlicher Ausgabe auf ein konkretes Artefakt. Bemerkenswert ist die explizite Anweisung, den Kontext der Konversation zu ignorieren. Dies ist eine Methode zur Qualitätssicherung durch Bezugnahme auf kuratierte Daten. Es handelt sich um einen Qualitätskontrollmechanismus, der die ausführlichen und möglicherweise zufälligen Eigenschaften der Eingabe kontrolliert.


All dies passt zu einer Architektur für den Abruf. Da wir über eine umfangreiche Bibliothek kuratierter Artefakte verfügen, können wir unser System nun anweisen, aus einem kontrollierten Datensatz abzurufen. Wir wissen, dass alle großen KI-Anbieter stark darauf achten, in qualitativ hochwertige kuratierte Daten zu investieren. Artefakte sind ein Schritt in Richtung der Strukturierung ausführlicher Eingaben und Ausgaben.


Wir können sehen, dass der Fokus von der Eingabe und der Zuordnung zur systemdefinierten Recherche in der Eingabeaufforderung abweicht. Hier ist ein Beispiel für einige der Ausschlusskriterien:


„Inhalte, deren Nutzen vom aktuellen Gesprächskontext abhängt.“

Inhalte, die vom Benutzer wahrscheinlich nicht geändert oder wiederholt werden.

Anfrage von Benutzern, bei der es sich offenbar um eine einmalige Frage handelt.


Die Eingabeaufforderung konzentriert sich aktiv auf den Systemkontext und die vorliegende Aufgabe. Die Eingabeaufforderung versucht ausdrücklich, Eingaben herauszufiltern, die für eine sehr spezifische Ausgabe nicht relevant sind. Das Artefakt fungiert also sowohl im generierten Text als auch als strukturierte Daten im Hintergrund als konkreter Referenzpunkt. Dies ermöglicht uns eine schnelle und genaue Abfrage und Konzentration. Etwas, das sehr hilfreich ist für...

Denken

Logisches Denken ist ein wesentlicher Bestandteil des Generierungsprozesses.


Prompt-Ingenieure haben uns schon lange gesagt, dass einer der Schlüssel zu verlässlichen Ergebnissen darin liegt, LLMs zu verpflichten, einen mehrstufigen strukturierten und logischen Denkprozess zu bilden. Wir sehen in der Eingabeaufforderung eine formale Anerkennung dieser Tatsache.


„1. Bevor Sie ein Artefakt aufrufen, denken Sie in einem Satz in <antthinking>-Tags darüber nach, wie es anhand der Kriterien für ein gutes und ein schlechtes Artefakt abschneidet. Überlegen Sie, ob der Inhalt auch ohne Artefakt einwandfrei funktionieren würde. Wenn es artefaktwürdig ist, legen Sie in einem anderen Satz fest, ob es sich um ein neues Artefakt oder um eine Aktualisierung eines vorhandenen handelt (am häufigsten). Verwenden Sie für Aktualisierungen den vorherigen Bezeichner erneut.


Hier verpflichten wir unser System, einen strukturierten mehrstufigen Prozess zur Analyse der Aufgabe und der Ausgabe durchzuführen. Auch hier bewegen wir uns in Richtung einer strengen Definition von ausführlichem Inhalt und verweisen auf ein Such- und Abrufsystem für Artefakte.


„<antthinking>Das Erstellen eines Python-Skripts zur Berechnung von Fakultäten erfüllt die Kriterien für ein gutes Artefakt. Es handelt sich um ein in sich geschlossenes Stück Code, das für sich allein verständlich ist und wahrscheinlich wiederverwendet oder geändert wird. Dies ist eine neue Konversation, daher gibt es keine bereits vorhandenen Artefakte. Daher erstelle ich ein neues Artefakt.</antthinking>


<antthinking>Diese Anfrage ist eine direkte Änderung des bestehenden Fakultätsrechner-Artefakts. Es ist kein neues Artefakt, sondern eine Aktualisierung, um das Skript robuster zu machen. Ich werde die Fakultätsrechner-Kennung wiederverwenden, um die Kontinuität zu wahren und die Entwicklung unseres Codes zu zeigen.</antthinking>


Hier sehen wir die Implementierung eines logischen Denkprozesses zur Generierung definierter Ergebnisse. Indem wir sicherstellen, dass unser Algorithmus dieselben logischen Schritte durchläuft, haben wir die Grundlage für einen intelligenten und wiederholbaren Generierungsprozess.


Wir können diese Logik auf den Denkprozess einer Person übertragen. Zunächst haben wir einen logischen und rationalen Problemlösungsansatz. Wir ergänzen diesen mit harten Artefakten. Der LLM-Datensatz ist das Gehirn, aber Artefakte sind die Fähigkeiten und Kenntnisse, die es uns ermöglichen, zu einem bestimmten Ergebnis zu gelangen.


Wenn wir uns alle konkurrierenden Modelle vorstellen, können wir daraus schließen, dass sie auf der Replikation logischer Denkprozesse beruhen. Im Wesentlichen erschaffen wir ein Robotergehirn, das den logischen Denkprozess eines Menschen nachahmt. Wir bauen die fehlenden Teile, das Wissen, die Strukturen und die Abrufprozesse, die das Gehirn antreiben.


Dies macht Systemaufforderungen und -anweisungen zu unglaublich wertvollen Ressourcen. Das Verständnis und die Verfeinerung des „logischen Denkens“ ist ein wesentlicher Teil des Generierungsprozesses.


Wir können einige grundlegende Implementierungen dieses strukturierten Denkens im Code sehen …

Kennungen und Suche

Die Suche und der Abruf von Artefakten ist ein wichtiger Teil der Systemaufforderung.


„<antartifact identifier="factorial-script" type="application/vnd.ant.code" language="python" title="Einfaches Python-Faktorial-Skript"> def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)


Was ist also application/vnd.ant.code? Application ist einfach genug, VND ist der Anbieter, ANT ist Anthropic (die Entwickler von Claude) und Code; das ist ein Einblick in ihre Architektur. Ich würde eine Art Taxonomie und strukturierte Daten erwarten, die die Aufgaben auflisten, die die Leute mit LLMs zu erreichen versuchen.


  1. Kodierungsaufgaben

  2. Präsentationen

  3. Unterlagen

  4. Analyse

  5. Viel mehr...


Wir könnten beispielsweise für den Versuch einer PowerPoint-Präsentation einen Pseudocode erstellen.

 <antartifact identifier="powerpoint-presentation" type="application/vnd.ant.presentation" purpose="business" title="Simple powerpoint presentation"> Slide 1: Title slide Slide 2: Introduction Slide 3: Problem statement Slide 4: Solution </antartifact>


Dies hat mit ziemlicher Sicherheit nichts mit dem Produktionscode zu tun, stellt aber ein interessantes mentales Paradigma dar. Um ausführliche Ausgaben zu steuern und zu strukturieren, müssen wir auf logische und rationale Prozesse stoßen, um die Eingabe und Ausgabe zu kategorisieren und zu standardisieren.


Ich vermute, das bedeutet, dass bei eingehenden Eingaben separate, praxiserprobte Algorithmen ausgeführt werden, die Entitäten extrahieren und kategorisieren. Diese strukturierten Daten werden dann durch einen Asset-Such- und -Abrufprozess geleitet. Wobei wir für Text Vektordatenbanken verwenden; für andere definierte Ausgaben haben wir jetzt dieses Konzept von Artefakten eingeführt. Eine React Code-Aufgabe könnte beispielsweise ungefähr so aussehen.


 "INPUT: Create a react component for a metrics dashboard", "ENTITY_EXTRACTION: Coding, React, Metrics Dashboard", "ENTITY_SEARCH: Retrieve code artifacts for Metrics Dashboard where type = React", "SYSTEM_PROMPT: create_system_prompt(artifact_id='metrics-dashboard-component', type='application/vnd.ant.code', language='react')"


Es ist viel los und wir können sehen, wie viel harte Arbeit hinter den Kulissen nötig ist, um qualitativ hochwertige Beispiele und Taxonomien für einen im Grunde unbegrenzten theoretischen Aufgabenpool zu kuratieren. Um dies zu automatisieren, wird es im Hintergrund Iterationen mit anderen KI-Klassifizierungsalgorithmen geben.


Doch soweit wir das erkennen können, handelt es sich im Kern um ein ausgeklügeltes Such- und Abfragesystem, das auf einer proprietären Template-Sprache basiert.

Struktur der Vorlagensprache

Eine Rendering-Vorlage, die sich je nach Eingabevariablen verschiebt.


Ich habe meine Karriere vor vielen Jahren als Drupal-Entwickler begonnen. Als ich die Eingabeaufforderung las, fiel mir sofort das Wort TWIG ins Auge. Twig ist eine HTML-Vorlagensprache, die häufig zum Rendern von Vorlagen in HTML aus PHP verwendet wurde. Claude wird mit ziemlicher Sicherheit einen gleichwertigen Ansatz verwenden, der Eingabe und Kontext basierend auf strukturierten Daten (die wahrscheinlich außerhalb des LLM extrahiert wurden) anpasst.


Es sieht so aus, als ob Claude Sonnet 3.5 etwas Ähnliches verwendet, was durchaus Sinn macht. Angesichts des Texteingangs für das LLM müssen wir systematisch Textblöcke generieren. Dies sind die dynamischen Tags, die zur Generierung der Eingabeaufforderung zusammengestellt werden.


  1. <antartefakt></antartefakt>

  2. <Artefakte_Info><Artefakte_Info/>

  3. <Beispiel></Beispiel>

  4. <Benutzerabfrage></Benutzerabfrage>

  5. <Beispiel_Dokumentzeichenfolge></Beispiel_Dokumentzeichenfolge>

  6. <Assistentenantwort></Assistentenantwort>


Dies wird eine Art Funktionsaufrufansatz nutzen. Jedes Tag hat einen bestimmten Zweck. Dies dient dann als Abstraktion, wenn wir unser Modell anweisen, die richtige Kategorie und den richtigen Typ für jeden bestimmten Zweck zu finden. Ich stelle mir vor, dass die Prompt-Konstruktion ungefähr so abläuft. Massiv spekulativer Pseudocode im Anmarsch …


 function generate_reference() { context=artifact_type, artifact_id, task examples = search_examples_by_type('react', 'hooks', 'current_ids') return structured_data } function generate_system_instruction(structured_data) { <antartifact> <artifacts_info {{ attribute(version, '1.00') }}> <% artifact_introduction %> <% artifact_selection %> <% artifact_elimination %> <% artifact_usage %> <% artifact_instruction {{ type(code, 'data-code') }} {{ type(react, 'data-react') }} %> </ artifacts_info/> <example {{ for react_example in react_code_artifact }}>{react_example }</example> <example_docstring {{ for example_thought_process in curated_artifact_generation_example }}>{example_thought_process }<example_docstring /> <user_query>{sanitized_user_query}</user_query> <assistant_response>{sanitized_user_query}</assistant_response> </antartifact }


Da haben wir es also, einen in Blöcke unterteilten Denkprozess. Entitätsextraktion, zugeordnet mit erweiterter Suche und Abfrage. Die Bausteine für einen logischen Denkprozess. Die zugrunde liegenden Daten sind der Schlüssel zur Qualität der Ausgabe.

Abschluss

Ein kleines Artefakt für Claude, ein riesiger Sprung für die KI.


Artefakte sind für strukturierte Ausgaben wie die Codegenerierung das, was die Vektorsuche für Lumpen ist. Sie sind das Such- und Abfragesystem für strukturierte Ausgaben.


Wir sehen in Claude 3.5 Hinweise auf einen strukturierten und rationalen Denkprozess. Wir haben immer erwartet, dass dies in der generativen KI wichtig ist, aber dies ist ein formaler Beweis.


Ich kann mir vorstellen, dass ganze Armeen von Entwicklern und Vermarktern Bibliotheken mit kuratierten Artefakten aufbauen. Auf diese Bibliothek wird über Klassifizierung und anschließend Such- und Abrufaufgaben zugegriffen. Der wirkliche Fortschritt ist jedoch das Konzept der Persistenz.


Indem wir mit Artefakten arbeiten, verfügen wir über Referenzpunkte, die über das Vergängliche hinausgehen. Referenzpunkte, die verfeinert und wiederverwendet werden können. Wir hatten bereits Gedanken und ausführliche Ergebnisse. Jetzt haben wir Erinnerungen und Fachwissen ...

Claude 3.5 System

Die Systemaufforderung in voller