Rozwiązywanie problemów za pomocą Gemini CodeLab

1. Wprowadzenie

W tym module wykorzystasz Gemini – opartą na AI usługę wspomagającą w Google Cloud, która pomoże Ci rozwiązać problem z wdrożeniem funkcji w Cloud Functions przez analizę logów błędów, zidentyfikowanie głównej przyczyny problemu i sprawdzenie, jak to naprawić.

Jakie zadania wykonasz...

  • Użyjesz terminala Cloud Shell i interfejsu wiersza poleceń gcloud, aby skonfigurować środowisko, w tym włączyć odpowiednie interfejsy API Google i utworzyć funkcję w Cloud Functions na podstawie podanego kodu.
  • Podsumowania logów w Cloud Logging użyjesz do wygenerowania podsumowań logów, które pomogą Ci przeanalizować przechwycone informacje.
  • Będziesz czatować z Gemini, aby uzyskać pomoc Gemini w rozwiązywaniu problemów.

Czego się nauczysz...

  • Jak używać Gemini z Google Cloud Observability i rozwiązywać problemy.
  • Jak znaleźć i przeanalizować logi funkcji w Cloud Functions za pomocą Gemini.

Czego potrzebujesz...

  • Przeglądarka Chrome
  • Projekt Google Cloud z włączonymi płatnościami
  • Konto Google z uprawnieniami dostępu do projektu, które umożliwiają włączanie interfejsów API i manipulowanie zasobami

Ten moduł jest przeznaczony dla inżynierów platformy i programistów z zakresu DevOps oraz na wszystkich poziomach zaawansowania – w tym początkujących. Skupimy się na praktycznym poznawaniu możliwości Gemini w rozwiązywaniu problemów.

2. Konfiguracja

W tej sekcji znajdziesz informacje o wszystkim, co jest potrzebne, aby rozpocząć korzystanie z tego modułu.

Konfigurowanie środowiska

1. Zaloguj się w konsoli Google Cloud na stronie https://console.cloud.google.com.

2. Wybierz projekt Google Cloud, z którym będziesz korzystać w tym module.

22170459a4f3ba59.png

3. Otwórz stronę Cloud Functions w konsoli. Możesz to zrobić, wybierając Cloud Functions z menu nawigacyjnego (ikona u góry w lewym górnym rogu Zadbaj o to w oknie konsoli).

9d27c844c16ad3e4.png

Możesz też wyszukać „funkcje chmury” w obszarze wyszukiwania konsoli:

35f23e52875b26cd.png

Kliknij przycisk Utwórz funkcję nad listą funkcji 34b5e7e36f4e48e9.png.

Jeśli w tym projekcie nie używasz jeszcze Cloud Functions, poprosimy Cię o włączenie interfejsów API Google.

5b7978521d6f56f7.png

Aby kontynuować, kliknij WŁĄCZ.

4. Zdefiniuj podstawowe właściwości nowej funkcji w Cloud Functions.

  • Ustaw nazwę na „codelab-cf
  • Wybierz opcję Zezwalaj na nieuwierzytelnione wywołania.

6a2aaf9bedd161d9.png

Aby zakończyć ten krok, kliknij przycisk DALEJ w lewym dolnym rogu okna:

f4e76470dbdf6854.png

Po kliknięciu DALEJ może pojawić się prośba o włączenie dodatkowych interfejsów API Google. Tak jak w kroku 4, kliknij WŁĄCZ.

1ad7bf15c07eda49.png

Skonfiguruj środowisko wykonawcze i kod funkcji w Cloud Functions

W tym module CodeLab jako język programowania wykorzystywany jest Python. Nie martw się, jeśli nie znasz Pythona. Aby ukończyć ten moduł CodeLab, nie musisz znać Pythona.

5. Wybierz Pythona 3.11 jako środowisko wykonawcze funkcji

9a3cd8bf272b4d02.png

Pamiętaj, że zmiana środowiska wykonawczego powoduje zmianę kodu źródłowego wyświetlanego w edytorze wbudowanym.

6. Skopiuj poniższy kod do wbudowanego edytora, aby zmodyfikować przykładowy krótki przewodnik generowany automatycznie.

from google.cloud import storage
import json
import re

client = storage.Client()

def get_object_list(request):
    if request.args and 'path' in request.args:
        path = request.args['path']
    else:
        return '{}'
    parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
    bucket, prefix = parsed.group(1), parsed.group(2)
    blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
    objects = []
    if (blobs):
        for blob in blobs:
            objects.append(blob.name)
    return json.dumps(objects)

Ten kod odczytuje atrybut path z żądania GET, analizuje ścieżkę w celu pobrania nazwy zasobnika i wywołuje interfejs Google Cloud Storage API, aby uzyskać listę obiektów przechowywanych w tej ścieżce. Funkcja (get_object_list) akceptuje żądanie będące obiektem Flask jako argument wejściowy i zwraca nazwy obiektów w postaci tablicy JSON.

7. Z listy plików pozostałych w edytorze wbudowanym wybierz plik requirements.txt. Zastąp bieżącą listę zależności nową, kopiując poniższy kod do wbudowanego edytora.

google-cloud-storage

8. Aby wdrożyć funkcję w Cloud Functions, w lewym dolnym rogu kliknij WDRÓŻ.

17c4828702a32cd9.png

Zaczekaj kilka minut na zakończenie procesu wdrażania. Jeśli dokładnie wykonasz instrukcje konfiguracji, wdrożenie może zostać zgłoszone jako nieudane.

3. Znajdowanie i rozwiązywanie problemu

W tej sekcji użyjesz funkcji Wyjaśnienia w dziennikach i innej pomocy dotyczącej Gemini, żeby zidentyfikować problem i sposób jego rozwiązania.

1. Nie udało się wdrożyć. Powinien pojawić się komunikat o błędzie informujący o tym, z dodatkowymi informacjami i opcją wyświetlenia logów wdrożenia. Kliknij WYŚWIETL LOGI, aby wyświetlić logi wdrożenia.

bc62db6ef3b35420.png

UWAGA: dzienniki wdrożenia będą otwierane w oddzielnej karcie w tej samej przeglądarce. Aby ukończyć ten moduł CodeLab, musisz przechodzić między kartami.

Pamiętaj, że po kliknięciu WYŚWIETL LOGI możesz nie zobaczyć wierszy logu lub zobaczyć tylko kilka wierszy. W takim przypadku skorzystaj z selektora zakresu czasu w panelu zapytania Eksploratora logów i wybierz Ostatnie 30 minut.

e24856920201ebf8.png

2. Sprawdź logi w otwartej karcie. Zwróć uwagę, że podsumowania logów wyglądają jak wiele wierszy skrótu wywołania wyjątku. Dzieje się tak, ponieważ funkcja w Cloud Functions przechwytuje tekst drukowany na potrzeby funkcji stdout lub stderr i zapisuje każdy wiersz jako osobny wpis logu. Inne wiersze logu zawierają podsumowanie informacji o kodzie błędu wyjścia, a także dodatkowe informacje zgłaszane przez interfejsy Cloud Functions i Cloud Run API.

b49e41594173b57c.png

Możesz kliknąć dowolny wiersz, aby wyświetlić więcej informacji o konkretnym dzienniku. W rozwiniętych logach można kliknąć dodatkowe elementy interfejsu, które umożliwiają skopiowanie wszystkich informacji o dzienniku, rozwinięcie wszystkich pól w celu wyświetlenia wszystkich danych oraz wyjaśnienie wpisu przy użyciu Gemini.

4. Wyjątek stanowiący wyjątek nie zawiera zbyt wielu informacji. Przejrzyj logi, aby znaleźć koniec logu zrzutu stosu wyjątku. To jest wiersz o treści „Container called exit(1)”. Oto podsumowanie logu:

functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...

Wygląda na to, że jest dobrym kandydatem do zbadania. Kliknij ten wiersz, aby rozwinąć wpis logu. Następnie kliknij „Wyjaśnij ten wpis logu”. aby wyświetlić dodatkowe informacje o wybranym dzienniku.

b815de46d1b4597c.png

Jeśli usługa Gemini nie była wcześniej używana w tym projekcie, pojawi się prośba o włączenie wymaganego interfejsu API. Jeśli pojawi się prośba o włączenie interfejsu API, kliknij WŁĄCZ, aby przejść dalej.

7ca90e087a2e99d1.png

Pamiętaj, że czasami podczas wysyłania prośby do Gemini może pojawić się błąd. W przypadku takiego zdarzenia powtórz operację promptu jeszcze raz, aby otrzymać odpowiedź. Kliknij na przykład „Wyjaśnij ten wpis logu”. .

5. Wyjaśnienie zostało dostarczone przez Gemini. Jeśli podane wyjaśnienie jest niewystarczające lub niejasne, poproś Gemini o podanie dodatkowych informacji, używając jednego z tych promptów lub tworząc własne pytanie.

Czy możesz podać więcej informacji o tym dzienniku?
Czy możesz podać więcej informacji o błędzie?

6. Następnie poproś Gemini o sugestie dotyczące rozwiązania problemu. Na przykład zapytaj Gemini

Jak rozwiązać ten problem?
Zaproponuj rozwiązanie tego problemu
Zasugeruj, jak naprawić ten błąd

Odpowiedź Gemini może się różnić w zależności od bieżącego kontekstu oraz treści i formatu promptu. Gemini powinien zalecić sprawdzenie, czy kod źródłowy funkcji w Cloud Functions zawiera funkcję o nazwie hello_http.

7. Obecnie widzisz kartę, która zawiera logi Cloud Functions. Wybierz poprzednią kartę, która wyświetla stronę wdrożenia funkcji w Cloud Functions z błędem, i kliknij EDYTUJ.

c3d9b207214a2240.png

8. Sprawdź, czy uwierzytelnianie jest nadal ustawione na Zezwalaj na nieuwierzytelnione wywołania i w razie potrzeby zaktualizuj tę opcję.

6a2aaf9bedd161d9.png

9. U dołu kliknij DALEJ, aby wyświetlić wbudowany edytor. Postępuj zgodnie z zaleceniem Gemini i zmień nazwę funkcji z get_order_list na hello_http.

Po zakończeniu edytowania kliknij WDRÓŻ.

Zaczekaj kilka minut na zakończenie procesu wdrażania. Sprawdź, czy wdrażanie się zakończyło i nie są wyświetlane żadne komunikaty o błędach.

UWAGA: dopóki proces wdrażania się nie zakończy, konsola może wyświetlać ostatni komunikat o błędzie.

10. Sprawdź, czy funkcja w Cloud Functions działa, wysyłając poniższe żądanie HTTPS za pomocą curl. Możesz użyć Cloud Shell lub użyć dowolnego terminala z zainstalowanym interfejsem curl i gcloud CLI, wykonując poniższe polecenie w terminalu Cloud Shell.

curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"

UWAGA: aby uruchomić to polecenie z terminala, musisz się uwierzytelnić za pomocą interfejsu wiersza poleceń gcloud i ustawić wartość identyfikatora projektu na zmienną środowiskową GOOGLE_CLOUD_PROJECT.

Premia

Nazwa funkcji hello_http została zdefiniowana jako domyślny punkt wejścia funkcji w Cloud Functions aktywowanej przez HTTP, gdy wybrano środowisko wykonawcze Pythona. Alternatywnym rozwiązaniem może być zachowanie nazwy get_order_list w kodzie źródłowym i zaktualizowanie pola punktu wejścia funkcji w Cloud Functions znajdującej się nad wbudowanym edytorem z prawej strony z pola Środowisko wykonawcze:

9a3cd8bf272b4d02.png

Zmiana punktu wejścia z hello_http na get_order_list rozwiąże problem z wdrożeniem.

4. Czyszczenie

Aby wyczyścić dane, możesz wyłączyć projekt lub usunąć instancję funkcji w Cloud Functions. Funkcje w Cloud Functions możesz usuwać przy użyciu konsoli lub polecenia interfejsu wiersza poleceń, jak poniżej:

gcloud functions delete codelab-cf --region=us-central1

5. Gratulacje!

Gratulujemy. Udało Ci się już użyć Gemini do rozwiązywania problemów z aplikacją. Teraz wiesz, jak może Ci pomóc zrozumieć logi i uzyskiwać odpowiedzi na pytania dotyczące Google Cloud.

Dokumentacja...