Antworten mit agentischem Abruf streamen

Auf dieser Seite wird die agentische Suche vorgestellt und erklärt, wie Sie sie mit der Methode zum Streamen von Antworten verwenden.

Informationen zur agentischen Suche

Die agentische Suche in Kombination mit der Methode zum Streamen von Antworten kann in bestimmten Anwendungsfällen bessere Ergebnisse liefern, z. B. um die Suche in mehreren Schritten für Apps mit mehreren Datenspeichern zu ermöglichen oder die Antwortgenerierung für verschiedene Arten von Abfragen anzupassen.

Die Verwendung der agentischen Suche macht Ihre Apps etwas komplexer, bietet aber im Gegenzug mehr Kontrolle über die Ergebnisse.

Die Agent Search umfasst einen vordefinierten Agent, mit dem Sie das Verhalten einer Suchmaschine anpassen können. Dies ermöglicht mehr Anpassungen als über die UI für App-Konfigurationen oder die Methode zum Streamen von Antworten ohne agentische Suche.

Zusammengeführte Suche mit und ohne agentische Suche

Die agentische Suche ist besonders nützlich für Apps mit zusammengeführter Suche. Ohne agentische Suche verwendet die Suche eine Fan-out-Methode in einem Schritt, bei der alle Datenspeicher gleichzeitig abgefragt werden. Im Gegensatz dazu ermöglicht die agentische Suche die Suche in mehreren Schritten. Der Agent plant und führt die Suchvorgänge sequenziell aus und wählt für jeden Schritt die besten Tools aus. Er kann Ergebnisse aus mehreren Agent Search-Datenspeichern kombinieren und auch Tools wie die Google Suche und Google Maps verwenden.

Angenommen, Sie haben separate Datenspeicher für globale Unternehmensrichtlinien und Details zu regionalen Niederlassungen. Ein Nutzer fragt: „Welche Compliance-Regeln gelten für unsere Niederlassung in Tokio?“

  • Ohne agentische Suche: Es werden gleichzeitig sowohl der Richtlinienspeicher als auch der Speicher der regionalen Niederlassung mit dem vollständigen Abfragestring abgefragt. Dies kann zu fragmentierten Ergebnissen führen.

  • Mit agentischer Suche: Der Agent plant die Ausführung. Zuerst ruft er Details zur Niederlassung in Tokio aus dem regionalen Speicher ab. Anschließend führt er mit diesem spezifischen Kontext eine zweite, gezielte Suche im Richtlinienspeicher durch.

    Der Agent fasst diese Ergebnisse zu einer einzigen, zusammenhängenden und genaueren Antwort zusammen.

Mit der agentischen Suche können Sie auch mehrstufige Suchanfragen (Follow-up-Fragen) in Apps mit zusammengeführter Suche ausführen. Ohne agentische Suche funktioniert die mehrstufige Suche nur mit Apps mit einem einzigen Datenspeicher. Wenn Sie den Unterhaltungskontext über mehrere Schritte hinweg beibehalten möchten, können Sie die agentische Suche optional mit einer Agent Platform -Sitzung kombinieren.

Benutzerdefinierte Abfrageklassifizierung

Die Antwort- und die Streaming-Antwort-Methoden bieten zwei Abfrage klassifizierungs typen: ADVERSARIAL_QUERY und NON_ANSWER_SEEKING_QUERY.

Mit der agentischen Suche können Sie zusätzliche Klassifizierungstypen definieren, die zu Ihren Geschäftsprozessen passen. Das System verwendet einen Klassifikator, um die Absicht des Nutzers zu ermitteln, und leitet die Anfrage an die entsprechende Agent-Konfiguration weiter.

Angenommen, Sie stellen anhand der Abfrage fest, dass die Absicht der Abfrage darin besteht, eine Bestellung zu verfolgen, und Sie haben eine TRACK_ORDER-Klassifizierung angegeben. Anstatt eine allgemeine Suche in allen Datenspeichern auszuführen, lädt das System einen spezialisierten Agent, der mit den Tools und Daten ausgestattet ist, die zum Abrufen des Versandstatus erforderlich sind.

Möglichkeiten zum Aktivieren und Verwenden der agentischen Suche

Es gibt zwei Möglichkeiten, die agentische Suche zu aktivieren:

  • Vordefinierter Google-Antwort-Agent:Wenn Sie bereits eine Such-App in der Agent Search haben, können Sie die agentische Suche aktivieren, indem Sie in API-Anfragen enable_agent_invocation=true festlegen, wenn Sie Abfragen an die App senden. In diesem Fall behalten Sie die vorhandene Konfiguration für die Suchbereitstellung bei.

  • Benutzerdefinierte App im KI-Modus:Wenn Sie eine Agent Search-App erstellen, definieren Sie eine andere Art von Konfiguration für die Bereitstellung, die Konfiguration default_agent_answer. Diese wird möglicherweise auch als benutzerdefinierte Engine im KI-Modus bezeichnet, da „App“ und „Engine“ in der Agent Search austauschbar verwendet werden.

Hinweis

Bevor Sie die agentische Suche verwenden können, müssen Sie Folgendes tun:

Reasoning Engine für mehrstufige Sitzungen einrichten

Wenn Sie den Unterhaltungskontext über mehrere Schritte hinweg beibehalten möchten, müssen Sie eine Agent Runtime in der Gemini Enterprise Agent Platform Engine (auch Reasoning Engine genannt) erstellen.

Wenn Sie eine streamAnswer-Anfrage stellen, übergeben Sie den Ressourcennamen der Agent Runtime als Feld reasoningEngine in der streamAnswer-Anfrage.

  1. Aktivieren Sie die Agent Platform in Ihrem Google Cloud Projekt.

  2. Erstellen Sie eine Agent Runtime-Instanz (auch Reasoning Engine genannt) mit der Agent Engine REST API (oder dem Agent Development Kit). Die Instanz hostet die Sitzungen, die von der Methode streamAnswer verwendet werden.

    Der Ressourcenname der Instanz hat das folgende Format:

    projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID
  3. Gewähren Sie dem Discovery Engine-Dienst-Agent Zugriff auf die Reasoning Engine, indem Sie dem Discovery Engine-Dienstkonto die Rolle roles/aiplatform.reasoningEngineServiceAgent zuweisen:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com

    Dabei ist PROJECT_NUMBER die Nummer des Projekts, in dem die Reasoning Engine gehostet wird. Mit dieser Berechtigung kann das Backend für das Streamen von Antworten in Ihrem Namen Ereignisse erstellen, lesen und an Sitzungen anhängen.

  4. Prüfen Sie die geltenden Kontingente. Für Sitzungen, die von der Agent Runtime unterstützt werden, werden Kontingente aus der Agent Platform API verwendet. Die relevanten Kontingente sind:

    • aiplatform.googleapis.com/session_write_requests : Erstellen, löschen oder aktualisieren Sie Agent Runtime-Sitzungen pro Minute.

    • aiplatform.googleapis.com/session_event_append_requests : Ereignis pro Minute an Agent Runtime-Sitzungen anhängen.

    Weitere Informationen finden Sie unter Kontingente für die Agent Engine der Gemini Enterprise Agent Platform Kontingente.

  5. Notieren Sie sich den Ressourcennamen der Agent Runtime, da Sie ihn als Feld reasoningEngine in der streamAnswer-Anfrage übergeben müssen.

Optional: Benutzerdefinierte App im KI-Modus einrichten

Standardmäßig verwendet die agentische Suche den vordefinierten Google-Antwort-Agent. Dieser klassifiziert Abfragen in die Intents DEFAULT_ANSWER_SEEKING und DO_NOT_ANSWER. Sie können eine benutzerdefinierte App im KI-Modus erstellen, wenn Sie Tools anpassen oder Unterstützung für neue Klassen von Abfrage-Intents hinzufügen möchten. Jeder benutzerdefinierte Intent (oder Frame) deklariert die Bedingungen, unter denen der Agent eine Abfrage in den Intent klassifiziert, sowie die Anweisungen und Tools, die der Agent zur Verarbeitung verwendet.

  1. Erstellen Sie die Engine mit der engines.create REST-Methode und einem engine_config.answer_agent Block.

    Die Konfiguration ist so strukturiert:

    engine {
     name: "YOUR_AI_MODE_ENGINE"
     display_name: "YOUR_AI_MODE_ENGINE_DISPLAY_NAME"
     engine_config {
       answer_agent {
         frames {
           vertical_intent: "YOUR_CUSTOM_INTENT"
           vertical_intent_prompt {
             instructions: "Instructions for when to classify a user query as YOUR_CUSTOM_INTENT."
           }
           initial_prompt {
             instructions: "Instructions for the agent on how to process a user query classified as YOUR_CUSTOM_INTENT."
             tools {
               discovery_engine_search_tool_config {
                 serving_config: "YOUR_SEARCH_SERVING_CONFIG_1"
                 page_size: 10
               }
               tool_description: "This tool can help search corpus 1."
             }
             tools {
               discovery_engine_search_tool_config {
                 serving_config: "YOUR_SEARCH_SERVING_CONFIG_2"
                 page_size: 10
               }
               tool_description: "This tool can help search corpus 2."
             }
           }
         }
       }
     }
    }
    engine_id: "SAMPLE_MULTI_SEARCH_RETRIEVAL"
  2. Nachdem Sie die Engine erstellt haben, leiten Sie Anfragen über die Konfiguration default_agent_answer für die Bereitstellung weiter:

    projects/*/locations/*/collections/*/engines/YOUR_AI_MODE_ENGINE/servingConfigs/default_agent_answer
  3. Wenn Sie Hilfe beim Entwerfen oder Registrieren einer benutzerdefinierten App im KI-Modus benötigen, wenden Sie sich an den Support.

Antwort mit agentischer Suche streamen

Der folgende Befehl zeigt, wie Sie die Streaming Antwort-Methode mit aktivierter agentischer Suche aufrufen. Ähnlich wie bei der Ausgabe ohne agentische Suche wird bei diesem Aufruf eine generierte Antwort in Form einer Reihe von JSON-Antworten gestreamt.

Wenn Sie eine Reasoning Engine eingerichtet haben, fügen Sie ihren Ressourcennamen in das Feld reasoningEngine ein, um die Sitzung über mehrere Schritte hinweg beizubehalten.

REST

So suchen Sie und erhalten Ergebnisse mit einer gestreamten 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/SERVING_CONFIG_ID:streamAnswer" \
      -d '{
            "query": { "text": "QUERY" },
            "session": "SESSION",
            "enableAgentInvocation": true,
            "userPseudoId": "USER_PSEUDO_ID",
            "reasoningEngine": "projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID"
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Google Cloud Projekts in.
    • APP_ID: die ID der Agent Search-App, die Sie abfragen möchten.
    • SERVING_CONFIG_ID: Wenn Sie eine benutzerdefinierte App im KI-Modus verwenden möchten, legen Sie diesen Wert auf default_agent_answer fest. Wenn Sie den vordefinierten Google-Antwort-Agent verwenden möchten, legen Sie diesen Wert auf default_search fest.
    • PROJECT_NUMBER: die Nummer des Projekts, in dem die Reasoning Engine gehostet wird.
    • QUERY: Ein Freitextstring mit der Frage oder Suchanfrage.
    • SESSION: Wenn Sie eine mehrstufige Unterhaltung fortsetzen, ist dies der Ressourcenname der Sitzung, der in der Antwort des vorherigen Schritts zurückgegeben wurde, z. B. projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID. Wenn Sie keine Unterhaltung fortsetzen, legen Sie diesen Wert auf - (einen Bindestrich) fest.
    • USER_PSEUDO_ID: eine eindeutige Kennung, die zum Tracking des Besuchers verwendet wird.
    • LOCATION_ID: der Standort Ihrer Reasoning Engine, z. B. us-central1.
    • REASONING_ENGINE_ID: die ID der von Ihnen erstellten Agent Engine-Instanz.

Python

Weitere Informationen finden Sie in der API-Referenzdokumentation zur Agent Search Python API.

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

Im folgenden Beispiel wird der Discovery Engine Python Client (v1alpha) verwendet, um stream_answer_query mit aktivierter Agent-Aufrufung aufzurufen. Übergeben Sie das Feld reasoning_engine für mehrstufige Sitzungen.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1alpha


def run_stream_answer_query():
    PROJECT_ID = "YOUR_PROJECT_ID"
    LOCATION = "global"  # or a specific region
    COLLECTION_ID = "default_collection"
    ENGINE_ID = "YOUR_ENGINE_ID"
    # Use "default_search" for the predefined Google answer agent, or
    # "default_agent_answer" if you have configured a custom AI_MODE app.
    SERVING_CONFIG_ID = "default_search"
    USER_ID = "user-id"
    QUERY_TEXT = "YOUR_QUERY_TEXT"
    REASONING_ENGINE_ID = "YOUR_REASONING_ENGINE_ID"
    # Use "-" to start a new session, or pass the sessionId returned in
    # the previous turn's response to continue an existing session.
    SESSION_ID = "-"

    SESSION_REF = (
        f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/"
        f"{COLLECTION_ID}/engines/{ENGINE_ID}/sessions/{SESSION_ID}"
    )
    SERVING_CONFIG_ENGINE = (
        f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/"
        f"{COLLECTION_ID}/engines/{ENGINE_ID}/servingConfigs/{SERVING_CONFIG_ID}"
    )
    REASONING_ENGINE = (
        f"projects/{PROJECT_ID}/locations/{LOCATION}/"
        f"reasoningEngines/{REASONING_ENGINE_ID}"
    )

    client_options = ClientOptions(
        api_endpoint="discoveryengine.googleapis.com"
    )

    client = discoveryengine_v1alpha.ConversationalSearchServiceClient(
        client_options=client_options
    )

    request = discoveryengine_v1alpha.AnswerQueryRequest(
        query=discoveryengine_v1alpha.Query(text=QUERY_TEXT),
        serving_config=SERVING_CONFIG_ENGINE,
        user_pseudo_id=USER_ID,
        enable_agent_invocation=True,
        session=SESSION_REF,
        reasoning_engine=REASONING_ENGINE,
    )

    print(f"Starting StreamAnswerQuery agentic session with: {request}")
    stream = client.stream_answer_query(request)

    try:
        for response in stream:
            print(f"Received response: {response}")
    except Exception as e:
        print(f"Error during streaming: {e}")


if __name__ == "__main__":
    run_stream_answer_query()

Vorschauversion des Discovery Engine SDK abrufen

Das Discovery Engine SDK erleichtert die Interaktion mit Google Cloud Diensten aus Ihren Anwendungen. Das SDK unterstützt die Fehlerbehandlung und Authentifizierung und bietet Funktionen wie automatische Wiederholungen, Paginierung und die Verwaltung von Vorgängen mit langer Ausführungszeit.

Da die agentische Suche auf einer Zulassungsliste steht, unterscheidet sich das SDK, das Sie für diese Funktion benötigen, von den allgemein verfügbaren Discovery Engine-Clientbibliotheken.

So rufen Sie die Vorschauversion des Discovery Engine SDK ab:

  1. Wenden Sie sich an den Support, um Zugriff auf den Google Drive -Ordner des Vorschau-SDK zu erhalten.

  2. Laden Sie das Paket für Ihre Sprache herunter.

API-Änderungen

Da diese Funktion auf einer Zulassungsliste steht, werden in der API-Referenzdokumentation auf der Seite zur Methode zum Streamen von Antworten nicht alle Felder angezeigt, die für die Verwendung der agentischen Suche mit der Methode zum Streamen von Antworten verfügbar und erforderlich sind. Die fehlenden Felder werden wie folgt dokumentiert.

Felder im Anfragetext

  • enableAgentInvocation (boolesch): Legen Sie true fest, um zur agentischen Verarbeitung mit der vorhandenen Konfiguration für die Suchbereitstellung zu wechseln. Dieses Feld ist optional, wenn Sie eine Konfiguration für die Bereitstellung answer_agent mit einer benutzerdefinierten App im KI-Modus angeben.

  • reasoningEngine (String): Der Ressourcenname der Agent Runtime, die die Agent-Sitzungen hostet, im Format projects/*/locations/*/reasoningEngines/*.

Antwortfelder

Wenn die agentische Suche aktiviert ist, enthält jede generierte Answer.Reference Folgendes:

  • queries (wiederholter String): Die Liste der Abfragen, die der Agent ausgeführt hat, um die Referenz zu erstellen.

Sitzungsdienst

Die REST API des Sitzungsdienstes unterstützt die Methoden create oder update nicht. Die anderen Methoden werden jedoch unterstützt: list, get und delete.

Die RPC API des Sitzungsdienstes unterstützt die Vorgänge Update oder Create für Sitzungsressourcen, die für mehrstufige Unterhaltungen verwendet werden, nicht. Die anderen Vorgänge werden jedoch unterstützt: List, Get und Delete für Sitzungsressourcen, die für mehrstufige Unterhaltungen verwendet werden.