Przykład 3: konfiguracja „OpenAI Chat Completions API (GPT-3.5, GPT-4) — wiersze”
W tym przykładzie pokazano, jak używać łącznika analityki OpenAI z konfiguracją „OpenAI Chat Completions API (GPT-3.5, GPT-4) — wiersze”. Prowadzi on przez podstawowe ćwiczenia pokazujące włączanie tej funkcji do modelu danych i wyrażeń wykresu.
Funkcjonalność tej konfiguracji łącznika jest bardzo podobna do konfiguracji „OpenAI Completions API (GPT-3) — wiersze”. Obie konfiguracje wykorzystują jednak różne modele, co z kolei prowadzi do różnych odpowiedzi. Dodatkowo, ze względu na różne nazwy parametrów między tymi dwiema konfiguracjami, zapoznaj się z przykładem samouczka pasującym do Twojej konfiguracji. Informacje o konfiguracji uzupełnień zawiera temat Przykład 1: Konfiguracja „OpenAI Completions API (GPT-3) — wiersze”.
Ten przykład możesz też wykonać, używając łącznika Azure OpenAI. Podczas używania tego łącznika prowadzi się interakcję z modelami za pośrednictwem platformy Microsoft Azure, a nie platformy OpenAI.
Zanim rozpoczniesz
Zanim będzie można ukończyć ten przykład, musisz wykonać następujące kroki.
-
Utworzenie konta na platformie OpenAI
-
Uzyskanie klucza API OpenAI
-
Włączenie funkcji połączenia analityki w Qlik Cloud
-
Utwórz połączenia przy użyciu odpowiednich konfiguracji łączników
Używanie łącznika OpenAI w skrypcie ładowania
Utwórz nową aplikację Qlik Sense, do której dodasz skrypt ładowania do komunikacji z platformą OpenAI. Tabele ładowane przy użyciu tego skryptu będą dostępne w modelu danych Twojej aplikacji.
Wykonaj poniższe kroki. Dodatkowe informacje zawiera temat Wybieranie i ładowanie danych z połączenia OpenAI.
Tworzenie tabeli danych do wysłania do OpenAI
Pierwszy krok polega na utworzeniu tabeli zawierającej żądanie wysyłane do OpenAI. Wiersze danych w żądaniu nazywane są „uzupełnieniami”. Tekst każdej pozycji musi być zawarty jako wiersze w jednym polu (kolumnie) tabeli. Każdy wiersz w tej kolumnie reprezentuje tekst, który ma zostać uzupełniony przez API OpenAI.
Może występować drugie dodatkowe pole dla Pola asocjacji, ale musi ono być zgodne z nazwą pola określoną w konfiguracji. Jest to specjalne pole, które nie zostanie wysłane do OpenAI, ale jest dołączane do odpowiedzi w celu wygenerowania modelu danych Qlik.
W swojej aplikacji otwórz edytor ładowania danych i wklej następujący kod do nowej sekcji skryptu:
SourceTable:
NoConcatenate
LOAD
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];
Ta tabela zawiera pole o nazwie Text z jednym pytaniem, które zadajemy OpenAI. Więcej pytań można dodać jako nowe pojedyncze komórki poniżej komórki istniejącego pytania. Pole RowId to Pole asocjacji, które zostanie użyte w następnym kroku do połączenia odpowiedzi z modelem danych aplikacji.
Tworzenie instrukcji ładowania OpenAI
Następny krok polega na utworzeniu kolejnej instrukcji ładowania w celu komunikacji z OpenAI. Tabela ładowana za pomocą tej instrukcji wskazuje nazwy tabeli i pól, których używasz do wysyłania danych żądania. Krótko mówiąc, druga tabela jest ładowana przez skrypt, aby dostarczyć odpowiedzi OpenAI na Twoje żądania.
Aby wygenerować tę część skryptu, możesz użyć kreatora Wybierz dane dla używanego połączenia. Spowoduje to wygenerowanie skryptu szablonu zawierającego nazwy podanych właściwości. Zamiast tego możesz dodać tę tabelę ręcznie do edytora skryptów bez użycia kreatora.
Znajdź używane połączenie w panelu Źródła danych Edytora ładowania danych i kliknij . Spowoduje to otwarcie kreatora Wybierz dane.
Podczas używania kreatora Wybierz dane należy podać dwie właściwości:
-
Nazwa Tabeli rezydentnej. Jest to tabela z pytaniami wysyłanymi do OpenAI. W tym przypadku jest to SourceTable.
-
Nazwa Pola danych. Jest to pole zawierające pytania wysyłane do OpenAI. W tym przypadku jest to Text.
W obszarze Tabele kliknij pole wyboru obok tabeli o nazwie openai.
Po kliknięciu przycisku Wstaw skrypt nowa tabela zostanie dodana do skryptu ładowania.
Po dodaniu instrukcji ładowania OpenAI skrypt ładowania powinien wyglądać następująco:
Możesz teraz uruchomić skrypt ładowania.
Ładowanie danych do aplikacji
Po zakończeniu działania skryptu kliknij Ładuj dane. Spowoduje to nawiązanie komunikacji z OpenAI i wstawienie tabel do modelu danych aplikacji.
Otwórz przeglądarkę modelu danych i zauważ, że dwie tabele są ze sobą połączone zgodnie z oczekiwaniami. W panelu Podgląd odpowiedź OpenAI na zadane przez nas pytanie jest zawarta w drugiej tabeli.
Możesz teraz generować zawartość analityczną na podstawie danych załadowanych do aplikacji. Nie trzeba odwoływać się do połączenia z OpenAI na żadnych wykresach tworzonych przy użyciu tych danych. Aby się dowiedzieć, jak używać OpenAI bezpośrednio w wyrażeniach wykresu (zamiast w skrypcie ładowania), zobacz temat Używanie łącznika OpenAI w wyrażeniach wykresu.
Używanie łącznika OpenAI w wyrażeniach wykresu
Oprócz dodawania pytań i odpowiedzi OpenAI do modelu danych aplikacji za pomocą skryptu ładowania można także wykonywać te operacje bezpośrednio na wykresie w aplikacji. Może to stanowić alternatywę dla używania tabel w skrypcie ładowania w celu komunikacji z OpenAI.
Dane pojedynczego pola są przesyłane między Tobą a OpenAI. W wielu przypadkach kod używany do połączenia skryptu ładowania można ponownie wykorzystać na wykresie, ale z pewnymi zauważalnymi różnicami.
Dodatkowe informacje zawiera temat Używanie połączeń OpenAI w wyrażeniach wizualizacji.
Uwagi dotyczące wolumenów żądań danych
Zaleca się używanie połączeń OpenAI w wyrażeniach wykresu tylko dla jednego lub kilku wierszy danych. Używanie wyrażeń wykresu do wysyłania dużych ilości danych do OpenAI nie jest zalecane.
Ważne jest, aby mieć świadomość, ile wierszy wysyła się z każdym żądaniem. Błędy w konfiguracji połączenia w wyrażeniu wykresu mogą prowadzić do nieumyślnie dużych żądań (na przykład z identycznymi wierszami z tym samym pytaniem z powodu niewłaściwego użycia modelu danych na wykresie). Zanim wejdziesz w interakcję z platformą podmiotu zewnętrznego, musisz wiedzieć, jak pola używane do obliczania wyrażeń wykresu oraz ich miejsce w modelu danych wpływają na Twoją umowę finansową i ustalenia rozliczeniowe z podmiotem zewnętrznym. Częstsze korzystanie z platformy zewnętrznej może skutkować wyższymi kosztami.
Aby moderować i ograniczać rozmiar żądań, postępuj zgodnie z tymi wskazówkami:
-
Używaj połączeń tylko w wyrażeniu wykresu typuTekst i grafika. Zdecydowanie odradza się używanie połączenia OpenAI w obiekcie Tabela, zwłaszcza jeśli dodajesz wyrażenie do tabeli z dodanym już co najmniej jednym wymiarem.
-
Jeśli wyrażenie wykresu jest połączone z modelem danych Twojej aplikacji, użyj w nim instrukcji if, aby obliczać wykres tylko wtedy, gdy w aplikacji zostanie dokonany pojedynczy wybór. Zmniejsza to znacznie liczbę wierszy w żądaniach, które Twój wykres wyśle do OpenAI.
-
Jeśli używasz połączenia OpenAI do wysyłania dużych żądań, użyj połączenia w skrypcie ładowania zamiast w wyrażeniu wykresu, aby dane zostały wstępnie załadowane do modelu danych.
Ćwiczenie: tworzenie podstawowego wyrażenia wykresu
Wykonaj następujące czynności:
-
Utwórz aplikację Qlik Sense i otwórz nowy arkusz w zaawansowanym trybie edycji.
InformacjaPołączenie analityczne, którego używasz na potrzeby wyrażenia wykresu, musi być już utworzone w przestrzeni, w której tworzysz aplikację. Można to zrobić w Edytorze ładowania danych w aplikacji lub na stronie Utwórz w centrum aktywności Analytics. Więcej informacji zawiera temat Tworzenie połączenia OpenAI. -
Przeciągnij wykres typu Tekst i grafika na arkusz.
-
W panelu właściwości, w obszarze Dane > Miary, dodaj miarę i kliknij , aby otworzyć edytor wyrażeń.
-
Wklej następujące wyrażenie do edytora wyrażeń:
endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
InformacjaW tym przykładzie nie trzeba stosować instrukcji if, ponieważ wysyłamy tylko jeden wiersz danych i nie ma połączenia z modelem danych. W innych sytuacjach należy użyć instrukcji if, aby wykres był obliczany tylko po wybraniu jednej wartości pola w aplikacji. Przykłady zawiera temat Szybkie przykłady.InformacjaAby kod w tej postaci działał prawidłowo w aplikacji, połączenie OpenAI musi być skonfigurowane z tą samą wartością Nazwa co connectionname w wyrażeniu. Aby uzyskać informacje o wartościach używanych do celów tego samouczka, zobacz temat Tworzenie połączeń. -
Kliknij przycisk Zastosuj.
Ćwiczenie: tworzenie pola wprowadzania tekstu przy użyciu zmiennej
Zamiast tego możesz zastąpić ciąg pytania nazwą zmiennej utworzonej w aplikacji, co pozwoli na utworzenie pola wprowadzania, w którym użytkownicy aplikacji będą mogli wprowadzać własne pytania bez interakcji z wyrażeniami.
Za pomocą tego prostego interfejsu można wzbogacić dane aplikacji o informacje kontekstowe generowane w czasie rzeczywistym.
Wykonaj następujące czynności:
-
Utwórz aplikację i dodaj dane oraz wizualizacje do nowego arkusza.
-
Kliknij , aby utworzyć zmienną. W tym ćwiczeniu nadaj jej Nazwę vUserQuestion. Pozostałe parametry pozostaw puste.
-
W panelu zasobów przeciągnij wykres typu Wprowadzanie zmiennych do arkusza. Znajduje się on w obszarze Rozszerzenia > Qlik Dashboard bundle.
-
W panelu właściwości wykresu Wprowadzanie zmiennych rozwiń pozycję Wygląd > Zmienna.
-
W obszarze Nazwa wybierz vUserQuestion.
-
W obszarze Pokaż jako wybierz Pole wprowadzania.
-
W panelu zasobów przeciągnij wykres typu Tekst i grafika do arkusza.
-
W panelu właściwości, w obszarze Dane > Miary, dodaj miarę i kliknij , aby otworzyć edytor wyrażeń.
-
Wklej następujące wyrażenie do edytora wyrażeń:
if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}',vUserQuestion))
InformacjaAby kod w tej postaci działał prawidłowo w aplikacji, połączenie OpenAI musi być skonfigurowane z tą samą wartością Nazwa co connectionname w wyrażeniu. Aby uzyskać informacje o wartościach używanych do celów tego samouczka, zobacz temat Tworzenie połączeń. -
Kliknij przycisk Zastosuj.
-
Zmień rozmiar tych pól wejściowych i odpowiedzi, aby dopasować je do swoich potrzeb.
Teraz powinno być możliwe wyjście z trybu edycji i wpisanie pytania w polu wprowadzania. Gdy naciśniesz klawisz Enter lub klikniesz gdziekolwiek indziej na arkuszu, pole odpowiedzi zostanie wypełnione odpowiedzią z OpenAI.
Połączenie z OpenAI w tym ćwiczeniu w ogóle nie komunikuje się z modelem danych aplikacji, ale można tworzyć znacznie bardziej zaawansowane aplikacje, które są w pełni zintegrowane z danymi ładowanymi do aplikacji i reagują na wybory dokonywane w nich przez użytkownika.
Więcej informacji na temat pracy ze zmiennymi zawarto w tematach Tworzenie zmiennej i Element sterujący Variable input.
Różnice między skryptem ładowania a kodem wyrażenia wykresu
W tych wyrażeniach wykresu wykorzystaliśmy ponownie kod wprowadzony we wcześniejszej lekcji dotyczącej skryptu ładowania. Na poniższej liście przedstawiono najważniejsze różnice między wersją skryptu ładowania a wyrażeniami wykresu:
-
Zmieniliśmy ScriptEval na ScriptAggrStr. Oznacza to, że wysyłamy pojedynczy wiersz danych i oczekujemy jednego wiersza z powrotem. Jest to wymagane podczas pracy z danymi niestandardowymi, takimi jak zmienna lub stała, jak w tym przypadku. „Str” wskazuje, że wysyłamy i odbieramy wartości tekstowe.
-
Dodaliśmy nową właściwość, column, o wartości choices.message.content. Jest zagnieżdżona w obiekcie endpoint. Ten dodatek do ciągu konfiguracji jest potrzebny do określenia, które pole ma zostać zwrócone z łącznika. W wyrażeniu wykresu używane jest tylko jedno pole i musimy określić, które.
Więcej informacji zawiera temat Składnia rozszerzeń po stronie serwera.