Antworten und Nachfragen erhalten

Auf dieser Seite wird die Suche mit Antwort und Nachfragen für Vertex AI Search vorgestellt. Außerdem erfahren Sie, wie Sie sie mithilfe von Methodenaufrufen für allgemeine Such-Apps implementieren.

Die Suche mit Antwort und Folgefragen basiert auf der Antwortmethode. Die Antwortmethode ersetzt die Zusammenfassungsfunktionen der älteren Methode search und alle Funktionen der eingestellten Methode converse. Die Antwortmethode bietet außerdem einige wichtige zusätzliche Funktionen, z. B. die Möglichkeit, komplexe Abfragen zu verarbeiten.

Merkmale der Antwortmethode

Die wichtigsten Merkmale der Antwortmethode sind:

  • Die Fähigkeit, Antworten auf komplexe Abfragen zu generieren. Mit der Antwortmethode können beispielsweise zusammengesetzte Suchanfragen wie die folgende in mehrere kleinere Suchanfragen unterteilt werden, um bessere Ergebnisse zu erzielen, die wiederum zu besseren Antworten führen:

    • „Wie hoch sind der Umsatz von Google Cloud und Google Ads im Jahr 2024?“
    • „Nach wie vielen Jahren seit der Gründung hat Google einen Umsatz von 1 Milliarde $ erzielt?“
  • Die Möglichkeit, die Suche und die Antwortgenerierung in einer Unterhaltung mit mehreren Gesprächsrunden zu kombinieren, indem die Antwortmethode in jeder Runde aufgerufen wird.

  • Die Möglichkeit, die Funktion mit der Suchmethode zu kombinieren, um die Suchlatenz zu reduzieren. Sie können die Suchmethode und die Antwortmethode separat aufrufen und die Suchergebnisse und Antworten zu unterschiedlichen Zeiten in verschiedenen Iframes rendern. Das bedeutet, dass Sie Ihren Nutzern Suchergebnisse (die 10 blauen Links) innerhalb von Millisekunden anzeigen können. Sie müssen nicht warten, bis Antworten generiert wurden, bevor Sie Suchergebnisse anzeigen können.

Die Funktionen von Antworten und Nachfragen lassen sich in drei Phasen der Suchanfrage unterteilen:

Wann „Antwort“ und wann „Suche“ verwenden?

Vertex AI Search bietet zwei Methoden für Abfragen von Apps. Sie haben unterschiedliche, aber sich überschneidende Funktionen.

Verwenden Sie die Methode answer, wenn:

  • Sie möchten eine KI-generierte Antwort (oder Zusammenfassung) der Suchergebnisse.

  • Sie benötigen eine Suche in mehreren Schritten, d. h. Suchanfragen, die den Kontext berücksichtigen und weiterführende Fragen zulassen.

Verwenden Sie die Methode search, wenn:

  • Sie benötigen nur Suchergebnisse, keine generierte Antwort.

  • Sie möchten, dass mehr als zehn Suchergebnisse („blaue Links“) zurückgegeben werden.

  • Sie haben eine der folgenden Voraussetzungen:

    • Medien- oder Gesundheitsdaten
    • Eigene Einbettungen
    • Synonym- oder Weiterleitungssteuerungen
    • Attribute
    • Ländercodes der Nutzer

Verwenden Sie die Antwort- und Suchmethoden in folgenden Fällen zusammen:

  • Sie möchten mehr als zehn Suchergebnisse zurückgeben und eine generierte Antwort.

  • Sie haben Latenzprobleme und möchten Suchergebnisse schnell zurückgeben und anzeigen lassen, bevor die generierte Antwort zurückgegeben wird.

Funktionen der Abfragephase

Die Funktion für Antworten und Nachfragen unterstützt die Verarbeitung von Suchanfragen in natürlicher Sprache.

In diesem Abschnitt werden die verschiedenen Optionen für die Umformulierung und Klassifizierung von Suchanfragen beschrieben und veranschaulicht.

Formulierung von Suchanfragen ändern

Die Umformulierung von Suchanfragen ist standardmäßig aktiviert. Mit dieser Funktion wird automatisch die beste Formulierung für Suchanfragen ausgewählt, um die Suchergebnisse zu verbessern. Diese Funktion kann auch Suchanfragen verarbeiten, die nicht umformuliert werden müssen.

  • Komplexe Abfragen in mehrere Abfragen aufteilen und synchronisierte untergeordnete Abfragen ausführen.

    Beispiel: Eine komplexe Abfrage wird in vier kleinere, einfachere Abfragen unterteilt.

    Nutzereingabe Unterabfragen, die aus der komplexen Abfrage erstellt wurden
    Welche Berufe und Hobbys haben Andie Ram und Arnaud Clément gemeinsam?
    • Andie Ram – Beruf
    • Beruf von Arnaud Clément
    • Andie Ram hobby
    • Arnaud Clément hobby
  • Mehrere Abfragen zusammenführen, um Folgefragen kontextbezogen und zustandsabhängig zu machen

    Beispiel: Abfragen, die aus der Nutzereingabe bei jeder Wendung erstellt werden, könnten so aussehen:

    Nutzereingabe Abfrage wurde synthetisiert
    Kurve 1: Laptops für die Schule Laptops für die Schule
    Schritt 2: nicht mac laptops for school not mac
    Schritt 3: Größeres Display und ich benötige auch eine kabellose Tastatur und Maus Laptops mit größerem Display für die Schule, kein Mac, mit kabelloser Tastatur und Maus
    Kurve 4: und einen Rucksack dazu Laptops mit größerem Bildschirm für die Schule, kein Mac, mit kabelloser Tastatur und Maus und einem Rucksack dafür
  • Vereinfachen Sie lange Abfragen, um die Abrufleistung zu verbessern.

    Beispiel: Eine lange Abfrage wird in eine einfache Abfrage umgewandelt.

    Nutzereingabe Vereinfachte Abfrage
    Ich möchte wissen, warum die Schaltfläche „In den Einkaufswagen“ auf unserer Website nicht richtig funktioniert. Wenn ein Nutzer auf die Schaltfläche klickt, wird der Artikel anscheinend nicht in den Einkaufswagen gelegt und er erhält eine Fehlermeldung. Ich habe den Code überprüft und er scheint korrekt zu sein. Ich weiß also nicht, woran das Problem liegen könnte. Können Sie mir helfen, das Problem zu beheben? Die Schaltfläche „In den Einkaufswagen“ funktioniert auf der Website nicht.
  • Mehrstufige Überlegungen anstellen

    Die mehrstufige Argumentation basiert auf dem ReAct-Paradigma (Reasoning + Action, dt. „Denken + Handeln“), mit dem LLMs komplexe Aufgaben mithilfe von Natural Language Reasoning lösen können. Standardmäßig ist die maximale Anzahl der Schritte fünf.

    Beispiel:

    Nutzereingabe Zwei Schritte zum Generieren der Antwort
    Nach wie vielen Jahren seit der Gründung hat Google einen Umsatz von 1 Milliarde $ erreicht? Schritt 1:
    [Überlegung]: Ich muss wissen, wann Google gegründet wurde, damit ich den Umsatz seit dieser Zeit abfragen kann.
    [Aktion] Suche: Wann wurde Google gegründet? [Suchergebnisse beobachten]: „1998“

    Schritt 2:
    [Überlegung]: Jetzt muss ich den Jahresumsatz von Google seit 1998 ermitteln und herausfinden, wann er zum ersten Mal 1 Milliarde überschritten hat.
    [Aktion] Suche: Google-Umsatz seit 1998
    [Suchergebnisse beobachten] Google-Umsatz 1998, Google-Umsatz 1999…..
    [Antwort]: Google erzielte 2003, fünf Jahre nach der Gründung im Jahr 1998, einen Umsatz von mehr als 1 Milliarde $[1].

Anfrageklassifizierung

Mit den Optionen zur Abfrageklassifizierung können Sie schädliche Suchanfragen und Suchanfragen identifizieren, die keine Antwort enthalten. Die Optionen für die Abfrageklassifizierung sind standardmäßig deaktiviert.

Weitere Informationen zu böswilligen und nicht auf Antworten ausgerichteten Suchanfragen finden Sie unter Böswillige Suchanfragen ignorieren und Suchanfragen ignorieren, die keine Zusammenfassungen liefern.

Funktionen der Suchphase

Für die Suche bietet die Antwortmethode dieselben Optionen wie die Suchmethode. Beispiel:

Funktionen der Antwortphase

Während der Antwortphase, wenn Antworten aus den Suchergebnissen generiert werden, können Sie dieselben Funktionen aktivieren wie bei der Suchmethode. Beispiel:

Zusätzliche Funktionen in der Antwortphase, die in der Suchmethode nicht verfügbar sind:

  • Sie erhalten eine Unterstützungsbewertung für jeden Anspruch (Satz in der generierten Antwort). Ein Unterstützungswert ist ein Gleitkommawert im Bereich [0,1], der angibt, wie gut die Behauptung auf den Daten im Datenspeicher gestützt ist. Weitere Informationen finden Sie unter Bewertungen für die Rückgabe von Geräten mit Beschädigungen am Schutzgitter.

  • Sie erhalten eine zusammengefasste Supportbewertung für die Antwort. Der Unterstützungswert gibt an, wie gut die Antwort auf den Daten im Datenspeicher basiert. Weitere Informationen finden Sie unter Bewertungen für den Rückgabegrund.

  • Gib nur fundierte Antworten zurück. Sie können festlegen, dass nur Antworten zurückgegeben werden, die einen bestimmten Support-Score-Grenzwert erreichen. Weitere Informationen finden Sie unter Nur fundierte Antworten anzeigen.

Hinweise

Je nach Art der App müssen Sie die folgenden Anforderungen erfüllen:

  • Wenn Sie eine App für die strukturierte oder unstrukturierte Suche haben, muss Folgendes aktiviert sein: Erweiterte LLM-Features

  • Wenn Sie eine Suchanwendung für Websites haben, müssen die folgenden Funktionen aktiviert sein:

  • Wenn Sie eine App mit kombinierter Suche haben (d. h. eine App, die mit mehreren Datenspeichern verbunden ist), wenden Sie sich an Ihr Google-Kontoteam und bitten Sie darum, zur Zulassungsliste für die Answer API mit kombinierter Suche hinzugefügt zu werden.

Suche und Antwort (einfach)

Im folgenden Befehl wird gezeigt, wie die Methode answer aufgerufen wird, um eine generierte Antwort und eine Liste von Suchergebnissen mit Links zu den Quellen zurückzugeben.

Mit diesem Befehl wird nur die erforderliche Eingabe angezeigt. Die Optionen bleiben auf den Standardeinstellungen.

REST

So suchen Sie nach Ergebnissen mit einer generierten Antwort:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"}
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält. Beispiel: „BigQuery- und Spanner-Datenbanken vergleichen?“

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Befehle für die Abfragephase

In diesem Abschnitt wird beschrieben, wie Sie Optionen für die Abfragephase des Methodenaufrufs answer angeben.

Suche und Antwort (Umformulierung deaktiviert)

Im folgenden Befehl wird gezeigt, wie die Methode answer aufgerufen und eine generierte Antwort und eine Liste mit Suchergebnissen zurückgegeben wird. Die Antwort kann sich von der vorherigen Antwort unterscheiden, da die Option zum Umformulieren deaktiviert ist.

REST

So können Sie eine Suche starten und Ergebnisse mit einer generierten Antwort erhalten, ohne die Suchanfrage umzuformulieren:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "queryUnderstandingSpec": {
               "queryRephraserSpec": {
                  "disable": true
            }
        }
          }'
    
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält. Beispiel: „BigQuery- und Spanner-Datenbanken vergleichen?“

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Suchen und Antworten (maximale Schritte angeben)

Im folgenden Befehl wird gezeigt, wie die Methode answer aufgerufen und eine generierte Antwort und eine Liste mit Suchergebnissen zurückgegeben wird. Die Antwort unterscheidet sich von den vorherigen Antworten, da die Anzahl der Schritte zur Umformulierung erhöht wurde.

REST

So können Sie eine Suche starten und Ergebnisse mit einer generierten Antwort erhalten, die bis zu fünf Umformulierungsschritte zulässt:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "queryUnderstandingSpec": {
                "queryRephraserSpec": {
                    "maxRephraseSteps": MAX_REPHRASE
                 }
             }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält. Beispiel: „BigQuery- und Spanner-Datenbanken vergleichen?“
    • MAX_REPHRASE: die maximale Anzahl der Schritte zur Umformulierung. Der maximal zulässige Wert ist 5. Wenn der Wert nicht festgelegt ist oder kleiner als 1 ist, wird der Standardwert 1 verwendet.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Mit der Abfrageklassifizierung suchen und Antworten erhalten

Der folgende Befehl zeigt, wie die Methode answer aufgerufen wird, um zu ermitteln, ob eine Suchanfrage bösartig, nicht auf eine Antwort ausgerichtet oder weder noch ist.

Die Antwort enthält den Klassifizierungstyp für die Suchanfrage, die Antwort selbst wird jedoch nicht von der Klassifizierung beeinflusst. Wenn Sie das Antwortverhalten je nach Anfragetyp ändern möchten, können Sie dies in der Antwortphase tun. Weitere Informationen finden Sie unter Angriffsabfragen ignorieren und Abfragen ignorieren, die keine Zusammenfassungen suchen.

REST

So ermitteln Sie, ob eine Suchanfrage bösartig oder nicht auf eine Antwort ausgerichtet ist:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "queryUnderstandingSpec": {
                "queryClassificationSpec": {
                    "types": ["QUERY_CLASSIFICATION_TYPE"]
                 }
             }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält. Beispiel: „hallo“.
    • QUERY_CLASSIFICATION_TYPE: Die Abfragetypen, die Sie identifizieren möchten: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY oder beide.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Befehle für die Suchphase: Mit Suchergebnisoptionen suchen und antworten

In diesem Abschnitt erfahren Sie, wie Sie Optionen für den Teil der Suchphase des answer-Methodenaufrufs angeben, z. B. die maximale Anzahl der zurückgegebenen Dokumente, die Aufstockung und das Filtern. Außerdem erfahren Sie, wie Sie eine Antwort erhalten, wenn Sie Ihre eigenen Suchergebnisse bereitstellen.

Der folgende Befehl zeigt, wie die Methode answer aufgerufen und verschiedene Optionen für die Rückgabe des Suchergebnisses angegeben werden. (Die Suchergebnisse sind unabhängig von der Antwort.)

REST

So legen Sie verschiedene Optionen fest, die sich darauf beziehen, welche und wie Suchergebnisse zurückgegeben werden:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
              "searchSpec": {
              "searchParams": {
                "maxReturnResults": MAX_RETURN_RESULTS,
                "filter": "FILTER",
                "boostSpec": BOOST_SPEC,
                "orderBy": "ORDER_BY",
                "searchResultMode": SEARCH_RESULT_MODE
               }
             }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält. Beispiel: „BigQuery- und Spanner-Datenbanken vergleichen?“
    • MAX_RETURN_RESULTS: die Anzahl der zurückzugebenden Suchergebnisse. Der Standardwert ist 10.
    • FILTER: Der Filter gibt an, welche Dokumente abgefragt werden. Wenn die Metadaten eines Dokuments der Filterspezifikation entsprechen, wird das Dokument abgefragt. Weitere Informationen, einschließlich der Filtersyntax, finden Sie unter Filter für die allgemeine Suche nach strukturierten oder unstrukturierten Daten.
    • BOOST_SPEC: Mit der Boost-Spezifikation können Sie bestimmte Dokumente in den Suchergebnissen hervorheben, was sich auf die Antwort auswirken kann. Weitere Informationen, einschließlich der Syntax für die Spezifikation der Steigerung, finden Sie unter Suchergebnisse steigern.
    • ORDER_BY: die Reihenfolge, in der Dokumente zurückgegeben werden. Dokumente können in einem Document-Objekt nach einem Feld sortiert werden. Bei orderBy wird die Groß- und Kleinschreibung berücksichtigt. Wenn dieses Feld nicht erkannt werden kann, wird INVALID_ARGUMENT zurückgegeben.
    • SEARCH_RESULT_MODE: Gibt den Suchergebnismodus an: DOCUMENTS oder CHUNKS. Weitere Informationen finden Sie unter Dokumente parsen und in Blöcke aufteilen und ContentSearchSpec. Dieses Feld ist nur in der Version v1alpha der API verfügbar.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Befehle für die Antwortphase

In diesem Abschnitt wird beschrieben, wie Sie antwortspezifische Optionen für den Methodenaufruf answer angeben.

Böswillige Suchanfragen und Suchanfragen, die keine Antwort suchen, ignorieren

Der folgende Befehl zeigt, wie Sie verhindern, dass bei Aufruf der Methode answer antwortfeindliche Suchanfragen und Suchanfragen beantwortet werden, die keine Antwort erfordern.

REST

So überspringen Sie die Beantwortung von Suchanfragen, die anstößig sind oder keine Antwort erfordern:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "answerGenerationSpec": {
               "ignoreAdversarialQuery": true,
               "ignoreNonAnswerSeekingQuery": true
            }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Nur relevante Antworten anzeigen

Vertex AI Search kann beurteilen, wie relevant die Ergebnisse für eine Suchanfrage sind. Wenn keine Ergebnisse als ausreichend relevant eingestuft werden, können Sie anstelle einer Antwort aus nicht oder nur geringfügig relevanten Ergebnissen eine Fallback-Antwort zurückgeben: „We do not have a summary for your query.“.

Im folgenden Befehl wird gezeigt, wie bei irrelevanten Ergebnissen beim Aufrufen der Methode answer die Fallback-Antwort zurückgegeben wird.

REST

So geben Sie eine Fallback-Antwort zurück, wenn keine relevanten Ergebnisse gefunden werden:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "answerGenerationSpec": {
               "ignoreLowRelevantContent": true
            }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Bewertungen für den Schutz vor Erdung zurückgeben

Der folgende Befehl zeigt, wie Sie Bewertungen für fundierte Antworten und Behauptungen zurückgeben.

Allgemeine Informationen zur Fundierung in Vertex AI finden Sie unter Fundierung mit RAG prüfen. Die Methode groundingConfigs.check wird von der Antwortmethode aufgerufen.

REST

So geben Sie einen Unterstützungswert für jeden Anspruch (Satz in der Antwort) und einen zusammengefassten Unterstützungswert für die Antwort zurück:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "groundingSpec": {
               "includeGroundingSupports": true,
            }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.

Nur fundierte Antworten anzeigen

Mit dem folgenden Befehl werden nur Antworten zurückgegeben, die im Corpus, also in den Informationen im Datenspeicher, gut begründet sind. Antworten ohne fundierte Grundlage werden herausgefiltert.

Sie wählen einen niedrigen oder hohen Grenzwert für die Bewertung der Erdungsunterstützung aus. Die Antwort wird dann nur zurückgegeben, wenn sie dieses Niveau erreicht oder überschreitet. Sie können mit den beiden Filtergrenzwerten und ohne Grenzwert experimentieren, um festzustellen, mit welcher Filterstufe Sie wahrscheinlich die besten Ergebnisse für Ihre Nutzer erzielen.

Allgemeine Informationen zur Fundierung in Vertex AI finden Sie unter Fundierung mit RAG prüfen. Die Methode groundingConfigs.check wird von der Antwortmethode aufgerufen.

REST

Wenn eine Antwort nur zurückgegeben werden soll, wenn sie einen bestimmten Wert für den Support-Score erreicht, gehen Sie so vor:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "groundingSpec": {
               "filteringLevel": "FILTER_LEVEL"
            }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.
    • FILTER_LEVEL: Eine Aufzählung zum Filtern von Antworten basierend auf dem Wert für die Begründungsunterstützung. Optionen sind FILTERING_LEVEL_LOW und FILTERING_LEVEL_HIGH. Wenn filteringLevel nicht enthalten ist, wird auf die Antwort kein Support-Score-Filter angewendet.

Antwortmodell angeben

Mit dem folgenden Befehl können Sie die Modellversion ändern, die zum Generieren von Antworten verwendet wird.

Informationen zu den unterstützten Modellen finden Sie unter Modellversionen und Lebenszyklus für die Antwortgenerierung.

REST

So generieren Sie eine Antwort mit einem anderen Modell als dem Standardmodell:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "answerGenerationSpec": {
               "modelSpec": {
                  "modelVersion": "MODEL_VERSION",
               }
             }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.
    • MODEL_VERSION: die Modellversion, die Sie zum Generieren der Antwort verwenden möchten. Weitere Informationen finden Sie unter Modellversionen und Lebenszyklus für die Antwortgenerierung.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Benutzerdefinierte Präambel angeben

Im folgenden Befehl wird gezeigt, wie Sie eine Präambel für die generierte Antwort festlegen. Eine Präambel enthält Anweisungen in natürlicher Sprache zum Anpassen der Antwort. Sie können Anpassungen wie Länge, Detaillierungsgrad, Ausgabestil (z. B. „einfach“), Ausgabesprache, Schwerpunkt der Antwort und Format (z. B. Tabellen, Aufzählungspunkte und XML) anfordern. Eine solche Einleitung könnte beispielsweise lauten: „Erkläre es so, als wärest du ein zehnjähriges Kind.“

Die Präambel kann sich erheblich auf die Qualität der generierten Antwort auswirken. Informationen dazu, was Sie in Präambeln schreiben sollten, und Beispiele für gute Präambeln finden Sie unter Benutzerdefinierte Präambeln.

REST

So generieren Sie eine Antwort mit einem anderen Modell als dem Standardmodell:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "answerGenerationSpec": {
               "promptSpec": {
                   "preamble": "PREAMBLE",
               }
            }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.
    • PREAMBLE: eine Anleitung in natürlicher Sprache zum Anpassen der Antwort. Versuchen Sie es beispielsweise mit show the answer format in an ordered list oder give a very detailed answer.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Zitate einschließen

Mit dem folgenden Befehl können Sie angeben, dass in der Antwort Quellenangaben enthalten sein sollen.

REST

So generieren Sie eine Antwort mit einem anderen Modell als dem Standardmodell:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "answerGenerationSpec": {
               "includeCitations": INCLUDE_CITATIONS
            }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.
    • INCLUDE_CITATIONS: Gibt an, ob Metadaten für die Quellenangabe in die Antwort eingeschlossen werden sollen. Der Standardwert ist false.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Sprachcode der Antwort festlegen

Im folgenden Befehl wird gezeigt, wie der Sprachcode für Antworten festgelegt wird.

REST

So generieren Sie eine Antwort mit einem anderen Modell als dem Standardmodell:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "answerGenerationSpec": {
               "answerLanguageCode": "ANSWER_LANGUAGE_CODE"
               }
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.
    • ANSWER_LANGUAGE_CODE: Sprachcode für die Antwort. Verwenden Sie Sprachen-Tags, die gemäß BCP47: Tags for Identifying Languages definiert sind.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
            model_version="gemini-1.5-flash-001/answer_gen/v2",  # Optional: Model to use for answer generation
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Befehle für weiterführende Fragen

Es handelt sich um mehrstufige Anfragen. Nach der ersten Abfrage in einer Folgesitzung werden bei nachfolgenden „Runden“ frühere Interaktionen berücksichtigt. Bei Anschlussfragen kann die Antwortmethode auch ähnliche Fragen vorschlagen, die Nutzer auswählen können, anstatt eigene Anschlussfragen einzugeben.

Alle in den vorherigen Abschnitten beschriebenen Funktionen für Antworten und Nachfragen, z. B. Zitate, Filter, SafeSearch, Ignorieren bestimmter Arten von Suchanfragen und Verwenden eines Vorspanns zum Anpassen von Antworten, können auch für Nachfragen verwendet werden.

Beispiel für eine Folgesitzung

Im Folgenden finden Sie ein Beispiel für eine Sitzung mit Folgefragen. Angenommen, Sie möchten mehr über einen Urlaub in Mexiko erfahren:

  • Zug 1:

    • Sie:Wann ist die beste Reisezeit für Mexiko?

    • Mit Nachfragen antworten:Die beste Reisezeit für Mexiko ist die Trockenzeit von November bis April.

  • Zug 2:

    • Sie:Wie lautet der Wechselkurs?

    • Mit Nachfragen antworten:1 US-Dollar entspricht ungefähr 17,65 mexikanischen Pesos.

  • Zug 3:

    • Sie:Wie hoch ist die durchschnittliche Temperatur im Dezember?

    • Mit Nachfragen antworten:Die durchschnittliche Temperatur liegt zwischen 21 und 26 °C. Die durchschnittliche Temperatur in Cancun liegt bei etwa 25 °C.

Ohne Nachfragen könnte Ihre Frage „Wie hoch ist der Wechselkurs?“ nicht beantwortet werden, da bei einer normalen Suche nicht bekannt ist, dass Sie den mexikanischen Wechselkurs benötigen. Ohne Nachfragen wäre der Kontext nicht ausreichend, um Ihnen Temperaturen speziell für Mexiko anzugeben.

Wenn Sie fragen: „Wann ist die beste Reisezeit für Mexiko?“, werden Ihnen neben der Antwort auf Ihre Frage auch mögliche Folgefragen vorgeschlagen, z. B. „Wann ist der günstigste Monat für einen Urlaub in Mexiko?“ und „Welche Monate sind die Hauptreisemonate in Mexiko?“.

Nachdem die Funktion für ähnliche Fragen aktiviert wurde, werden Fragen als Strings in ConverseConversationResponse zurückgegeben.

Informationen zu Sitzungen

Um zu verstehen, wie Nachfragen in Vertex AI Search funktionieren, müssen Sie wissen, wie Sitzungen funktionieren.

Eine Sitzung besteht aus Textabfragen, die von einem Nutzer gestellt werden, und Antworten, die von Vertex AI Search bereitgestellt werden.

Diese Frage- und Antwortpaare werden manchmal als Wendungen bezeichnet. Im vorherigen Beispiel besteht die zweite Wende aus „Wie hoch ist der Wechselkurs?“ und „1 $ entspricht ungefähr 17, 65 mexikanischen Pesos“.

Sitzungen werden mit der App gespeichert. In der App wird eine Sitzung durch die Sitzungsressource dargestellt.

Die Sitzungsressource enthält neben den Abfrage- und Antwortnachrichten Folgendes:

  • Ein eindeutiger Name (die Sitzungs-ID).

  • Einen Status (in Bearbeitung oder abgeschlossen).

  • Eine Pseudo-Nutzer-ID, also eine Besucher-ID, mit der der Nutzer erfasst wird. Sie kann programmatisch zugewiesen werden.

  • Start- und Endzeit

  • Ein Turn, also ein Frage-Antwort-Paar.

Sitzungsinformationen speichern und Antworten erhalten

Mit der Befehlszeile können Sie Suchantworten und -ergebnisse generieren und zusammen mit jeder Suchanfrage in einer Sitzung speichern.

REST

So erstellen Sie über die Befehlszeile eine Sitzung und generieren Antworten aus der Eingabe des Nutzers:

  1. Geben Sie die App an, in der die Sitzung gespeichert werden soll:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions" \
      -d '{
            "userPseudoId": "USER_PSEUDO_ID"
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.

    • APP_ID: die ID der Vertex AI Search-Anwendung.

    • USER_PSEUDO_ID: Eine eindeutige Kennung für das Tracking eines Suchmaschinenbesuchers. Sie können dies beispielsweise mit einem HTTP-Cookie implementieren, mit dem ein Besucher auf einem einzelnen Gerät eindeutig identifiziert wird.

    Beispielbefehl und -ergebnis

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/sessions"
    -d '{
    "userPseudoId": "test_user"
    }'
    
    { "name": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", "state": "IN_PROGRESS", "userPseudoId": "test_user", "startTime": "2024-09-13T18:47:10.465311Z", "endTime": "2024-09-13T18:47:10.465311Z" }
  2. Notieren Sie sich die Sitzungs-ID, die Zahlen am Ende des Felds name: in der JSON-Antwort. In diesem Beispiel lautet die ID 5386462384953257772. Sie benötigen diese ID im nächsten Schritt.

  3. So generieren Sie eine Antwort und fügen sie einer Sitzung in Ihrer App hinzu:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID",
              "searchSpec":{ "searchParams": {"filter": "FILTER"} }
    }'
    
    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • QUERY: Ein Freitextstring, der die Frage oder Suchanfrage enthält.
    • SESSION_ID: die ID der Sitzung, die Sie in Schritt 1 erstellt haben. Das sind die Ziffern am Ende des Felds name:, die Sie in Schritt 2 notiert haben. Verwenden Sie für eine Sitzung in jeder Runde dieselbe Sitzungs-ID.
    • FILTER: Textfeld zum Filtern der Suche mit einem Filterausdruck. Der Standardwert ist ein leerer String. Die Filtererstellung hängt davon ab, ob Sie unstrukturierte Daten mit Metadaten, strukturierte Daten oder Websitedaten haben. Weitere Informationen finden Sie unter Generischer Suchanfrage nach strukturierten oder unstrukturierten Daten filtern und Websitesuche filtern.

    Beispielbefehl und -ergebnis

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer"
    -d '{
    "query": { "text": "Compare bigquery with spanner database?"},
    "session":  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943",
    }'
        
    { "answer": { "name": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072", "state": "SUCCEEDED", "answerText": "BigQuery and Spanner are both powerful tools that can be used together to handle transactional and analytical workloads. Spanner is a fully managed relational database optimized for transactional workloads, while BigQuery is a serverless data warehouse designed for business agility. Spanner provides seamless replication across regions in Google Cloud and processes over 1 billion requests per second at peak. BigQuery analyzes over 110 terabytes of data per second. Users can leverage federated queries to read data from Spanner and write to a native BigQuery table. \n", "steps": [ { "state": "SUCCEEDED", "description": "Rephrase the query and search.", "actions": [ { "searchAction": { "query": "Compare bigquery with spanner database?" }, "observation": { "searchResults": [ { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/ecc0e7547253f4ca3ff3328ce89995af", "uri": "https://cloud.google.com/blog/topics/developers-practitioners/how-spanner-and-bigquery-work-together-handle-transactional-and-analytical-workloads", "title": "How Spanner and BigQuery work together to handle transactional and analytical workloads | Google Cloud Blog", "snippetInfo": [ { "snippet": "Using Cloud \u003cb\u003eSpanner\u003c/b\u003e and \u003cb\u003eBigQuery\u003c/b\u003e also allows customers to build their \u003cb\u003edata\u003c/b\u003e clouds using Google Cloud, a unified, open approach to \u003cb\u003edata\u003c/b\u003e-driven transformation ...", "snippetStatus": "SUCCESS" } ] }, { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d7e238f73608a860e00b752ef80e2941", "uri": "https://cloud.google.com/blog/products/databases/cloud-spanner-gets-stronger-with-bigquery-federated-queries", "title": "Cloud Spanner gets stronger with BigQuery-federated queries | Google Cloud Blog", "snippetInfo": [ { "snippet": "As enterprises compete for market share, their need for real-time insights has given rise to increased demand for transactional \u003cb\u003edatabases\u003c/b\u003e to support \u003cb\u003edata\u003c/b\u003e ...", "snippetStatus": "SUCCESS" } ] }, { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/e10a5a3c267dc61579e7c00fefe656eb", "uri": "https://cloud.google.com/blog/topics/developers-practitioners/replicating-cloud-spanner-bigquery-scale", "title": "Replicating from Cloud Spanner to BigQuery at scale | Google Cloud Blog", "snippetInfo": [ { "snippet": "... \u003cb\u003eSpanner data\u003c/b\u003e into \u003cb\u003eBigQuery\u003c/b\u003e for analytics. In this post, you will learn how to efficiently use this feature to replicate large tables with high throughput ...", "snippetStatus": "SUCCESS" } ] }, ... { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/8100ad36e1cac149eb9fc180a41d8f25", "uri": "https://cloud.google.com/blog/products/gcp/from-nosql-to-new-sql-how-spanner-became-a-global-mission-critical-database", "title": "How Spanner became a global, mission-critical database | Google Cloud Blog", "snippetInfo": [ { "snippet": "... SQL \u003cb\u003evs\u003c/b\u003e. NoSQL dichotomy may no longer be relevant." The \u003cb\u003eSpanner\u003c/b\u003e SQL query processor, while recognizable as a standard implementation, has unique ...", "snippetStatus": "SUCCESS" } ] } ] } } ] } ] }, "session": { "name": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", "state": "IN_PROGRESS", "userPseudoId": "test_user", "turns": [ { "query": { "queryId": "projects/123456/locations/global/questions/741830", "text": "Compare bigquery with spanner database?" }, "answer": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072" } ], "startTime": "2024-09-13T18:47:10.465311Z", "endTime": "2024-09-13T18:47:10.465311Z" }, "answerQueryToken": "NMwKDAjFkpK3BhDU24uZAhIkNjZlNDIyZWYtMDAwMC0yMjVmLWIxMmQtZjQwMzA0M2FkYmNj" }
  4. Wiederholen Sie Schritt 3 für jede neue Abfrage in der Sitzung.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine


def create_session(
    project_id: str,
    location: str,
    engine_id: str,
    user_pseudo_id: str,
) -> discoveryengine.Session:
    """Creates a session.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
        user_pseudo_id: A unique identifier for tracking visitors. For example, this
          could be implemented with an HTTP cookie, which should be able to
          uniquely identify a visitor on a single device.
    Returns:
        discoveryengine.Session: The newly created Session.
    """

    client = discoveryengine.ConversationalSearchServiceClient()

    session = client.create_session(
        # The full resource name of the engine
        parent=f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}",
        session=discoveryengine.Session(user_pseudo_id=user_pseudo_id),
    )

    # Send Session name in `answer_query()`
    print(f"Session: {session.name}")
    return session

Sitzung aus dem Datenspeicher abrufen

Im folgenden Befehl wird gezeigt, wie die Methode get aufgerufen und eine Sitzung aus dem Datenspeicher abgerufen wird.

REST

So rufen Sie eine Sitzung aus einem Datenspeicher ab:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • SESSION_ID: die ID der Sitzung, die Sie abrufen möchten.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine


def get_session(
    project_id: str,
    location: str,
    engine_id: str,
    session_id: str,
) -> discoveryengine.Session:
    """Retrieves a session.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
        session_id: The ID of the session.
    """

    client = discoveryengine.ConversationalSearchServiceClient()

    # The full resource name of the session
    name = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/sessions/{session_id}"

    session = client.get_session(name=name)

    print(f"Session details: {session}")
    return session

Sitzung aus der App löschen

Im folgenden Befehl wird gezeigt, wie die Methode delete aufgerufen und eine Sitzung aus dem Datenspeicher gelöscht wird.

Standardmäßig werden Sitzungen, die älter als 60 Tage sind, automatisch gelöscht. Wenn Sie jedoch eine bestimmte Sitzung löschen möchten, z. B. weil sie vertrauliche Inhalte enthält, verwenden Sie diesen API-Aufruf.

REST

So löschen Sie eine Sitzung aus einer App:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • SESSION_ID: Die ID der Sitzung, die Sie löschen möchten.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine


def delete_session(
    project_id: str,
    location: str,
    engine_id: str,
    session_id: str,
) -> None:
    """Deletes a session.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
        session_id: The ID of the session.
    """

    client = discoveryengine.ConversationalSearchServiceClient()

    # The full resource name of the session
    name = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/sessions/{session_id}"

    client.delete_session(name=name)

    print(f"Session {name} deleted.")

Sitzung aktualisieren

Es kann aus verschiedenen Gründen notwendig werden, eine Sitzung zu aktualisieren. Sie haben folgende Möglichkeiten:

  • Sitzung als abgeschlossen markieren
  • Nachrichten aus einer Sitzung in eine andere zusammenführen
  • Pseudo-ID eines Nutzers ändern

Im folgenden Befehl wird gezeigt, wie die Methode patch aufgerufen und eine Sitzung im Datenspeicher aktualisiert wird.

REST

So aktualisieren Sie eine Sitzung über eine App:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID?updateMask=state" \
      -d '{
            "state": "NEW_STATE"
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • SESSION_ID: Die ID der Sitzung, die Sie aktualisieren möchten.
    • NEW_STATE: Der neue Wert für den Status, z. B. IN_PROGRESS.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine
from google.protobuf import field_mask_pb2


def update_session(
    project_id: str,
    location: str,
    engine_id: str,
    session_id: str,
) -> discoveryengine.Session:
    """Updates a session.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
        session_id: The ID of the session.
    Returns:
        discoveryengine.Session: The updated Session.
    """
    client = discoveryengine.ConversationalSearchServiceClient()

    # The full resource name of the session
    name = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/sessions/{session_id}"

    session = discoveryengine.Session(
        name=name,
        state=discoveryengine.Session.State.IN_PROGRESS,  # Options: IN_PROGRESS, STATE_UNSPECIFIED
    )

    # Fields to Update
    update_mask = field_mask_pb2.FieldMask(paths=["state"])

    session = client.update_session(session=session, update_mask=update_mask)
    print(f"Updated session: {session.name}")
    return session

Alle Sitzungen auflisten

Im folgenden Befehl wird gezeigt, wie die Methode list aufgerufen und die Sitzungen im Datenspeicher aufgelistet werden.

REST

So listen Sie die Sitzungen für eine App auf:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine


def list_sessions(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.ListSessionsResponse:
    """Lists all sessions associated with a data store.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
    Returns:
        discoveryengine.ListSessionsResponse: The list of sessions.
    """

    client = discoveryengine.ConversationalSearchServiceClient()

    # The full resource name of the engine
    parent = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}"

    response = client.list_sessions(
        request=discoveryengine.ListSessionsRequest(
            parent=parent,
            filter='state="IN_PROGRESS"',  # Optional: Filter requests by userPseudoId or state
            order_by="update_time",  # Optional: Sort results
        )
    )

    print("Sessions:")
    for session in response.sessions:
        print(session)

    return response

Sitzungen für einen Nutzer auflisten

Im folgenden Befehl wird gezeigt, wie die Methode list aufgerufen wird, um Sitzungen aufzulisten, die mit einem Nutzer oder Besucher verknüpft sind.

REST

So rufen Sie Sitzungen auf, die mit einem Nutzer oder Besucher verknüpft sind:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions?filter=userPseudoId=USER_PSEUDO_ID"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • USER_PSEUDO_ID: die Pseudo-ID des Nutzers, dessen Sitzungen Sie auflisten möchten.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine


def list_sessions(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.ListSessionsResponse:
    """Lists all sessions associated with a data store.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
    Returns:
        discoveryengine.ListSessionsResponse: The list of sessions.
    """

    client = discoveryengine.ConversationalSearchServiceClient()

    # The full resource name of the engine
    parent = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}"

    response = client.list_sessions(
        request=discoveryengine.ListSessionsRequest(
            parent=parent,
            filter='state="IN_PROGRESS"',  # Optional: Filter requests by userPseudoId or state
            order_by="update_time",  # Optional: Sort results
        )
    )

    print("Sessions:")
    for session in response.sessions:
        print(session)

    return response

Sitzungen für einen Nutzer und einen Status auflisten

Im folgenden Befehl wird gezeigt, wie die Methode list aufgerufen wird, um Sitzungen in einem bestimmten Status für einen bestimmten Nutzer aufzulisten.

REST

So listen Sie offene oder geschlossene Sitzungen für einen Nutzer auf, die mit einem bestimmten Nutzer oder Besucher verknüpft sind:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions?filter=userPseudoId=USER_PSEUDO_ID%20AND%20state=STATE"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • APP_ID: die ID der Vertex AI Search-Anwendung.
    • USER_PSEUDO_ID: die Pseudo-ID des Nutzers, dessen Sitzungen Sie auflisten möchten.
    • STATE: den Status der Sitzung: STATE_UNSPECIFIED (geschlossen oder unbekannt) oder IN_PROGRESS (offen).

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import discoveryengine_v1 as discoveryengine


def list_sessions(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.ListSessionsResponse:
    """Lists all sessions associated with a data store.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The location of the app.
        engine_id: The ID of the app.
    Returns:
        discoveryengine.ListSessionsResponse: The list of sessions.
    """

    client = discoveryengine.ConversationalSearchServiceClient()

    # The full resource name of the engine
    parent = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}"

    response = client.list_sessions(
        request=discoveryengine.ListSessionsRequest(
            parent=parent,
            filter='state="IN_PROGRESS"',  # Optional: Filter requests by userPseudoId or state
            order_by="update_time",  # Optional: Sort results
        )
    )

    print("Sessions:")
    for session in response.sessions:
        print(session)

    return response