Accedi ai modelli Vertex AI da un flusso di lavoro


L'IA generativa su Vertex AI (nota anche come genAI o genAI) ti dà accesso a I modelli di AI generativa di Google per diverse modalità (testo, codice, immagini, voce). Puoi testare e ottimizzare questi modelli linguistici di grandi dimensioni (LLM), quindi eseguirne il deployment per utilizzarli nelle tue applicazioni basate sull'AI. Per ulteriori informazioni, vedi consulta la Panoramica dell'AI generativa su Vertex AI.

Vertex AI offre una varietà di modelli di base per AI generativa accessibili tramite dell'API, inclusi i modelli utilizzati nei seguenti esempi:

  • Gemini Pro è progettato per gestire il linguaggio naturale attività di machine learning, chat di testo e codice in più passaggi e generazione di codice.
  • Gemini Pro Vision supporta i prompt multimodali. Puoi includere testo, immagini e video nelle richieste di prompt e ottenere testo o codice diverse.
  • Pathways Language Model 2 (PaLM 2) per il testo è ottimizzato per attività linguistiche come come classificazione, riassunto ed estrazione di entità.

Ogni modello viene esposto tramite un endpoint del publisher specifico per il tuo progetto Google Cloud, quindi non è necessario eseguire il deployment del modello di base a meno che per un caso d'uso specifico. Puoi inviare una richiesta al publisher endpoint. Un prompt è una richiesta in linguaggio naturale inviata a un LLM per come risposta.

Questo tutorial illustra i flussi di lavoro che generano risposte da Modelli Vertex AI inviando prompt di testo al publisher endpoint utilizzando un connettore Workflows o un POST HTTP richiesta. Per ulteriori informazioni, consulta Panoramica del connettore API Vertex AI ed effettua una richiesta HTTP.

Tieni presente che puoi eseguire il deployment di ogni flusso di lavoro ed eseguirlo indipendentemente l'uno dall'altro.

Obiettivi

In questo tutorial imparerai a:

  1. Abilitare le API Vertex AI e Workflows e concedi il ruolo Vertex AI User (roles/aiplatform.user) al tuo servizio . Questo ruolo consente di accedere alla maggior Vertex AI le funzionalità di machine learning. Per saperne di più sulla configurazione di Vertex AI, vedi Configura Google Cloud.
  2. Esegui il deployment ed esegui un flusso di lavoro che richiede un modello Vertex AI (Gemini Pro Vision) per descrivere un'immagine pubblicamente disponibili tramite Cloud Storage. Per ulteriori informazioni, vedi Rendi pubblici i dati.
  3. Implementa ed esegui un flusso di lavoro che si ripete in parallelo all'elenco di paesi e richiede un modello Vertex AI (Gemini Pro) per generare e restituire le cronologie dei paesi. Utilizzo di rami paralleli consente di ridurre il tempo totale di esecuzione avviando le chiamate all'LLM contemporaneamente e attendere il completamento di tutte prima di combinare che consentono di analizzare i dati e visualizzare i risultati. Per ulteriori informazioni, vedi Esegui i passaggi del flusso di lavoro in parallelo.
  4. Esegui il deployment di un flusso di lavoro simile al precedente. ma richiedi un dal modello Vertex AI (PaLM 2 per il testo) a generare e restituire le cronologie dei paesi. Per ulteriori informazioni come scegliere un modello, vedi Informazioni sul modello.
  5. Esegui il deployment di un flusso di lavoro in grado di riassumere un documento di grandi dimensioni. Poiché esiste un limitato alla finestra di contesto che imposta quanto indietro dovrebbe tornare il modello per l'addestramento (e per le previsioni), il flusso di lavoro suddivide il documento in e poi richiede un modello Vertex AI (Gemini Pro) per riassumere ogni parte in parallelo. Per ulteriori informazioni le informazioni, vedi Prompt di riassunto e Orizzonte di previsione, finestra di contesto e finestra di previsione.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.

Prima di iniziare

Prima di provare gli esempi di questo tutorial, assicurati di aver completato per eseguire le operazioni indicate di seguito.

Console

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Vertex AI and Workflows.

    Abilita le API

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Vertex AI > Vertex AI User role to the service account.

      To grant the role, find the Select a role list, then select Vertex AI > Vertex AI User.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  8. Abilita le API Vertex AI and Workflows.

    Abilita le API

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Vertex AI > Vertex AI User role to the service account.

      To grant the role, find the Select a role list, then select Vertex AI > Vertex AI User.

    6. Click Continue.
    7. Click Done to finish creating the service account.

gcloud

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Abilita le API Vertex AI and Workflows.

    gcloud services enable aiplatform.googleapis.com workflows.googleapis.com
  7. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/aiplatform.user IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/aiplatform.user

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  12. Abilita le API Vertex AI and Workflows.

    gcloud services enable aiplatform.googleapis.com workflows.googleapis.com
  13. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/aiplatform.user IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/aiplatform.user

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account

Esegui il deployment di un flusso di lavoro che descriva un'immagine (Gemini Pro Vision)

Deployment di un flusso di lavoro che utilizza un metodo del connettore (generateContent) per inviare una richiesta a Gemini Pro Vision endpoint del publisher. Il metodo supporta la generazione di contenuti con di input multimodali.

Il flusso di lavoro fornisce un prompt di testo e l'URI di un'immagine pubblicamente disponibili in un bucket Cloud Storage. Puoi visualizza l'immagine e nella console Google Cloud visualizza i dettagli dell'oggetto.

Il flusso di lavoro restituisce una descrizione dell'immagine dall'input del modello risposta.

Per ulteriori informazioni sui parametri del corpo della richiesta HTTP utilizzati durante la richiesta l'LLM e gli elementi del corpo della risposta, vedi Riferimento dell'API Gemini.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic su Crea.

  3. Inserisci un nome per il nuovo flusso di lavoro: describe-image.

  4. Nell'elenco Regione, seleziona us-central1 (Iowa).

  5. In Account di servizio, seleziona quello che hai usato in precedenza è stato creato.

  6. Fai clic su Avanti.

  7. Nell'editor del flusso di lavoro, inserisci la seguente definizione per il tuo flusso di lavoro:

    main:
        params: [args]
        steps:
        - init:
            assign:
                - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - location: "us-central1"
                - model: "gemini-1.0-pro-vision"
                - text_combined: ""
        - ask_llm:
            call: googleapis.aiplatform.v1.projects.locations.endpoints.generateContent
            args:
                model: ${"projects/" + project + "/locations/" + location + "/publishers/google/models/" + model}
                region: ${location}
                body:
                    contents:
                        role: user
                        parts:
                        - fileData:
                            mimeType: image/jpeg
                            fileUri: ${args.image_url}
                        - text: Describe this picture in detail
                    generation_config:
                        temperature: 0.4
                        max_output_tokens: 2048
                        top_p: 1
                        top_k: 32
            result: llm_response
        - return_result:
            return:
                image_url: ${args.image_url}
                image_description: ${llm_response.candidates[0].content.parts[0].text}
  8. Fai clic su Esegui il deployment.

gcloud

  1. Crea un file di codice sorgente per il tuo flusso di lavoro:

    touch describe-image.yaml
    
  2. In un editor di testo, copia il seguente flusso di lavoro nel file del codice sorgente:

    main:
        params: [args]
        steps:
        - init:
            assign:
                - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - location: "us-central1"
                - model: "gemini-1.0-pro-vision"
                - text_combined: ""
        - ask_llm:
            call: googleapis.aiplatform.v1.projects.locations.endpoints.generateContent
            args:
                model: ${"projects/" + project + "/locations/" + location + "/publishers/google/models/" + model}
                region: ${location}
                body:
                    contents:
                        role: user
                        parts:
                        - fileData:
                            mimeType: image/jpeg
                            fileUri: ${args.image_url}
                        - text: Describe this picture in detail
                    generation_config:
                        temperature: 0.4
                        max_output_tokens: 2048
                        top_p: 1
                        top_k: 32
            result: llm_response
        - return_result:
            return:
                image_url: ${args.image_url}
                image_description: ${llm_response.candidates[0].content.parts[0].text}
  3. Esegui il deployment del flusso di lavoro inserendo il comando seguente:

    gcloud workflows deploy describe-image \
        --source=describe-image.yaml \
        --location=us-central1 \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Esegui il flusso di lavoro

L'esecuzione di un flusso di lavoro esegue la definizione attuale del flusso di lavoro associata nel tuo flusso di lavoro.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Nella pagina Flussi di lavoro, seleziona la describe-image per accedere alla relativa pagina dei dettagli.

  3. Nella pagina Dettagli flusso di lavoro, fai clic su Esegui.

  4. In Input, inserisci quanto segue:

    {"image_url":"gs://generativeai-downloads/images/scones.jpg"}
  5. Fai di nuovo clic su Esegui.

  6. Visualizza i risultati del flusso di lavoro nel riquadro Output.

    L'output dovrebbe essere simile al seguente:

    {
      "image_description": "There are three pink peony flowers on the right side of the picture[]...]There is a white napkin on the table.",
      "image_url": "gs://generativeai-downloads/images/scones.jpg"
    }

gcloud

  1. Apri un terminale.

  2. Esegui il flusso di lavoro:

    gcloud workflows run describe-image \
        --data='{"image_url":"gs://generativeai-downloads/images/scones.jpg"}'

    I risultati dell'esecuzione dovrebbero essere simili ai seguenti:

      Waiting for execution [258b530e-a093-46d7-a4ff-cbf5392273c0] to complete...done.
      argument: '{"image_url":"gs://generativeai-downloads/images/scones.jpg"}'
      createTime: '2024-02-09T13:59:32.166409938Z'
      duration: 4.174708484s
      endTime: '2024-02-09T13:59:36.341118422Z'
      name: projects/1051295516635/locations/us-central1/workflows/describe-image/executions/258b530e-a093-46d7-a4ff-cbf5392273c0
      result: "{\"image_description\":\"The picture shows a rustic table with a white surface,\
        \ on which there are several scones with blueberries, as well as two cups of coffee\
        [...]
        \ on the table. The background of the table is a dark blue color.\",\"image_url\"\
        :\"gs://generativeai-downloads/images/scones.jpg\"}"
      startTime: '2024-02-09T13:59:32.166409938Z'
      state: SUCCEEDED

Esegui il deployment di un flusso di lavoro che genera cronologie dei paesi (Gemini Pro)

Implementare un flusso di lavoro che si ripete tramite un elenco di input di paesi in parallelo e utilizza un metodo del connettore (generateContent) per inviare una richiesta a Gemini Pro endpoint del publisher. Il metodo supporta la generazione di contenuti con di input multimodali.

Il flusso di lavoro restituisce le cronologie dei paesi generate dal modello, combinando in una mappa.

Per ulteriori informazioni sui parametri del corpo della richiesta HTTP utilizzati durante la richiesta l'LLM e gli elementi del corpo della risposta, vedi Riferimento dell'API Gemini.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic su Crea.

  3. Inserisci un nome per il nuovo flusso di lavoro: gemini-pro-country-histories.

  4. Nell'elenco Regione, seleziona us-central1 (Iowa).

  5. In Account di servizio, seleziona quello che hai usato in precedenza è stato creato.

  6. Fai clic su Avanti.

  7. Nell'editor del flusso di lavoro, inserisci la seguente definizione per il tuo flusso di lavoro:

    main:
        params: [args]
        steps:
        - init:
            assign:
                - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - location: "us-central1"
                - model: "gemini-1.0-pro"
                - histories: {}
        - loop_over_countries:
            parallel:
                shared: [histories]
                for:
                    value: country
                    in: ${args.countries}
                    steps:
                        - ask_llm:
                            call: googleapis.aiplatform.v1.projects.locations.endpoints.generateContent
                            args:
                                model: ${"projects/" + project + "/locations/" + location + "/publishers/google/models/" + model}
                                region: ${location}
                                body:
                                    contents:
                                        role: "USER"
                                        parts:
                                            text: ${"Can you tell me about the history of " + country}
                                    generation_config:
                                        temperature: 0.5
                                        max_output_tokens: 2048
                                        top_p: 0.8
                                        top_k: 40
                            result: llm_response
                        - add_to_histories:
                            assign:
                                - histories[country]: ${llm_response.candidates[0].content.parts[0].text}
        - return_result:
            return: ${histories}
  8. Fai clic su Esegui il deployment.

gcloud

  1. Crea un file di codice sorgente per il tuo flusso di lavoro:

    touch gemini-pro-country-histories.yaml
    
  2. In un editor di testo, copia il seguente flusso di lavoro nel file del codice sorgente:

    main:
        params: [args]
        steps:
        - init:
            assign:
                - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - location: "us-central1"
                - model: "gemini-1.0-pro"
                - histories: {}
        - loop_over_countries:
            parallel:
                shared: [histories]
                for:
                    value: country
                    in: ${args.countries}
                    steps:
                        - ask_llm:
                            call: googleapis.aiplatform.v1.projects.locations.endpoints.generateContent
                            args:
                                model: ${"projects/" + project + "/locations/" + location + "/publishers/google/models/" + model}
                                region: ${location}
                                body:
                                    contents:
                                        role: "USER"
                                        parts:
                                            text: ${"Can you tell me about the history of " + country}
                                    generation_config:
                                        temperature: 0.5
                                        max_output_tokens: 2048
                                        top_p: 0.8
                                        top_k: 40
                            result: llm_response
                        - add_to_histories:
                            assign:
                                - histories[country]: ${llm_response.candidates[0].content.parts[0].text}
        - return_result:
            return: ${histories}
  3. Esegui il deployment del flusso di lavoro inserendo il comando seguente:

    gcloud workflows deploy gemini-pro-country-histories \
        --source=gemini-pro-country-histories.yaml \
        --location=us-central1 \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Esegui il flusso di lavoro

L'esecuzione di un flusso di lavoro esegue la definizione attuale del flusso di lavoro associata nel tuo flusso di lavoro.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Nella pagina Flussi di lavoro, seleziona la gemini-pro-country-histories per accedere alla relativa pagina dei dettagli.

  3. Nella pagina Dettagli flusso di lavoro, fai clic su Esegui.

  4. In Input, inserisci quanto segue:

    {"countries":["Argentina", "Bhutan", "Cyprus", "Denmark", "Ethiopia"]}
  5. Fai di nuovo clic su Esegui.

  6. Visualizza i risultati del flusso di lavoro nel riquadro Output.

    L'output dovrebbe essere simile al seguente:

    {
      "Argentina": "The history of Argentina is a complex and fascinating one, marked by periods of prosperity and decline, political [...]
      "Bhutan": "The history of Bhutan is a rich and fascinating one, dating back to the 7th century AD. Here is a brief overview: [...]
      "Cyprus": "The history of Cyprus is a long and complex one, spanning over 10,000 years. The island has been ruled by a succession [...]
      "Denmark": "1. **Prehistory and Early History (c. 12,000 BC - 800 AD)**\\n   - The earliest evidence of human habitation in Denmark [...]
      "Ethiopia": "The history of Ethiopia is a long and complex one, stretching back to the earliest human civilizations. The country is [...]
    }

gcloud

  1. Apri un terminale.

  2. Esegui il flusso di lavoro:

    gcloud workflows run gemini-pro-country-histories \
        --data='{"countries":["Argentina", "Bhutan", "Cyprus", "Denmark", "Ethiopia"]}' \
        --location=us-central1

    I risultati dell'esecuzione dovrebbero essere simili ai seguenti:

      Waiting for execution [7ae1ccf1-29b7-4c2c-99ec-7a12ae289391] to complete...done.
      argument: '{"countries":["Argentina","Bhutan","Cyprus","Denmark","Ethiopia"]}'
      createTime: '2024-02-09T16:25:16.742349156Z'
      duration: 12.075968673s
      endTime: '2024-02-09T16:25:28.818317829Z'
      name: projects/1051295516635/locations/us-central1/workflows/gemini-pro-country-histories/executions/7ae1ccf1-29b7-4c2c-99ec-7a12ae289391
      result: "{\"Argentina\":\"The history of Argentina can be traced back to the arrival\
        [...]
        n* 2015: Argentina elects Mauricio Macri as president.\",\"Bhutan\":\"The history\
        [...]
        \ natural beauty, ancient monasteries, and friendly people.\",\"Cyprus\":\"The history\
        [...]
        ,\"Denmark\":\"The history of Denmark can be traced back to the Stone Age, with\
        [...]
        \ a high standard of living.\",\"Ethiopia\":\"The history of Ethiopia is long and\
        [...]
      startTime: '2024-02-09T16:25:16.742349156Z'
      state: SUCCEEDED

Esegui il deployment di un flusso di lavoro che generi cronologie dei paesi (PaLM 2 per il testo)

È possibile che non voglia usare Gemini Pro come modello. La L'esempio seguente utilizza un flusso di lavoro simile a quello precedente; ma utilizza un metodo del connettore (predict) per effettuare una richiesta a PaLM 2 per l'endpoint del publisher di testo. Il metodo esegue una previsione online.

Per ulteriori informazioni sui parametri del corpo della richiesta HTTP utilizzati durante la richiesta l'LLM e gli elementi del corpo della risposta, vedi PaLM 2 per il riferimento all'API di testo.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic su Crea.

  3. Inserisci un nome per il nuovo flusso di lavoro: text-bison-country-histories.

  4. Nell'elenco Regione, seleziona us-central1 (Iowa).

  5. In Account di servizio, seleziona quello che hai usato in precedenza è stato creato.

  6. Fai clic su Avanti.

  7. Nell'editor del flusso di lavoro, inserisci la seguente definizione per il tuo flusso di lavoro:

    main:
        params: [args]
        steps:
        - init:
            assign:
                - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - location: "us-central1"
                - model: "text-bison"
                - histories: {}
        - loop_over_countries:
            parallel:
                shared: [histories]
                for:
                    value: country
                    in: ${args.countries}
                    steps:
                        - ask_llm:
                            call: googleapis.aiplatform.v1.projects.locations.endpoints.predict
                            args:
                                endpoint: ${"projects/" + project + "/locations/" + location + "/publishers/google/models/" + model }
                                region: ${location}
                                body:
                                    instances:
                                        - prompt: '${"Can you  tell me about the history of " + country}'
                                    parameters:
                                        temperature: 0.5
                                        maxOutputTokens: 2048
                                        topP: 0.8
                                        topK: 40
                            result: llm_response
                        - add_to_histories:
                            assign:
                                - history: ${llm_response.predictions[0].content}
                                # Remove leading whitespace from start of text
                                - history: ${text.substring(history, 1, len(history))}
                                - histories[country]: ${history}
        - return_result:
            return: ${histories}

    Tieni presente che, a seconda del modello utilizzato, potrebbe essere necessario rimuovere spazi vuoti non necessari nella risposta.

  8. Fai clic su Esegui il deployment.

gcloud

  1. Crea un file di codice sorgente per il tuo flusso di lavoro:

    touch text-bison-country-histories.yaml
    
  2. In un editor di testo, copia il seguente flusso di lavoro nel file del codice sorgente:

    main:
        params: [args]
        steps:
        - init:
            assign:
                - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - location: "us-central1"
                - model: "text-bison"
                - histories: {}
        - loop_over_countries:
            parallel:
                shared: [histories]
                for:
                    value: country
                    in: ${args.countries}
                    steps:
                        - ask_llm:
                            call: googleapis.aiplatform.v1.projects.locations.endpoints.predict
                            args:
                                endpoint: ${"projects/" + project + "/locations/" + location + "/publishers/google/models/" + model }
                                region: ${location}
                                body:
                                    instances:
                                        - prompt: '${"Can you  tell me about the history of " + country}'
                                    parameters:
                                        temperature: 0.5
                                        maxOutputTokens: 2048
                                        topP: 0.8
                                        topK: 40
                            result: llm_response
                        - add_to_histories:
                            assign:
                                - history: ${llm_response.predictions[0].content}
                                # Remove leading whitespace from start of text
                                - history: ${text.substring(history, 1, len(history))}
                                - histories[country]: ${history}
        - return_result:
            return: ${histories}

    Tieni presente che, a seconda del modello utilizzato, potrebbe essere necessario rimuovere spazi vuoti non necessari nella risposta.

  3. Esegui il deployment del flusso di lavoro inserendo il comando seguente:

    gcloud workflows deploy text-bison-country-histories \
        --source=text-bison-country-histories.yaml \
        --location=us-central1 \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Esegui il deployment di un flusso di lavoro che riassume un documento di grandi dimensioni (Gemini Pro)

Esegui il deployment di un flusso di lavoro che suddivide un documento di grandi dimensioni in parti più piccole, in modo da http.post richieste a un endpoint publisher Gemini Pro parallelo in modo che il modello possa riassumere ogni parte contemporaneamente. Infine, il flusso di lavoro combina tutti i riepiloghi parziali in uno completo.

Per ulteriori informazioni sui parametri del corpo della richiesta HTTP utilizzati durante la richiesta l'LLM e gli elementi del corpo della risposta, vedi Riferimento dell'API Gemini.

La definizione del flusso di lavoro presuppone che tu abbia creato un account Cloud Storage in cui caricare un file di testo. Per ulteriori informazioni sul connettore Workflows (googleapis.storage.v1.objects.get) utilizzato per recuperare oggetti dal bucket Cloud Storage, Informazioni sui connettori.

Dopo aver eseguito il deployment del flusso di lavoro, puoi eseguirlo creando un'istanza Eventarc e poi caricando un file nel bucket. Per ulteriori informazioni, vedi Instrada gli eventi di Cloud Storage a Workflows. Tieni presente che devono essere abilitate API aggiuntive e devono essere ruoli aggiuntivi concesso, inclusa la concessione al tuo account di servizio dell'utente oggetto Storage Ruolo (roles/storage.objectUser) che supporta l'utilizzo di Cloud Storage di oggetti strutturati. Per ulteriori informazioni, consulta Sezione Preparati a creare un trigger.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic su Crea.

  3. Inserisci un nome per il nuovo flusso di lavoro: gemini-pro-summaries.

  4. Nell'elenco Regione, seleziona us-central1 (Iowa).

  5. In Account di servizio, seleziona quello che hai usato in precedenza è stato creato.

  6. Fai clic su Avanti.

  7. Nell'editor del flusso di lavoro, inserisci la seguente definizione per il tuo flusso di lavoro:

    main:
        params: [input]
        steps:
        - assign_file_vars:
            assign:
                - file_size: ${int(input.data.size)}
                - chunk_size: 64000
                - n_chunks: ${int(file_size / chunk_size)}
                - summaries: []
                - all_summaries_concatenated: ""
        - loop_over_chunks:
            parallel:
                shared: [summaries]
                for:
                    value: chunk_idx
                    range: ${[0, n_chunks]}
                    steps:
                        - assign_bounds:
                            assign:
                                - lower_bound: ${chunk_idx * chunk_size}
                                - upper_bound: ${(chunk_idx + 1) * chunk_size}
                                - summaries: ${list.concat(summaries, "")}
                        - dump_file_content:
                            call: http.get
                            args:
                                url: ${"https://storage.googleapis.com/storage/v1/b/" + input.data.bucket + "/o/" + input.data.name + "?alt=media"}
                                auth:
                                    type: OAuth2
                                headers:
                                    Range: ${"bytes=" + lower_bound + "-" + upper_bound}
                            result: file_content
                        - assign_chunk:
                            assign:
                                - chunk: ${file_content.body}
                        - generate_chunk_summary:
                            call: ask_gemini_for_summary
                            args:
                                textToSummarize: ${chunk}
                            result: summary
                        - assign_summary:
                            assign:
                                - summaries[chunk_idx]: ${summary}
        - concat_summaries:
            for:
                value: summary
                in: ${summaries}
                steps:
                    - append_summaries:
                        assign:
                            - all_summaries_concatenated: ${all_summaries_concatenated + "\n" + summary}
        - reduce_summary:
            call: ask_gemini_for_summary
            args:
                textToSummarize: ${all_summaries_concatenated}
            result: final_summary
        - return_result:
            return:
                - summaries: ${summaries}
                - final_summary: ${final_summary}
    
    ask_gemini_for_summary:
        params: [textToSummarize]
        steps:
            - init:
                assign:
                    - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                    - location: "us-central1"
                    - model: "gemini-pro"
                    - summary: ""
            - call_gemini:
                call: http.post
                args:
                    url: ${"https://" + location + "-aiplatform.googleapis.com" + "/v1/projects/" + project + "/locations/" + location + "/publishers/google/models/" + model + ":generateContent"}
                    auth:
                        type: OAuth2
                    body:
                        contents:
                            role: user
                            parts:
                                - text: '${"Make a summary of the following text:\n\n" + textToSummarize}'
                        generation_config:
                            temperature: 0.2
                            maxOutputTokens: 2000
                            topK: 10
                            topP: 0.9
                result: gemini_response
            # Sometimes, there's no text, for example, due to safety settings
            - check_text_exists:
                switch:
                - condition: ${not("parts" in gemini_response.body.candidates[0].content)}
                  next: return_summary
            - extract_text:
                assign:
                    - summary: ${gemini_response.body.candidates[0].content.parts[0].text}
            - return_summary:
                return: ${summary}
  8. Fai clic su Esegui il deployment.

gcloud

  1. Crea un file di codice sorgente per il tuo flusso di lavoro:

    touch gemini-pro-summaries.yaml
    
  2. In un editor di testo, copia il seguente flusso di lavoro nel file del codice sorgente:

    main:
        params: [input]
        steps:
        - assign_file_vars:
            assign:
                - file_size: ${int(input.data.size)}
                - chunk_size: 64000
                - n_chunks: ${int(file_size / chunk_size)}
                - summaries: []
                - all_summaries_concatenated: ""
        - loop_over_chunks:
            parallel:
                shared: [summaries]
                for:
                    value: chunk_idx
                    range: ${[0, n_chunks]}
                    steps:
                        - assign_bounds:
                            assign:
                                - lower_bound: ${chunk_idx * chunk_size}
                                - upper_bound: ${(chunk_idx + 1) * chunk_size}
                                - summaries: ${list.concat(summaries, "")}
                        - dump_file_content:
                            call: http.get
                            args:
                                url: ${"https://storage.googleapis.com/storage/v1/b/" + input.data.bucket + "/o/" + input.data.name + "?alt=media"}
                                auth:
                                    type: OAuth2
                                headers:
                                    Range: ${"bytes=" + lower_bound + "-" + upper_bound}
                            result: file_content
                        - assign_chunk:
                            assign:
                                - chunk: ${file_content.body}
                        - generate_chunk_summary:
                            call: ask_gemini_for_summary
                            args:
                                textToSummarize: ${chunk}
                            result: summary
                        - assign_summary:
                            assign:
                                - summaries[chunk_idx]: ${summary}
        - concat_summaries:
            for:
                value: summary
                in: ${summaries}
                steps:
                    - append_summaries:
                        assign:
                            - all_summaries_concatenated: ${all_summaries_concatenated + "\n" + summary}
        - reduce_summary:
            call: ask_gemini_for_summary
            args:
                textToSummarize: ${all_summaries_concatenated}
            result: final_summary
        - return_result:
            return:
                - summaries: ${summaries}
                - final_summary: ${final_summary}
    
    ask_gemini_for_summary:
        params: [textToSummarize]
        steps:
            - init:
                assign:
                    - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                    - location: "us-central1"
                    - model: "gemini-pro"
                    - summary: ""
            - call_gemini:
                call: http.post
                args:
                    url: ${"https://" + location + "-aiplatform.googleapis.com" + "/v1/projects/" + project + "/locations/" + location + "/publishers/google/models/" + model + ":generateContent"}
                    auth:
                        type: OAuth2
                    body:
                        contents:
                            role: user
                            parts:
                                - text: '${"Make a summary of the following text:\n\n" + textToSummarize}'
                        generation_config:
                            temperature: 0.2
                            maxOutputTokens: 2000
                            topK: 10
                            topP: 0.9
                result: gemini_response
            # Sometimes, there's no text, for example, due to safety settings
            - check_text_exists:
                switch:
                - condition: ${not("parts" in gemini_response.body.candidates[0].content)}
                  next: return_summary
            - extract_text:
                assign:
                    - summary: ${gemini_response.body.candidates[0].content.parts[0].text}
            - return_summary:
                return: ${summary}
  3. Esegui il deployment del flusso di lavoro inserendo il comando seguente:

    gcloud workflows deploy gemini-pro-summaries \
        --source=gemini-pro-summaries.yaml \
        --location=us-central1 \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Console

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

gcloud

Elimina un progetto Google Cloud:

gcloud projects delete PROJECT_ID

Elimina singole risorse

Eliminare i flussi di lavoro che hai creato in questo tutorial.

Passaggi successivi