Mit weiterführenden Fragen suchen

Auf dieser Seite wird die Suche mit Follow-ups für Vertex AI Search vorgestellt und es wird gezeigt, wie Sie sie mit API-Aufrufen implementieren.

Wenn Sie dem Such-Widget die Suche mit Follow-ups hinzufügen möchten, lesen Sie den Abschnitt Ergebnisse für das Such-Widget konfigurieren.

Die Suche mit Follow-ups ist für Such-Apps mit unstrukturierten Daten und Websites verfügbar.

Mit weiterführenden Fragen suchen

Die Suche mit Folgefragen basiert auf generativen KI-Modellen. Die Suche mit Follow-ups unterscheidet sich von der regulären Suche nach unstrukturierten Daten, da bei der Suche mit Follow-ups frühere Suchanfragen in derselben Suchsitzung berücksichtigt werden.

Die Funktion „Mit weiterführenden Fragen suchen“ unterstützt Folgendes:

  • Verarbeitung von Abfragen in natürlicher Sprache:Gemini verarbeitet und versteht Eingaben in menschlicher Sprache, ermittelt die Absicht hinter einer Anfrage und gibt relevante Ergebnisse zurück.

  • Kontextbezug: Gemini versteht den Kontext früherer Interaktionen und liefert kontextbezogene Antworten.

  • Multi-Turn:Nutzer können Folgefragen stellen und relevante Antworten erhalten.

Beispiel für die Suche mit weiterführenden Fragen

Hier ein Beispiel für die Suche mit weiterführenden Fragen: Angenommen, Sie möchten etwas über einen Urlaub in Mexiko wissen:

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

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

  • Sie:Wie lautet der Wechselkurs?

  • Suche mit Follow-up-Fragen:1 $ entspricht ungefähr 17,65 mexikanischen Pesos.

  • Sie:Wie hoch ist die Durchschnittstemperatur im Dezember?

  • Suche mit Follow-ups:Die Durchschnittstemperatur liegt zwischen 21 und 26 °C. Die Durchschnittstemperatur in Cancún liegt bei etwa 25 °C.

Bei der regulären Suche wäre Ihre Frage „Wie lautet der Wechselkurs?“ nicht beantwortbar, da die reguläre Suche nicht wüsste, dass Sie den mexikanischen Wechselkurs wissen möchten. Bei einer normalen Suche würde der Kontext nicht beibehalten, um Ihnen Temperaturen für Mexiko zu liefern.

Über Konversationen

Bei der Suche mit Follow-ups besteht eine Unterhaltung aus Textanfragen eines Nutzers und Antworten von Vertex AI Search.

Diese Anfrage- und Antwortpaare werden manchmal als Nachrichten bezeichnet. Im vorherigen Beispiel besteht die zweite Nachricht aus „What is the exchange rate?“ (Wie lautet der Wechselkurs?) und „1 USD is equal to approximately 17.65 Mexican pesos.“ (1 USD entspricht ungefähr 17, 65 mexikanischen Pesos).

Die Unterhaltungen werden im selben Datenspeicher wie die unstrukturierten Daten gespeichert. Im Datenspeicher wird eine Unterhaltung durch die Conversation-Ressource dargestellt. Die Konversationsressource enthält neben den Nachrichten mit der Anfrage und der Antwort Folgendes:

  • Einen eindeutigen Namen (die Unterhaltungs-ID).

  • Einen Status („Wird verarbeitet“ oder „Abgeschlossen“)

  • Eine Pseudo-ID für den Nutzer, also eine Besucher-ID, mit der der Nutzer nachverfolgt wird. Sie kann programmatisch zugewiesen werden.

  • Eine Start- und eine Endzeit.

Hinweise

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind. Die Anforderungen variieren je nach Art der App.

Unterhaltungen speichern und Antworten erhalten

Sie können die Befehlszeile oder Clientbibliotheken verwenden, um Suchantworten zu generieren und die Unterhaltung mit Folgeanfragen zu speichern.

REST

So erstellen Sie eine Unterhaltung über die Befehlszeile und generieren Antworten auf die Eingabe des Nutzers:

  1. Geben Sie den Datenspeicher an, in dem Sie den Unterhaltungsverlauf speichern möchten:

    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/dataStores/DATA_STORE_ID/conversations" \
    -d '{
      "user_pseudo_id": "USER_PSEUDO_ID"
    }'
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • USER_PSEUDO_ID: Eine eindeutige Kennung zum Tracking eines Besuchers, der über die Suche kommt. Sie können dies beispielsweise mit einem HTTP-Cookie implementieren, das einen Besucher auf einem einzelnen Gerät eindeutig identifiziert.

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl POST zu sehen.

    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
  2. So generieren Sie eine Suchantwort und fügen sie einer neuen oder vorhandenen Unterhaltung in Ihrem Datenspeicher 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "filter": "FILTER"
    }'
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Eine eindeutige ID für die Unterhaltung, z. B. 123456. Verwenden Sie bei einer Unterhaltung mit Suchanfragen und Folgeanfragen in jeder Runde dieselbe Unterhaltungs-ID.

    • FREE_TEXT: Ein Freitextstring, der die Frage des Nutzers enthält, z. B. what is bigquery?

    • FILTER: Ein Textfeld zum Filtern der Suche mit einem Filterausdruck. Der Standardwert ist ein leerer String. Die Art und Weise, wie Sie Ihren Filter erstellen, hängt davon ab, ob Sie Websitedaten oder unstrukturierte Daten mit Metadaten haben. Weitere Informationen finden Sie unter Suchergebnisse mit Follow-ups filtern.

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl POST zu sehen.

    {
    "reply": {
    "summary": {
      "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
    }
    },
    "conversation": {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "IN_PROGRESS",
    "userPseudoId": "test_id",
    "messages": [
      {
        "userInput": {
          "input": "what is bigquery?"
        }
      },
      {
        "reply": {
          "summary": {
            "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
          }
        }
      }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    },
    "searchResults": [
    {
      "id": "c86f19582746b56f71c9bb6929893835",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/c86f19582746b56f71c9bb6929893835",
        "id": "c86f19582746b56f71c9bb6929893835",
        "derivedStructData": {
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/94627ee0249dfdfda25b1b158c717bca.txt",
          "snippets": [
            {
              "snippet_status": "SUCCESS",
              "snippet": "For larger websites, talk to the IT team and/or utilize a big data solution such as Google \u003cb\u003eBigQuery\u003c/b\u003e to extract all URLs. It may also be necessary to ask the ..."
            }
          ],
          "extractive_answers": [
            {
              "content": "Alternatively, load the Server Log Files into Google BigQuery and use the Google BigQuery interface or the 360 Data Studio to analyze the data. To monitor the indexation numbers of the HTTP and the HTTPS version, keep an eye on all submitted XML Sitemaps."
            }
          ]
        }
      }
    },
    {
      "id": "774bd7ce2a3509ab4bbd1fc876f39dc2",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/774bd7ce2a3509ab4bbd1fc876f39dc2",
        "id": "774bd7ce2a3509ab4bbd1fc876f39dc2",
        "derivedStructData": {
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "extractive_answers": [
            {
              "content": "This consists of a collection of virtual tables. A virtual table exists for every queryable object type (content type if you prefer) in the repository. Each row in these virtual tables correspond to an instance of the corresponding object type (or of one of its subtypes)."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/28841ef8590a105e9415f1390648a811.txt"
        }
      }
    },
    {
      "id": "3e1d306e49aefd9e23f2d5f7a66e6c76",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/3e1d306e49aefd9e23f2d5f7a66e6c76",
        "id": "3e1d306e49aefd9e23f2d5f7a66e6c76",
        "derivedStructData": {
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "extractive_answers": [
            {
              "content": "Other logo switches are based on search terms. For instance, if the term "ASCII art" is searched, an ASCII art version of the Google logo will appear next to the search box."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/98008df3eef5d3ee1661c52f23189190.txt"
        }
      }
    },
    {
      "id": "cf94e24aacd47cd2c2f5effcbdeda832",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/cf94e24aacd47cd2c2f5effcbdeda832",
        "id": "cf94e24aacd47cd2c2f5effcbdeda832",
        "derivedStructData": {
          "extractive_answers": [
            {
              "content": "The company is listed on the NASDAQ stock exchange under the ticker symbols GOOGL and GOOG, and on the Frankfurt Stock Exchange under the ticker symbol GGQ1. These ticker symbols now refer to Alphabet Inc., Google's holding company, since the fourth quarter of 2015."
            }
          ],
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/d80204083ef1096799fa4b7257548b33.txt"
        }
      }
    },
    {
      "id": "05bc6497a4e7e6ca36b2e495b354b764",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/05bc6497a4e7e6ca36b2e495b354b764",
        "id": "05bc6497a4e7e6ca36b2e495b354b764",
        "derivedStructData": {
          "extractive_answers": [
            {
              "content": "SQL injection countermeasures are designed to utilize secure programming methods. By changing the variables used by the application code, weaknesses in applications can be greatly minimized. This report will detail how to perform a SQL injection and explore the best countermeasures to prevent the attack."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/7cba75d646f5774a21d96801bec68bb3.txt",
          "snippets": [
            {
              "snippet_status": "NO_SNIPPET_AVAILABLE",
              "snippet": "No snippet is available for this page."
            }
          ]
        }
      }
    }
    ]
    }
  3. Wiederholen Sie Schritt 2 für jede neue Frage im Gespräch.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications Python API.

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

from typing import List

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"
# data_store_id = "YOUR_DATA_STORE_ID"
# search_queries = ["YOUR_FIRST_SEARCH_QUERY", "YOUR_SECOND_SEARCH_QUERY"]


def multi_turn_search_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    search_queries: List[str],
) -> List[discoveryengine.ConverseConversationResponse]:
    #  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
    )

    # Initialize Multi-Turn Session
    conversation = client.create_conversation(
        # The full resource name of the data store
        # e.g. projects/{project_id}/locations/{location}/dataStores/{data_store_id}
        parent=client.data_store_path(
            project=project_id, location=location, data_store=data_store_id
        ),
        conversation=discoveryengine.Conversation(),
    )


    for search_query in search_queries:
        # Add new message to session
        request = discoveryengine.ConverseConversationRequest(
            name=conversation.name,
            query=discoveryengine.TextInput(input=search_query),
            serving_config=client.serving_config_path(
                project=project_id,
                location=location,
                data_store=data_store_id,
                serving_config="default_config",
            ),
            # Options for the returned summary
            summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec(
                # Number of results to include in summary
                summary_result_count=3,
                include_citations=True,
            ),
        )
        response = client.converse_conversation(request)

        print(f"Reply: {response.reply.summary.summary_text}\n")

        for i, result in enumerate(response.search_results, 1):
            result_data = result.document.derived_struct_data
            print(f"[{i}]")
            print(f"Link: {result_data['link']}")
            print(f"First Snippet: {result_data['snippets'][0]['snippet']}")
            print(
                "First Extractive Answer: \n"
                f"\tPage: {result_data['extractive_answers'][0]['pageNumber']}\n"
                f"\tContent: {result_data['extractive_answers'][0]['content']}\n\n"
            )
        print("\n\n")

Suche mit weiterführenden Fragen filtern

Wenn Sie eine Anfrage mit Folgefragen stellen, können Sie das Feld filter einfügen, um den Pool von Dokumenten einzuschränken, aus denen eine Antwort abgeleitet wird. Sie erstellen den Filter mit Filterausdrücken. Die Filterausdrücke, die Sie verwenden, variieren je nachdem, ob Sie Websitedaten oder unstrukturierte Daten mit Metadaten haben.

Filterausdrücke für Websitedaten

Wenn Sie einen Datenspeicher mit Websitedaten haben, können Sie Ihre Suche mit einer Follow-up-Anfrage mithilfe der Filterausdrücke in Filterausdrücke mit erweiterter Websiteindexierung filtern. Nachdem Sie den Filterausdruck erstellt haben, verwenden Sie ihn für den Wert des Felds filter in Schritt 2 von Unterhaltungen speichern und Antworten erhalten.

Filterausdrücke für unstrukturierte Daten mit Metadaten

Wenn Sie einen Datenspeicher mit unstrukturierten Daten mit Metadaten haben, können Sie Ihre Suche mit einer Follow-up-Anfrage filtern, sodass Dokumente basierend auf den Metadatenfeldern zurückgegeben werden, die die Dokumente enthalten. Unter Suche nach strukturierten oder unstrukturierten Daten filtern erfahren Sie, wie Sie Metadaten verwenden, um die normale Suche (ohne Follow-ups) zu filtern. Sie können dieselben Prinzipien verwenden, um die Suche mit Follow-ups mithilfe von Metadaten zu filtern. Nachdem Sie den Filterausdruck erstellt haben, verwenden Sie ihn als Wert für das Feld filter in Schritt 2 von Unterhaltungen speichern und Antworten erhalten.

Zusammenfassung konfigurieren

Die Antwortnachricht aus der Suche mit Follow-ups ist eine generierte Zusammenfassung, die in summaryText zurückgegeben wird. Es gibt verschiedene Möglichkeiten, die generierte Zusammenfassung zu konfigurieren. Diese werden in den folgenden Abschnitten beschrieben:

Zitationen mit Suchergebnissen abrufen

Wenn Quellenangaben angegeben sind, handelt es sich um Zahlen, die inline in einer Zusammenfassung der Suchergebnisse platziert werden. Diese Zahlen geben an, aus welchen Suchergebnissen bestimmte Sätze in der Zusammenfassung stammen.

So erhalten Sie Zitationen:

  • Folgen Sie der Anleitung unter Unterhaltungen im Store speichern und Chatantworten erhalten, führen Sie aber in Schritt 2 diesen Befehl aus, der das Feld summarySpec enthält, mit dem includeCitations auf „true“ gesetzt wird.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "include_citations": true }
    }'
    

    Klicken Sie, um einen Teil der Antwort auf einen Beispielbefehl zu sehen.

    {
    "reply": {
    "summary": {
    }
    "reply": {
    "summary": {
      "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly [1]. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data [2, 3].",
      "safetyAttributes": {
        "categories": [
          "Finance",
          "Legal"
        ]

Die Zitationsnummern sind im Zusammenfassungstext enthalten. Die Zitationsnummern beziehen sich auf die zurückgegebenen Suchergebnisse und sind 1-basiert. [1] bedeutet beispielsweise, dass der Satz dem ersten Suchergebnis zugeordnet ist. [2, 3] bedeutet, dass der Satz sowohl dem zweiten als auch dem dritten Suchergebnis zugeordnet wird.

Feindselige Anfragen ignorieren

Adversarial-Anfragen enthalten negative Kommentare oder sind darauf ausgelegt, unsichere Ausgaben zu generieren, die gegen Richtlinien verstoßen. Sie können festlegen, dass für feindselige Anfragen keine Suchzusammenfassungen zurückgegeben werden sollen. Wenn eine feindselige Anfrage ignoriert wird, enthält die Eigenschaft summaryText einen Standardtext, der angibt, dass keine Zusammenfassung der Suche zurückgegeben wird. Suchdokumente werden auch für kontrafaktische Anfragen zurückgegeben, obwohl keine Zusammenfassungen der Suche erstellt werden.

So geben Sie an, dass für feindselige Anfragen keine Suchzusammenfassungen zurückgegeben werden sollen:

  • Folgen Sie der Anleitung unter Unterhaltungen im Store speichern und Chatantworten erhalten, führen Sie aber in Schritt 2 diesen Befehl aus, der das Feld summarySpec enthält, mit dem ignoreAdversarialQuery auf „true“ gesetzt wird.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "ignoreAdversarialQuery": true }
    }'
    

    Klicken Sie auf einen Teil der Antwort auf eine feindselige Anfrage.

    "reply": {
    "summary": {
      "summaryText": "A summary could not be generated for your search query. Here are some search results.",
      "summarySkippedReasons": [
        "ADVERSARIAL_QUERY_IGNORED"
      ]

Anfragen ignorieren, die keine Zusammenfassung anfordern

Bei Anfragen, die keine Zusammenfassung erfordern, werden Ergebnisse zurückgegeben, die sich nicht für eine Zusammenfassung eignen. „Warum ist der Himmel blau?“ und „Wer ist der beste Fußballspieler der Welt?“ sind beispielsweise Anfragen, die auf eine Zusammenfassung abzielen, „Flughafen San Francisco“ und „Fußball-Weltmeisterschaft 2026“ jedoch nicht. Höchstwahrscheinlich handelt es sich um Navigationsanfragen. Sie können festlegen, dass für Anfragen, die nicht auf Zusammenfassungen ausgerichtet sind, keine Suchzusammenfassungen zurückgegeben werden sollen. Suchdokumente werden für Anfragen zurückgegeben, die nicht auf Zusammenfassungen abzielen, auch wenn keine Suchzusammenfassungen zurückgegeben werden.

So geben Sie an, dass für Anfragen, die keine Zusammenfassung erfordern, keine Zusammenfassungen zurückgegeben werden sollen:

  • Folgen Sie der Anleitung unter Unterhaltungen im Store speichern und Chatantworten erhalten, führen Sie aber in Schritt 2 diesen Befehl aus, der das Feld summarySpec enthält, mit dem ignoreNonSummarySeekingQuery auf „true“ gesetzt wird.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "ignore_non_summary_seeking_query": true }
    }'
    

    Klicken Sie auf einen Teil der Antwort auf eine feindselige Anfrage.

     "reply": {
    "summary": {
      "summaryText": "A summary could not be generated for your search query. Here are some search results.",
      "summarySkippedReasons": [
        "NON_SUMMARY_SEEKING_QUERY_IGNORED"
      ]

Anzahl der Ergebnisse festlegen, die in der Zusammenfassung verwendet werden sollen

Sie können die Anzahl der Ergebnisse angeben, die zum Generieren der Zusammenfassung verwendet werden sollen. Wenn das Feld summaryResultCount nicht festgelegt ist, werden standardmäßig alle zurückgegebenen Ergebnisse zum Generieren der Zusammenfassung verwendet.

So legen Sie die Anzahl der Top-Ergebnisse fest, die für die Zusammenfassung verwendet werden sollen:

  • Folgen Sie der Anleitung unter Unterhaltungen speichern und Chatantworten erhalten. Führen Sie aber in Schritt 2 diesen Befehl aus, der das Feld summarySpec enthält, mit dem summaryResultCount festgelegt wird.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "summary_result_count": NUMBER_OF_RESULTS }
    }'
    

    NUMBER_OF_RESULTS: Die Anzahl der Top-Ergebnisse, aus denen die Suchzusammenfassung generiert werden soll. Wenn die Anzahl der zurückgegebenen Ergebnisse kleiner als summaryResultCount ist, wird die Zusammenfassung aus allen Ergebnissen generiert. Der Höchstwert ist 5.

Benutzerdefinierte Zusammenfassungen

Sie können benutzerdefinierte Zusammenfassungen erhalten, indem Sie beim Anfordern einer Zusammenfassung Anweisungen in natürlicher Sprache im Feld modelPromptSpec.preamble angeben.

Sie können Anpassungen wie Länge und Detaillierungsgrad, Ausgabestil (z. B. „einfach“), Ausgabesprache, Fokus der Antwort und Format (z. B. Tabellen, Aufzählungszeichen und XML) anfordern.

Für die Anfrage „What are the benefits of bigquery?“ (Was sind die Vorteile von BigQuery?) könnten Sie beispielsweise die folgenden Anpassungsanweisungen eingeben:

  • Beispielanleitung: "please show the answer format in an ordered list"

    Beispielantwort:

    The benefits of BigQuery are:
    
    1. Increased business productivity
    2. IT staff productivity
    3. Reduced infrastructure costs
    4. Loading and exporting data are free
    
  • Beispielanleitung: give a very detailed answer

    Beispielantwort:

    BigQuery is a serverless, highly scalable, and cost-effective cloud data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that takes care of provisioning, scaling, and managing the underlying infrastructure, so you can focus on analyzing your data. BigQuery is also integrated with other Google Cloud services, such as Google Kubernetes Engine, Cloud Data Fusion, and Cloud Dataproc, making it easy to build and deploy data pipelines.
    
    Here are some of the benefits of using BigQuery:
    
    * **Fast and scalable:** BigQuery can process petabytes of data very quickly, and it can scale to handle even the most demanding workloads. * **Cost-effective:** BigQuery is a very cost-effective way to store and analyze data. You only pay for the data that you use, and there are no upfront costs or commitments. * **Secure:** BigQuery is a secure platform that meets the needs of even the most security-conscious organizations. * **Easy to use:** BigQuery is easy to use, even for non-technical users. It has a simple and intuitive user interface, and it supports a variety of data sources. * **Integrated with other Google Cloud services:** BigQuery is integrated with other Google Cloud services, making it easy to build and deploy data pipelines.
    
    If you are looking for a fast, scalable, and cost-effective way to analyze your data, then BigQuery is a great option.
    

So erhalten Sie eine benutzerdefinierte Zusammenfassung:

  • Folgen Sie der Anleitung Unterhaltungen speichern und Chatantworten erhalten oben. Führen Sie jedoch in Schritt 2 den folgenden Befehl aus, der das Feld summarySpec enthält, in dem die Anpassungsanweisung in modelPromptSpec.preamble angegeben wird.

      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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
      -d '{
        "query": { "input": "FREE_TEXT"},
        "summarySpec": {
          "modelPromptSpec": {
            "preamble": "CUSTOMIZATION_INSTRUCTIONS"
          }
        }
      }'
    
    • CUSTOMIZATION_INSTRUCTIONS: Die Anleitung zur Anpassung als String.

Mit SafeSearch können Sie explizite, unsichere oder richtlinienwidrige Ausgaben aus Zusammenfassungsantworten herausfiltern. Weitere Informationen zu SafeSearch finden Sie unter Sicherheitseinstellungen für Vertex AI Search.

So wenden Sie die Funktion „SafeSearch“ auf eine Chat-Antwort an:

  • Folgen Sie der Anleitung unter Unterhaltungen speichern und Chatantworten erhalten, außer bei Schritt 2. Geben Sie dort unter der Anfrage safe_search an.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "safe_search": true
    }'
    

Gespeicherte Unterhaltungen ansehen und ändern

Sie können die Befehlszeile verwenden, um gespeicherte Unterhaltungen abzurufen, zu löschen, zu aktualisieren und aufzulisten.

Unterhaltung aus dem Datenspeicher abrufen

So rufen Sie alle Details zu einer bestimmten Unterhaltung aus einem Datenspeicher ab:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID"
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID:Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl GET zu sehen.

    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/2040473575290303058",
    "state": "IN_PROGRESS",
    "userPseudoId": "2040473575290303058",
    "messages": [
    {
      "userInput": {
        "input": "what is bigquery?"
      }
    },
    {
      "reply": {
        "summary": {
          "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
        }
      }
    }
    ],
    "startTime": "2023-08-15T20:11:24.046735Z"
    }

Unterhaltung aus dem Datenspeicher löschen

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

So löschen Sie eine Unterhaltung aus einem Datenspeicher:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID"
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung

    Die Antwort auf den Befehl DELETE sieht so aus:

    {}
    

Unterhaltung aktualisieren

Es gibt verschiedene Gründe, warum Sie eine Unterhaltung aktualisieren möchten. Sie können beispielsweise Folgendes tun:

  • Unterhaltungen als abgeschlossen markieren

  • Nachrichten aus einer Unterhaltung in eine andere zusammenführen

  • Ändern Sie die user_pseudo_id.

So aktualisieren Sie die state in einer Unterhaltung:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID?updateMask=state" \
    -d '{
      "state": "NEW_STATE"
    }'
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung, die Sie aktualisieren möchten

    • NEW_STATE: Der neue Wert für den Status, z. B. COMPLETED.

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl PATCH zu sehen.

    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "COMPLETED",
    "userPseudoId": "test_id1",
    "messages": [
    {
      "userInput": {
        "input": "what is bigquery?"
      }
    },
    {
      "reply": {
        "summary": {
          "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
        }
      }
    }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    }

So aktualisieren Sie die user_pseudo_id in einer Unterhaltung:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID?updateMask=user_pseudo_id" \
    -d '{
      "user_pseudo_id": "NEW_USER_PSEUDO_ID"
    }'
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung, die Sie aktualisieren möchten

    • NEW_USER_PSEUDO_ID: Der neue Wert für die pseudonymisierte Nutzer-ID

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl PATCH zu sehen.

    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "IN_PROGRESS",
    "userPseudoId": "test_id1",
    "messages": [
    {
      "userInput": {
        "input": "what is bigquery?"
      }
    },
    {
      "reply": {
        "summary": {
          "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
        }
      }
    }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    }

Im vorangegangenen Befehl sehen Sie, wie Sie user_pseudo_id. ändern. Sie können jedoch auch andere Felder in der Unterhaltung aktualisieren, indem Sie user_pseudo_id durch andere Felder in der Conversation-Ressource ersetzen.

Alle Unterhaltungen auflisten

So listen Sie alle Unterhaltungen in einem Datenspeicher auf:

  • 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/dataStores/DATA_STORE_ID/conversations"
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl GET zu sehen.

    {
    "conversations": [
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ],
      "startTime": "2023-08-15T20:08:12.094639Z"
    },
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/2040473575290303058",
      "state": "IN_PROGRESS",
      "userPseudoId": "2040473575290303058",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ]
    }
    ]
    }

Die Antwort enthält eine Liste der Unterhaltungen und die next_page_token. Wenn kein next_page_token zurückgegeben wird, gibt es keine weiteren Unterhaltungen, die aufgelistet werden können.

Die Standardseitengröße ist 50.

Unterhaltungen nach Filter auflisten

Anstatt alle Unterhaltungen in einem Datenspeicher aufzulisten, möchten Sie vielleicht alle offenen Unterhaltungen oder alle Unterhaltungen, die einem bestimmten Nutzer zugeordnet sind, auflisten.

Sie könnten dem Nutzer beispielsweise seine geschlossenen Suchanfragen mit der Option präsentieren, eine davon wieder zu öffnen.

Dazu listen Sie Konversationen auf, die einem bestimmten Filter entsprechen: user_pseudo_id oder state (IN_PROGRESS oder COMPLETED).

Konversationen für einen Nutzer auflisten

So rufen Sie eine Liste der Konversationen auf, die einem Nutzer oder Besucher zugeordnet sind:

  • 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/dataStores/DATA_STORE_ID/conversations?filter=user_pseudo_id=USER_PSEUDO_ID"
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • USER_PSEUDO_ID: Die Pseudo-ID des Nutzers, dessen Unterhaltungen Sie auflisten möchten.

    Die Antwort auf den Befehl GET sieht in etwa so aus:

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl GET zu sehen.

    {
    "conversations": [
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ],
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
    ]
    }

Unterhaltungen für einen Nutzer und einen Status auflisten

So listen Sie Unterhaltungen in einem bestimmten Status (offen oder geschlossen) auf, die einem Nutzer oder Besucher zugeordnet sind:

  • 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/dataStores/DATA_STORE_ID/conversations?filter=user_pseudo_id=USER_PSEUDO_ID%20AND%20state=STATE"
    
    • PROJECT_ID: Die Projektnummer oder ‑ID Ihres Google Cloud Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • USER_PSEUDO_ID: Die Pseudo-ID des Nutzers, dessen Unterhaltungen Sie auflisten möchten.

    • STATE: Gibt an, ob die Unterhaltung offen oder geschlossen ist (IN_PROGRESS oder COMPLETED).

    Die Antwort auf den Befehl GET sieht in etwa so aus:

    Klicken Sie hier, um ein Beispiel für eine Antwort auf den Befehl GET zu sehen.

    {
    "conversations": [
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ],
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
    ]
    }

Allgemeine Informationen zur Filtersyntax finden Sie unter AIP-160 – Filtern.

„Ähnliche Fragen“ ist ein Vorschaufeature mit Zulassungsliste, mit dem zusätzlich zu Suchergebnissen auch ähnliche Fragen zurückgegeben werden können.

Wenn Sie beispielsweise fragen: „Wann ist die beste Reisezeit für Mexiko?“, wird Ihre Frage nicht nur beantwortet, sondern es werden auch andere Fragen vorgeschlagen, die Sie stellen könnten, z. B. „In welchem Monat ist eine Reise nach Mexiko am günstigsten?“ und „Wann ist in Mexiko Hauptsaison?“.

Wenn Ihre Such-App ähnliche Fragen zurückgeben soll, wenden Sie sich an Ihr Google-Kontoteam und teilen Sie ihm mit, für welche Projekte und Apps Sie ähnliche Fragen aktivieren möchten. Wenn Sie nicht die Standardbereitstellungskonfiguration verwenden, müssen Sie auch den Namen der Bereitstellungskonfiguration angeben.

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

Weitere Informationen

  • Weitere Informationen zu den Feldern summaryResultCount, includeCitations, ignoreAdversarialQuery und ignoreNonSummarySeekingQuery finden Sie in der AI Applications API-Dokumentation unter SummarySpec.

  • Weitere Beispiele zum Abrufen von Suchzusammenfassungen finden Sie unter Zusammenfassungen abrufen.