Beispiel 1: Konfiguration „OpenAI Completions API (GPT-3) - Rows“
In diesem Beispiel lernen S6979Konfiguration „OpenAI Completions API (GPT-3) – Rows“ verwenden. Davon ausgehend werden Sie durch einfache Beispiele geführt, die Ihnen zeigen, wie Sie die Funktionen in Ihr Datenmodell und Ihre Diagrammformeln integrieren.
Diese Konnektorkonfiguration funktioniert sehr ähnlich wie die Konfiguration „OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rows“. Die beiden Konfigurationen nutzen aber verschiedene Modelle, wodurch sich unterschiedliche Antworten ergeben. Zudem werden in den beiden Konfigurationen unterschiedliche Parameternamen verwendet. Beziehen Sie sich daher auf das Tutorial-Beispiel, das Ihrer Konfiguration entspricht. Weitere Informationen zur Konfiguration „Chat Completions“ finden Sie unter Beispiel 3: Konfiguration „OpenAI Chat Completions API (GPT-3.5). GPT-4 - Rows“.
Sie können dieses Beispiel auch mit dem Azure OpenAI-Konnektor bearbeiten. Wenn Sie diesen Konnektor verwenden, interagieren Sie über die Microsoft Azure-Plattform anstelle der OpenAI-Plattform mit dem Modell.
Vor dem Beginn
Bevor Sie dieses Beispiel bearbeiten können, müssen Sie die folgenden Schritte durchführen.
-
Ein Konto bei der OpenAI-Plattform erstellen
-
Einen OpenAI API-Schlüssel erhalten
-
Die Analyseverbindungsfunktion aktivieren in Qlik Cloud
-
Verbindungen mit den anwendbaren Konnektorkonfigurationen erstellen
Verwenden des OpenAI-Konnektors in Ihrem Ladeskript
Erstellen Sie eine neue Qlik Sense App, der Sie dann ein Ladeskript hinzufügen, um mit der OpenAI-Plattform zu kommunizieren. Auf die Tabellen, die Sie mit diesem Skript laden, kann im Datenmodell Ihrer App zugegriffen werden.
Folgen Sie den Schritten unten. Weitere Einzelheiten finden Sie unter Auswählen und Laden von Daten in einer OpenAI-Verbindung.
Erstellen der an OpenAI zu sendenden Datentabelle
Der erste Schritt besteht im Erstellen einer Tabelle mit der Anfrage, die Sie an OpenAI senden möchten. Die Datenzeilen in der Anfrage werden als „Vervollständigungen“ bezeichnet. Der Text für jedes Element muss als Zeilen in einem einzigen Feld (Spalte) in der Tabelle enthalten sein. Jede Zeile in dieser Spalte stellt Text dar, der von der OpenAI API vervollständigt werden soll.
Es kann ein zweites zusätzliches Feld als Verknüpfungsfeld geben, aber dies muss mit dem in der Konfiguration angegebenen Feldnamen übereinstimmen. Es handelt sich um ein besonderes Feld, das nicht an OpenAI gesendet, sondern an die Antworten angehängt wird, um ein Qlik Datenmodell zu generieren.
Öffnen Sie in Ihrer App den Dateneditor und fügen Sie folgenden Code in einen neuen Skriptabschnitt ein:
SourceTable:
NoConcatenate
LOAD
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];
Diese Tabelle enthält ein Feld mit dem Namen Text und einer einzelnen Frage, die an OpenAI gestellt wird. Weitere Fragen könnten als neue einzelne Zellen unter der Zelle der vorhandenen Frage hinzugefügt werden. Das Feld RowId ist das Verknüpfungsfeld, das im nächsten Schritt verwendet wird, um die Antworten mit dem Datenmodell der App zu verknüpfen.
Erstellen der load-Anweisung für OpenAI
Als nächster Schritt wird eine weitere load-Anweisung erstellt, um mit OpenAI zu kommunizieren. Die Tabelle, die Sie mit dieser Anweisung laden, zeigt auf die Namen der Tabelle und Felder, die Sie zum Senden der Anfragedaten verwenden. Das Skript lädt also eine zweite Tabelle, um die Antworten von OpenAI auf Ihre Anfrageelemente bereitzustellen.
Um diesen Teil des Skripts zu generieren, können Sie den Assistenten Daten auswählen für die verwendete Verbindung nutzen. Damit wird ein Vorlagenskript generiert, das die Namen der bereitgestellten Eigenschaften enthält. Alternativ können Sie diese Tabelle manuell in den Skript-Editor einfügen, ohne den Assistenten zu verwenden.
Suchen Sie die verwendete Verbindung im Fenster Datenquellen des Dateneditors und klicken Sie auf . Damit wird der Assistent Daten auswählen geöffnet.
Wenn Sie den Assistenten Daten auswählen verwenden, müssen Sie zwei Eigenschaften bereitstellen:
-
Der Name der Resident-Tabelle. Dies ist die Tabelle mit den Fragen, die an OpenAI gesendet werden. In diesem Fall handelt es sich um SourceTable.
-
Der Name des Datenfelds. Dies ist das Feld mit den Fragen, die an OpenAI gesendet werden. In diesem Fall handelt es sich um Text.
Aktivieren Sie unter Tabellen das Kontrollkästchen für die Tabelle mit dem Namen openai.
Wenn Sie auf Skript einfügen klicken, wird die neue Tabelle zum Ladeskript hinzugefügt.
Nachdem die load-Anweisung für OpenAI hinzugefügt wurde, sollte Ihr Ladeskript jetzt wie folgt aussehen:
Sie sind jetzt bereit, das Ladeskript auszuführen.
Laden der Daten in die App
Klicken Sie nach Abschluss des Skripts auf Daten laden. Dadurch wird die Kommunikation mit OpenAI hergestellt und die Tabellen werden in das Datenmodell Ihrer App eingefügt.
Öffnen Sie die Datenmodellansicht. Dort sehen Sie, dass die beiden Tabellen wie erwartet miteinander verknüpft sind. Im Fenster Vorschau ist die OpenAI-Antwort auf die von uns gestellte Frage in der zweiten Tabelle enthalten.
Sie können jetzt Analyseinhalte anhand der Daten erstellen, die in die App geladen wurden. In den Diagrammen, die Sie mit diesen Daten erstellen, braucht nicht auf die OpenAI-Verbindung verwiesen zu werden. Informationen dazu, wie Sie die OpenAI-Verbindung direkt in Diagrammformeln anstelle des Ladeskripts verwenden, finden Sie unter Verwenden des OpenAI-Konnektors in Diagrammformeln.
Verwenden des OpenAI-Konnektors in Diagrammformeln
Sie können OpenAI-Fragen und -Antworten nicht nur über das Ladeskript zum Datenmodell Ihrer App hinzufügen, sondern diese Vorgänge auch direkt in einem Diagramm in Ihrer App durchführen. Dies ist eine mögliche Alternative zur Verwendung von Tabellen im Ladeskript für die Kommunikation mit OpenAI.
Daten für ein einzelnes Feld werden zwischen Ihnen und OpenAI hin und her gesendet. In vielen Fällen kann der für die Ladeskriptverbindung genutzte Code für ein Diagramm wiederverwendet werden, mit einigen wichtigen Ausnahmen.
Weitere Einzelheiten finden Sie unter Verwenden von OpenAI-Verbindungen in Visualisierungsformeln.
Überlegungen zu Datenanfragemengen
Es wird empfohlen, OpenAI-Verbindungen in Diagrammformeln nur für eine oder wenige Datenzeilen zu verwenden. Diagrammformeln sollten nicht dazu verwendet werden, große Datenmengen an OpenAI zu senden.
Achten Sie unbedingt darauf, wie viele Zeilen Sie mit jeder Anfrage senden. Fehler beim Konfigurieren der Verbindung in einer Diagrammformel können zu unbeabsichtigt großen Anfragen führen (z. B. identische Zeilen mit der gleichen Frage, weil das Datenmodell in einem Diagramm falsch verwendet wurde). Bevor Sie mit einer Drittplattform interagieren, müssen Sie sich damit vertraut machen, wie die Felder, die in der Berechnung der Diagrammformel verwendet werden, und ihre Position im Datenmodell sich auf Ihre Zahlungs- und Abrechnungsvereinbarungen mit dem Dritten auswirken. Eine stärkere Nutzung der externen Plattform kann zu höheren Kosten führen.
Befolgen Sie die folgenden Leitlinien, um die Größe Ihrer Anfragen einzuschränken:
-
Verwenden Sie die Verbindung nur in einer Text und Bild-Diagrammformel. Es wird dringend davon abgeraten, eine OpenAI-Verbindung in einem Tabellen-Objekt zu verwenden, besonders, wenn Sie die Formel zu einer Tabelle hinzufügen, der bereits eine oder mehrere Dimensionen hinzugefügt wurden.
-
Wenn die Diagrammformel mit dem Datenmodell Ihrer App verknüpft ist, verwenden Sie einen if-Befehl in der Formel, um das Diagramm nur zu berechnen, wenn eine einzelne Auswahl in der App getroffen wird. Damit wird die Zeilenanzahl der Anfragen, die Ihr Diagramm an OpenAI sendet, erheblich verringert.
-
Wenn Sie eine OpenAI-Verbindung zum Senden großer Anfragen verwenden, sollten Sie die Verbindung in Ihrem Ladeskript statt in einer Diagrammformel nutzen, damit die Daten vorab in Ihr Datenmodell geladen werden.
Übung: Erstellen einer grundlegenden Diagrammformel
Gehen Sie folgendermaßen vor:
-
Erstellen Sie eine Qlik Sense App und öffnen Sie ein neues Arbeitsblatt im erweiterten Bearbeitungsmodus.
InformationshinweisDie Analyseverbindung, die Sie für die Diagrammformel verwenden, muss bereits in dem Bereich erstellt worden sein, in dem Sie die App erstellen. Dies geschieht im Dateneditor in einer App oder über die Seite „Erstellen“ des Aktivitätscenters Analysen. Weitere Informationen finden Sie unter Erstellen einer OpenAI-Verbindung. -
Ziehen Sie ein Text und Bild-Diagramm auf das Arbeitsblatt.
-
Fügen Sie im Eigenschaftsfenster unter Daten > Kennzahlen eine Kennzahl hinzu und klicken Sie auf , um den Formel-Editor zu öffnen.
-
Fügen Sie die folgende Formel in den Formel-Editor ein:
endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
InformationshinweisIn diesem Beispiel ist es akzeptabel, keinen if-Befehl zu verwenden, da wir nur eine einzelne Datenzeile senden und keine Verbindung zu einem Datenmodell besteht. In anderen Szenarios sollten Sie einen if-Befehl verwenden, um zu gewährleisten, dass das Diagramm nur dann berechnet wird, wenn ein einzelner Feldwert in der App ausgewählt wird. Beispiele finden Sie unter Kurze Beispiele.InformationshinweisDamit dieser exakte Code in Ihrer App korrekt funktioniert, muss Ihre OpenAI-Verbindung auch mit dem gleichen Wert für Name wie dem in der Formel angegebenen connectionname konfiguriert sein. Die für dieses Tutorial verwendeten Werte finden Sie unter Erstellen der Verbindungen. -
Klicken Sie auf Übernehmen.
Übung: Erstellen eines Texteingabefelds mithilfe einer Variablen
Alternativ können Sie die Fragenzeichenfolge durch den Namen einer Variablen ersetzen, die Sie in der App erstellt haben. Damit kann ein Eingabefeld erstellt werden, in dem App-Nutzer ihre eigenen Fragen eingeben können, ohne mit Formeln zu interagieren.
Diese einfache Schnittstelle kann genutzt werden, um Ihre App-Daten mit in Echtzeit generierten Kontextdaten zu erweitern.
Gehen Sie folgendermaßen vor:
-
Erstellen Sie eine App und fügen Sie einem neuen Arbeitsblatt Daten und Visualisierungen hinzu.
-
Klicken Sie auf , um eine Variable zu erstellen. Geben Sie für diese Übung als Name vUserQuestion ein. Lassen Sie die restlichen Parameter leer.
-
Ziehen Sie aus dem Extras-Fenster ein Variableneingabe-Diagramm auf das Arbeitsblatt. Es befindet sich unter Erweiterungen > Qlik Dashboard Bundle.
-
Erweitern Sie im Eigenschaftsfenster für das Variableneingabe-Diagramm Darstellung > Variable.
-
Wählen Sie unter Name den Eintrag vUserQuestion aus.
-
Wählen Sie unter Anzeigen als die Option Eingabefeld aus.
-
Ziehen Sie aus dem Extras-Fenster ein leeres Text und Bild-Diagramm auf das Arbeitsblatt.
-
Fügen Sie im Eigenschaftsfenster unter Daten > Kennzahlen eine Kennzahl hinzu und klicken Sie auf , um den Formel-Editor zu öffnen.
-
Fügen Sie die folgende Formel in den Formel-Editor ein:
if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}',vUserQuestion))
InformationshinweisDamit dieser exakte Code in Ihrer App korrekt funktioniert, muss Ihre OpenAI-Verbindung auch mit dem gleichen Wert für Name wie dem in der Formel angegebenen connectionname konfiguriert sein. Die für dieses Tutorial verwendeten Werte finden Sie unter Erstellen der Verbindungen. -
Klicken Sie auf Übernehmen.
-
Passen Sie die Größe dieser Eingabe- und Antwortfelder wie erforderlich an.
Jetzt können Sie den Bearbeitungsmodus verlassen und eine Frage in das Eingabefeld eingeben. Wenn Sie die Eingabetaste drücken oder auf eine beliebige andere Stelle des Arbeitsblatts klicken, wird das Antwortfeld mit einer Antwort von OpenAI ausgefüllt.
In dieser Übung kommuniziert die OpenAI-Verbindung nicht mit dem Datenmodell der App, aber es können wesentlich komplexere Apps erstellt werden, die vollständig in die in der App geladenen Daten integriert sind und auf die in der App getroffenen Auswahlen reagieren.
Weitere Informationen zum Arbeiten mit Variablen finden Sie unter Erstellen einer Variablen und Variableneingabe-Steuerelement.
Unterschiede zwischen dem Ladeskript- und Diagrammformelcode
In diesen Diagrammformeln haben wir den Code genutzt, der in der vorherigen Lektion zum Ladeskript eingegeben wurde. In der folgenden Liste werden die wichtigsten Unterschiede zwischen der Ladeskriptversion und den Diagrammformeln hervorgehoben:
-
Wir haben ScriptEval zu ScriptAggrStr geändert. Dies zeigt, dass wir eine einzelne Datenzeile senden und eine einzelne Zeile als Antwort erwarten. Das ist erforderlich, wenn mit benutzerdefinierten Daten wie einer Variablen oder Konstanten gearbeitet wird, wie es hier der Fall ist. Das „Str“ gibt an, dass wir Textwerte senden und erhalten.
-
Wir fügen eine neue Eigenschaft column mit dem Wert choice.text hinzu. Sie ist im endpoint-Objekt verschachtelt. Diese Hinzufügung zur Konfigurationszeichenfolge ist erforderlich, um anzugeben, welches Feld vom Konnektor zurückgegeben werden soll. In einer Diagrammformel wird nur ein Feld verwendet, und wir müssen angeben, welches.
Weitere Informationen finden Sie unter Syntax für serverseitige Erweiterungen.