1
 
 
Profil
In deinem persönlichen Profilbereich kannst du den Status deiner Bewerbung einsehen, unvollständige Bewerbungen zwischenspeichern und aktuelle News und Events einsehen
17. August 2023

Product GPT – Automatisierte Erstellung von Produkttexten mit ChatGPT

Worum geht es in dem Artikel?

Obwohl es sie schon seit einiger Zeit gibt, haben Large Language Models seit der Einführung von ChatGPT die Welt im Sturm erobert. Sowohl Unternehmen als auch Open-Source-Akteure sind motiviert, sich von der LLM-Ära nicht überholen zu lassen und treiben so das Feld mit explosionsartigem Tempo voran. Auf der anderen Seite hat eine überraschende Anzahl von Alltagsnutzern die Unterstützung von LLMs bereits in ihr Leben integriert.
 
ChatGPT dominiert dabei die AI Landschaft gerade wie kein anderes Modell. Aber lassen sich damit auch gute Produkttexte für den OTTO Shop erstellen? Genau dieser Frage haben wir uns im Team inc(AI) im Rahmen eines 2-Wochen Sprints gewidmet.

Entstanden ist ProductGPT, ein Tool was genau dies kann. Unterstützt wurden wir hierbei vom Team Content Factory, die uns sämtliche Artikeldaten der Kategorie Sportanzüge bereitstellten sowie Regeln wie ein Produkttext formell und inhaltlich geschrieben sein soll.
In 2 Subteams (Prompter und Rule Checker) ging es dann an die Arbeit.

Status quo

Aktuell werden Produkttexte für größere Produktgruppen bereits mit NLG (Natural Language Generation) Verfahren erstellt. Allerdings verursacht dies oft hohe Kosten und beinhaltet Synchronisationsaufwand mit dem Drittanbieter. Dieses Verfahren wird somit nur bei großen Produktgruppen angewendet. Texte für kleinere Produktgruppen werden momentan noch aufwändig von Hand erstellt.

LLM-basierter Ansatz

Mit ChatGPT und nur mit Hilfe von Prompts, wollten wir herausfinden, ob es möglich ist verlässliche Produktbeschreibungen von ChatGPT generieren zu lassen. Aber ganz von vorn. Was ist ChatGPT oder im allgemeinen Large Language Models (LLM) eigentlich?

LLMs „In a Nutshell“


Ein Language Model (LM) ist einfach eine Wahrscheinlichkeitsverteilung über Wortfolgen. Insbesondere kann es modellieren, was das nächste wahrscheinlichste Wort sein könnte, wenn ein Satzanfang, ein Absatz oder ein ganzer Text gegeben ist - tatsächlich kennt es die Wahrscheinlichkeiten aller möglichen nächsten Wörter. Wie würde man den Satz "Als neues Haustier möchte ich ein..." beenden? Ein LM kann mit Daten trainiert werden, um zu lernen, mit welchen Wahrscheinlichkeiten der Satz mit "Hund", "Katze", "Hamster", aber auch "Tisch", "Himmel", "Orange" fortgesetzt werden würde.

Mit einem LM gibt es eine sehr einfache Möglichkeit, Text zu generieren: für eine bestimmte Eingabe das nächste Wort gemäß dem LM ermitteln und den Prozess automatisch regressiv wiederholen, indem die Eingabe jedes Mal um das neu generierte Wort erweitert wird. Selbst die modernsten Deep Learning-Ansätze verwenden immer noch Varianten des obigen einfachen Prinzips.

Seit fünf Jahren ermöglicht die Transformer-Architektur eine wesentlich bessere Skalierung von KI-Modellen im Hinblick auf unsere derzeitigen Rechenressourcen. Auch Skalierbarkeit ist gegeben: sowohl in Bezug auf die Komplexität der internen Parameter mit denen das Modell lernt, als auch in Bezug auf die Menge der Lerndaten. Mit GPT3 hat sich herausgestellt, dass, wenn LMs Large genug werden, neue unerwartete Fähigkeiten von (L)LMs mit der gleichen zugrundeliegenden Idee auftauchen. 

Der Unterschied zwischen „normalen“ LMs und LLMs besteht also zum einen in der zum Training genutzten Datenmenge und den verwendeten Hardwareressourcen (massive Nutzung von GPUs). Zum anderen werden die Modelle mit Hilfe von menschlichem Feedback (HF) durch Finetuning so verbessert, dass zu einem gegebenen Prompt so oft wie möglich ein Text zurückgeliefert wird, der von Menschen mit einem möglichst hohen Score gelabelt wurde.
Eine Möglichkeit für dieses Finetuning Verfahren stellt Reinforcement Learning mit Human Feedback (RLHF) dar.

Hierbei werden Paare der Form (Prompt, Generierter Text, Menschliche Bewertung (z.B. basierend auf dem ELO Score)) genutzt, um ein Reward Modell zu trainieren. Dieses enthält als Eingabe den Prompt und den generierten Text und liefert als Ausgabe einen Score, wie gut der generierte Text zum Prompt passt. Mit Hilfe dieses Modells erfolgt das Finetuning des Originalmodells mit der Reinforcement Learning Methode Proximal Policy Optimization (PPO). Die folgende Abbildung illustriert dieses Trainingsverfahren.

Abbildung 1: RLHF (Quelle:https://huggingface.co/blog/rlhf)
Abbildung 1: RLHF (Quelle:https://huggingface.co/blog/rlhf)

Abbildung 1: RLHF (Quelle:https://huggingface.co/blog/rlhf)

Steuerung eines LLMs


Ein wichtiger zu analysierender Aspekt war die Steuerbarkeit eines LLMs durch Parametrierung und der Zusammenhang zwischen Korrektheit sowie Kontrollierbarkeit des Textes und freier und kreativer Gestaltung.

Die stochastische Natur von LLMs macht Ersteres, die Korrektheit, zu einer schwierigen Anforderung. Es gibt aber Konfigurationsoptionen, mit denen man das Verhalten des Modells steuern kann.
Prompt Engineering, welches den größten Einfluss bei der Textgenerierung hat, wird in einem späteren Abschnitt dieses Artikels behandelt.

Vorhersagbare oder freie Texterzeugung?

Ein konkreter Blick auf das Wesen eines LMs:

  1. Können wir auch ein wenig in die Zukunft der Generierung schauen, um immer die bestmöglichen Generierungspfade zu wählen, mit einem kleinen Kompromiss bei der Geschwindigkeit der Texterzeugung?
  2. Steuern wir das Modell so, dass es immer die besten, wahrscheinlichsten nächsten Wörter verwendet, oder lassen wir es den Text auch mit weniger wahrscheinlichen nächsten Wörtern erweitern, was allerdings zu kreativeren Ergebnissen führen könnte?

Die erste Frage geht schnell vom Intuitiven zum Technischen über - und die entsprechenden Optionen sind bei den neueren OpenAI-Modellen auch nicht verfügbar.
Aber zu zweiter Frage: Einer der standardmäßig wichtigsten konfigurierbaren Parameter ist die Temperatur. Aber was beeinflusst dieser Parameter? 

Eine höhere Temperatur schwächt die Unterschiede in den vom LM vorhergesagten Wahrscheinlichkeiten zwischen den wahrscheinlichsten und den unwahrscheinlichsten nächsten Wörtern künstlich ab, um weniger vorhersehbare Fortsetzungen hervorzurufen.

Architektur und Softwareframework


Ausgangspunkt für die Erzeugung von Beschreibungen für Produkte sind Produktdaten aus dem OTTO Shop. Damit die Produktdaten für unsere Anwendung benutzt werden können, werden diese in eine interne Produktdatenbank überführt und aufbereitet. Zusammen mit dem Briefing und den Guidelines des Fachbereiches bilden diese unsere Eingangsdaten.

Aus dem Briefing & Guidelines wurden Prompt-Templates erstellt, damit das LLM daraus die entsprechenden Produktbeschreibungen entstehen können. Zudem dienen diese Informationen als Basis für die einzelnen Regeln des RuleCheckers. Der RuleChecker wird auf den generierten Produkttext angewandt, um die Vorgaben des Fachbereiches zu überprüfen.

Die Applikation verfügt über einen Onlinemodus und einen Batchmodus. Der Onlinemodus erlaubt die interaktive Benutzung sowie das Experimentieren mit verschiedenen Prompts und Modellen. Für die automatisierte Erstellung von mehreren Produktbeschreibungen eignet sich der Batchmodus.
Im Onlinemodus ist es möglich zu den generierten Produktbeschreibungen ein Feedback in Textform zu geben.

Am Ende werden die Ergebnisse zur späteren Verwendung abgespeichert.

Abbildung 2: Architektur
Abbildung 2: Architektur

Abbildung 2: Architektur

LangChain

LangChain ist ein Framework um Anwendungen rund um Language Modelle zu erstellen. Die Möglichkeiten von LangChain sind dabei vielfältig und reichen von einfachen Abfragen verschiedener LLMs bis hin zu komplexen Ketten mit Agenten. In unserem Szenario verwenden wir LangChain als Abstraktionsschicht zwischen unserer Anwendung und dem ChatGPT Modell von OpenAI, damit später auch andere LL-Modelle ausprobiert werden können.

Gradio

Mit Hilfe von gradio, einem Framework zum Erstellen einer WebUI mittels Python, konnten wir schnell und bequem eine Schnittstelle zum interaktiven Experimentieren schaffen. Dabei hilft gradio speziell ML-Anwendungen eine ansprechende Benutzerschnittstelle bereitzustellen

Prompt Generierung


Wie gibt man ChatGPT die richtigen Anweisungen? Hierzu gibt es mittlerweile massenhaft Paper und Videokurse aber "Hands On" ist es eine echte Herausforderung.
Genug Detailwissen über Sportanzüge konnten wir dem Modell durch die Kaufberatung mitgeben und priorisierte Artikelattribute und USPs sorgten für weiteren Input. Zum Schluss wurde der Prompt sogar so lang, dass die 4096 Tokens, die für Prompt und Antwort des Modells zur Verfügung stehen, regelmäßig überschritten wurden.
Die Struktur des Prompts lässt sich wie folgt beschreiben:

Allgemeine Regeln
Die Regeln umfassen z.B. gendergerechte Sprache oder Vermeidung von gewissen Sprachkonstrukten wie Superlativen oder Formulierungen im Passiv. Zudem wird beschrieben wie Kunden mit Text angesprochen werden sollen. Wichtig ist z.B., dass bei Produkten für Kinder die Eltern direkt angesprochen werden (z.B. mit „deine Kids“). 

Textstruktur
Der generierte Text soll einer vorgegebenen HTML-Struktur genügen, welche mit Platzhaltern gefüllt werden sollte. Dies realisierten wir durch folgenden Prompt:

Eine Produktbeschreibung besteht aus drei Abschnitten und einem Schlusssatz.
Die Struktur ist:

<h3>x1_head</h3>
<p>
x1_body
</p>

<h4>x2_head</h4>
<p>
x2_body
</p>

<h4>x3_head</h4>
<p>
x3_body
</p>

<p>
x4
</p>

Es folgen Anweisungen, um die jeweiligen Platzhalter zu befüllen.

Priorisierte Attributliste
Das Herzstück des Prompts stellt die Liste der priorisierten Artikelattribute dar, die im Produkttext erwähnt/beworben werden sollen. Die Liste bekamen wir aus den OTTO Artikeldaten, die Priorisierung wurde uns vom Fachbereich vorgegeben.

Spezifische Informationen für die jeweilige Produktkategorie
Für bestimmte Produktkategorien existieren Fachbegriffe und patentierte Technologien (wie z.B. Dri-Fit oder Bioshield), die das Modell in der Regel nicht kennt. Um die Vorzüge dieser Technologien im Text hervorzuheben, muss man ihm diese zunächst genau beschreiben. Hierzu haben wir vom Fachbereich eine Liste erhalten und den Prompt beim Auftreten des Technologienamens in den Artikeldaten um die Beschreibung der Technologie erweitert.
Kaufberatung für eine bestimmte Produktgruppe
Die Kaufberatung hilft insbesondere Kunden, die sich wenig mit einer bestimmten Kategorie auskennen und weist auf unter anderem auf Attribute hin, auf die besonderes Augenmerk gerichtet werden soll. Dies eignet sich hervorragend für LLMs, um ihr ohnehin schon gutes „Weltwissen“ mit Detailinformationen für die Artikelgruppe zu erweitern und so den generierten Text reichhaltiger zu gestalten.

Visuelle Information
In einem Experiment nutzten wir das Visual Question Answering Modell BLIP-2. VQA Modelle bekommen als Input eine Frage, welche sich auf ein gegebenes Bild bezieht und liefern die Antwort zurück. Unsere Fragen bezogen sich auf einzigartige Elemente des Trainingsanzugs und Auffälligkeiten des Musters. Bei besonders herausstechenden Artikeln in Bezug auf Farbe und Textur waren die Zusatzinformation durch dieses Verfahren durchaus hilfreich.
Bei Produktkategorien, die sich bildlich besser beschreiben lassen als textuell, erhoffen wir uns hier noch weiteren Mehrwert.

Abbildung 3: VQA prompt und Ausgabe für einen auffälligen Trainingsanzug auf replicate.com
Abbildung 3: VQA prompt und Ausgabe für einen auffälligen Trainingsanzug auf replicate.com

Abbildung 3: VQA prompt und Ausgabe für einen auffälligen Trainingsanzug auf replicate.com

Findings


Prompt Engineering kann manchmal frustrierend sein, da man sich im Trial/Error Modus fortbewegt und keine Information darüber bekommt, was intern im Modell wirklich passiert. Hier sind einige unserer Findings zusammengefasst:

Fakten erfinden
ChatGPT erfindet Daten, wenn nötig. Dies ist z.B. der Fall, wenn erwartet wird, dass der Output länger ist als die Inputfakten hergeben.
Es macht daher Sinn, dem Modell zu erlauben den Text zu kürzen und ihm zu sagen, dass keine Fakten erfunden werden dürfen. Gibt man dem Modell genug Fakten (z.B. durch viele Artikelattribute) an die Hand, tritt dieses Problem seltener auf.

Limitierung der Tokenanzahl
Die 4096 Tokens beziehen sich auf Input und Output. Bei zu großem Prompt wird daher der Output abgeschnitten. Ein Wort besteht aus ca. 2 Tokens.
Zumindest bei GPT 3.5 sollte man sich also im Prompt auf das Wesentliche beschränken. Vermutlich fällt die Token Limitierung bei zukünftigen Modellen (GPT 4) nicht mehr ins Gewicht.

Reprompting
"Reprompting", also die Eingabe des Outputs mit einer weiteren Aufforderung führte oft zu schlechten Ergebnissen. Z.B wurde bei der Prompt „Schreibe denselben Text in gleicher Form, aber sieze den Kunden“ als Aufforderung interpretiert einen Brief zu schreiben.
Oneshot mit gutem Prompt, Few Shot (mehrfaches Prompting mit der Aufforderung zur Verbesserung des letzten generierten Textes) oder Finetuning sind daher wohl bessere Alternativen.

Reihenfolge im Prompt
Dinge, die am Ende des Prompts stehen, werden eher erfüllt als Dinge, die zu Beginn stehen.

Unlogische Dinge: Thinking fast and slow
ChatGPT halluziniert manchmal, weil Informationen falsch zusammengesetzt werden. So wurde bei den Mehrwerten vergessen, dass es sich um ein Babysportanzug handelt und vorgeschlagen, ihn zum Joggen zu tragen.

Es entsteht das Gefühl man könne gewisse Regionen "des Gehirns" von ChatGPT ansprechen (thinking slow) und ihn aus seinem "Fast Thinking" befreien, indem man ihm sagt worauf zu achten ist ("Berücksichtige die Zielgruppe und deren Bedürfnisse").

Wiederholungen/Synonyme
Trotz vieler Aufforderungen Wortwiederholungen zu vermeiden, wurde die Regel weiterhin oft gerissen. Bisher haben wir hierfür keine reproduzierbare, funktionierende Lösung gefunden.
Aufbau/Struktur mit Maske/Template
Das Einhalten der HTML-Strukturvorgabe (Headline, Paragraph, etc), konnte durch Vorgabe eines Templates forciert werden. Weiterhin wird manchmal ein 4. Paragraph hinzuerfunden.

Modell Parametrierung mit „Temperature“
Das Erhöhen der Temperature als Modellparameter gibt in der Tat kreativere Vorschläge aus, die sich weiter von den Fakten entfernen und deren Satzstrukturen komplexer werden. Teilweise ist diese Kreativität bei den Artikelbeschreibungen aber nicht gewünscht und es muss ein Tradeoff aus faktenbasierten Texten (niedrige Temperature) und kreativer Sprache (hohe Temperature) gefunden werden.

Saubere Stammdaten


Zwar kann ChatGPT mit Grammatikfehlern umgehen, jedoch nicht so einfach mit fehlerhaften Stammdaten. Beispielsweise sind als Anlässe "Sportmode" und "Casual" gelistet, die aber eher Stile sind. Insbesondere passen die Anlässe der Kaufberatung nicht hierzu (Freizeit, Outdoor-Aktivitäten, Workout, Zuhause, Toben, Spielen). Ein Babysportanzug mit Anlass Sportmode verwirrt das Modell wohl und legt nahe, dass Babies Joggen und Sport machen. Auch „Fitness“ als Sportart eines Babyanzugs stellen ChatGPT vor ein Problem. 

Die Beschreibung "Jacke und Hose mit zwei Taschen" wurde vom Modell so interpretiert als ob beide Kleidungsstücke je 2 Taschen haben.
Es ist wichtig die Stammdaten so eindeutig wie möglich zu schreiben und das implizite Wissen in die Daten zu externalisieren.

Regelprüfung und Evaluation der Textqualität


Um die Qualität der generierten Produktbeschreibungen einschätzen zu können, prüfen wir den Text mit verschiedenen Verfahren und speichern diese, für die spätere Analyse, ab.

Plagiarismus Check
Plagiate sind ein wichtiges Thema und wir wollen vermeiden, dass das LL-Model einfach Produktbeschreibungen “klaut”. Es gibt viele Dienste von Drittanbietern, die eine Plagiatsuche anbieten. Wir haben uns aber im ersten Schritt dazu entschieden einen relativ einfachen Mechanismus zu verwenden. Dabei nehmen wir die die einzelnen Sätze des des erstellten Textes und suchen mit Hilfe der Google-Suche nach Treffern im Internet. Sollte die Anzahl der positiven Treffer einen Schwellwert (z.B. 15%) überschreiten, so stufen wir den Text als Plagiat ein.

Layout
Das Briefing aus dem Fachbereich enthält auch eine Beschreibung, wie der Text am Ende aussehen muss. In diesen Bereich fallen z.B. Länge und Anzahl der Abschnitte und die maximale Anzahl der Wörter.

Strukturelle/Syntaktische Analyse
Mit Hilfe von Spacy, einem NLP-Werkzeug, schauen wir uns den Text genauer an. Wir stellen sicher, dass der Text im Aktiv geschrieben ist und z.B. kein Superlativ enthält. Der Text muss auch unsere Zielgruppen (Erwachsene/Jugendliche/Kinder) korrekt adressieren.

Semantische Analysen basierend auf Neuronalen Netzen
Spezielle Vorgaben aus dem Fachbereich wie z.B. “Passt die Absatzüberschrift zum Text im Absatz” oder den Einsatz von Stereotypen brauchen einen anderen Ansatz. Nur bei Methoden, die sich mit dem strukturellen oder syntaktischen Inhalt befassen, sind solche Prüfungen in der Regel nicht qualitativ genug. Wenn es um den semantischen Inhalt des Textes geht, sind spezialisierte NLP-Modelle, die für eine bestimmte Aufgabe trainiert wurden, in der Regel die einzige Option. 

Wir überprüfen mittels eines solchen neuronalen Netz von Hugging Face die semantische Beziehung zwischen Titel und Absatz. Dieses Modell sagt vorher, ob zwischen zwei Textstücken eine "Übereinstimmung", ein "Widerspruch" oder einfach eine "neutrale" semantische Beziehung besteht. 

Mit einem weiteren spezialisierten NLP-Modell, ebenfalls von Hugging Face, klassifizieren wir, ob ein Text Stereotypen oder diskriminierende Textformulierungen enthält.

Zusammenfassung und Ausblick

Kostenaspekte


Das von uns verwendete Modell GPT 3.5 turbo kostet 0.002$ pro 1000 Tokens, was selbst für eine große Menge von Texten noch verhältnismäßig günstig ist.

Möchte man jedoch auf GPT 4 wechseln, was zum Zeitpunkt unserer Implementierung nur für auswählte Nutzer verfügbar war, steigen die Kosten auf 0.03$/1000 Tokens (mit 8000 Tokens als Kontext Limit) bzw. 0.06$/1000 Tokens (mit 32000 Tokens als Limit). 

Da man wenig Einfluss auf die Preispolitik von OpenAI hat, begibt man sich hier natürlich in eine Abhängigkeit.

Mögliche Verbesserungen


Die Qualität der generierten Text ist schon sehr beeindruckend, es gibt aber immer noch Verbesserungspotential.

Weiteres Research im Bereich Visual Question Answering kann bei visuell interessanten Artikelgruppen viel Mehrwert bringen und gerade im Modebereich Beschreibungen erstellen, die nicht allein durch Produktattribute abgedeckt werden können.

Zudem sehen wir in der Einbeziehung von Kundenreviews großes Potenzial. Stehen hier zum Beispiel relevante Information, wie z.B. dass ein Artikel kleiner oder größer ausfällt, so könnte man diese Information gleich als wichtiges Kriterium in den Prompt schreiben.

Open Source Large Language Modelle sind nach unseren Experimenten noch nicht in der Lage mit der Qualität von ChatGPT zu konkurrieren. Zum einen wurde ChatGPT auf einem sehr großen Datencorpus verschiedener Sprachen trainiert, zum anderen benötigt das Trainieren solch eines Modells extreme Hardware-Ressourcen. Ein Finetuning eines Open Source LLMs macht also nur dann Sinn, wenn das Vortraining schon auf einem ausreichend großen deutschsprachigen Corpus stattgefunden hat und das Training mit überschaubaren Hardware-Ressourcen zu bewerkstelligen ist. 

Man sollte die Open Source Entwicklungen aber im Auge behalten, da man sein Modell dann selbst hosten könnte und somit keine Fremd-APIs mehr benötigt.

Möchtest du Teil des Teams werden?

12 Personen gefällt das

0Noch keine Kommentare

Dein Kommentar
Antwort auf:  Direkt auf das Thema antworten

Geschrieben von

Christian Kalla
Christian Kalla
Senior Machine Learning Engineer (Otto BI)
Jürgen Jäger
Jürgen Jäger
Senior Business Owner (Otto BI)
Konstantinos Stavropoulos
Konstantinos Stavropoulos
Senior Data Scientist (OTTO BI)
Tobias Krause
Tobias Krause
Senior Software Developer (Otto BI)

Ähnliche Beiträge

We want to improve out content with your feedback.

How interesting is this blogpost?

We have received your feedback.

Cookies erlauben?

OTTO und drei Partner brauchen deine Einwilligung (Klick auf "OK") bei einzelnen Datennutzungen, um Informationen auf einem Gerät zu speichern und/oder abzurufen (IP-Adresse, Nutzer-ID, Browser-Informationen).
Die Datennutzung erfolgt für personalisierte Anzeigen und Inhalte, Anzeigen- und Inhaltsmessungen sowie um Erkenntnisse über Zielgruppen und Produktentwicklungen zu gewinnen. Mehr Infos zur Einwilligung gibt’s jederzeit hier. Mit Klick auf den Link "Cookies ablehnen" kannst du deine Einwilligung jederzeit ablehnen.

Datennutzungen

OTTO arbeitet mit Partnern zusammen, die von deinem Endgerät abgerufene Daten (Trackingdaten) auch zu eigenen Zwecken (z.B. Profilbildungen) / zu Zwecken Dritter verarbeiten. Vor diesem Hintergrund erfordert nicht nur die Erhebung der Trackingdaten, sondern auch deren Weiterverarbeitung durch diese Anbieter einer Einwilligung. Die Trackingdaten werden erst dann erhoben, wenn du auf den in dem Banner auf otto.de wiedergebenden Button „OK” klickst. Bei den Partnern handelt es sich um die folgenden Unternehmen:
Google Inc., Meta Platforms Ireland Limited, elbwalker GmbH
Weitere Informationen zu den Datenverarbeitungen durch diese Partner findest du in der Datenschutzerklärung auf otto.de/jobs. Die Informationen sind außerdem über einen Link in dem Banner abrufbar.