Fundierte Antworten mit RAG generieren

Im Rahmen von Retrieval Augmented Generation (RAG) in AI Applications können Sie fundierte Antworten auf Prompts basierend auf den folgenden Grounding-Quellen generieren:

  • Google Suche: Verwenden Sie die Fundierung mit der Google Suche, wenn Sie das Modell mit weltweitem Wissen, einer Vielzahl von Themen oder aktuellen Informationen aus dem Internet verknüpfen möchten. Die Fundierung mit der Google Suche unterstützt die dynamische Abfrage, mit der Sie fundierte Ergebnisse mit der Google Suche nur bei Bedarf generieren können. Daher wird in der Konfiguration für die dynamische Abfrage geprüft, ob für einen Prompt Wissen über aktuelle Ereignisse erforderlich ist, und die Fundierung mit der Google Suche wird aktiviert. Weitere Informationen finden Sie unter Dynamisches Abrufen.
  • Inline-Text: Verwenden Sie die Fundierung mit Inline-Text, um die Antwort auf Textabschnitte zu stützen, die als Faktentext bezeichnet werden und in der Anfrage enthalten sind. Ein Fakten-Text ist eine von Nutzern bereitgestellte Aussage, die für eine bestimmte Anfrage als sachlich gilt. Das Modell prüft die Authentizität des Faktentextes nicht.
  • Vertex AI Search-Datenspeicher: Verwenden Sie die Fundierung mit Vertex AI Search, wenn Sie das Modell mit Ihren Unternehmensdokumenten aus Vertex AI Search-Datenspeichern verbinden möchten.

Auf dieser Seite wird beschrieben, wie Sie auf Grundlage dieser Fundierungsquellen fundierte Antworten generieren können. Dazu haben Sie folgende Möglichkeiten:

Außerdem können Sie die Antworten des Modells streamen. Das Generieren einer fundierten Antwort durch Streaming ist eine experimentelle Funktion.

Sie können auch andere Methoden verwenden, um fundierte Antworten zu generieren, die für Ihre Anwendung geeignet sind. Weitere Informationen finden Sie unter Vertex AI-APIs zum Erstellen von Such- und RAG-Funktionen.

Terminologie

Bevor Sie die Methode zum Generieren fundierter Antworten verwenden, sollten Sie sich mit den Ein- und Ausgaben, der Strukturierung Ihrer Anfrage und der RAG-bezogenen Terminologie vertraut machen.

RAG-Begriffe

RAG ist eine Methode, mit der Large Language Models (LLMs) Antworten generieren können, die auf Ihrer ausgewählten Datenquelle basieren. RAG besteht aus zwei Phasen:

  1. Abruf: Das schnelle Auffinden der relevantesten Fakten kann ein häufiges Problem bei der Suche sein. Mit RAG können Sie schnell die Fakten abrufen, die für die Generierung einer Antwort wichtig sind.
  2. Generierung:Die abgerufenen Fakten werden vom LLM verwendet, um eine fundierte Antwort zu generieren.

Daher werden bei der Methode zum Generieren fundierter Antworten die Fakten aus der Fundierungsquelle abgerufen und eine fundierte Antwort generiert.

Eingabedaten

Für die Methode zum Generieren von fundierten Antworten sind die folgenden Eingaben in der Anfrage erforderlich:

  • Rolle: Der Absender eines bestimmten Texts, entweder ein Nutzer (user) oder ein Modell (model).

  • Text: Wenn die Rolle user ist, ist der Text ein Prompt. Wenn die Rolle model ist, ist der Text eine fundierte Antwort. Wie Sie die Rolle und den Text in einer Anfrage angeben, wird so festgelegt:

    • Bei der Generierung einer Antwort in einem einzelnen Durchgang sendet der Nutzer den Prompt-Text in der Anfrage und das Modell den Antworttext in der Antwort.
    • Bei der Generierung von Antworten in mehreren Schritten enthält die Anfrage das Prompt-Antwort-Paar für alle vorherigen Schritte und den Prompt-Text des Nutzers für den aktuellen Schritt. Daher ist die Rolle in einer solchen Anfrage user für einen Prompt-Text und model für den Antworttext.
  • Systemanweisung: Eine Einleitung zu Ihrem Prompt, die das Verhalten des Modells steuert und die Ausgabe entsprechend ändert. Sie können der generierten Antwort beispielsweise eine Persona hinzufügen oder das Modell anweisen, den Ausgabetext auf eine bestimmte Weise zu formatieren. Für die Generierung von Antworten in mehreren Schritten müssen Sie für jeden Schritt Systemanweisungen angeben. Weitere Informationen finden Sie unter Systemanweisungen verwenden.

  • Fundierungsquelle: Die Quelle, auf der die Antwort basiert. Sie kann eine oder mehrere der folgenden sein:

    • Google Suche: Fundiere die Antworten mit Google-Suchergebnissen. Wenn die Fundierungsquelle die Google Suche ist, können Sie eine Konfiguration für den dynamischen Abruf mit einem Grenzwert für den dynamischen Abruf angeben. Weitere Informationen finden Sie unter Dynamisches Abrufen.

    • Inline-Text: Die Antwort muss auf Faktentext basieren, der in der Anfrage angegeben ist. Ein Fakten-Text ist eine von Nutzern bereitgestellte Aussage, die für eine bestimmte Anfrage als sachlich gilt. Das Modell prüft die Authentizität des Faktentextes nicht. Sie können maximal 100 Faktentexte in jeder Inline-Textquelle angeben. Die Fakten können durch Meta-Attribute wie Titel, Autor und URI unterstützt werden. Diese Meta-Attribute werden in der Antwort zurückgegeben, wenn die Chunks zitiert werden, die die Antwort unterstützen.

    • Vertex AI Search-Datenspeicher: Fundieren Sie die Antwort mit den Dokumenten aus Vertex AI Search-Datenspeichern. Sie können keinen Website-Suchdatenspeicher als Fundierungsquelle angeben.

    In einer bestimmten Anfrage können Sie sowohl eine Inline-Textquelle als auch eine Vertex AI Search-Datenspeicherquelle angeben. Sie können die Google Suche nicht mit einer dieser Quellen kombinieren. Wenn Sie Ihre Antworten also mit Google-Suchergebnissen fundieren möchten, müssen Sie eine separate Anfrage senden, in der Sie die Google Suche als einzige Fundierungsquelle angeben.

    Sie können maximal 10 Fundierungsquellen in beliebiger Reihenfolge angeben. Angenommen, Sie stellen die Fundierungsquellen mit der folgenden Anzahl in der folgenden Reihenfolge bereit, um insgesamt 10 Fundierungsquellen zu erhalten:

    • Drei Inline-Textquellen, die jeweils maximal 100 Faktentexte enthalten können
    • Sechs Vertex AI Search-Datenspeicher
    • Eine Inline-Textquelle mit maximal 100 Faktentexten

    Jeder Quelle wird ein Index in der Reihenfolge zugewiesen, in der sie in der Anfrage angegeben ist. Wenn Sie beispielsweise eine Kombination aus Quellen in Ihrer Anfrage angegeben haben, wird der Quellindex wie in der folgenden Tabelle dargestellt zugewiesen:

    Fundierungsquelle Index
    Inline-Text 1 0
    Inline-Text 2 1
    Vertex AI Search-Datenspeicher 1 2
    Inline-Text 3 3
    Vertex AI Search-Datenspeicher 2 4

    Dieser Index wird in der Antwort angegeben und ist hilfreich, um die Herkunft nachzuvollziehen.

  • Generierungsspezifikationen: Die Spezifikationen für die Modellkonfiguration, die aus den folgenden Informationen bestehen:

    • Modell-ID: Gibt das Vertex AI-Gemini-Modell an, das für die Antwortgenerierung verwendet werden soll. Eine Liste der Modelle, mit denen Sie fundierte Antworten generieren können, finden Sie unter Unterstützte Modelle.

    • Modellparameter: Geben Sie die Parameter an, die Sie für das Modell festlegen können, das Sie verwenden möchten. Die Parameter sind: Sprache, Temperatur, Top‑P und Top‑K. Weitere Informationen zu diesen Parametern finden Sie unter Gemini-Modellparameter.

  • Sprachcode: Die Sprache der generierten Antwort entspricht in der Regel der Sprache der Eingabeaufforderung. Wenn im Prompt keine einzelne Sprache angegeben ist (z. B. wenn der Prompt sehr kurz ist und in mehreren Sprachen gültig sein kann), wird die Sprache der Antwort durch das Feld „Sprachcode“ bestimmt.

    Eine Liste der Sprachcodes finden Sie unter Sprachen.

  • Breiten- und Längengrad: Gibt den Breiten- und Längengrad des Nutzers an. Wenn die Anfrage ortsspezifische Fragen enthält, z. B. „Finde ein Café in meiner Nähe“, werden diese Felder verwendet. Wenn die Sprache der Anfrage nicht ermittelt werden kann und der Sprachcode nicht festgelegt ist, werden Breiten- und Längengrad verwendet, um die Sprache der Antwort zu bestimmen.

Ausgabedaten

Die vom Modell generierte Antwort wird als Kandidat bezeichnet und enthält die folgenden Daten. Möglicherweise sind nicht alle Felder in der Ausgabe vorhanden.

  • Rolle: Der Absender der fundierten Antwort. Die Antwort enthält immer den auf den Quellen basierenden Antworttext. Daher ist die Rolle in einer Antwort immer ein Modell.

  • Text: Eine fundierte Antwort.

  • Fundierungspunktzahl: Ein Gleitkommawert im Bereich [0, 1], der angibt, wie gut eine Antwort auf den angegebenen Quellen basiert.

  • Grounding-Metadaten: Metadaten zur Grounding-Quelle. Die Grounding-Metadaten enthalten die folgenden Informationen:

    • Unterstützende Chunks: Eine Liste von Chunks, die die Antwort unterstützen. Jedem Support-Chunk wird ein Support-Chunk-Index zugewiesen, der beim Nachvollziehen der Herkunft hilfreich ist. Jeder Support-Abschnitt enthält Folgendes:

      • Chunk-Text: Ein Teil des Textes, der wörtlich aus der Quelle zitiert wird, aus der die Antwort oder ein Teil der Antwort (der sogenannte Behauptungstext) extrahiert wird. Diese Informationen sind möglicherweise nicht immer in der Antwort enthalten.
      • Quelle: Ein Index, der der Quelle in der Anfrage zugewiesen ist.
      • Quellmetadaten: Metadaten zum Chunk. Je nach Quelle können die Quellmetadaten Folgendes sein:

        • Bei einer Inline-Quelle können die Metadaten die zusätzlichen Details sein, die in der Anfrage angegeben wurden, z. B. Titel, Autor oder URI.
        • Für den Vertex AI Search-Datenspeicher können die Metadaten die Dokument-ID, den Dokumenttitel, den URI (Cloud Storage-Speicherort) oder die Seitenzahl sein.
        • Wenn ein fundiertes Ergebnis generiert wird, enthalten die Metadaten für die Fundierung mit der Google Suche einen URI, der zum Verlag bzw. Webpublisher der Inhalte weiterleitet, die zum Generieren des fundierten Ergebnisses verwendet wurden. Die Metadaten enthalten auch die Domain des Publishers. Die angegebenen URIs sind bis zu 30 Tage lang nach der Generierung des gefundeten Ergebnisses zugänglich.
    • Unterstützung bei der Fundierung: Fundierungsinformationen für eine Behauptung in der Antwort. Die Grounding-Unterstützung enthält die folgenden Informationen:

      • Behauptungstext: Die Antwort oder ein Teil der Antwort, die mit dem Text des Support-Chunks belegt wird.
      • Support-Chunk-Index: Ein Index, der dem Support-Chunk in der Reihenfolge zugewiesen wird, in der er in der Liste der Support-Chunks erscheint.
      • Websuchanfragen: Die vorgeschlagenen Suchanfragen für die Google-Suchvorschläge.
      • Suchvorschläge: Wenn Sie mit einer Antwort Google-Suchvorschläge erhalten, ist diese Antwort ein „fundiertes Ergebnis“, das den Nutzungsbedingungen für die Fundierung mit der Google Suche unterliegt. Weitere Informationen finden Sie in den Nutzungsbedingungen. Das Feld renderedContent im Feld searchEntryPoint ist der bereitgestellte Code zur Implementierung von Google-Suchvorschlägen. Informationen zur Verwendung von Google-Suchvorschlägen finden Sie unter Google-Suchvorschläge verwenden.

Fundierte Antwort in einem einzigen Durchgang generieren

In diesem Abschnitt wird beschrieben, wie Sie Antworten generieren, die auf den folgenden Quellen basieren:

Antwort mit Inline-Text und Vertex AI Search-Datenspeicher fundieren

Im folgenden Beispiel wird gezeigt, wie Sie Prompt-Text senden, indem Sie einen Inline-Text und einen Vertex AI Search-Datenspeicher als Fundierungsquelle angeben. Sie können keinen Datenspeicher für die Website-Suche als Grundlage angeben. In diesem Beispiel wird die Methode generateGroundedContent verwendet.

REST

  1. Senden Sie den Prompt in der folgenden curl-Anfrage.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION"
       }
    },
    "groundingSpec": {
     "groundingSources": [
       {
         "inlineSource": {
           "groundingFacts": [
             {
               "factText": "FACT_TEXT_1",
               "attributes": {
                 "title": "TITLE_1",
                 "uri": "URI_1",
                 "author": "AUTHOR_1"
               }
             }
           ]
         }
       },
       {
         "inlineSource": {
           "groundingFacts": [
             {
               "factText": "FACT_TEXT_2",
               "attributes": {
                 "title": "TITLE_2",
                 "uri": "URI_2"
               }
             },
             {
               "factText": "FACT_TEXT_3",
               "attributes": {
                 "title": "TITLE_3",
                 "uri": "URI_3"
               }
             }
           ]
         }
       },
       {
         "searchSource": {
           "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_1/servingConfigs/default_search"
         }
       },
       {
         "searchSource": {
           "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_2/servingConfigs/default_search"
         }
       }
      ]
    },
    "generationSpec": {
      "modelId": "MODEL_ID",
      "temperature": TEMPERATURE,
      "topP": TOP_P,
      "topK": TOP_K
    },
    "user_context": {
      "languageCode: "LANGUAGE_CODE",
      "latLng": {
        "latitude": LATITUDE,
        "longitude": LONGITUDE
     },
    }
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: die Nummer Ihres Google Cloud Projekts.
    • PROMPT_TEXT: der Prompt des Nutzers.
    • SYSTEM_INSTRUCTION: Ein optionales Feld, in dem Sie eine Präambel oder zusätzlichen Kontext angeben können.
    • FACT_TEXT_N: Der Inline-Text, auf dem die Antwort basiert. Sie können maximal 100 Faktentexte angeben.
    • TITLE_N: Ein optionales Feld zum Festlegen des Meta-Attributs „title“ für den Inline-Text.
    • URI_N: Ein optionales Feld zum Festlegen des URI-Meta-Attributs für den Inline-Text.
    • AUTHOR_N: Ein optionales Feld zum Festlegen des Meta-Attributs „Autor“ für den Inline-Text.
    • APP_ID_N: Die ID der Vertex AI Search-Anwendung.
    • MODEL_ID: Ein optionales Feld zum Festlegen der Modell-ID des Gemini-Modells, das Sie zum Generieren der fundierten Antwort verwenden möchten. Eine Liste der verfügbaren Modell-IDs finden Sie unter Unterstützte Modelle.
    • TEMPERATURE: Optionales Feld zum Festlegen der für die Stichprobenerhebung verwendeten Temperatur. Google empfiehlt eine Temperatur von 0,0. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_P: Optionales Feld zum Festlegen des Top-P-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_K: Ein optionales Feld zum Festlegen des Top-K-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • LANGUAGE_CODE: Ein optionales Feld, mit dem die Sprache für die generierte Antwort und für den zurückgegebenen Chunk-Text festgelegt werden kann. Wenn die Sprache nicht anhand der Anfrage ermittelt werden kann, wird dieses Feld verwendet. Der Standardwert ist en. Eine Liste der Sprachcodes finden Sie unter Sprachen.
    • LATITUDE: Optionales Feld zum Festlegen des Breitengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. -25.34.
    • LONGITUDE: Optionales Feld zum Festlegen des Längengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. 131.04.

Beispiel für die Generierung von Antworten in einem Durchgang, die auf Inline-Text und Vertex AI Search basieren

Im folgenden Beispiel werden die folgenden Fundierungsquellen angegeben: eine Inline-Textinformation und ein Vertex AI Search-Datenspeicher. In diesem Beispiel wird die Methode generateGroundedContent verwendet. In diesem Beispiel wird auch eine Systemanweisung verwendet, um die Antwort mit einem Smiley-Emoji zu beenden.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
-d '
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "How did Google do in 2020? Where can I find BigQuery docs?"
        }
      ]
    }
  ],
  "systemInstruction": {
      "parts": {
          "text": "Add a smiley emoji after the answer."
      }
  },
  "groundingSpec": {
    "groundingSources": [
      {
        "inline_source": {
          "grounding_facts": [
            {
              "fact_text": "The BigQuery documentation can be found at https://cloud.google.com/bigquery/docs/introduction",
              "attributes": {
                "title": "BigQuery Overview",
                "uri": "https://cloud.google.com/bigquery/docs/introduction"
              }
            }
          ]
        }
      },
      {
        "searchSource": {
          "servingConfig": "projects/123456/locations/global/collections/default_collection/engines/app_id_example/servingConfigs/default_search"
        }
      }
    ]
  },
  "generationSpec": {
    "modelId": "gemini-1.5-flash"
  },
  "user_context": {
    "languageCode: "en",
    "latLng": {
       "latitude": 37.422131,
       "longitude": -122.084801
    }
  }
}'

Fundierte Antworten mit der Google Suche generieren

Sie können die generierten Antworten mit öffentlich verfügbaren Webdaten fundieren.

Dynamisches Abrufen

Sie können die dynamische Abruffunktion in Ihrer Anfrage verwenden, um festzulegen, wann die Fundierung mit der Google Suche deaktiviert werden soll. Das ist nützlich, wenn für den Prompt keine Antwort erforderlich ist, die auf der Google Suche basiert, und die unterstützten Modelle eine Antwort auf der Grundlage ihres Wissens ohne Fundierung liefern können. So können Sie Latenz, Qualität und Kosten effektiver verwalten.

Vorhersagewert und ‑grenzwert für dynamisches Abrufen

Wenn Sie eine Anfrage zum Generieren einer fundierten Antwort senden, weist AI Applications dem Prompt einen Vorhersagewert zu. Der Vorhersagewert ist ein Gleitkommawert im Bereich [0,1]. Der Wert hängt davon ab, ob es für den Prompt sinnvoll ist, die Antwort mit den aktuellsten Informationen aus der Google Suche zu fundieren. Daher hat eine Aufforderung, die eine Antwort erfordert, die auf den neuesten Fakten im Web basiert, einen höheren Vorhersagewert. Eine Aufforderung, für die eine vom Modell generierte Antwort ausreicht, hat einen niedrigeren Vorhersagewert.

Hier sind einige Beispiele für Prompts und die zugehörigen Vorhersagewerte.

Prompt Vorhersagewert Kommentar
„Schreibe ein Gedicht über Pfingstrosen.“ 0,13 Das Modell kann sich auf sein Wissen verlassen und die Antwort muss nicht fundiert werden.
„Empfehle mir ein Spielzeug für ein zweijähriges Kind“ 0,36 Das Modell kann sich auf sein Wissen verlassen und die Antwort muss nicht fundiert werden.
„Kannst du mir ein Rezept für eine asiatisch inspirierte Guacamole nennen?“ 0,55 Die Google Suche kann eine fundierte Antwort liefern, aber eine Fundierung ist nicht unbedingt erforderlich. Das Wissen des Modells kann ausreichen.
„Was sind KI-Anwendungen? Wie wird die Fundierung in AI Applications abgerechnet?“ 0.72 Erfordert die Google Suche, um eine fundierte Antwort zu generieren
„Wer hat den letzten F1-Grand Prix gewonnen?“ 0,97 Erfordert die Google Suche, um eine fundierte Antwort zu generieren

In Ihrer Anfrage zur Generierung von Antworten auf Grundlage von Daten können Sie eine Konfiguration für den dynamischen Abruf mit einem Grenzwert angeben. Der Schwellenwert ist ein Gleitkommawert im Bereich [0,1] und liegt standardmäßig bei 0,7. Wenn der Schwellenwert null ist, wird die Antwort immer mit der Google Suche fundiert. Für alle anderen Schwellenwerte gilt Folgendes:

  • Wenn der Vorhersagewert größer oder gleich dem Schwellenwert ist, basiert die Antwort auf der Google Suche. Ein niedrigerer Schwellenwert bedeutet, dass für mehr Prompts Antworten mithilfe der Google Suche generiert werden.
  • Wenn der Vorhersagewert unter dem Schwellenwert liegt, generiert das Modell möglicherweise trotzdem eine Antwort, die aber nicht auf der Google Suche basiert.

Um einen geeigneten Schwellenwert für Ihre Geschäftsanforderungen zu finden, können Sie eine repräsentative Reihe von Suchanfragen erstellen, die Sie voraussichtlich erhalten werden. Anschließend können Sie die Abfragen nach dem Vorhersagewert in der Antwort sortieren und einen geeigneten Schwellenwert für Ihren Anwendungsfall auswählen.

Antwort mit der Google Suche fundieren

Im folgenden Beispiel wird gezeigt, wie Sie eine fundierte Antwort aus einem Prompt generieren, indem Sie die Google Suche als Fundierungsquelle angeben. In diesem Beispiel wird die Methode generateGroundedContent verwendet.

REST

  1. Senden Sie den Prompt in der folgenden curl-Anfrage.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION"
       }
    },
    "groundingSpec": {
     "groundingSources": [
     {
         "googleSearchSource": {
              "dynamicRetrievalConfig": {
                  "predictor":{
                      "threshold": DYNAMIC_RETRIEVAL_THRESHOLD
                  }
              }
         }
     }
    ]
    },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: die Nummer Ihres Google Cloud Projekts.
    • PROMPT_TEXT: der Prompt des Nutzers.
    • SYSTEM_INSTRUCTION: Ein optionales Feld, in dem Sie eine Präambel oder zusätzlichen Kontext angeben können.
    • DYNAMIC_RETRIEVAL_THRESHOLD: Optionales Feld zum Festlegen des Grenzwerts, bei dem die Konfiguration für die dynamische Abfrage aufgerufen wird. Es handelt sich um einen Gleitkommawert im Bereich [0,1]. Wenn Sie das Feld dynamicRetrievalConfig hinzufügen, aber das Feld predictor oder threshold nicht festlegen, wird der Schwellenwert standardmäßig auf 0,7 festgelegt. Wenn Sie das Feld dynamicRetrievalConfig nicht festlegen, wird die Antwort immer fundiert.
    • MODEL_ID: Ein optionales Feld zum Festlegen der Modell-ID des Gemini-Modells, das Sie zum Generieren der fundierten Antwort verwenden möchten. Eine Liste der verfügbaren Modell-IDs finden Sie unter Unterstützte Modelle.
    • TEMPERATURE: Optionales Feld zum Festlegen der für die Stichprobenerhebung verwendeten Temperatur. Google empfiehlt eine Temperatur von 0,0. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_P: Optionales Feld zum Festlegen des Top-P-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_K: Ein optionales Feld zum Festlegen des Top-K-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • LANGUAGE_CODE: Ein optionales Feld, mit dem die Sprache für die generierte Antwort und für den zurückgegebenen Chunk-Text festgelegt werden kann. Wenn die Sprache nicht anhand der Anfrage ermittelt werden kann, wird dieses Feld verwendet. Der Standardwert ist en. Eine Liste der Sprachcodes finden Sie unter Sprachen.
    • LATITUDE: Optionales Feld zum Festlegen des Breitengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. -25.34.
    • LONGITUDE: Optionales Feld zum Festlegen des Längengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. 131.04.

Im folgenden Beispiel wird die Google Suche als Grundlage für die Anfrage angegeben. In diesem Beispiel wird die Methode generateGroundedContent verwendet. In diesem Beispiel wird auch eine Systemanweisung verwendet, um die Antwort mit einem Smiley-Emoji zu beenden.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
-d '
{
"contents": [{
  "role": "user",
  "parts": [{
    "text": "What is ai applications?"
}]
}],
"systemInstruction": {
   "parts": {
      "text": "Add a smiley emoji after the answer."
   }
},
"groundingSpec": {
  "groundingSources": [
  {
      "googleSearchSource": {
        "dynamicRetrievalConfig": {
               "predictor":{
                   "threshold": 0.6
               }
           }
      }
  }
 ]
},
"generationSpec": {
  "modelId": "gemini-1.5-flash"
}
}
'

Fundierte Antwort in mehreren Schritten generieren

Bei der Generierung von Antworten in mehreren Durchgängen müssen Sie in jeder Anfrage den gesamten Text senden, der in allen vorherigen Durchgängen zwischen dem Nutzer und dem Modell ausgetauscht wurde. So wird die Kontinuität gewährleistet und der Kontext beibehalten, um die Antwort für den letzten Prompt zu generieren.

So erhalten Sie eine fundierte Antwort durch die Generierung von Antworten in mehreren Schritten:

REST

Die folgenden Beispiele zeigen, wie Sie Follow-up-Prompt-Text über mehrere Turns hinweg senden. In diesen Beispielen wird die generateGroundedContent-Methode verwendet und die Antworten werden mit der Google Suche fundiert. Sie können ähnliche Schritte ausführen, um fundierte Antworten mit anderen Fundierungsquellen zu generieren.

  1. Senden Sie den ersten Prompt in der folgenden curl-Anfrage.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT_TURN_1"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION_TURN_1"
       }
    },
    "groundingSpec": {
     "groundingSources": [
       {
         "googleSearchSource": {}
       }
     ]
    },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: die Nummer Ihres Google Cloud Projekts.
    • PROMPT_TEXT_TURN_1: Der Prompt-Text des Nutzers im ersten Zug.
    • SYSTEM_INSTRUCTION_TURN_1: Ein optionales Feld, in dem Sie eine Präambel oder zusätzlichen Kontext angeben können. Für die Generierung von Antworten in mehreren Schritten müssen Sie für jeden Schritt die Systemanweisungen angeben.
    • MODEL_ID: Ein optionales Feld zum Festlegen der Modell-ID des Gemini-Modells, das Sie zum Generieren der fundierten Antwort verwenden möchten. Eine Liste der verfügbaren Modell-IDs finden Sie unter Unterstützte Modelle.
    • TEMPERATURE: Optionales Feld zum Festlegen der für die Stichprobenerhebung verwendeten Temperatur. Google empfiehlt eine Temperatur von 0,0. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_P: Optionales Feld zum Festlegen des Top-P-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_K: Ein optionales Feld zum Festlegen des Top-K-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • LANGUAGE_CODE: Ein optionales Feld, mit dem die Sprache für die generierte Antwort und für den zurückgegebenen Chunk-Text festgelegt werden kann. Wenn die Sprache nicht anhand der Anfrage ermittelt werden kann, wird dieses Feld verwendet. Der Standardwert ist en. Eine Liste der Sprachcodes finden Sie unter Sprachen.
    • LATITUDE: Optionales Feld zum Festlegen des Breitengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. -25.34.
    • LONGITUDE: Optionales Feld zum Festlegen des Längengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. 131.04.
  2. Senden Sie den zweiten Prompt als Follow-up. Fügen Sie den ersten Prompt des Nutzers gefolgt von der entsprechenden Antwort des Modells als Kontext hinzu.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT_TURN_1"
         }
       ]
     },
     {
       "role": "model",
       "parts": [
         {
           "text": "ANSWER_TEXT_TURN_1"
         }
       ]
     },
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT_TURN_2"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION_TURN_2"
       }
    },
    "groundingSpec": {
     "groundingSources": [
       {
         "googleSearchSource": {}
       }
     ]
    },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: die Nummer Ihres Google Cloud Projekts.
    • PROMPT_TEXT_TURN_1: Der Prompt-Text des Nutzers im ersten Zug.
    • ANSWER_TEXT_TURN_1: Der Antworttext des Modells im ersten Zug.
    • PROMPT_TEXT_TURN_2: Der Prompt-Text des Nutzers im zweiten Zug.
    • SYSTEM_INSTRUCTION_TURN_2: Ein optionales Feld, in dem Sie eine Präambel oder zusätzlichen Kontext angeben können. Für die Generierung von Antworten in mehreren Schritten müssen Sie für jeden Schritt die Systemanweisungen angeben.
    • MODEL_ID: Ein optionales Feld zum Festlegen der Modell-ID des Gemini-Modells, das Sie zum Generieren der fundierten Antwort verwenden möchten. Eine Liste der verfügbaren Modell-IDs finden Sie unter Unterstützte Modelle.
    • TEMPERATURE: Optionales Feld zum Festlegen der für die Stichprobenerhebung verwendeten Temperatur. Google empfiehlt eine Temperatur von 0,0. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_P: Optionales Feld zum Festlegen des Top-P-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_K: Ein optionales Feld zum Festlegen des Top-K-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • LANGUAGE_CODE: Ein optionales Feld, mit dem die Sprache für die generierte Antwort und für den zurückgegebenen Chunk-Text festgelegt werden kann. Wenn die Sprache nicht anhand der Anfrage ermittelt werden kann, wird dieses Feld verwendet. Der Standardwert ist en. Eine Liste der Sprachcodes finden Sie unter Sprachen.
    • LATITUDE: Optionales Feld zum Festlegen des Breitengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. -25.34.
    • LONGITUDE: Optionales Feld zum Festlegen des Längengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. 131.04.
  3. Wiederholen Sie diesen Vorgang, um weitere Folgeantworten zu erhalten. Fügen Sie in jeder Runde alle vorherigen Prompts des Nutzers gefolgt von den entsprechenden Antworten des Modells hinzu.

Beispiel für die Generierung von Antworten in mehreren Schritten

Im folgenden Beispiel werden in der Anfrage drei Inline-Faktentexte als Fundierungsquelle angegeben, um Antworten über zwei Runden hinweg zu generieren. In diesem Beispiel wird die Methode generateGroundedContent verwendet. In diesem Beispiel wird auch eine Systemanweisung verwendet, um die Antwort im ersten Zug mit einem Smiley-Emoji zu beenden.

REST

  1. Senden Sie den ersten Prompt in der folgenden curl-Anfrage.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "Summarize what happened in 2023 in one paragraph."
         }
       ]
     }
    ],
    "systemInstruction": {
      "parts": {
          "text": "Add a smiley emoji after the answer."
      }
    },
    "grounding_spec": {
     "grounding_sources": [
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.",
               "attributes": {
                 "title": "title_1",
                 "uri": "some-uri-1"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.",
               "attributes": {
                 "title": "title_2",
                 "uri": "some-uri-2"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.",
               "attributes": {
                 "title": "title_3",
                 "uri": "some-uri-3"
               }
             }
           ]
         }
       }
     ]
    },
    "generationSpec": {
     "modelId": "gemini-1.5-flash"
    }
    }'
    
  2. Senden Sie den zweiten Prompt als Follow-up. Fügen Sie den ersten Prompt des Nutzers gefolgt von der entsprechenden Antwort des Modells als Kontext hinzu.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "Summarize what happened in 2023 in one paragraph."
         }
       ]
     },
     {
       "role": "model",
       "parts": [
         {
           "text": "In 2023, the global average surface temperature increased, the world population surpassed 8 billion, and global e-commerce sales reached an estimated $5.7 trillion.  😊 \n"
         }
       ]
     },
     {
       "role": "user",
       "parts": [
         {
           "text": "Rephrase the answer in an abstracted list."
         }
       ]
     }
    ],
    "grounding_spec": {
     "grounding_sources": [
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.",
               "attributes": {
                 "title": "title_1",
                 "uri": "some-uri-1"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.",
               "attributes": {
                 "title": "title_2",
                 "uri": "some-uri-2"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.",
               "attributes": {
                 "title": "title_3",
                 "uri": "some-uri-3"
               }
             }
           ]
         }
       }
     ]
    },
    "generationSpec": {
     "modelId": "gemini-1.5-flash"
    }
    }'
    

Fundierte Antworten streamen

Sie können die Antworten des Modells streamen. Das ist in Anwendungsfällen nützlich, in denen die Antwort besonders lang ist und das Senden der gesamten Antwort auf einmal zu einer erheblichen Verzögerung führt. Beim Streamen der Antwort wird die Antwort in ein Array mit mehreren Kandidaten unterteilt, die sequenzielle Teile des Antworttexts enthalten.

So erhalten Sie eine gestreamte, fundierte Antwort:

REST

Im folgenden Beispiel wird gezeigt, wie eine fundierte Antwort gestreamt wird. In diesem Beispiel wird die Methode streamGenerateGroundedContent verwendet und die Antwort wird mit der Google Suche ohne die Konfiguration für den dynamischen Abruf begründet. Sie können ähnliche Schritte ausführen, um fundierte Antworten mit anderen Fundierungsquellen zu generieren.

  1. Senden Sie den Prompt in der folgenden curl-Anfrage.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global:streamGenerateGroundedContent" \
    -d '
    [
    {
     "contents": [
       {
         "role": "user",
         "parts": [
           {
             "text": "PROMPT_TEXT"
           }
         ]
       }
     ],
     "systemInstruction": {
         "parts": {
             "text": "SYSTEM_INSTRUCTION"
         }
     },
     "groundingSpec": {
       "groundingSources": [
         {
           "googleSearchSource": {}
         }
       ]
     },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }
    ]'
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: die Nummer Ihres Google Cloud Projekts.
    • PROMPT_TEXT: der Prompt des Nutzers.
    • SYSTEM_INSTRUCTION: Ein optionales Feld, in dem Sie eine Präambel oder zusätzlichen Kontext angeben können.
    • MODEL_ID: Ein optionales Feld zum Festlegen der Modell-ID des Gemini-Modells, das Sie zum Generieren der fundierten Antwort verwenden möchten. Eine Liste der verfügbaren Modell-IDs finden Sie unter Unterstützte Modelle.
    • TEMPERATURE: Optionales Feld zum Festlegen der für die Stichprobenerhebung verwendeten Temperatur. Google empfiehlt eine Temperatur von 0,0. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_P: Optionales Feld zum Festlegen des Top-P-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • TOP_K: Ein optionales Feld zum Festlegen des Top-K-Werts für das Modell. Weitere Informationen finden Sie unter Gemini-Modellparameter.
    • LANGUAGE_CODE: Ein optionales Feld, mit dem die Sprache für die generierte Antwort und für den zurückgegebenen Chunk-Text festgelegt werden kann. Wenn die Sprache nicht anhand der Anfrage ermittelt werden kann, wird dieses Feld verwendet. Der Standardwert ist en. Eine Liste der Sprachcodes finden Sie unter Sprachen.
    • LATITUDE: Optionales Feld zum Festlegen des Breitengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. -25.34.
    • LONGITUDE: Optionales Feld zum Festlegen des Längengrads. Geben Sie den Wert in Dezimalgrad ein, z. B. 131.04.

Beispiel für das Streamen fundierter Antworten

Im folgenden Beispiel wird in der Anfrage die Google Suche als Grundlage für das Streamen einer Antwort ohne die Konfiguration für den dynamischen Abruf angegeben. Die gestreamte Antwort wird auf mehrere Antwortkandidaten verteilt. In diesem Beispiel wird die Methode streamGenerateGroundedContent verwendet.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1alpha/projects/123456/locations/global:streamGenerateGroundedContent" \
-d '
[
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Summarize How to delete a data store in AI Applications?"
        }
      ]
    }
  ],
  "groundingSpec": {
    "groundingSources": [
      {
        "googleSearchSource": {}
      }
    ]
  },
  "generationSpec": {
    "modelId": "gemini-1.5-flash"
  }
}
]'

Unterstützte Modelle

Die folgenden Modelle unterstützen Grounding:

  • Gemini 1.5 Pro nur mit Texteingabe
  • Gemini 1.5 Flash nur mit Texteingabe

Weitere Informationen zu diesen Gemini-Modellen finden Sie unter Gemini-Modellversionen und Lebenszyklus.

Wenn Sie die Methode generateGroundedContent aufrufen, können Sie die folgenden Modell-IDs verwenden:

Modell-ID Automatisch aktualisiert
default Ja
gemini-1.5-flash Ja
gemini-1.5-flash-001 Nein
gemini-1.5-flash-002 Nein
gemini-1.5-pro Ja
gemini-1.5-pro-001 Nein
gemini-1.5-pro-002 Nein

Nächste Schritte

Weitere Informationen