Risolvi i problemi con Gemini CodeLab

Risolvi i problemi con Gemini CodeLab

Informazioni su questo codelab

subjectUltimo aggiornamento: apr 30, 2024
account_circleScritto da: Leonid Yankulin

1. Introduzione

In questo lab utilizzerai Gemini, un collaboratore basato sull'IA in Google Cloud, per risolvere un problema relativo al deployment della funzione Cloud Functions analizzando i log degli errori, identificando la causa principale del problema e trovando come risolverlo.

Cosa farai...

  • Utilizzerai il terminale Cloud Shell e gcloud CLI per configurare l'ambiente, tra cui l'abilitazione delle API di Google pertinenti e la creazione di una funzione Cloud Functions dal codice fornito
  • Utilizzerai il riepilogo dei log di Cloud Logging per generare riepiloghi dei log in modo da comprendere le informazioni acquisite.
  • Parlerai con Gemini per ricevere assistenza per la risoluzione e la risoluzione del problema.

Cosa imparerai...

  • Come utilizzare Gemini con Google Cloud Observability e per la risoluzione dei problemi.
  • Come trovare e comprendere i log delle funzioni Cloud Functions con l'aiuto di Gemini.

Che cosa ti serve...

  • Browser web Chrome
  • Un progetto Google Cloud con fatturazione abilitata
  • Un Account Google con autorizzazioni di accesso al progetto che ti consente di abilitare le API e manipolare le risorse

Questo lab è rivolto a tecnici DevOps e di piattaforme e sviluppatori di software di tutti i livelli, inclusi i principianti. Il nostro obiettivo sarà fare esperienza pratica con le funzionalità di Gemini nella risoluzione dei problemi.

2. Configurazione

Questa sezione illustra tutto ciò che devi fare per iniziare a utilizzare questo lab.

Configura ambiente

1. Accedi alla console Cloud aprendo https://console.cloud.google.com.

2. Seleziona un progetto Google Cloud con cui prevedi di lavorare per questo lab.

22170459a4f3ba59.png

3. Apri la pagina Cloud Functions nella console. Per farlo, seleziona Cloud Functions dal menu di navigazione (icona in alto a sinistra PUBLISHER nella finestra della console).

9d27c844c16ad3e4.png

In alternativa, puoi cercare "Cloud Functions" nell'area di ricerca della console:

35f23e52875b26cd.png

Fai clic sul pulsante Crea funzione sopra l'elenco di funzioni 34b5e7e36f4e48e9.png

Se non hai mai utilizzato Cloud Functions in questo progetto, per poter lavorare ti verrà chiesto di abilitare le API di Google.

5b7978521d6f56f7.png

Fai clic su ABILITA per continuare.

4. Definire le proprietà di base della nuova funzione Cloud Functions.

  • Imposta il nome su "codelab-cf"
  • Seleziona l'opzione Consenti chiamate non autenticate

6a2aaf9bedd161d9.png

Per completare il passaggio, fai clic sul pulsante SUCCESSIVO nell'area in basso a sinistra della finestra:

f4e76470dbdf6854.png

Dopo aver fatto clic su AVANTI, è possibile che ti venga chiesto di abilitare altre API di Google. Come nel passaggio 4, fai clic su ABILITA.

1a7bf15c07eda49.png

Configura il runtime e il codice della funzione Cloud Functions

Questo CodeLab utilizza Python come linguaggio di programmazione. Non preoccuparti se non hai dimestichezza con Python. Per completare questo CodeLab non è necessaria la conoscenza di Python.

5. Seleziona Python 3.11 come runtime della funzione

9a3cd8bf272b4d02.png

Tieni presente che la modifica del runtime cambia il codice sorgente mostrato nell'editor in linea.

6. Copia il codice seguente nell'editor in linea per modificare l'esempio della guida rapida generate automaticamente.

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)

Questo codice legge l'attributo path dalla richiesta GET, analizza il percorso per recuperare il nome del bucket e chiama l'API Google Cloud Storage per ottenere un elenco degli oggetti archiviati in questo percorso. La funzione (get_object_list) accetta una richiesta che è un oggetto Flask come argomento di input e restituisce i nomi degli oggetti come array JSON.

7. Seleziona il file requirements.txt dall'elenco dei file rimasti nell'editor in linea. Sostituisci l'elenco attuale di dipendenze con quello nuovo copiando il codice seguente nell'editor in linea.

google-cloud-storage

8. Per eseguire il deployment della funzione Cloud Functions, fai clic su ESEGUI IL DEPLOYMENT in basso a sinistra.

17c4828702a32cd9.png

Potrebbe essere necessario attendere un paio di minuti fino al completamento del processo di deployment. Se hai seguito attentamente le istruzioni di configurazione, dovresti aspettarti che il deployment venga segnalato come non riuscito.

3. Individuazione e risoluzione del problema

In questa sezione utilizzerai la funzionalità Spiegazioni dei log e altre risorse di assistenza di Gemini per identificare il problema e il modo per risolverlo.

1. Il deployment non va a buon fine. Dovresti vedere un messaggio di errore che fornisce informazioni aggiuntive e un'opzione per visualizzare i log di deployment. Fai clic su VISUALIZZA LOG per visualizzare i log del deployment.

bc62db6ef3b35420.png

NOTA: i log di deployment verranno aperti in una scheda separata nello stesso browser. Dovrai spostarti tra le schede per completare questo codelab.

NOTA: potresti non vedere le righe dei log quando fai clic su VISUALIZZA LOG o potresti visualizzare solo un paio di righe. In questo evento, utilizza il selettore dell'intervallo di tempo nel riquadro delle query di Esplora log e seleziona Ultimi 30 minuti.

e24856920201ebf8.png

2. Esamina i log nella scheda aperta. Tieni presente che i riepiloghi dei log hanno l'aspetto di più righe dell'elenco di chiamate dell'eccezione. Perché la funzione Cloud Functions acquisisce il testo stampato su stdout o stderr e scrive ogni riga come voce di log separata. Altre righe di log riassumono informazioni sul codice di errore di uscita e altre informazioni segnalate dalle API Cloud Functions e Cloud Run.

b49e41594173b57c.png

Puoi fare clic su una qualsiasi riga per visualizzare ulteriori informazioni su un determinato log. Se fai clic sui log espansi puoi fare clic su altri elementi UI che ti consentono di copiare tutte le informazioni relative al log, espandere tutti i campi per visualizzare tutti i dati della voce di log e spiegare la voce di log utilizzando Gemini.

4. L'eccezione di chiamata non è molto informativa. Esamina i log per trovare la fine del log dell'analisi dello stack dell'eccezione. È la riga che dice "Container called exit(1)". Il seguente riepilogo dei log indica:

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

Sembra una buona candidata per un'indagine. Fai clic su questa riga per espandere la voce di log. Fai clic sul pulsante "Spiega questa voce di log". per visualizzare ulteriori informazioni sul log selezionato.

b815de46d1b4597c.png

Se Gemini non è stato utilizzato in precedenza in questo progetto, ti verrà chiesto di abilitare un'API obbligatoria. Se ti viene richiesto di abilitare l'API, fai clic su ABILITA per procedere.

7ca90e087a2e99d1.png

NOTA: di tanto in tanto potresti ricevere un messaggio di errore quando richiedi a Gemini. In questo evento, ripeti l'operazione del prompt ancora una volta per ottenere la risposta. Ad esempio, fai clic sul pulsante "Spiega questa voce di log". di nuovo.

5. Esamina la spiegazione fornita da Gemini. Se la spiegazione fornita non è sufficiente o non chiara, chiedi a Gemini di fornire maggiori informazioni utilizzando uno dei seguenti prompt o componendo la tua domanda.

Puoi fornire maggiori informazioni su questo log?
Puoi fornire maggiori informazioni sull'errore?

6. Quindi chiedi a Gemini dei suggerimenti per risolvere il problema. Ad esempio, chiedi a Gemini

Come risolvere il problema?
Suggerisci una soluzione per risolvere l'errore
Suggerisci come posso correggere l'errore

La risposta di Gemini può variare a seconda del contesto attuale, nonché della formulazione e del formato del prompt. Si prevede che Gemini consiglierà di garantire che il codice sorgente della funzione Cloud Functions abbia una funzione con il nome hello_http.

7. Al momento stai visualizzando la scheda che mostra i log di Cloud Functions. Seleziona la scheda precedente che mostra la pagina Deployment della funzione Cloud Functions con l'errore e fai clic su MODIFICA.

c3d9b207214a2240.png

8. Verifica che l'opzione per l'autenticazione sia ancora impostata su Consenti chiamate non autenticate e aggiorna la selezione, se necessario.

6a2aaf9bedd161d9.png

9. Fai clic su AVANTI in basso per visualizzare l'Editor in linea. Segui il suggerimento di Gemini e modifica il nome della funzione da get_order_list a hello_http.

Al termine della modifica, fai clic su ESEGUI IL DEPLOYMENT.

Potrebbe essere necessario attendere un paio di minuti fino al completamento del processo di deployment. Verifica che il deployment sia stato completato correttamente e che non vengano visualizzati messaggi di errore.

NOTA: la console potrebbe continuare a mostrare l'ultimo messaggio di errore fino al completamento del processo di deployment.

10. Verifica che la funzione Cloud Functions sia operativa inviando la seguente richiesta HTTPS tramite curl. Puoi utilizzare Cloud Shell o farlo da qualsiasi terminale in cui siano installati curl e gcloud CLI.executing questo comando dal terminale 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)"

NOTA: per eseguire questo comando da un terminale, è necessario eseguire l'autenticazione utilizzando gcloud CLI e impostare il valore dell'ID progetto sulla variabile di ambiente GOOGLE_CLOUD_PROJECT.

Bonus

Il nome della funzione hello_http è stato definito come punto di ingresso predefinito per la funzione Cloud Functions attivata da HTTP quando è stato selezionato il runtime Python. Una soluzione alternativa può essere mantenere get_order_list come nome della funzione nel codice sorgente e aggiornare il campo del punto di ingresso della funzione Cloud Functions che si trova sopra l'Editor in linea, a destra del campo Runtime:

9a3cd8bf272b4d02.png

La modifica del punto di ingresso da hello_http a get_order_list risolverà il problema del deployment.

4. Esegui la pulizia

Per eseguire la pulizia puoi arrestare il progetto o eliminare l'istanza della funzione Cloud Functions. Puoi eliminare Cloud Functions utilizzando la console o il comando CLI come segue:

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

5. Complimenti

Complimenti: hai utilizzato correttamente Gemini per risolvere il problema della tua applicazione e ora comprendi come può aiutarti a comprendere i log e a ricevere risposte alle domande su Google Cloud.

Documenti di riferimento...