Tworzenie agenta eksploracji danych AI za pomocą Gemini

Utwórz interfejs czatu oparty na sztucznej inteligencji (AI) dla interfejsów programowania systemów biznesowych i pozwól współpracownikom zadawać pytania na temat danych biznesowych. Analizowanie i raportowanie danych organizacji jest niezbędne do polepszania działalności firmy. Znalezienie problemów, odkrywanie trendów i analizowanie wyników są możliwe dzięki odpowiednim danym, ale jako programista możesz mieć problem z pomocą kolegom, którzy nie znają się na programowaniu, w odnalezieniu odpowiednich danych.

Projekt SQL Talk to aplikacja open source, która korzysta z generatywnej AI do odpowiadania na pytania dotyczące danych biznesowych. Projekt korzysta z interfejsu Gemini API i funkcji wywołania funkcji, aby przekształcać pytania dotyczące danych biznesowych w zapytania SQL i wywołania interfejsu API, a następnie przekształcać wyniki z powrotem w prosty język. Możesz użyć tego projektu jako punktu wyjścia do tworzenia agenta danych dla swojej firmy i pomagać współpracownikom w znajdowaniu odpowiedzi bez konieczności pisania dużej ilości kodu jednorazowego użytku.

Film z omówieniem projektu i jego rozszerzania, w tym z opiniami jego twórców, znajdziesz na stronie AI Data Agent | Build with Google AI (w języku angielskim). W przeciwnym razie możesz rozpocząć rozszerzanie projektu, korzystając z podanych niżej instrukcji.

Interfejs użytkownika aplikacji projektu SQL Talk

Rysunek 1. Interfejs aplikacji projektu SQL Talk

Konfigurowanie projektu

Te instrukcje przeprowadzą Cię przez proces konfiguracji projektu SQL Talk na potrzeby rozwoju i testowania. Ogólne czynności to utworzenie projektu SQL Talk, skonfigurowanie projektu programistycznego Google Cloud Shell Editor, uzyskanie identyfikatora projektu Google Cloud i skonfigurowanie ustawień projektu za pomocą skryptu. Z tych instrukcji dowiesz się, jak skonfigurować projekt za pomocą edytora Cloud Shell, który umożliwia szybkie i wygodne konfigurowanie, uruchamianie i aktualizowanie projektu.

Tworzenie instancji Cloud Shell dla projektu

Projekt SQL Talk możesz skonfigurować, klonując repozytorium projektu do instancji Cloud Shell. Ten proces konfiguruje wirtualną instancję środowiska programistycznego w infrastrukturze Google Cloud dla projektu i klonuje repozytorium kodu do tego środowiska wirtualnego.

Aby utworzyć instancję Cloud Shell dla SQL Talk:

Ten link skonfiguruje instancję edytora Google Cloud Shell i skopiuje do niej repozytorium SQL Talk.

Edytor Google Cloud Shell z kodem projektu SQL Talk

Rysunek 2. Projekt SQL Talk sklonowany do środowiska programistycznego Google Cloud Shell Editor.

Uzyskiwanie identyfikatora projektu Cloud

Projekt SQL Talk używa identyfikatora projektu Google Cloud do łączenia się z usługami Google Cloud, w tym z modelami Gemini. W edytorze Cloud Shell skonfiguruj identyfikator projektu, aby umożliwić aplikacji nawiązywanie połączeń z tymi usługami.

Aby połączyć edytor Cloud Shell z identyfikatorem projektu:

  1. Otwórz konsolę Google Cloud i w razie potrzeby zaloguj się.
  2. Wybierz istniejący projekt Cloud lub utwórz nowy.
  3. Zanotuj identyfikator projektu Cloud.
  4. Połącz instancję edytora z projektem i skonfiguruj projekt. W oknie edytora Cloud Shell na panelu terminala wpisz to polecenie:

    gcloud config set project YOUR_PROJECT_ID
    

Konfigurowanie projektu SQL Talk

Projekt SQL Talk korzysta z usług Google Cloud, w tym usługi bazy danych BigQuery i interfejsu Vertex AI API do łączenia się z modelami Gemini. Projekt SQL Talk zawiera skrypt setup.sh, który konfiguruje projekt za pomocą wymaganych usług Google Cloud i uruchamia domyślną wersję projektu.

Aby skonfigurować i uruchomić instancję edytora Cloud Shell projektu:

  1. W oknie terminala w edytorze Cloud Shell przejdź do katalogu projektu Cloud Shell SQL Talk (/sql-talk-app):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. W panelu terminala wpisz to polecenie:

    bash setup.sh
    

Po zakończeniu działania skryptu konfiguracyjnego w oknie terminala w edytorze Cloud Shell powinien wyświetlić się komunikat podobny do tego: To wiadomość, która wskazuje, że proces konfiguracji zakończył się powodzeniem i aplikacja SQL Talk działa:

You can now view your Streamlit app in your browser.
Network URL: http://##.##.##.##:8080
External URL: http://##.##.##.##:8080

Testowanie projektu

Po zakończeniu konfiguracji projektu SQL Talk możesz przetestować aplikację, aby sprawdzić, czy działa zgodnie z oczekiwaniami. Skrypt konfiguracji automatycznie uruchamia aplikację po jej uruchomieniu. Możesz ją ponownie uruchomić, wykonując podane niżej czynności.

Aby uruchomić aplikację SQL Talk:

  1. Jeśli edytor Cloud Shell był nieaktywny i rozłączony, konieczne może być ponowne połączenie z identyfikatorem projektu Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. W panelu terminala okna edytora Cloud Shell przejdź do katalogu projektu Cloud Shell SQL Talk.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. W panelu terminala wpisz to polecenie.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Wyświetl aplikację SQL Talk. W prawym górnym rogu okna edytora Cloud Shell kliknij kolejno przycisk Podgląd w przeglądarce i Podejrzyj na porcie 8080.

Nagłówek edytora Cloud Shell z wyróżnionym przyciskiem Podgląd w przeglądarce

Aby wyświetlić aktualizacje aplikacji SQL Talk:

  • W podglądzie w przeglądarce aplikacji internetowej SQL Talk odśwież przeglądarkę lub kartę przeglądarki.

Aby zatrzymać aplikację SQL Talk:

  • W panelu terminala w edytorze Cloud Shell kliknij Ctrl-C.

Modyfikowanie aplikacji

Możesz zmienić działanie aplikacji SQL Talk i dodać jej nowe możliwości, modyfikując kod Pythona. Z tej sekcji dowiesz się, jak dodać do aplikacji SQL Talk nowe wywołanie funkcji.

Funkcja wywołania funkcji interfejsu Gemini API używa określonej składni do definiowania funkcji, które mają być używane przez model generatywny do odpowiadania na pytania lub rozwiązywania problemów. Nie musi ona dokładnie odpowiadać składni rzeczywistego wywołania interfejsu API. Zamiast tego możesz użyć funkcji wywoływania funkcji, aby wymusić na modelu generatywnym podawanie określonych danych wejściowych lub parametrów zgodnych z składnią wywołania interfejsu API, a następnie użyć tych parametrów do wykonania rzeczywistych wywołań interfejsu API w kodzie aplikacji.

W tym przykładowym wdrożeniu pokazujemy, jak utworzyć definicję wywołania funkcji do wyświetlania ostatnich zapytań lub zadań w bazie danych, a potem zmapować tę definicję do rzeczywistego wywołania interfejsu API w kodzie aplikacji SQL Talk.

Dodawanie definicji wywołania funkcji

Dodaj nowe wywołanie funkcji, aby wyświetlić ostatnie zapytania do bazy danych lub zadania. Definicja ta jest używana przez model generatywny do zrozumienia, co robi wywołanie interfejsu API i jakich parametrów wejściowych wymaga. Ta przykładowa definicja funkcji jest zdefiniowana bez parametrów.

Aby dodać do aplikacji nowe wywołanie funkcji:

  1. W oknie edytora Cloud Shell otwórz plik kodu sql-talk-app/app.py.
  2. Po deklaracji funkcji list_datasets_func dodaj nową funkcję FunctionDeclaration.

    list_jobs_func = FunctionDeclaration(
        name="list_jobs",
        description="Get a list of the 10 most recent database requests to help answer the user's question",
        parameters={
            "type": "object",
            "properties": {
      },
    },
    )
    
  3. Dodaj nową funkcję do obiektu sql_query_tool.

    sql_query_tool = Tool(
        function_declarations=[
            sql_query_func,
            list_datasets_func,
            List_jobs_func,  # add this new function
            list_tables_func,
            get_table_func,
        ],
    )
    

Aby dodać kod, który uruchamia wywołanie interfejsu API dla nowej funkcji:

  • W pliku kodu sql-talk-app/app.py dodaj do pętli while function_calling_in_process: nowe zdanie if.

    if response.function_call.name == "list_datasets":
        ...
    
    # add this if clause for list_jobs function
    if response.function_call.name == "list_jobs":
        api_response = client.list_jobs(max_results=10)  # API request(s)
        api_response = str([job.job_id for job in api_response])
        api_requests_and_responses.append(
          [response.function_call.name,params, api_response])
    

Dodatkowe materiały

Więcej informacji o projekcie zapytań SQL znajdziesz w repozytorium kodu oraz w poście na blogu społeczności Cloud o projekcie SQL Talk. Jeśli potrzebujesz pomocy przy tworzeniu aplikacji lub chcesz współpracować z innymi programistami, skorzystaj z serwera Google Developers Community Discord i forum Google Cloud AI/ML. Więcej informacji o projektach z Google AI znajdziesz na tej playliście wideo.