OpenAI hat kürzlich die Unterstützung für strukturierte Ausgaben in seinen neuesten gpt-4o-2024-08-06 Modellen angekündigt. Strukturierte Ausgaben in Bezug auf große Sprachmodelle (LLMs) sind nichts Neues – Entwickler haben entweder verschiedene Prompt-Engineering-Techniken oder Tools von Drittanbietern verwendet. In diesem Artikel erklären wir, was strukturierte Ausgaben sind, wie sie funktionieren und wie Sie sie in Ihren eigenen LLM-basierten Anwendungen anwenden können.
Strukturierte Ausgaben sind ein Mechanismus, mit dem wir einem vordefinierten Schema die LLM-Ausgabe vorschreiben. Dies bedeutet in der Regel, dass wir ein JSON-Schema durchsetzen, aber nicht auf JSON beschränkt sind – wir könnten im Prinzip auch XML, Markdown oder ein komplett maßgeschneidertes Schema durchsetzen. Die Vorteile von strukturierten Ausgaben sind zweifach: Einfachere Prompt-Gestaltung – wir müssen nicht übermäßig detailliert angeben, wie die Ausgabe aussehen soll; Deterministische Namen und Typen – wir können beispielsweise garantieren, dass wir in der LLM-Antwort ein Attribut Alter mit einem JSON-Typ Nummer erhalten.
In einem Beispiel nutzen wir den GPT-4o-Checkpoint als Named-Entity-Recognition (NER)-System. Wir erzwingen ein JSON-Schema, das ein NamedEntities-Objekt enthält, das wiederum ein Array von Entitäten enthält, wobei jede Entität einen Namen und Typ hat. Wir können beispielsweise den Enum-Typ erzwingen, was sehr nützlich ist, um die Ausgabe auf einen festen Satz von Entitätstypen zu beschränken. Wir können alle Felder im benötigten Array spezifizieren, aber auch “optionale” Felder simulieren, indem wir den Typ beispielsweise auf [“string”, null] setzen.
Die Strukturierten Ausgaben sind essentiell, um beim Entwerfen komplexer LLM-Anwendungen die Unvorhersehbarkeit von natürlicher Sprache mit der Strukturiertheit von Software-Engineering zu verbinden. Sie sind ein Muss für jeden, der komplexe LLM-Anwendungen entwickelt, bei denen LLM-Ausgaben in verschiedenen Komponenten geteilt oder “präsentiert” werden müssen. Während die API-native Unterstützung endlich angekommen ist, sollten Entwickler auch in Betracht ziehen, Bibliotheken wie Outlines zu verwenden, da sie einen API-agnostischen Umgang mit strukturierten Ausgaben bieten.
Hinterlasse eine Antwort