Tworzenie agenta eksploracji danych AI za pomocą Gemini

Opracuj interfejs czatu oparty na sztucznej inteligencji (AI) dla interfejsów programowania używanych przez Ciebie systemów biznesowych i pozwól współpracownikom zadawać pytania na temat firmowych baz danych. Analizowanie i raportowanie danych organizacji ma kluczowe znaczenie dla usprawnienia działalności. Znajdowanie problemów, odkrywanie trendów i badanie wyników jest możliwe, jeśli dysponujesz odpowiednimi danymi, ale gdy jesteś programistą, pomaganie współpracownikom w odkryciu właściwych danych może być nie lada wyzwaniem.

Projekt SQL Talk to aplikacja typu open source, która wykorzystuje technologię generatywnej AI do odpowiadania na pytania dotyczące firmowych baz danych. Projekt korzysta z interfejsu Gemini API i funkcji wywołania funkcji, aby przekształcać pytania dotyczące firmowych baz danych w zapytania SQL i wywołania interfejsu API, a następnie przekształcać wyniki z powrotem na uproszczony język. Możesz użyć tego projektu jako punktu wyjścia do opracowania agenta danych dla swojej firmy i pomóc współpracownikom uzyskać odpowiedzi bez konieczności pisania obszernego kodu jednorazowego.

Film z omówieniem projektu i jego możliwości rozwoju (w tym informacji od osób, które go tworzą, znajdziesz w filmie o agencji danych AI | Build with Google AI). W przeciwnym razie możesz rozpocząć rozszerzanie projektu, korzystając z poniższych instrukcji.

Interfejs użytkownika aplikacji projektu SQL Talk

Rysunek 1. Interfejs użytkownika aplikacji projektu SQL Talk.

Konfigurowanie projektu

Te instrukcje przeprowadzą Cię przez proces konfigurowania projektu SQL Talk na potrzeby programowania i testowania. Ogólne kroki: utworzenie projektu SQL Talk, skonfigurowanie projektu programistycznego edytora Google Cloud Shell, uzyskanie identyfikatora projektu Google Cloud oraz użycie skryptu do skonfigurowania ustawień projektu. Te instrukcje pokazują, jak skonfigurować projekt za pomocą edytora Cloud Shell, dzięki czemu konfigurowanie, uruchamianie i aktualizowanie projektu jest szybkie i wygodne.

Utwórz instancję Cloud Shell dla projektu

Projekt SQL Talk możesz skonfigurować, sklonując repozytorium projektu do instancji Cloud Shell. Ten proces konfiguruje wirtualne środowisko programistyczne w infrastrukturze Google Cloud dla projektu i klonuje repozytorium kodu do tego środowiska wirtualnego.

Aby utworzyć instancję Cloud Shell dla SQL Talk:

Ten link konfiguruje instancję edytora Google Cloud Shell i sklonuje do niej repozytorium SQL Talk.

Edytor Google Cloud Shell z pokazanym kodem projektu SQL Talk

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

Pobieranie identyfikatora projektu Cloud

Projekt SQL Talk korzysta z identyfikatora projektu Google Cloud do łączenia się z usługami Google Cloud, w tym z modelami Gemini. W edytorze Cloud Shell konfigurujesz identyfikator projektu, aby umożliwić aplikacji łączenie się 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 w chmurze.
  4. Połącz instancję Edytora z projektem i skonfiguruj projekt. W oknie edytora Cloud Shell otwórz panel terminala i wpisz to polecenie:

    gcloud config set project YOUR_PROJECT_ID
    

Konfigurowanie projektu SQL Talk

Do uruchomienia projektu SQL Talk wykorzystuje usługi Google Cloud, w tym usługę bazy danych BigQuery i interfejs Vertex AI API do łączenia się z modelami Gemini. Projekt SQL Talk zawiera skrypt setup.sh, który konfiguruje w projekcie wymagane usługi Google Cloud i uruchamia domyślną wersję projektu.

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

  1. W panelu terminala okna edytora 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 następujące polecenie:

    bash setup.sh
    

Gdy skrypt konfiguracji zostanie ukończony, w oknie terminala edytora Cloud Shell powinien pojawić się komunikat podobny do tego. Ten komunikat oznacza, że proces konfiguracji został ukończony, a aplikacja SQL Talk jest uruchomiona:

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 uruchomieniu. Możesz ją uruchomić ponownie, wykonując poniższe czynności.

Aby uruchomić aplikację SQL Talk:

  1. Jeśli edytor Cloud Shell był nieaktywny i odłą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 następujące 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 wybierz przycisk Podgląd w przeglądarce, a następnie Podejrzyj na porcie 8080.

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

Aby wyświetlić aktualizacje aplikacji SQL Talk:

  • W Podglądzie sieci w aplikacji internetowej SQL Talk załaduj ponownie kartę przeglądarki lub przeglądarki.

Aby zatrzymać aplikację SQL Talk:

  • W panelu terminala okna edytora Cloud Shell naciśnij Ctrl+C.

Modyfikowanie aplikacji

Możesz zmienić działanie i dodać możliwości do aplikacji SQL Talk, modyfikując jej kod w Pythonie. W tej sekcji opisujemy, jak dodać nowe wywołanie funkcji do aplikacji SQL Talk.

Funkcja wywołania funkcji interfejsu Gemini API używa określonej składni do definiowania funkcji używanych przez model generatywny do odpowiadania na pytania lub rozwiązywania problemów. Składnia ta nie musi dokładnie odpowiadać składni rzeczywistego wywołania interfejsu API. Zamiast tego używasz funkcji wywoływania funkcji, aby wymuszać na modelu generatywnym dostarczenie określonych danych wejściowych lub parametrów zgodnych ze składnią wywołań interfejsu API, a następnie używać tych parametrów do wykonywania rzeczywistych wywołań interfejsu API w kodzie aplikacji.

Ta przykładowa implementacja pokazuje, jak utworzyć definicję wywołania funkcji na potrzeby listy ostatnich zapytań lub zadań do bazy danych, a następnie zmapować tę definicję na rzeczywiste wywołanie interfejsu API w kodzie aplikacji SQL Talk.

Dodawanie definicji wywołania funkcji

Dodaj nowe wywołanie funkcji do wyświetlania listy ostatnich zapytań lub zadań do bazy danych. Ta definicja jest używana przez model generatywny do zrozumienia, jak działa wywołanie interfejsu API i jakich parametrów wejściowych wymaga. Ta przykładowa definicja funkcji jest zdefiniowana bez parametrów.

Aby dodać nowe wywołanie funkcji do aplikacji:

  1. W oknie edytora Cloud Shell otwórz plik z kodem sql-talk-app/app.py.
  2. Po deklaracji list_datasets_funcdeklaracji funkcji dodaj nową 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 powodujący uruchomienie wywołania interfejsu API dla nowej funkcji:

  • W pliku z kodem sql-talk-app/app.py dodaj nową klauzulę if do pętli while function_calling_in_process:.

    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 SQL Query znajdziesz w repozytorium kodu, a także w poście na blogu społeczności Cloud na temat projektu SQL Talk. Jeśli potrzebujesz pomocy w tworzeniu aplikacji lub chcesz współpracować z innymi programistami, odwiedź serwer Google Developers Community Discord lub forum Google Cloud AI/ML. Aby obejrzeć więcej projektów AI w ramach usługi Build with Google, obejrzyj playlistę wideo.