#152 Strukturierte Wissensdatenbanken erstellen: Dein Schritt-für-Schritt-Guide

Worum geht es in diesem Artikel?

Ich zeige wie man eine Filmdatenbank mit Meta-Informationen aufbaut und Perplexity und OpenAI mit structured Output dafür nutzt

Viele Unternehmen haben Schwierigkeiten, ihre Daten zu verstehen, weil die Meta-Daten fehlen. Mit dem strukturierten Output von OpenAI wird das nun einfach.

Nehmen wir an, ich möchte eine Film-Datenbank erstellen und alle Filme transkribieren. Die DVDs habe ich, aber ich bin zu faul, die Meta-Daten für jeden Film zu suchen. Also bauen wir einen KI-Workflow.

Wie sieht ein Workflow aus?

Was brauche ich?

  1. Eine JSON-Struktur, die OpenAI mit einem strukturierten Output anreichert.
  2. Ein Prompt, der schrittweise ein solches JSON-Format entwickelt.
  3. Ein Überprüfungsprompt, der das JSON-Format nochmals prüft.

Ich habe mir die beiden Json Generatoren mit Claude entwickelt.

Ein Ausschnitt aus dem Dialog:

Der Prompt führt mich durch die Aufgabe und am Ende bekomme ich das Json Format das so aussieht.

{
„model“: „gpt-4o-2024-08-06“,
„messages“: [
{
„role“: „system“,
„content“: „Du bist ein professioneller Filmkritiker. Analysiere den gegebenen Film nach den vorgegebenen Kriterien und gib deine Bewertung und Erkenntnisse in der spezifizierten Struktur zurück.“
},
{
„role“: „user“,
„content“: {{4.json}}
}
],
„response_format“: {
„type“: „json_schema“,
„json_schema“: {
„name“: „filmkritik“,
„schema“: {
„type“: „object“,
„properties“: {
„titel“: { „type“: „string“ },
„regisseur“: { „type“: „string“ },
„erscheinungsjahr“: { „type“: „integer“ },
„genre“: { „type“: „array“, „items“: { „type“: „string“ } },
„hauptdarsteller“: { „type“: „array“, „items“: { „type“: „string“ } },
„handlung“: { „type“: „string“ },
„dauer“: { „type“: „integer“ },
„produktionsland“: { „type“: „array“, „items“: { „type“: „string“ } },
„sprache“: { „type“: „string“ },
„altersfreigabe“: { „type“: „string“ },
„kamerafuehrung“: { „type“: „string“ },
„sounddesign“: { „type“: „string“ },
„spezialeffekte“: { „type“: „string“ },
„drehbuch“: { „type“: „string“ },
„schauspielleistung“: { „type“: „string“ },
„themen“: { „type“: „array“, „items“: { „type“: „string“ } },
„kultureller_einfluss“: { „type“: „string“ },
„kritikerwertung“: { „type“: „number“ },
„publikumswertung“: { „type“: „number“ },
„box_office“: { „type“: „number“ }
},
„required“: [
„titel“, „regisseur“, „erscheinungsjahr“, „genre“, „hauptdarsteller“,
„handlung“, „dauer“, „produktionsland“, „sprache“, „altersfreigabe“,
„kamerafuehrung“, „sounddesign“, „spezialeffekte“, „drehbuch“,
„schauspielleistung“, „themen“, „kultureller_einfluss“, „kritikerwertung“,
„publikumswertung“, „box_office“
],
„additionalProperties“: false
},
„strict“: true
}
}
}

Alleine hätte ich das so schnell nicht hinbekommen.

Der Prompt:

Hallo! Ich unterstütze Sie dabei, eine JSON-Struktur zu erstellen, die zur Analyse und Bewertung von verschiedenen Datentypen verwendet werden kann. Diese Struktur wird auf Basis Ihrer Antworten auf die folgenden Fragen individuell angepasst.

Stelle jede Frage, warte auf Antwort und schreibe was du verstanden hast

Fragen zur Anpassung der JSON-Struktur:

Sprachmodell: Welches Sprachmodell möchten Sie für die Analyse verwenden?

(Beispiel: gpt-4-0824)

Systemrolle: Welche Rolle soll das System bei der Analyse einnehmen?

(Beispiel: „Du bist ein Daten-Analyzer. Analysiere die gegebenen Daten nach den vorgegebenen Kriterien und gib die Informationen in der spezifizierten Struktur zurück.“)

Hauptkategorien: Welche Hauptkategorien sollen in der Datenanalyse enthalten sein?

(Beispiele: Titel, Autor, Kategorie, Typ der Daten)

Zusätzliche Informationen: Welche zusätzlichen Informationen möchten Sie für die Daten erfassen?

(Beispiele: Checklisten, Empfehlungen, Verweise, Kommentare)

Pflichtfelder: Welche Felder sollen als Pflichtfelder definiert werden?

(Beispiele: Titel, Autor, Kategorie, Bewertung)

Zusätzliche Eigenschaften: Sollen zusätzliche, nicht spezifizierte Eigenschaften in der Struktur erlaubt sein?

(Antwortmöglichkeiten: Ja/Nein)

Strikter Modus: Soll die Antwort strikt dem spezifizierten Schema entsprechen?

(Antwortmöglichkeiten: Ja/Nein)

Beispiel einer JSON-Struktur basierend auf Ihren Antworten:

Sobald Sie die Fragen beantwortet haben, werde ich basierend auf Ihren Antworten eine JSON-Struktur erstellen. Hier ein Beispiel, wie die Struktur aussehen könnte:

 

json

 

{

„model“: „{{MODEL_NAME}}“,

„messages“: [

{

„role“: „system“,

„content“: „{{SYSTEM_ROLE}}“

},

{

„role“: „user“,

„content“: „{{USER_INPUT}}“

}

],

„response_format“: {

„type“: „json_schema“,

„json_schema“: {

„name“: „{{SCHEMA_NAME}}“,

„schema“: {

„type“: „object“,

„properties“: {

{{PROPERTIES}}

},

„required“: [{{REQUIRED_FIELDS}}],

„additionalProperties“: {{ALLOW_ADDITIONAL_PROPERTIES}}

}

}

}

}

Beispiel einer ausgefüllten JSON-Struktur:

Hier ist ein Beispiel, wie eine fertige JSON-Struktur aussehen könnte. In diesem Fall dient die Bewertung eines Fachbuchs nur als Beispiel:

 

Beispiel eines solchen Jsons Files <

 

„`json

{

„model“: „gpt-4-0824“,

„messages“: [

{

„role“: „system“,

„content“: „Du bist ein Fachbuch-Analyzer. Analysiere das gegebene Fachbuch nach den vorgegebenen Kriterien und gib die Informationen in der spezifizierten Struktur zurück.“

},

{

„role“: „user“,

„content“: „{{buchinhalt}}“

}

],

„response_format“: {

„type“: „json_schema“,

„json_schema“: {

„name“: „fachbuch_bewertung“,

„schema“: {

„type“: „object“,

„properties“: {

„title“: { „type“: „string“ },

„author“: { „type“: „string“ },

„category“: { „type“: „string“ },

„subcategory“: { „type“: „string“ },

„myRating“: { „type“: „number“, „minimum“: 0, „maximum“: 10 },

„checklists“: {

„type“: „array“,

„items“: {

„type“: „object“,

„properties“: {

„name“: { „type“: „string“ },

„items“: { 

„type“: „array“,

„items“: { „type“: „string“ }

}

}

}

},

„recommendations“: {

„type“: „array“,

„items“: { „type“: „string“ }

},

„blogPosts“: {

„type“: „array“,

„items“: {

„type“: „object“,

„properties“: {

„title“: { „type“: „string“ },

„url“: { „type“: „string“ }

}

}

},

„tweets“: {

„type“: „array“,

„items“: {

„type“: „object“,

„properties“: {

„content“: { „type“: „string“ },

„url“: { „type“: „string“ }

}

}

},

„quotes“: {

„type“: „array“,

„items“: {

„type“: „object“,

„properties“: {

„text“: { „type“: „string“ },

„page“: { „type“: „number“ }

}

}

}

},

„required“: [„title“, „author“, „category“, „myRating“],

„additionalProperties“: true

},

„strict“: true

}

}

}

>

 

## Überprüfe den Prompt nochmal ob die Beispiel Struktur mit strict = true abgebildet ist. 

 

Vielen Dank für Ihre Antworten. Basierend darauf erstelle ich nun die gewünschte JSON-Struktur.

 

Wie funktioniert der Workflow?

A. Ich gebe den Film ein, für den ich die Meta-Daten haben möchte

Hier könnte ich über die Integration von Google Sheets hunderte Filme analysieren.

Eingabe

B. Ich frage Perplexity nach den Daten

Perplexity Abfrage

C. Ich wandele die Daten in ein Json Format

D. Nutze das Json Schema

E. Sende das Schema an OpenAI

Daten an OpenAI senden

F. Bekomme eine strukturierte Ausgabe

Strukturierte Ausgabe

Fazit

Bisher war es für mich eine große Hürde, die Json-Struktur zu verstehen und zu erstellen, da ich darin nicht tief genug stecke.

Im Zeitalter der KI lasse ich sie das für mich erledigen. Der Prompt ist nicht perfekt; manchmal vergisst die KI etwas. Das wird sich noch ändern.

Mit dem strukturierten Output kann man nun seine Daten einfach mit Meta-Daten anreichern. Diese neue Funktionalität von OpenAI spart tausende Euro und viel Zeit beim Aufbau eigener Wissensdatenbanken.

Natürlich gibt es bestimmt schon offene Datenbanken, die diese Informationen haben, das sollte nur ein Beispiel sein, wie schnell man so ein eigenes System (mit eigenen Kategorien) aufsetzen kann. Den Workflow aufzusetzen mit dem bauen der Metaprompts hat ca. 1,5 Stunden gedauert.

Teile diesen Artikel

Ähnliche Beiträge