11 Punkte von GN⁺ 2024-08-07 | 2 Kommentare | Auf WhatsApp teilen
  • Einführung von „Structured Outputs“ in der API
    • Neue Funktion, mit der Modellausgaben exakt dem von Entwicklerinnen und Entwicklern bereitgestellten JSON-Schema entsprechen
    • Auf der DevDay im letzten Jahr wurde zwar der JSON-Modus vorgestellt, dieser garantierte jedoch keine Antworten passend zu einem bestimmten Schema
    • Strukturierte Ausgaben beschränken die Modellausgabe auf das von Entwicklern bereitgestellte Schema und trainieren das Modell darauf, komplexe Schemata besser zu verstehen
  • Warum strukturierte Ausgaben nötig sind
    • Das Erzeugen strukturierter Daten aus unstrukturierten Eingaben ist einer der zentralen Anwendungsfälle von KI
    • Mit der OpenAI API lassen sich vielfältige Aufgaben umsetzen, darunter Data Retrieval, Fragebeantwortung, Datenextraktion und der Aufbau mehrstufiger Workflows
    • Bisher waren Open-Source-Tools, Prompts, Retries und ähnliche Maßnahmen nötig, um Modellausgaben in ein mit Systemen interoperables Format zu bringen
    • Strukturierte Ausgaben lösen dieses Problem, indem sie die Modellausgabe auf das von Entwicklern bereitgestellte Schema begrenzen
  • Leistungsbewertung
    • In einer Bewertung zur Einhaltung komplexer JSON-Schemata erreichte das Modell gpt-4o-2024-08-06 100 %
    • Das Modell gpt-4-0613 erzielte weniger als 40 %
  • Verwendung strukturierter Ausgaben
    • Strukturierte Ausgaben über Function Calling: In der Funktionsdefinition strict: true setzen
      • Verfügbar für Modelle, die alle Tools unterstützen
  • Sichere strukturierte Ausgaben
    • Entsprechen den bestehenden Sicherheitsrichtlinien von OpenAI
    • Das Modell kann unsichere Anfragen ablehnen
    • API-Antworten enthalten einen Ablehnungs-Stringwert, sodass sich programmatisch erkennen lässt, ob das Modell eine Ablehnung erzeugt hat
  • Native SDK-Unterstützung
    • Die Python- und Node-SDKs unterstützen strukturierte Ausgaben nativ
    • Durch Übergabe von Pydantic- oder Zod-Objekten werden diese in JSON-Schemata umgewandelt, und JSON-Antworten werden automatisch serialisiert und geparst
  • Einschränkungen
    • Es wird nur ein Teil von JSON Schema unterstützt
    • Bei der ersten API-Antwort mit einem neuen Schema tritt zusätzliche Latenz auf
    • Das Modell kann unsichere Anfragen ablehnen
    • Nicht kompatibel mit parallelem Function Calling
    • Strukturierte Ausgaben fallen nicht unter Zero Data Retention (ZDR)
  • Verfügbarkeit
    • Strukturierte Ausgaben sind in der API allgemein verfügbar
    • Strukturierte Ausgaben über Function Calling sind für alle Modelle verfügbar, die Function Calling unterstützen
    • Die Option für das Antwortformat ist in den neuesten Modellen verfügbar

Zusammenfassung von GN⁺

  • Die neue Funktion „Structured Outputs“ von OpenAI sorgt dafür, dass Modellausgaben exakt zu einem JSON-Schema passen
  • Entwicklerinnen und Entwickler können damit Aufgaben wie Data Retrieval, Fragebeantwortung und Datenextraktion zuverlässiger umsetzen
  • Native Unterstützung in den Python- und Node-SDKs erleichtert die Entwicklung
  • Es gibt weitere Anwendungsfälle, etwa das Extrahieren strukturierter Daten aus unstrukturierten Daten
  • Mithilfe von Constrained Decoding werden Modellausgaben eingeschränkt, sodass nur gültiges JSON erzeugt wird

2 Kommentare

 
bluejoyq 2024-08-08

Eine interessante Funktion.

 
GN⁺ 2024-08-07
Hacker-News-Kommentare
  • Aufbau dynamischer UIs und Code mit GPT-4o

    • Funktioniert mit dem JSON-Modus zuverlässig
    • Bei GPT-4o-mini wird es helfen, Formatprobleme zu lösen
    • Im Function-Calling-Modus ist die Erfolgsquote niedriger als im JSON-Modus
    • Große Erwartungen an diese Funktion
  • Wichtige Änderungen in gpt-4o-2024-08-06

    • Ausgabe-Token von 4k auf 16k erhöht
    • Eingabekosten um 50 %, Ausgabekosten um 33 % gesenkt
    • Eine wichtige Änderung für API-Nutzer
  • Erfahrungen mit den Structured Outputs von Outlines in vLLM

    • Bietet weiterentwickelte Funktionen als die Structured Outputs von OpenAI
    • Unterstützung für eingeschränkte Feldtypen
      • OpenAI unterstützt nur Basistypen wie String, Number und Boolean
      • Outlines kann Regex-Muster definieren
    • Hohe Kosten für das Schema-Setup und Latenz
      • vLLM und Outlines verursachen fast keine Kosten
      • OpenAI benötigt Zeit für die Erzeugung einer kontextfreien Grammatik
    • Ein guter erster Schritt von OpenAI, aber es muss weiter verbessert werden
  • Meinungen zur AI-Leistung

    • Dass AI Ausgabeformate vorgibt, ist eine alte Art, Probleme zu lösen
    • Sprachverarbeitung und Problemlösungsfähigkeiten haben sich erstaunlich entwickelt
    • Für dieses Ergebnis ist jedoch enorme Rechenleistung nötig
  • Meinungen zum Ansatz von OpenAI

    • Aufgabe des Fine-Tuning-Ansatzes für strukturierte Ausgaben
    • llama.cpp hat diese Funktion bereits vor 1,5 Jahren implementiert
  • Verwirrung über die Option strict: true

    • Da dies immer das gewünschte Verhalten ist, sollte es der Standardwert sein
    • Etwas über constrained decoding gelernt
      • Kann die Zuverlässigkeit erhöhen und die Latenz verringern
  • Die Meinung, dass das Hardcoding von JSON ins Modell der AGI-Zielsetzung entgegenläuft

  • Bedenken hinsichtlich des Lock-in-Effekts bei der Nutzung von OpenAI-Funktionen

    • Ein Wechsel zu anderen LLMs ist nicht ohne Weiteres möglich
    • Einsatz nur empfohlen, wenn Text-Prompts nicht ausreichen
  • Hinweis auf einen JSON-Formatfehler

    • {“val{“:2} ist gültiges JSON
  • Zweifel daran, warum die oberste Ebene ein Objekt sein muss

    • Es ist umständlich, ein Array in ein Objekt einzupacken