🗓 Save the Date KI-Snack Week 2026 – Das KI-Event für Macher & Entscheider · 09.–13. November 2026 · München + Online Jetzt anmelden →
Tipps & Tricks

Neue Open-Source-Bibliothek verbessert strukturierte Ausgaben von KI-Modellen

5 min Lesezeit
Neue Open-Source-Bibliothek verbessert strukturierte Ausgaben von KI-Modellen

Die Einführung der Open-Source-Bibliothek Outlines sorgt für eine signifikante Verbesserung in der Ausgabequalität von Large Language Models (LLMs). Diese Innovation zielt darauf ab, die typischen Probleme, die bei der Generierung strukturierter Ausgaben auftreten, zu minimieren und eine deterministische Sicherheit in den Ausgabeverfahren zu gewährleisten.

Einführung

Bei der Anfrage an ein LLM nach strukturierten Ausgaben, wie beispielsweise JSON-Objekten, war es bislang oft notwendig, präzise Eingaben zu formulieren und auf ein wenig Glück zu hoffen. Dies hat sich jedoch mit der Entwicklung der Outlines-Bibliothek geändert. Diese Bibliothek wurde speziell entwickelt, um die häufigen Schwierigkeiten, die LLMs bei der Erzeugung strukturierter Ausgaben haben, zu beheben, darunter auch das Phänomen der Halluzinationen. Um die Grundlagen der LLM-Entwicklung besser zu verstehen, können Sie sich auch mit wesentlichen Konzepten für die Entwicklung von LLM-Systemen vertraut machen.

Anwendungsfall 1: Klassifikation von Kundenbewertungen

Bevor wir uns dem ersten Anwendungsfall zuwenden, stellt sich die Frage: Wie funktioniert Outlines und wie gewährleistet es die Korrektheit der strukturierten Ausgaben? Auf der Ebene der Inferenz maskiert die Bibliothek „syntaktisch illegale“ Tokens während der Generierung, anstatt zu versuchen, fehlerhaften Text nachträglich zu korrigieren. Dadurch wird es nahezu unmöglich, die Regeln für das spezifische Ausgabeformat zu brechen.

Im ersten Beispiel erstellen wir eine Analysepipeline für Kundenanfragen, bei der wir genau eine Option aus einer genehmigten Liste möglicher Optionen auswählen möchten. Dies ähnelt einem Klassifikationsproblem, und die Funktion generate.choice() hilft uns dabei, das Modell zu zwingen, eine der vordefinierten Literale oder Klassen auszuwählen.

Um die Bibliothek zu installieren, verwenden wir den folgenden Befehl:

pip install outlines[transformers]

Der folgende Code verwendet outlines.from_transformers(), um ein vortrainiertes Modell zu laden, unterstützt durch die Auto-Klassen von Hugging Face für das Modell und den zugehörigen Tokenizer. Beide sind in einem outlines-Objekt verpackt, das später dem Modell genau mitteilt, was es erzeugen soll. Während der Inferenz übergeben wir nicht nur die Benutzeranfrage zur Klassifizierung einer Bewertung, sondern auch ein Literal-Objekt, das die Ausgabebeschränkungen definiert:

import outlines
from transformers import AutoTokenizer, AutoModelForCausalLM
from typing import Literal

model_name = "microsoft/Phi-3-mini-4k-instruct"
model = outlines.from_transformers(
 AutoModelForCausalLM.from_pretrained(model_name),
 AutoTokenizer.from_pretrained(model_name)
)
sentiment = model(
 "Klassifizieren Sie die Stimmung dieser Kundenbewertung: 'Ich warte seit zwei Wochen auf meine Lieferung und sie fehlt immer noch.'",
 Literal["Positiv", "Negativ", "Neutral"]
)
print(sentiment)

Die Ausgabe lautet:

Negativ

Es ist wichtig zu beachten, dass das definierte Literal Teil des integrierten Typmoduls von Python ist, jedoch geht die Bibliothek Outlines davon aus, dass das Modell hier die Kontrolle hat. Sowohl das Modell als auch der Tokenizer sind in ein Objekt eingebettet, das die Standardtypen von Python durchsetzt und im Hintergrund eine endliche Zustandsmaschine aufbaut, die die Ausgabe nur auf die bereitgestellten Optionen beschränkt.

Anwendungsfall 2: Generierung von JSON-Objekten

In diesem Beispiel definieren wir zunächst ein Pydantic-Objekt, das die gewünschte Struktur für ein JSON-Objekt beschreibt, das einen fiktiven Charakter mit Namen, Beschreibung und Alter darstellt. Anschließend verwenden wir unser zuvor verpacktes Outlines-Modell, um sicherzustellen, dass die generierte Ausgabe strikt dieser Struktur für das angeforderte JSON-Objekt folgt:

from pydantic import BaseModel

class Character(BaseModel):
 name: str
 description: str
 age: int

json_output = model(
 "Generieren Sie ein JSON-Objekt, das einen fiktiven Charakter namens 'Anya' beschreibt.",
 Character,
 max_new_tokens=200
)
print(json_output)

Die Ausgabe lautet:

{ "name": "Anya", "description": "Anya ist eine junge, abenteuerlustige Frau mit einer Leidenschaft für das Erkunden neuer Orte und das Treffen neuer Menschen. Sie hat lange, lockige Haare und leuchtend grüne Augen, die vor Neugier funkeln. Anya ist immer bereit zu lernen und teilt ihr Wissen gerne mit anderen. Sie ist gutherzig und immer bereit, anderen zu helfen. Anya's Lieblingsbeschäftigungen sind Wandern, Lesen und Gitarre spielen. Sie ist ein Freigeist, der Freiheit und Unabhängigkeit über alles schätzt." ,"age": 25 }

Anwendungsfall 3: Reine JSON-Generierung für REST-APIs

Das dritte Beispiel, ebenfalls im Zusammenhang mit JSON, ähnelt dem vorherigen, jedoch in einem etwas anderen Kontext. Stellen Sie sich vor, Sie entwickeln eine API, die ein gut definiertes JSON-Payload für die Aktualisierung einer Datenbank benötigt. Die Anfrage an ein Standard-LLM, um diese Ausgabe zu erhalten, führt häufig zu störenden, überflüssigen Zeichen wie Kommas, die einen JSON-Parser zum Absturz bringen können.

Mit Outlines definieren wir unser JSON-Payload-Schema erneut mit einem benutzerdefinierten Pydantic-Klassenobjekt:

from pydantic import BaseModel
from typing import Literal
import json

class ServerHealth(BaseModel):
 service_name: str
 uptime_seconds: int
 status: Literal["OK", "DEGRADED", "DOWN"]

raw_json_string = model(
 "Berichten Sie über den aktuellen Status der Haupt-Auth-Datenbank.",
 ServerHealth,
 max_new_tokens=50
)
print(type(raw_json_string))
parsed_json = json.loads(raw_json_string)
print(json.dumps(parsed_json, indent=2))

Die Ausgabe lautet:

{
 "service_name": "auth_db_status",
 "uptime_seconds": 1623456789,
 "status": "OK"
}

Schlussfolgerung

Da LLMs darauf trainiert sind, gesprächig zu sein und oft die Syntax brechen oder halluzinieren, um „menschlich“ zu klingen, kann es eine Herausforderung sein, sie dazu zu bringen, zuverlässige, strukturierte Ausgaben wie saubere JSON-Objekte zu erzeugen. Outlines ist eine neue Open-Source-Bibliothek, die deterministische Sicherheit in den Ausgabeverfahren von LLMs einführt, um die Erzeugung strukturierter Ausgaben zu verbessern. Dieser Artikel hat drei einfache, aber nützliche Anwendungsfälle für Anfänger mit diesem interessanten Tool vorgestellt. Für weitere Informationen über nützliche Python-Bibliotheken können Sie auch einen Blick auf die 10 Python Libraries Every LLM Engineer Should Know werfen.

Iván Palomares Carrascosa ist ein Experte in den Bereichen KI, maschinelles Lernen, Deep Learning und LLMs. Er schult und berät andere, wie sie KI in der realen Welt nutzen können.

„`


Quellen: kdnuggets

Bildquelle: KI generiert

🚀
KI-Snack Week 2026 · 09.–13. November
Das KI-Event für Macher & Entscheider
2 Tage live in München + 3 Tage Online-Masterclasses · Jetzt Ticket sichern
Mehr erfahren →
KI Snack