Sentimentanalyse von Supportanfragen mithilfe von künstlicher Intelligenz, unter Verwendung von MapForce und GPT-4

Die automatisierte Analyse von Texten, wie beispielsweise Kundenbewertungen, war historisch gesehen eine Herausforderung. Aufgrund der vielfältigen Komplexität der natürlichen Sprache hatten Systeme Schwierigkeiten, den Kontext und die Nuancen zu verstehen. Dies erforderte einen erheblichen Aufwand an manueller Arbeit, um diese Probleme zu überwinden.

Eine der vielen nützlichen Fähigkeiten moderner KI-Systeme, die auf großen Sprachmodellen (LLMs) wie OpenAI's GPT-4 basieren, ist, dass sie sehr gut darin sind, die Stimmung in natürlichsprachlichen Texten zu analysieren. Wir können diese Funktionalität nutzen, um eine sehr effiziente Datenbanklösung in MapForce zu entwickeln, die beispielsweise alle neuen Einträge in einer Support-Datenbank durchläuft und automatisch feststellt, ob eine bestimmte Supportanfrage oder ein anderes Kundenfeedback als positiv, negativ einzustufen ist, ob es sich um einen Fehlerbericht handelt oder ob es als Funktionswunsch betrachtet werden sollte.

Erste Tests mit GPT-4 in der OpenAI-Umgebung

Wenn Sie diesen Blogbeitrag verfolgen möchten oder diesen Ansatz letztendlich in Ihrem eigenen Datenbanksystem implementieren wollen, benötigen Sie ein Konto bei OpenAI und einen API-Schlüssel, den Sie bei der Implementierung verwenden können. Darüber hinaus erhalten Sie Zugriff auf die "Playground"-Umgebung im OpenAI-Portal, wo Sie erste Tests durchführen und Beispiel-JSON-Eingaben erhalten können, die Sie benötigen, um die richtigen JSON-Anfragen in MapForce zu erstellen.

Wie immer ist die Entwicklung einer geeigneten Eingabeaufforderung (Prompt) einer der wichtigsten Schritte bei der Arbeit mit einem LLM-KI-System. Sie sollten so präzise wie möglich sein, damit Sie das gewünschte Ergebnis erzielen. Für unsere Zwecke werden wir die folgende Eingabeaufforderung verwenden:

“Classify the sentiment in the following statement using these possible results: Negative, Positive, Feature Request, Bug Report.”

Anschließend folgt das Kundenfeedback, das wir analysieren möchten. Um dies in der OpenAI Playground zu testen, wählen wir "Modus = Chat", "Modell = gpt-4", "Temperatur = 1", "Maximale Länge = 512", "Top P = 1" und belassen sowohl die "Häufigkeitsstrafe" als auch die "Präsenzstrafe" bei 0. Dann können wir den Prompt eingeben, unser erstes Kundenfeedback-Kommentar eingeben und auf die Schaltfläche "Senden" klicken:

Die KI GPT-4 liefert sofort die Antwort "Positiv", was die korrekte Antwort ist. Wir können hier noch einige weitere Beispiele durchführen, um zu überprüfen, ob unsere Eingabeaufforderung in allen anderen Fällen ebenfalls gut funktioniert und ob wir die erwarteten Ergebnisse bezüglich der Stimmung erhalten.

Dann ist es an der Zeit, die JSON-Anfrage anzusehen, indem Sie auf den Button "Code anzeigen" klicken und das Sprachauswahlfenster von Python (die Standardeinstellung) auf JSON umstellen. Anschließend kopieren Sie den Code und fügen ihn in XMLSpy ein, damit wir ihn besser in der JSON-Tabellenansicht überprüfen können

Die JSON-Struktur scheint recht einfach zu sein. Dies ermöglicht es uns auch, sofort ein JSON-Schema aus diesem Code zu generieren, das wir später verwenden werden, um die Webdienstanfrage in XMLSpy und MapForce einzurichten:

API-Test für OpenAI von XMLSpy

Als nächsten Schritt möchten wir sicherstellen, dass wir die OpenAI-Chat-API richtig verstehen, und wir werden uns die resultierende JSON-Ausgabe ansehen. Wir werden einen manuellen Testlauf durchführen, wobei wir das praktische HTTP-Testfenster in XMLSpy verwenden, das Sie direkt unterhalb Ihres Hauptarbeitsfensters als separaten Tab neben dem Nachrichtenfenster finden.

Im Reiter "HTTP" die HTTP-Anfrageart auf "POST" umstellen, die URL für den OpenAI Chat API-Endpunkt eingeben, die lautet https://api.openai.com/v1/chat/completions, und den Inhaltstyp auf "application/json" setzen. Anschließend die Beispiel-JSON-Anfrage, die wir oben im Playground erhalten haben, in den Bereich "Body" einfügen:

Jetzt müssen wir unseren geheimen API-Schlüssel in den Headern angeben, um unsere Anfrage zu authentifizieren. Klicken Sie dazu auf den Reiter "Headers" und fügen Sie eine Zeile hinzu. Geben Sie als Header "Authorization" ein und als Wert "Bearer ", gefolgt von einem Leerzeichen und dann Ihrem geheimen API-Schlüssel. Wenn Sie mehrere Konten bei OpenAI haben und sicherstellen möchten, dass die Abrechnung korrekt erfolgt, können Sie optional eine zweite Zeile hinzufügen. Geben Sie als Header "OpenAI-Organization" ein und als Wert den von OpenAI zugewiesenen Organisationsnamen für Ihr Konto

Offensichtlich mussten wir in dem obigen Screenshot die genauen Werte unseres geheimen Schlüssels und unserer Organisations-ID verschleiern.

Jetzt sind wir bereit, auf die Schaltfläche "Senden" zu klicken, um die oben genannte HTTP-Anfrage an den OpenAI-API-Endpunkt zu senden und zu sehen, welche Art von Antwort wir zurückerhalten

Die erste gute Nachricht ist, dass wir innerhalb von 780 Millisekunden ein "200 OK"-Ergebnis erhalten haben, zusammen mit einigen Inhalten im Format "application/json". Dies ist unsere Antwort, die im JSON-Format vorliegt und eine Nachricht enthält, die die Antwort des KI-"Assistenten" in Form des Inhalts "Positiv" liefert. Wir konnten also unseren vorherigen Test in der OpenAI-Umgebung erfolgreich von innerhalb von XMLSpy wiederholen, indem wir eine tatsächliche HTTP-Anfrage an die API gesendet und die korrekte Antwort erhalten haben.

Um fortzufahren, speichern wir diese Antwort in einer Datei, indem wir den Button "In Datei speichern" im Fenster des HTTP-Tests verwenden. Anschließend können wir diese Datei öffnen und XMLSpy verwenden, um automatisch ein JSON-Schema aus der Beispiel-JSON-Antwortnachricht zu erstellen. Dieses Mal beschreibt das Schema die Struktur der erwarteten JSON-Ausgabe des Webdienstes, die wir dann in MapForce verarbeiten möchten.

Beispielhafte Support-Datenbank

Die meisten Systeme zur Verwaltung des technischen Supports basieren auf einer SQL- oder einer anderen Datenbank, sodass dieser Ansatz problemlos auf alle angewendet werden kann. Für dieses Beispiel in diesem Blogbeitrag verwenden wir jedoch eine vereinfachte Form einer Datenbank für Kundenfeedback, die in SQLite implementiert ist:

Und wir haben einige Beispieldaten darin, die es uns ermöglichen, unsere Integrationstests in MapForce durchzuführen und die Stimmung in all diesen Kundenfeedback-Äußerungen zu analysieren:

![[FeedbackDatabaseData.png]]

Die Datenbankzuordnung in MapForce erstellen

Jetzt haben wir alle notwendigen Komponenten bereit, um unser MapForce-Transformations- oder ETL-Projekt zu erstellen. Dieses Projekt wird alle Datensätze aus der Datenbank lesen, die OpenAI-API aufrufen, um eine Stimmungsanalyse durchzuführen, und die Ergebnisse anschließend wieder in die Datenbank schreiben.

Der erste Schritt beim Entwurf unserer ETL-Zuordnung besteht darin, unser Datenbankobjekt "CustomerFeedback" zweimal in die Zuordnung einzufügen – einmal als Eingabe (der Extraktions-Teil von ETL) und dann auch als endgültige Ausgabe. Außerdem verbinden Sie das Haupttabellenobjekt sowie die ID. MapForce wird Ihnen gerne dabei helfen, auch die anderen Spalten zu verbinden, aber wir benötigen diese Verbindungen eigentlich nicht, sodass Sie sie wieder entfernen können, bis Sie dieses Design erreicht haben:

Wir lassen viel Platz zwischen der Eingabe und der Ausgabe, da wir dort in Kürze unseren Web-Service-Aufruf einfügen werden. Aber bevor wir das tun, definieren wir zunächst genau die Datenbankoperationen für die Ausgabe (den Lade-Teil von ETL), indem wir auf das entsprechende Datenbankobjekt doppelklicken:

Stellen Sie sicher, dass die erste Optionsschaltfläche auf "Keine" eingestellt ist, da wir vor dem ersten Datensatz keine besonderen Aktionen durchführen möchten. Ändern Sie dann den Spaltenkopf der zweiten Spalte in "Aktualisieren, wenn..." und das Kombinationsfeld in der Zeile mit der ID in "gleich". Dies weist MapForce an, die Daten in der Datenbank für jeden Datensatz zu aktualisieren, bei dem die über die Zuordnung bereitgestellte ID gleich einer ID ist, die bereits in der Datenbank vorhanden ist. Das ist alles, was wir hier tun müssen, also können Sie erneut auf "OK" klicken.

Jetzt ist es an der Zeit, die Web-Service-Komponente einzufügen, um die OpenAI-API aufzurufen. Klicken Sie auf die Schaltfläche "Web-Service-Funktion einfügen" in der Symbolleiste. Konfigurieren Sie anschließend die erforderlichen Aufrufparameter für die API, basierend auf den Einstellungen, die wir zuvor vorgenommen haben, als wir die API in XMLSpy getestet haben.

Wie zuvor müssen wir die HTTP-Anfrageart auf POST setzen und die Header so konfigurieren, dass sie unseren geheimen API-Schlüssel sowie, optional, unsere Organisations-ID enthalten. Wir müssen MapForce mitteilen, wie die Struktur der Anfrage- und Antwortdaten aussehen wird, und dafür die beiden JSON-Schemas verwenden, die wir zuvor erstellt haben:

Sobald dies definiert ist, erscheint das Web-Service-Objekt im Designbereich von MapForce, und wir können mit dem Verbinden der Elemente beginnen, um die Funktionalität zu realisieren. Zunächst möchten wir den Web-Service einmal für jeden Datensatz in der Tabelle "CustomerFeedback" aufrufen. Daher verbinden wir dies mit dem Eingabebereich "Request":

![[InsertWebServiceIntoMapping.png]]

Und unser Ergebnis wird im Attribut "content" innerhalb der Nachricht gespeichert, die von der KI zurückgegeben wird. Wir verknüpfen diesen Wert dann mit der Spalte "Sentiment" in unserem Ausgabedatenbankschema.

Was jetzt noch zu tun ist, ist, alle anderen Eingaben für die Web-Service-Anfrage mit der API zu verbinden. Wir können unsere Beispiel-JSON-Datei von oben verwenden, um genau zu wissen, welche Eingaben erforderlich sind. Viele davon werden Konstanten sein, wie zum Beispiel "gpt-4" für das Modell und verschiedene Werte für die anderen Parameter.

Der wichtigste Bestandteil sind die Eingabeaufforderung sowie das Feedback aus der Datenbank. Wir kombinieren diese beiden Elemente, bevor wir sie als Eingabe für den Webdienst bereitstellen

![[FinalMapping.png]]

Normalerweise wären wir an diesem Punkt mit der Gestaltung unserer ETL-Zuordnung fertig und könnten unsere Transformation ausführen. Aufgrund der Tatsache, dass GPT-4 das fortschrittlichste Modell ist und viele Menschen es nutzen, hat OpenAI Beschränkungen für die Anzahl der Webdienstanfragen eingeführt, die Sie pro Minute senden können. Wenn wir diese Transformation jetzt ausführen würden, würden wir diese Beschränkungen leicht überschreiten.

Daher müssen wir eine kleine Funktion zur Verzögerung (sleep(1)) zwischen unseren Anfragen an die OpenAI-Webservice-Schnittstelle einfügen, um unsere Anfragen um etwa eine Sekunde zu trennen. Dies können wir einfach mit der neuen, integrierten sleep()-Funktion in MapForce v2024 realisieren:

![[MF-Sentiment-Analysis-With-Sleep.png]]

Im Reiter "Vorschau der Ausgabe" in MapForce können Sie jetzt das Ergebnis dieser Transformation sehen. Sobald Sie diesen Reiter anklicken, führt MapForce das ETL-Mapping-Projekt aus und generiert die erforderlichen SQL-Anweisungen, die Ihre Datenbank entsprechend mit den Ergebnissen der durch künstlicher Intelligenz durchgeführten Stimmungsanalyse aktualisieren:

Und Sie können diesen SQL-Code jetzt direkt von MapForce ausführen, um die Daten in Ihrer Datenbank tatsächlich zu aktualisieren.

Selbstverständlich möchten Sie bei einer realen Implementierung diesen Prozess weiter automatisieren, sodass eingehende Supportanfragen automatisch analysiert werden. Dies können Sie einfach erreichen, indem Sie dieses ETL-Mapping-Projekt auf einer Instanz von MapForce Server in Ihrer eigenen IT-Infrastruktur oder in Ihrer privaten oder öffentlichen Cloud bereitstellen. Anschließend können Sie die Workflow-Anforderungen automatisieren, d.h. festlegen, wann diese Analyse basierend auf bestimmten Auslösern oder Ereignissen ausgeführt werden soll, mithilfe von FlowForce Server.

Übrigens: Alle Screenshots von XMLSpy und MapForce in diesem Blogbeitrag wurden mit dem neuen Dark-Modus erstellt, da dies meine persönliche Präferenz ist. Sie können unsere Produkte jedoch selbstverständlich auch im neuen Light-Modus oder im klassischen Modus verwenden, je nach Ihrem persönlichen Geschmack.

Um eine datenbasierte Transformation mit künstlicher Intelligenz in MapForce auszuprobieren oder verschiedene APIs für Webdienste im Bereich künstliche Intelligenz in XMLSpy zu testen, können Sie eine kostenlose 30-Tage-Testversion beider Produkte sowie verschiedene andere nützliche Entwicklertools herunterladen, indem Sie das neueste Altova MissionKit von unserer Website herunterladen. Wir empfehlen, für alle Aufgaben im Zusammenhang mit künstlicher Intelligenz die 64-Bit-Version der Enterprise Edition zu verwenden.