Über einen Workflow auf Vertex AI-Modelle zugreifen


Generative KI in Vertex AI (auch als generative KI oder generative KI bezeichnet) bietet Ihnen Zugriff auf Die auf generativer KI basierenden Modelle von Google für mehrere Modalitäten (Text, Code, Bilder, gesprochene Sprache). Sie können diese Large Language Models (LLM) testen und optimieren und sie für die Verwendung in Ihren KI-gestützten Anwendungen bereitstellen. Weitere Informationen finden Sie in der Übersicht über die Unterstützung generativer KI für Vertex AI.

Vertex AI bietet eine Vielzahl von Grundlagenmodellen für generative KI, die über eine API einschließlich der in den folgenden Beispielen verwendeten Modelle:

  • Gemini Pro wurde für Natural Language-Aufgaben, Text- und Code-Chats in mehreren Schritten und die Codegenerierung entwickelt.
  • Gemini Pro Vision unterstützt multimodale Prompts. Sie können Text, Bilder und Videos in Ihre Anfragen aufnehmen und Text- oder Codeantworten abrufen.
  • Pathways Language Model 2 (PaLM 2) for Text ist auf Sprachaufgaben wie Klassifizierung, Zusammenfassung und Entitätsextraktion.

Jedes Modell wird über einen Publisher-Endpunkt bereitgestellt, der für Ihr Google Cloud-Projekt spezifisch ist. Daher muss das Foundation Model nicht bereitgestellt werden, es sei denn, Sie müssen es für einen bestimmten Anwendungsfall optimieren. Sie können eine Aufforderung an den Publisher senden, Endpunkt. Ein Prompt ist eine Anfrage in natürlicher Sprache, die an ein LLM gesendet wird, um eine Antwort auszulösen.

In diesem Tutorial werden Workflows veranschaulicht, Vertex AI-Modelle durch Senden von Text-Prompts an den Publisher Endpunkte, die entweder einen Workflows-Connector oder einen HTTP-POST verwenden Weitere Informationen finden Sie unter Vertex AI API-Connector – Übersicht und HTTP-Anfrage stellen.

Sie können jeden Workflow unabhängig voneinander bereitstellen und ausführen.

Lernziele

In dieser Anleitung führen Sie die folgenden Schritte aus:

  1. Vertex AI und Workflows APIs aktivieren und Gewähren Sie Ihrem Dienst die Rolle „Vertex AI User“ (roles/aiplatform.user) Konto. Diese Rolle ermöglicht den Zugriff auf die meisten Vertex AI-Funktionen. Weitere Informationen zum Einrichten von Vertex AI finden Sie unter Einrichtung in Google Cloud.
  2. Einen Workflow bereitstellen und ausführen, bei dem ein Vertex AI-Modell (Gemini Pro Vision) aufgefordert wird, ein Bild zu beschreiben, das öffentlich über Cloud Storage verfügbar ist. Weitere Informationen finden Sie unter Daten öffentlich machen:
  3. Einen Workflow bereitstellen und ausführen, der parallel eine Liste von Ländern durchläuft und ein Vertex AI-Modell (Gemini Pro) auffordert, die Historien der Länder zu generieren und zurückzugeben. Parallele Zweige verwenden können Sie die Gesamtausführungszeit reduzieren, indem Sie die Aufrufe an das LLM starten. und warten, bis alle abgeschlossen sind, bevor Ergebnisse. Weitere Informationen finden Sie unter Workflowschritte parallel ausführen
  4. Stellen Sie einen Workflow bereit, der dem vorherigen ähnelt. Bitten Sie jedoch ein Vertex AI-Modell (PaLM 2 für Text), die Geschichten der Länder zu generieren und zurückzugeben. Weitere Informationen zu wie Sie ein Modell auswählen, Modellinformationen.
  5. Stellen Sie einen Workflow bereit, mit dem ein großes Dokument zusammengefasst werden kann. Da es eine auf das Kontextfenster beschränken, das festlegt, wie weit das Modell für das Training (und für Prognosen) unterteilt der Workflow das Dokument in kleinere und fordert dann ein Vertex AI-Modell auf, (Gemini Pro), um jeden Teil parallel zusammenzufassen. Weitere Informationen finden Sie unter Vorschläge zur Zusammenfassung und Prognosehorizont, Kontextfenster und Prognosefenster.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

Bevor Sie die Beispiele in dieser Anleitung ausprobieren, stellen Sie sicher, dass Sie Folgendes:

Console

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI and Workflows APIs.

    Enable the APIs

  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. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Vertex AI and Workflows APIs.

    Enable the APIs

  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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Vertex AI and Workflows APIs:

    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. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Vertex AI and Workflows APIs:

    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

Workflow bereitstellen, der ein Bild beschreibt (Gemini Pro Vision)

Workflow bereitstellen, der eine Connector-Methode verwendet (generateContent), um eine Anfrage an Gemini Pro Vision zu stellen Publisher-Endpunkt. Die Methode unterstützt das Generieren von Inhalten mit multimodale Eingaben.

Der Workflow enthält eine Text-Eingabeaufforderung und den URI eines öffentlich zugänglichen Bildes. die in einem Cloud Storage-Bucket verfügbar sind. Sie können Bild ansehen und in der Google Cloud Console können Sie Objektdetails ansehen

Der Workflow gibt eine Beschreibung des Bildes aus der generierten Antwort des Modells zurück.

Weitere Informationen zu den HTTP-Anfragetextparametern, die beim Anfordern der LLM verwendet werden, und den Antworttextelementen finden Sie in der Gemini API-Referenz.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf  Erstellen.

  3. Geben Sie einen Namen für den neuen Workflow ein: describe-image.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  5. Wählen Sie unter Dienstkonto das zuvor erstellte Dienstkonto aus.

  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die folgende Definition für den Workflow ein:

    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. Klicken Sie auf Bereitstellen.

gcloud

  1. Erstellen Sie eine Quellcodedatei für Ihren Workflow:

    touch describe-image.yaml
  2. Kopieren Sie in einem Texteditor den folgenden Workflow in Ihre Quellcodedatei:

    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. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

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

Workflow ausführen

Bei der Ausführung eines Workflows wird die aktuelle Workflowdefinition ausgeführt, die dem Workflow zugeordnet ist.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Wählen Sie auf der Seite Workflows describe-image, um die zugehörige Detailseite aufzurufen.

  3. Klicken Sie auf der Seite Workflow-Details auf Ausführen.

  4. Geben Sie unter Eingabe Folgendes ein:

    {"image_url":"gs://generativeai-downloads/images/scones.jpg"}
  5. Klicken Sie noch einmal auf Ausführen.

  6. Sehen Sie sich die Ergebnisse des Workflows im Bereich Ausgabe an.

    Die Ausgabe sollte in etwa so aussehen:

    {
      "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. Öffnen Sie ein Terminalfenster.

  2. Führen Sie den Workflow aus:

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

    Die Ausführungsergebnisse sollten in etwa so aussehen:

      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

Workflow bereitstellen, der Ländergeschichten generiert (Gemini Pro)

Einen Workflow bereitstellen, der eine Eingabeliste von Ländern in parallel und verwendet eine Connector-Methode, (generateContent), um Gemini Pro zu kontaktieren Publisher-Endpunkt. Die Methode unterstützt die Inhaltsgenerierung mit multimodalen Eingaben.

Der Workflow gibt die vom Modell generierten Ländergeschichten zurück und kombiniert sie in einer Karte.

Weitere Informationen zu den HTTP-Anfragetextparametern, die beim Anfordern der LLM verwendet werden, und den Antworttextelementen finden Sie in der Gemini API-Referenz.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf  Erstellen.

  3. Geben Sie einen Namen für den neuen Workflow ein: gemini-pro-country-histories.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  5. Wählen Sie unter Dienstkonto das zuvor erstellte Dienstkonto aus.

  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die folgende Definition für den Workflow ein:

    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. Klicken Sie auf Bereitstellen.

gcloud

  1. Erstellen Sie eine Quellcodedatei für Ihren Workflow:

    touch gemini-pro-country-histories.yaml
  2. Kopieren Sie in einem Texteditor den folgenden Workflow in Ihre Quellcodedatei:

    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. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    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

Workflow ausführen

Bei der Ausführung eines Workflows wird die aktuelle Workflowdefinition ausgeführt, die dem Workflow zugeordnet ist.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Wählen Sie auf der Seite Workflows den Workflow gemini-pro-country-histories aus, um die Detailseite aufzurufen.

  3. Klicken Sie auf der Seite Workflow-Details auf Ausführen.

  4. Geben Sie unter Eingabe Folgendes ein:

    {"countries":["Argentina", "Bhutan", "Cyprus", "Denmark", "Ethiopia"]}
  5. Klicken Sie noch einmal auf Ausführen.

  6. Sehen Sie sich die Ergebnisse des Workflows im Bereich Ausgabe an.

    Die Ausgabe sollte in etwa so aussehen:

    {
      "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. Öffnen Sie ein Terminalfenster.

  2. Führen Sie den Workflow aus:

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

    Die Ausführungsergebnisse sollten in etwa so aussehen:

      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

Workflow bereitstellen, der Ländergeschichten generiert (PaLM 2 für Text)

Möglicherweise möchten Sie Gemini Pro nicht als Modell verwenden. Im folgenden Beispiel wird ein Workflow verwendet, der dem vorherigen ähnelt. Es wird jedoch eine Connector-Methode (predict) verwendet, um eine Anfrage an einen PaLM 2-Endpunkt für Textverlage oder -Webpublisher zu senden. Die Methode führt eine Onlinevorhersage durch.

Weitere Informationen zu den Parametern für den HTTP-Anfragetext, die bei Aufforderungen verwendet werden das LLM und die Response-Body-Elemente, PaLM 2 for Text API-Referenz

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf  Erstellen.

  3. Geben Sie einen Namen für den neuen Workflow ein: text-bison-country-histories.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  5. Wählen Sie unter Dienstkonto das zuvor erstellte Dienstkonto aus.

  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die Definition für Ihren Workflow ein:

    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}

    Je nach verwendetem Modell müssen Sie möglicherweise alle unnötigen Leerzeichen aus der Antwort entfernen.

  8. Klicken Sie auf Bereitstellen.

gcloud

  1. Erstellen Sie eine Quellcodedatei für Ihren Workflow:

    touch text-bison-country-histories.yaml
  2. Kopieren Sie in einem Texteditor den folgenden Workflow in Ihre Quellcodedatei:

    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}

    Je nach verwendetem Modell müssen Sie möglicherweise alle unnötigen Leerzeichen aus der Antwort entfernen.

  3. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    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

Workflow bereitstellen, der ein großes Dokument zusammenfasst (Gemini Pro)

Erstelle einen Workflow, der ein großes Dokument in kleinere Teile aufteilt und http.post-Anfragen an einen Gemini Pro-Publisher-Endpunkt parallel sendet, damit das Modell jeden Teil gleichzeitig zusammenfassen kann. Im Workflow werden schließlich alle Teilzusammenfassungen zu einer vollständigen Zusammenfassung kombiniert.

Weitere Informationen zu den Parametern für den HTTP-Anfragetext, die bei Aufforderungen verwendet werden das LLM und die Response-Body-Elemente, Gemini API-Referenz

Bei der Workflowdefinition wird davon ausgegangen, dass Sie einen Cloud Storage-Bucket erstellt haben, in den Sie eine Textdatei hochladen können. Weitere Informationen zum Workflows-Connector (googleapis.storage.v1.objects.get), mit dem Objekte aus dem Cloud Storage-Bucket abgerufen werden, finden Sie in der Referenz zu Connectors.

Nachdem Sie den Workflow bereitgestellt haben, können Sie ihn ausführen, indem Sie einen geeigneten Eventarc-Trigger erstellen und dann eine Datei in den Bucket hochladen. Weitere Informationen finden Sie unter Cloud Storage-Ereignisse an Workflows weiterleiten. Zusätzliche APIs müssen aktiviert und zusätzliche Rollen müssen Erteilt, einschließlich Gewähren des Storage Object User für Ihr Dienstkonto Rolle (roles/storage.objectUser), die die Verwendung von Cloud Storage unterstützt Objekte. Weitere Informationen finden Sie in der Bereich Vorbereitung zum Erstellen eines Triggers:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf  Erstellen.

  3. Geben Sie einen Namen für den neuen Workflow ein: gemini-pro-summaries.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  5. Wählen Sie unter Dienstkonto das zuvor erstellte Dienstkonto aus.

  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die folgende Definition für den Workflow ein:

    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. Klicken Sie auf Bereitstellen.

gcloud

  1. Erstellen Sie eine Quellcodedatei für Ihren Workflow:

    touch gemini-pro-summaries.yaml
  2. Kopieren Sie in einem Texteditor den folgenden Workflow in Ihre Quellcodedatei:

    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. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

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

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

Console

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Workflows löschen die Sie in dieser Anleitung erstellt haben.

Nächste Schritte