Auf dieser Seite wird die agentenbasierte Suche vorgestellt und erläutert, wie Sie sie mit der Methode streamAnswers verwenden.
Agentischer Abruf
Mit der Methode „stream answers“ verwendeter Agentic Retrieval kann in bestimmten Anwendungsfällen bessere Ergebnisse liefern, z. B. um den Multi-Pass-Abruf für Apps mit mehreren Datenspeichern zu ermöglichen oder die Antwortgenerierung für verschiedene Arten von Anfragen anzupassen.
Die Verwendung von Agent-basiertem Abruf macht Ihre Apps etwas komplexer, bietet aber im Gegenzug mehr Kontrolle über die Ergebnisse.
Agent Search enthält einen vordefinierten Agenten, mit dem Sie das Verhalten einer Suchmaschine anpassen können. So sind mehr Anpassungen möglich als über die Benutzeroberfläche für App-Konfigurationen oder die Methode Antwort streamen ohne Agent-basierte Suche.
Gemischte Suche mit und ohne Agent-Abruf
Die agentenbasierte Suche ist besonders nützlich für Apps mit kombinierter Suche. Ohne agentenbasierten Abruf wird bei der Suche ein Single-Pass-Fan-Out verwendet, bei dem alle Ihre Datenspeicher gleichzeitig abgefragt werden. Im Gegensatz dazu ermöglicht die agentische Suche die Suche in mehreren Durchgängen. Der Agent plant und führt Suchvorgänge sequenziell aus und wählt für jeden Schritt die besten Tools aus. Es kann Ergebnisse aus mehreren Agent Search-Datenspeichern kombinieren und auch Tools wie die Google Suche und Google Maps verwenden.
Sie haben beispielsweise separate Datenspeicher für globale Unternehmensrichtlinien und Details zu regionalen Büros. Ein Nutzer fragt: „Welche Compliance-Regeln gelten für unser Büro in Tokio?“:
Ohne agentenbasierte Suche: Es werden sowohl der Richtlinienspeicher als auch der Speicher des regionalen Büros gleichzeitig mit dem vollständigen Abfragestring durchsucht. Dies kann zu fragmentierten Ergebnissen führen.
Bei der agentischen Suche plant der Agent die Ausführung. Zuerst werden Details zum Büro in Tokio aus dem regionalen Speicher abgerufen. Anschließend wird mit diesem spezifischen Kontext eine zweite, gezielte Suche im Richtlinienspeicher durchgeführt.
Der Agent fasst diese Ergebnisse in einer einzigen, kohärenten und genaueren Antwort zusammen.
Mit der Agentic Retrieval-Funktion können Sie auch Multi-Turn-Suchanfragen (Folgefragen) in kombinierten Such-Apps ausführen. Ohne die agentenbasierte Suche funktioniert die Suche mit mehreren Anfragen nur mit Apps mit einem einzelnen Datenspeicher. Wenn Sie den Unterhaltungskontext über mehrere Runden hinweg beibehalten möchten, können Sie die agentische Suche optional mit einer Agent Platform-Sitzung kombinieren.
Benutzerdefinierte Abfrageklassifizierung
Die Methoden answer und streaming answer bieten zwei Klassifizierungstypen für Anfragen: ADVERSARIAL_QUERY und NON_ANSWER_SEEKING_QUERY.
Mit der Agent-basierten Suche können Sie zusätzliche Klassifizierungstypen definieren, die zu Ihren Geschäftsworkflows passen. Das System verwendet einen Klassifikator, um die Intention des Nutzers zu ermitteln, und leitet die Anfrage an die entsprechende Agent-Konfiguration weiter.
Sie stellen beispielsweise anhand der Abfrage fest, dass die Intention der Abfrage darin besteht, eine Bestellung nachzuverfolgen, und Sie haben die Klassifizierung TRACK_ORDER angegeben. Anstatt eine allgemeine Suche in allen Datenspeichern auszuführen, lädt das System einen speziellen Agenten, der mit den Tools und Daten ausgestattet ist, die zum Abrufen des Versandstatus erforderlich sind.
Möglichkeiten zum Aktivieren und Verwenden des Agent-basierten Abrufs
Es gibt zwei Möglichkeiten, die Agent-basierte Suche zu aktivieren:
Vordefinierter Google-Antwort-Agent:Wenn Sie bereits eine Suchanwendung in der Agentsuche haben, können Sie die agentenbasierte Suche aktivieren, indem Sie
enable_agent_invocation=truein API-Anfragen festlegen, wenn Sie Anfragen an die App senden. In diesem Fall behalten Sie die vorhandene Konfiguration für die Bereitstellung von Suchergebnissen bei.Benutzerdefinierte App im KI-Modus:Wenn Sie eine Agent Search-App erstellen, definieren Sie eine andere Art von Bereitstellungskonfiguration, nämlich die
default_agent_answer-Bereitstellungskonfiguration. Dies wird auch als benutzerdefinierte KI-Modus-Engine bezeichnet, da „App“ und „Engine“ in Agent Search synonym verwendet werden.
Hinweis
Bevor Sie die agentenbasierte Suche verwenden können, müssen Sie Folgendes tun:
Reasoning Engine für Sitzungen mit mehreren Durchläufen einrichten
Optional: Benutzerdefinierte App für den KI‑Modus einrichten
Reasoning Engine für Sitzungen mit mehreren Anfragen einrichten
Wenn Sie den Konversationskontext über mehrere Durchläufe hinweg beibehalten möchten, müssen Sie eine Agent Runtime auf 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 reasoningEngine-Feld in der streamAnswer-Anfrage.
Aktivieren Sie die Agent Platform für Ihr Google Cloud -Projekt.
Erstellen Sie eine Agent Runtime-Instanz (auch als Reasoning Engine bezeichnet) mit der Agent Engine REST API (oder dem Agent Development Kit). Die Instanz hostet die Sitzungen, die von der Methode
streamAnswerverwendet werden.Der Ressourcenname der Instanz hat das folgende Format:
projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID
Gewähren Sie dem Discovery Engine-Dienst-Agent Zugriff auf die Reasoning Engine, indem Sie dem Discovery Engine-Dienstkonto die Rolle
roles/aiplatform.reasoningEngineServiceAgentzuweisen:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
Dabei ist
PROJECT_NUMBERdie Nummer des Projekts, in dem die Reasoning Engine gehostet wird. Mit dieser Berechtigung kann das Streaming-Antwort-Backend in Ihrem Namen Ereignisse für Sitzungen erstellen, lesen und anhängen.Prüfen Sie die zutreffenden Kontingente. Sitzungen, die von der Agent Runtime unterstützt werden, verbrauchen Kontingente der Agent Platform API. Die relevanten Kontingente sind:
aiplatform.googleapis.com/session_write_requests– Agent Runtime-Sitzungen pro Minute erstellen, löschen oder aktualisieren.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.
Notieren Sie sich den Ressourcennamen der Agent Runtime, da Sie ihn als
reasoningEngine-Feld imstreamAnswer-Aufruf übergeben müssen.
Optional: Benutzerdefinierte App für den KI-Modus einrichten
Standardmäßig wird für die agentenbasierte Suche der vordefinierte Google-Antwort-Agent verwendet. Dabei werden Anfragen in die Intentionen DEFAULT_ANSWER_SEEKING und DO_NOT_ANSWER eingeteilt.
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. In jeder benutzerdefinierten Intention (oder jedem Frame) werden die Bedingungen deklariert, unter denen der Agent eine Anfrage in die Intention einordnet, sowie die Anweisungen und Tools, die der Agent zur Bearbeitung verwendet.
Erstellen Sie die Engine mit der REST-Methode
engines.createund einemengine_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"
Nachdem Sie das System erstellt haben, leiten Sie Anfragen über die
default_agent_answer-Bereitstellungskonfiguration weiter:projects/*/locations/*/collections/*/engines/YOUR_AI_MODE_ENGINE/servingConfigs/default_agent_answer
Wenn Sie Hilfe beim Entwerfen oder Registrieren einer benutzerdefinierten KI-Modus-App benötigen, wenden Sie sich an den Support.
Antwort mit agentischem Abruf streamen
Der folgende Befehl zeigt, wie Sie die Methode streamingAnswer mit aktivierter Agent-basierter Suche aufrufen. Ähnlich wie bei der Ausgabe ohne Agent-basierte 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 Turns hinweg beizubehalten.
REST
So suchen Sie und erhalten Ergebnisse mit einer gestreamten generierten Antwort:
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 Projekts in Google Cloud .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 aufdefault_agent_answerfest. Wenn Sie den vordefinierten Google-Antwort-Agent verwenden möchten, legen Sie diesen Wert aufdefault_searchfest.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 Unterhaltung mit mehreren Durchgängen fortsetzen, ist dies der Name der Sitzungsressource, der in der Antwort des vorherigen Durchgangs 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-(einen Bindestrich) fest.USER_PSEUDO_ID: Eine eindeutige Kennung zum Tracken des Besuchers.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 Referenzdokumentation zur Agent Search Python API.
Richten Sie zur Authentifizierung bei 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 Sitzungen mit mehreren Anfragen.
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 herunterladen
Das Discovery Engine SDK erleichtert die Interaktion mit Google Cloud-Diensten über Ihre Anwendungen. Das SDK unterstützt die Fehlerbehandlung und Authentifizierung und bietet Funktionen wie automatische Wiederholungen, die Verarbeitung von Paginierung und die Verwaltung von Vorgängen mit langer Ausführungszeit.
Da die Funktion für die agentenbasierte Suche auf einer Zulassungsliste steht, unterscheidet sich das SDK, das Sie für die Verwendung dieser Funktion benötigen, von den allgemein verfügbaren Discovery Engine-Clientbibliotheken.
So erhalten Sie die Vorschauversion des Discovery Engine SDK:
Wenden Sie sich an den Support, um Zugriff auf den Google Drive-Ordner mit dem Vorschau-SDK zu erhalten.
Laden Sie das Paket für Ihre Sprache herunter.
API-Änderungen
Da sich dieses Feature auf einer Zulassungsliste befindet, werden in der API-Referenzdokumentation auf der Seite zur Methode streaming answer nicht alle Felder angezeigt, die für die Verwendung der agentenbasierten Suche mit der Methode „stream answer“ verfügbar und erforderlich sind. Die fehlenden Felder werden so dokumentiert.
Felder im Anfragetext
enableAgentInvocation(boolesch): Legen Sietruefest, um zur agentenbasierten Verarbeitung mit der vorhandenen Konfiguration für die Suchbereitstellung zu wechseln. Dieses Feld ist optional, wenn Sie eineanswer_agent-Bereitstellungskonfiguration mit einer benutzerdefinierten App für den KI-Modus angeben.reasoningEngine(String): Der Ressourcenname der Agent Runtime, auf der die Agentsitzungen gehostet werden, im Formatprojects/*/locations/*/reasoningEngines/*.
Antwortfelder
Wenn die agentische Suche aktiviert ist, enthält jede generierte Answer.Reference Folgendes:
queries(wiederholter String): Die Liste der Anfragen, die der Agent gestellt hat, um die Referenz zu erstellen.
Sitzungsdienst
Die Session Service REST API unterstützt die Methoden create und update nicht. Die anderen Methoden werden jedoch unterstützt: list, get und delete.
Die Session Service RPC API unterstützt die Vorgänge Update oder Create für Sitzungsressourcen, die für Konversationen mit mehreren Durchgängen verwendet werden, nicht.
Es werden jedoch die anderen Dienste unterstützt: List-, Get- und Delete-Vorgänge für Sitzungsressourcen, die für Konversationen mit mehreren Durchgängen verwendet werden.