1. Zanim zaczniesz
To ćwiczenie prowadzi użytkowników przez proces integrowania osadzonego panelu Looker z czatem opartym na analityce konwersacyjnej, aby stworzyć ujednoliconą platformę danych opartą na języku naturalnym. Aby w pełni wykorzystać tę funkcję, musisz znać osadzanie Lookera, analitykę konwersacyjną, JavaScript i React.
Czego się nauczysz
Po ukończeniu tego ćwiczenia nauczysz się:
- Konfigurowanie lokalnie aplikacji referencyjnej Looker Embed
- Tworzenie komponentu czatu w React za pomocą biblioteki komponentów Lookera
- Jak wysłać filtr panelu wbudowanego jako kontekst do analityki konwersacyjnej
- Jak włączyć czat oparty na analityce konwersacyjnej, aby kontrolować filtry w osadzonym panelu
Czego potrzebujesz
Aby ukończyć to ćwiczenie, potrzebujesz:
- Instancja Lookera z zainstalowanym blokiem Lookera ASC Demographic Data i włączonym osadzaniem SSO.
- Dostęp do interfejsu API i narzędzi dla deweloperów w instancji Lookera
- środowisko lokalne z zainstalowanymi Node w wersji 18, yarn, Git i gcloud;
- projekt w chmurze z tymi rolami IAM skonfigurowanymi na Twoim koncie użytkownika:
roles/bigquery.dataViewerWyświetlający dane BigQueryroles/bigquery.userUżytkownik BigQueryroles/looker.instanceUserUżytkownik instancji Lookera
2. Konfigurowanie analityki konwersacyjnej
Skonfigurujmy agenta danych analityki konwersacyjnej, którego czat w osadzonym panelu będzie używać do odpowiadania na pytania zadawane w języku naturalnym.
Uwierzytelnianie za pomocą gcloud
- Uwierzytelnij się za pomocą konta użytkownika w środowisku lokalnym:
gcloud auth login
- Ustaw domyślne dane logowania aplikacji (ADC) i projekt rozliczeniowy w gcloud:
gcloud auth application-default login
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
Włączanie interfejsów API analityki konwersacyjnej
- Włącz interfejsy API projektu w chmurze. Zastąp
YOUR_PROJECT_IDidentyfikatorem Twojego projektu w chmurze Google Cloud:
gcloud services enable geminidataanalytics.googleapis.com bigquery.googleapis.com cloudaicompanion.googleapis.com --project=YOUR_PROJECT_ID
Tworzenie agenta danych
- Otwórz Google Colab.
- W Google Colab załaduj ten notatnik z repozytorium Looker Embed Reference.
- Uruchom wszystkie kroki w notatniku. Będziesz potrzebować identyfikatora projektu w chmurze i identyfikatora URI instancji Lookera z ukośnikiem na końcu, np.
"https://my.looker.app/". Na końcu notatnika powinien pojawić się wynik.
Masz teraz dostępnego agenta danych Analityki konwersacyjnej, który jest gotowy do odbierania wiadomości na czacie, wysyłania zapytań do eksploracji Lookera w osadzonym panelu Lookera oraz zwracania wyników i wizualizacji.
3. Konfigurowanie dokumentacji umieszczania Lookera
Skonfigurujmy aplikację referencyjną Looker Embed w środowisku lokalnym, aby można było wypróbować przykład integracji czatu analityki konwersacyjnej z osadzonym panelem Lookera.
Klonowanie repozytorium
- Sklonuj repozytorium GitHub w środowisku lokalnym. Oto przykładowe polecenie:
git clone "https://github.com/looker-open-source/LookerEmbedReference.git"
- Przejdź do sklonowanego katalogu
LookerEmbedReference:
cd LookerEmbedReference
Konfigurowanie i uruchamianie lokalnego serwera frontendu
- Zainstaluj zależności w katalogu
Frontend.
cd Frontend
yarn install
- Skonfiguruj plik
.envw katalogu głównymFrontendz danymi logowania.YOUR_LOOKER_INSTANCE_URIpowinien być identyfikatorem URI instancji Lookera bez ukośnika na końcu. Zawartość pliku powinna wyglądać tak:
PBL_CLIENT_PORT=3001
API_HOST=http://localhost:3000
LOOKER_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKER_API_HOST=YOUR_LOOKER_INSTANCE_URI:19999
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
Aby utworzyć plik, możesz użyć tego przykładowego polecenia:
cat > .env <<'EOF'
PBL_CLIENT_PORT=3001
API_HOST=http://localhost:3000
LOOKER_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKER_API_HOST=YOUR_LOOKER_INSTANCE_URI:19999
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
EOF
- Uruchom serwer deweloperski frontendu:
yarn run dev
Konfigurowanie i uruchamianie serwera backendu lokalnie
- Otwórz nową powłokę, terminal, konsolę lub kartę. Przejdź do katalogu
Backend-Nodei zainstaluj zależności. Nie zamykaj poprzedniej powłoki/terminala z działającym serwerem frontendu.
cd ../Backend-Node
yarn install
- Skonfiguruj plik
.envw katalogu głównymBackend-Nodez danymi logowania:
YOUR_LOOKER_CLIENT_IDto Twój identyfikator klienta Lookera.YOUR_LOOKER_CLIENT_SECRETto tajny klucz klienta Lookera.YOUR_LOOKER_EMBED_SECRETto Twój klucz obiektu tajnego do umieszczania.YOUR_PROJECT_IDto identyfikator Twojego projektu Cloud;YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASHto identyfikator URI instancji Lookera z ukośnikiem na końcu.YOUR_LOOKER_INSTANCE_URIto identyfikator URI instancji Lookera bez ukośnika na końcu.
Zawartość pliku powinna wyglądać tak:
PBL_BACKEND_PORT=3000
LOOKERSDK_API_VERSION=4.0
LOOKERSDK_BASE_URL=YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASH
LOOKERSDK_CLIENT_ID=YOUR_LOOKER_CLIENT_ID
LOOKERSDK_CLIENT_SECRET=YOUR_LOOKER_CLIENT_SECRET
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKERSDK_EMBED_SECRET=YOUR_LOOKER_EMBED_SECRET
CLOUD_AGENT_ID=looker_embed_reference_data_agent
CLOUD_PROJECT_ID=YOUR_PROJECT_ID
Aby utworzyć plik, możesz użyć tego przykładowego polecenia. Odpowiednio zastąp wszystkie dane logowania:
cat > .env <<'EOF'
PBL_BACKEND_PORT=3000
LOOKERSDK_API_VERSION=4.0
LOOKERSDK_BASE_URL=YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASH
LOOKERSDK_CLIENT_ID=YOUR_LOOKER_CLIENT_ID
LOOKERSDK_CLIENT_SECRET=YOUR_LOOKER_CLIENT_SECRET
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKERSDK_EMBED_SECRET=YOUR_LOOKER_EMBED_SECRET
CLOUD_AGENT_ID=looker_embed_reference_data_agent
CLOUD_PROJECT_ID=YOUR_PROJECT_ID
EOF
- Uruchom serwer deweloperski backendu:
yarn run dev
Serwer deweloperski frontendu jest już uruchomiony i obsługuje JavaScript dla aplikacji internetowej. Działa też serwer deweloperski backendu, który obsługuje żądania dotyczące adresu URL osadzania logowania jednokrotnego i przekazuje żądania do punktów końcowych analityki konwersacyjnej.
4. Wypróbuj przykład
Teraz wypróbuj aplikację internetową działającą lokalnie w Twoim środowisku.
Rozpoczynanie rozmowy
- Otwórz adres https://localhost:3001 w wybranej przeglądarce.
- W głównym menu nawigacyjnym po lewej stronie otwórz stronę Osadzony panel z czatem.
- Gdy po prawej stronie pojawi się komponent czatu, wpisz „Cześć, kim jesteś?”.
- Zanotuj odpowiedź.
Aplikacja automatycznie utworzyła obiekt rozmowy w analityce konwersacyjnej, aby śledzić historię czatu, i wczytała interfejs czatu. Gdy zadasz pytanie interfejsowi czatu, frontend wyśle wiadomość użytkownika do lokalnego serwera backendu Node. Następnie przekierował żądanie do punktu końcowego czatu analityki konwersacyjnej i odpowiedź z niego.
Filtrowanie umieszczonego panelu
Teraz zapoznaj się z osadzonym panelem i zacznij z niego korzystać.
- Przewiń umieszczony panel. Obejmuje on dane spisu powszechnego w wielu wymiarach i wskaźnikach.
- W lewym górnym rogu panelu możesz filtrować dane według stanu i hrabstwa. Ustaw filtr w filtrze panelu na Texas. Następnie kliknij nowo podświetlony na niebiesko przycisk z okrągłą strzałką, aby ponownie uruchomić panel.
- Zwróć uwagę, że dane wszystkich wizualizacji są filtrowane według stanu Texas.
Zadawanie pytań z kontekstem panelu
Po przefiltrowaniu panelu kontynuujmy analizę danych w nim zawartych.
- Na czacie wpisz „Podaj 5 powiatów z najniższym czynszem”.
- Zwróć uwagę, że prompt do Analyticsa konwersacyjnego zawiera teraz dodatkowe słowa: „Filtruj według wymiaru „state.state_name” o wartości „Texas””.
- Zwróć uwagę, że zapytanie i dane w odpowiedzi są filtrowane według stanu Texas.
- Po zwróceniu wyników danych ponownie uruchomiliśmy wbudowany panel z filtrem County ustawionym na 5 okręgów zdefiniowanych w danych wyników.
Możesz teraz kontynuować analizę danych z cenzusu, ponieważ 5 hrabstw zostało już dla Ciebie odfiltrowanych.
Gratulacje! Skonfigurowano i wypróbowano prosty przykład osadzonego panelu zintegrowanego z czatem analityki konwersacyjnej.
5. Tworzenie komponentu czatu
Aby zrozumieć, co się dzieje w tle, najpierw przyjrzyjmy się komponentowi Chat. Zakładamy, że wiesz, jak umieścić panel Lookera za pomocą pakietu Looker Embed SDK.
Korzystanie z biblioteki komponentów Lookera
- Otwórz plik komponentu
Chatw lokalizacjiFrontend/src/components/EmbedChat/components/chat.jsw ulubionym środowisku IDE lub w terminalu. - Komponent
Chatjest zbudowany ze standardowych komponentów interfejsu Lookera w React z pakietu Biblioteka komponentów Lookera.
Wysyłanie wiadomości do użytkownika
Interfejs czatu musi wysyłać prompt użytkownika do analityki konwersacyjnej.
- U dołu pliku komponentu
Chatznajduje się komponentChat, który zawiera komponent podrzędnyChatInput. Ten komponent podrzędny udostępnia pole do wprowadzania danych dla promptu użytkownika. - Po przesłaniu metoda
showAndSendUserPromptwysyła prompt użytkownika do analityki konwersacyjnej (za pośrednictwem backendu Node).
Przesyłanie strumieniowe i wyświetlanie komunikatów systemowych
Gdy użytkownik wyśle wiadomość do analityki konwersacyjnej, musimy wyświetlić odpowiedź.
- W dolnej części pliku komponentu
Chatznajduje się komponentChat, który zawiera subkomponentMessageListz logiką wyświetlania wiadomości z analityki konwersacyjnej na podstawie typu wiadomości. - Metoda
streamAndParseResponseobsługuje odpowiedź, stale próbując przeanalizować prawidłowe wiadomości systemowe z odpowiedzi JSON strumieniowania. Gdy tylko uda się prawidłowo przeanalizować prawidłowy komunikat systemowy, zostanie on wyświetlony wMessageList.
Wiesz już, jak komponent Chat, utworzony za pomocą biblioteki Looker Components, wysyła wiadomość do użytkownika i przesyła z powrotem odpowiedź.
6. Wysyłanie filtrów panelu do analityki konwersacyjnej
Teraz dowiedzmy się, jak uwzględnić filtry panelu w prompcie użytkownika, aby analityka konwersacyjna mogła filtrować zapytanie w kontekście panelu (jego filtrów).
Nasłuchiwanie zdarzenia zmiany filtra w panelu
- Otwórz plik komponentu
EmbedChatw lokalizacjiFrontend/src/components/EmbedChat/EmbedChat.js,, który reprezentuje stronę aplikacji zawierającą osadzony panel zintegrowany z komponentemChat. - Komponent
EmbedChatnasłuchuje zdarzenia"dashboard:filters:changed"z osadzonego panelu za pomocą metody.on(...)pakietu Embed SDK. Następnie komponent zapisuje bieżące filtry w stanie filtra.
Wysyłanie stanu filtra do analityki konwersacyjnej
- Komponent
EmbedChatprzekazuje filtry do komponentuChat, który przekształca każdy filtr w ciąg znaków, np."Filter on dimension '...' being ...", w metodzieshowAndSendUserPrompt, aby dodać go na końcu promptu użytkownika.
7. Sterowanie filtrami panelu z poziomu czatu
Na koniec przyjrzyjmy się, jak włączyć komponent Chat, aby sterować filtrami osadzonego panelu.
Określanie filtrów do ustawienia
- Metoda
streamAndParseResponsekomponentuChatzawsze sprawdza, czy nie ma wiadomości systemowej z wynikami danych z analityki konwersacyjnej. - Gdy metoda
streamAndParseResponseanalizuje komunikat systemowy z wynikami danych, sprawdza, czy którykolwiek z wymiarów w danych odpowiada wymiarom w filtrach. - W takim przypadku metoda
streamAndParseResponseprzekształca kolumny danych w filtry panelu. Tym razem metoda ponownie korzysta zFIELD_FILTER_MAP, ale w odwrotny sposób, przekształcając nazwę wymiaru w klucz filtra. Wartości filtra to wartości w kolumnie danych.
Wysyłanie zdarzenia zmiany filtra do osadzonego panelu
- W przypadku wybranych filtrów panelu wywołanie metody
streamAndParseResponsepowoduje wywołanie metodysetFilterskomponentuChatz odpowiednimi filtrami. - Wywołuje to metodę
setDashboardFilterskomponentuEmbedChat, która wysyła 2 zdarzenia:"dashboard:filters:update"z filtrami i"dashboard:run"do osadzonego panelu w szybkiej kolejności za pomocą metodysendpakietu Embed SDK. - Zdarzenie
"dashboard:filters:update"zmienia filtry w osadzonym panelu, a zdarzenie"dashboard:run"ponownie uruchamia zapytania panelu z nowymi filtrami.
8. Podsumowanie i najważniejsze informacje
Masz już własny przykład działania osadzonego panelu Looker zintegrowanego z czatem analityki konwersacyjnej. Wiesz już, jak włączyć eksplorowanie danych za pomocą języka naturalnego na osadzonym panelu Looker i w analityce konwersacyjnej.
- Masz już komponent czatu utworzony za pomocą biblioteki komponentów Lookera.
- Przekazujesz kontekst osadzonego panelu Lookera do analityki konwersacyjnej, aby ułatwić eksplorowanie danych.
- Włączono Analitykę konwersacyjną, aby kontrolować filtry osadzonego panelu informacyjnego i uzyskiwać więcej kontekstu podczas eksplorowania danych.
Co dalej
- Dowiedz się więcej o możliwościach analityki konwersacyjnej.
- Zaktualizuj przykładową aplikację Looker Embed Reference, aby działała z Twoimi osadzonymi panelami Lookera.
- Wypróbuj inne przypadki użycia osadzania dostępne w lokalnie uruchomionej aplikacji przykładowej Looker Embed Reference.