QueryData in eine Anwendung einbinden

In dieser Anleitung wird beschrieben, wie Sie QueryData in Firestore mit MongoDB-Kompatibilität über die Google Cloud Console einrichten und verwenden und in Ihre Anwendung einbinden. Hier erfahren Sie, wie Sie die Kontextset-Datei erstellen, ein Kontextset erstellen, das die Kontextset-Datei verwendet, mit der MCP Toolbox die QueryData-Methode in der Conversational Analytics API aufrufen, um MongoDB-kompatible Abfragesprachenabfragen (MQL) für Fragen in natürlicher Sprache zu generieren, und diese in Ihre Anwendung einbinden.

Weitere Informationen finden Sie unter QueryData – Übersicht.

Ziele

  • Datenbanken erstellen und mit Daten füllen
  • Erstellen Sie mit dem Context-Engineering-Agenten eine Kontextset-Datei.
  • Erstellen Sie ein Kontextset und laden Sie eine Kontextset-Datei hoch.
  • Testen Sie QueryData und generieren Sie MQL-Abfragen in Firestore mit MongoDB-Kompatibilität Studio.
  • Mit dem Tool Gemini Data Analytics QueryData in der MCP Toolbox können Sie QueryData in Ihre Anwendung einbinden.
  • LLM-Antworten mit Wertsuchanfragen fundieren

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Neuen Nutzern von Google Cloud steht möglicherweise eine kostenlose Testversion zur Verfügung.

Löschen Sie die von Ihnen erstellten Ressourcen, wenn Sie die Aufgaben in diesem Dokument abgeschlossen haben, um weitere Kosten zu vermeiden. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

Erfüllen Sie die folgenden Voraussetzungen, bevor Sie ein Kontextset erstellen.

Erforderliche Dienste aktivieren

Aktivieren Sie die folgenden Dienste für Ihr Projekt:

Firestore-Datenbank vorbereiten

Sie benötigen eine Firestore Enterprise-Datenbank mit MongoDB-Kompatibilität.

Wenn Sie die Beispiele auf dieser Seite ausprobieren möchten, empfehlen wir Ihnen, zu diesem Zweck eine neue Datenbank zu erstellen. Weitere Informationen finden Sie unter Datenbanken erstellen und verwalten.

Erforderliche Rollen und Berechtigungen

Sammlungen flights und airports füllen

In diesem Abschnitt füllen Sie die Sammlungen flights und airports mit den bereitgestellten MQL-Skripts.

  1. Rufen Sie in der Google Cloud Console die Seite „Firestore“ auf.

    Firestore aufrufen

  2. Wählen Sie eine Datenbank aus der Liste aus. Wenn Sie beispielsweise zuvor eine neue Datenbank erstellt haben, wählen Sie diese aus. Die Datenbank muss eine Enterprise-Datenbank mit MongoDB-Kompatibilität sein.

  3. Klicken Sie im Navigationsmenü auf Firestore Studio.

  4. Klicken Sie auf Neuer MQL-Editor-Tab oder Neuer Tab, um einen neuen Tab zu öffnen.

  5. Füllen Sie die Sammlung airports mit dem folgenden Skript. Achten Sie darauf, dass die Option Schreibgeschützt nicht ausgewählt ist.

  6. Füllen Sie die flights-Sammlung aus, indem Sie das folgende Skript ausführen. Achten Sie darauf, dass die Option Schreibgeschützt nicht ausgewählt ist.

Kontextset in Firestore Studio erstellen

In diesem Abschnitt erstellen Sie einen Kontextsatz mit dem Namen flights-assistant. Für diesen Kontextsatz wurde keine Kontextsatzdatei hochgeladen.

  1. Rufen Sie in der Google Cloud Console die Seite „Firestore“ auf.

    Firestore aufrufen

  2. Wählen Sie eine Datenbank aus der Liste aus. Die Datenbank muss eine Enterprise-Datenbank im MongoDB-Kompatibilitätsmodus sein.

  3. Klicken Sie im Navigationsmenü auf Firestore Studio.

  4. Klicken Sie im Bereich Explorer neben Kontextsätze auf Weitere Aktionen ().

  5. Klicken Sie auf Kontextgruppe erstellen.

  6. Geben Sie unter Name des Kontextsets flights-assistant ein.

  7. Klicken Sie auf Erstellen.

QueryData in Studio testen

In diesem Abschnitt verwenden Sie den Kontext flights-assistant, indem Sie Fragen in natürlicher Sprache stellen, um eine MQL-Abfrage zu generieren. Da für das Kontextset keine Kontextset-Datei hochgeladen wurde, generiert QueryData auch nach dem Stellen einer Frage mit Kontext wie nighttime traffic eine suboptimale Abfrage.

  1. Klicken Sie im Bereich Explorer neben Ihrem Kontextsatz auf Weitere Aktionen ().
  2. Klicken Sie auf Kontextset testen.
  3. Klicken Sie im Abfrageeditor auf MQL mit QueryData generieren: flights-assistant.
  4. Geben Sie die folgende Frage in natürlicher Sprache ein, um eine MQL-Abfrage zu generieren, und klicken Sie auf Generieren.

    Find flights from SFO to JFK.
    

    Prüfen Sie die MQL-Abfrage. QueryData generiert die richtige MQL für diese eindeutige Frage.

      db.flights.find({"departure_airport": "SFO", "arrival_airport": "JFK"})
    
  5. Klicken Sie im Fenster MQL mit QueryData generieren mit: flights-assistant auf Bearbeiten.

  6. Geben Sie die folgende Frage in natürlicher Sprache ein, um eine MQL-Abfrage zu generieren, und klicken Sie auf Aktualisieren.

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    Die Datenbank versteht den Begriff nighttime-Traffic nicht. Das kann dazu führen, dass keine MQL-Abfrage generiert wird oder dass eine Abfrage generiert wird, in der der Begriff ignoriert wird, wie in der folgenden Abfrage zu sehen ist.

    // The database schema does not contain information about traffic.
    // Returning all flights departing from New York airports.
    db.flights.find({
      $and: [
        {
          "departure_airport": {"$regex": "New York", "$options": "i"}
        },
        {
          "$or": [
            {"departure_time": {"$exists": true}},
            {"arrival_time": {"$exists": true}}
          ]
        }
      ]
    })
    

Kontext für das Kontextset generieren

In diesem Abschnitt bereiten Sie die Umgebung vor und erstellen eine Kontextdatei, mit der die Abfragefunktionen des Kontextsets verbessert werden.

Umgebung einrichten

Bevor Sie mit dem Generieren von Kontext beginnen können, müssen Sie Ihre Umgebung vorbereiten.

So richten Sie Ihre Umgebung ein:

  1. Installieren Sie die Antigravity CLI. Weitere Informationen finden Sie unter Erste Schritte mit der Antigravity CLI.
  2. Installieren Sie die Google Cloud CLI.
  3. Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) einrichten Führen Sie im Terminal die folgenden Befehle aus, um sich zu authentifizieren und Ihr Projekt auszuwählen:

    gcloud auth application-default login
  4. Installieren Sie uv, ein Python-Paket und ein Projektmanager, das eine Voraussetzung für den Context Engineering-Agent ist. Wenn Python noch nicht auf Ihrem System installiert ist, kann uv es für Sie installieren.

  5. Kontext-Engineering-Agent installieren:

    agy plugin install https://github.com/GoogleCloudPlatform/db-context-enrichment/tree/main/plugin
  6. Starten Sie die Antigravity CLI in Ihrem Terminal.

    agy
  7. Datenbankverbindung für die Kontextgenerierung mit der MCP Toolbox einrichten Die Verbindung ist in der Konfigurationsdatei tools.yaml definiert.

    Wenn Sie die Konfigurationsdatei tools.yaml im aktuellen Verzeichnis erstellen möchten, geben Sie einen Prompt wie den folgenden ein:

    Help me set up context generation for a Firestore database with MongoDB compatibility.
    

    Folge den Anweisungen des Skills. Weitere Informationen zur tools.yaml-Datei finden Sie in der Dokumentation zur MCP Toolbox.

  8. Führen Sie den folgenden Befehl in der Antigravity CLI aus, um die Konfiguration neu zu laden, nachdem die Datei tools.yaml erstellt wurde, und folgen Sie der Anleitung zum Neuladen des Toolbox-MCP-Servers:

    /mcp
    1. Wählen Sie db-context-engineering_toolbox aus.

    2. Wählen Sie Restart aus.

  9. Prüfen Sie, ob die MCP-Toolbox und das Agenten-Plug-in für Context Engineering verbunden und einsatzbereit sind.

    /mcp

Vorlagenkontext generieren

In diesem Abschnitt definieren Sie den Begriff nighttime traffic in der Kontextdatei als Traffic zwischen 5:00 PM und 7:00 PM, um das Problem aus dem vorherigen Abschnitt zu beheben, bei dem QueryData den Begriff nicht erkannt hat.

So generieren Sie den Vorlagenkontext:

  1. Geben Sie den folgenden Prompt in die Antigravity CLI ein:

    Generate a template for the question: "Tell me flights that can help me beat nighttime traffic if traveling from New York" with the following MQL query:
    
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      },
    ])
    
  2. Der Agent wandelt Ihre Eingabe in ein bestimmtes Format um, das die Leistung des Kontextsets für eine Vielzahl von Nutzeranfragen optimiert. Weitere Informationen finden Sie unter Kontextsätze – Übersicht.

  3. Sehen Sie sich die generierte Abfragevorlage an. Sie können die Abfragevorlage entweder als neue Kontextdatei des Agenten speichern oder an eine vorhandene Kontextdatei des Agenten anhängen.

  4. Weisen Sie den KI-Agenten an, die Vorlage zu speichern:

    Save it to context_set.json.
    

    Der Agent erstellt die Datei im selben Verzeichnis mit folgendem Inhalt:

    {
      "templates": [
        {
          "nl_query": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"New York\"] },\n          {\n            \"$or\": [\n              { \"$lte\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
          "intent": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "manifest": "Tell me flights that can help me beat nighttime traffic if traveling from a given city",
          "parameterized": {
            "parameterized_sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"$1\"] },\n          {\n            \"$or\": [\n              { \"$lte\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
            "parameterized_intent": "Tell me flights that can help me beat nighttime traffic if traveling from $1"
          }
        }
      ]
    }
    

Kontextsatzdatei in QueryData hochladen

In diesem Abschnitt laden Sie die Kontextset-Datei in QueryData hoch, um die MQL-Generierungsfunktionen von QueryData für Ihre Datenbank zu verbessern.

Führen Sie die folgenden Schritte aus, um den Kontext hochzuladen:

  1. Rufen Sie in der Google Cloud Console die Seite „Firestore“ auf.

    Firestore aufrufen

  2. Wählen Sie eine Datenbank aus der Liste aus. Die Datenbank muss eine Enterprise-Datenbank im MongoDB-Kompatibilitätsmodus sein.

  3. Klicken Sie im Navigationsmenü auf Firestore Studio.

  4. Klicken Sie im Bereich Explorer neben Kontextsets auf das Symbol Aktionen ().

  5. Klicken Sie auf Kontextgruppe bearbeiten.

  6. Klicken Sie im Abschnitt Kontextsatzdatei hochladen auf Durchsuchen und wählen Sie die zuvor generierte Kontextsatzdatei aus.

  7. Klicken Sie auf Speichern.

MQL-Abfrage mit QueryData generieren

In diesem Abschnitt verwenden Sie die hochgeladene Kontextdatei, um Fragen in natürlicher Sprache zu stellen. So können Sie prüfen, ob QueryData Definitionen für Begriffe wie nighttime traffic und andere verwandte Wortgruppen richtig versteht und anwendet.

So generieren Sie MQL-Abfragen:

  1. Klicken Sie im Bereich Explorer neben Ihrem Kontextset auf Weitere Aktionen ().
  2. Klicken Sie auf Kontextset testen.
  3. Klicken Sie im Abfrageeditor auf MQL mit QueryData generieren: flights-assistant.
  4. Geben Sie die folgende Frage in natürlicher Sprache ein, um eine MQL-Abfrage zu generieren, und klicken Sie auf Generieren.

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    Die generierte MQL-Abfrage sieht in etwa so aus:

    // Tell me flights that can help me beat nighttime traffic if traveling from New York
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

    Das ist dieselbe Frage, die Sie dem Kontext von „QueryData“ hinzugefügt haben. QueryData kann den Begriff nighttime traffic jetzt korrekt interpretieren.

    Der Kontext stammt zwar aus einer bestimmten Frage, wird aber von QueryData verwendet, um die MQL-Generierung für eine Vielzahl ähnlicher Fragen zu verbessern.

  5. Klicken Sie im Fenster MQL mit QueryData generieren mit: flights-assistant auf Bearbeiten.

  6. Geben Sie die folgende ähnliche Frage ein, um eine MQL-Abfrage zu generieren, und klicken Sie auf Aktualisieren.

    What are the flights that can help me avoid evening traffic if departing from Boston
    

    Da in der Frage der Begriff nighttime traffic durch einen ähnlichen Begriff, evening traffic, ersetzt wird, liefert QueryData eine konsistente Antwort auf diese Frage, indem dieselbe Interpretation angewendet wird.

    Die generierte MQL-Abfrage sieht in etwa so aus:

    // What are the flights that can help me avoid evening traffic if departing from Boston
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "Boston"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

QueryData in Ihre Anwendung einbinden

In diesem Abschnitt erstellen Sie einen Daten-Agenten für eine Anwendung zur Flugsuche. Dieser KI-Datenagent bietet eine dialogorientierte Schnittstelle für die Tabellen flights und airports, die Sie zuvor erstellt haben. Außerdem wird erläutert, wie Sie diesen Daten-Agenten mit dem Agent Development Kit (ADK), dem Gemini Data Analytics QueryData MCP-Tool und einem Kontextset erstellen und in Ihre Anwendung einbinden, um die Qualität der Antworten zu verbessern.

  1. Laden Sie die MCP Toolbox-Version 1.14.0 oder höher herunter. Die MCP Toolbox stellt den Daten-Agenten als Tool bereit, mit dem Anwendungen eine Verbindung herstellen können. Die MCP Toolbox unterscheidet sich von dem zuvor installierten Context Engineering-Agenten, der Kontext generiert.

  2. Richten Sie Standardanmeldedaten für Anwendungen ein.

    gcloud auth application-default login
  3. Suchen Sie die ID des zuvor erstellten Kontextsets. Weitere Informationen zum Suchen der Kontextgruppe-ID finden Sie unter Kontextgruppe-ID finden.

  4. Hängen Sie Folgendes an die tools.yaml-Konfiguration an, um über die MCP Toolbox eine Verbindung zum KI-Datenagenten herzustellen. Weitere Informationen finden Sie unter Gemini Data Analytics-Quelle und Gemini Data Analytics-QueryData-Tool.

    kind: source
    name: gda-api-source
    type: cloud-gemini-data-analytics
    projectId: "PROJECT_ID"
    ---
    kind: tool
    name: cloud_gda_query_tool
    type: cloud-gemini-data-analytics-query
    source: gda-api-source
    description: Use this tool to send natural language queries to the Gemini Data Analytics API and receive MongoDB-compatible query language (MQL), natural language answers, and explanations.
    location: "REGION_ID"
    context:
      datasourceReferences:
        firestoreReference:
          databaseReference:
            projectId: "PROJECT_ID"
            databaseId: "DATABASE_ID"
          agentContextReference:
            contextSetId: "CONTEXT_SET_ID"
    generationOptions:
      generateQueryResult: true
      generateNaturalLanguageAnswer: true
      generateExplanation: true
      generateDisambiguationQuestion: true
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Google Cloud Projekt-ID
    • DATABASE_ID: Der Name der Datenbank, zu der eine Verbindung hergestellt werden soll.
    • REGION_ID: Die Region Ihrer Datenbank (z. B. us-central1).
    • CONTEXT_SET_ID: Die ID des Kontext-Sets. Weitere Informationen zum Suchen der Kontextgruppe-ID finden Sie unter Kontextgruppe-ID finden.
  5. Führen Sie den MCP Toolbox-Server mit der Datei tools.yaml aus.

    ./toolbox --config autoctx/tools.yaml
  6. Erstellen Sie eine ADK-Anwendung, die das Gemini Data Analytics QueryData-Tool mit dem Python SDK der MCP Toolbox aufruft. Weitere Informationen zur Verwendung des Python SDK der MCP Toolbox finden Sie in der Kurzanleitung für die Toolbox. Informationen zum Python ADK finden Sie in der Kurzanleitung für das ADK.

    1. Erstellen Sie ein Verzeichnis zum Speichern der Anwendung, z. B. flight-assistant-app.
    2. Wechseln Sie in das Verzeichnis flight-assistant-app.

      mkdir flight-assistant-app
      cd flight-assistant-app
    3. Führen Sie die folgenden Befehle im Verzeichnis flight-assistant-app aus, um eine virtuelle Umgebung zu erstellen und die erforderlichen Komponenten zu installieren.

      uv init
      uv add google-adk toolbox-core google-genai
    4. Richten Sie einen ADK-Agenten ein.

      1. ADK-Agent erstellen

        uv run adk create my_agent
      2. Wählen Sie das Modell gemini-3.8-flash oder ein neueres Modell aus.

      3. Wählen Sie Google AI aus und geben Sie Ihren Gemini API-Schlüssel ein. Weitere Informationen zum Abrufen Ihres API-Schlüssels finden Sie unter Gemini API-Schlüssel verwenden. Wenn Sie keinen kostenlosen Testzeitraum benötigen, können Sie alternativ Vertex AI auswählen und ein Google Cloud Projekt mit aktivierter Abrechnung angeben.

    5. Ersetzen Sie den Inhalt der Datei agent.py durch den folgenden Beispielanwendungscode für den Flight Data Assistant.

      from typing import cast
      
      from google.adk.agents.llm_agent import Agent
      from google.adk.agents.llm_agent import ToolUnion
      
      from toolbox_core import ToolboxSyncClient
      
      TOOLBOX_URL = "http://127.0.0.1:5000"
      
      INSTRUCTION = """
      # ROLE
      You are a friendly and factual flight data assistant. Your goal is to help users find the best flights for their needs by providing accurate information with a helpful, professional tone.
      - use the Query Data Tool to answer the user's question, if the tool fails to generate a valid query, ask the user to clarify their question.
      
      # OPERATIONAL CONSTRAINTS
      - TOOL LIMITATION: You only have access to the Query Data Tool. Do not claim to have capabilities beyond what this tool provides.
      - TRANSPARENCY POLICY: Maintain a seamless user experience. Never mention that you are using a tool, querying a database, or generating MQL. Frame all responses as your own direct assistance.
      - SCOPE MANAGEMENT: If a user asks for something beyond your capabilities, politely state that you cannot perform that specific task. Guide the user towards what you can help with.
      
      # COMMUNICATION STYLE
      - Be concise and scannable when listing answers.
      - Maintain a helpful, professional persona.
      
      =====
      
      # QUERY DATA TOOL
      
      Inputs:
      1. query: A natural language formulation of a database query.
      
      Outputs: (all optional)
      1. disambiguation_question: Clarification questions or comments where the tool needs the users' input.
      2. generated_query: The generated query for the user query.
      3. intent_explanation: An explanation for why the tool produced `generated_query`.
      4. query_result: The result of executing `generated_query`.
      5. natural_language_answer: The natural language answer that summarizes the `query` and `query_result`.
      
      Usage guidance:
      1. If `disambiguation_question` is produced, then solicit the needed inputs from the user and try the tool with a new `query` that has the needed clarification.
      2. If `natural_language_answer` is produced, use `intent_explanation` and `generated_query` to see if you need to clarify any assumptions for the user.
      3. If the tool output indicates failure or empty results, explain that clearly using the provided reasoning.
      """
      
      client = ToolboxSyncClient(TOOLBOX_URL)
      
      mcp_tool = client.load_tool("cloud_gda_query_tool")
      
      root_agent = Agent(
          model="gemini-3.8-flash",  # Or newer.
          name="root_agent",
          instruction=INSTRUCTION,
          tools=cast(list[ToolUnion], [mcp_tool]),
      )
      
  7. Führen Sie die folgenden Befehle im Verzeichnis flight-assistant-app aus, um die Anwendung zu starten und auf den ADK-Webserver unter http://127.0.0.1:8000 zuzugreifen.

    uv run adk web --port 8000
  8. Geben Sie einen beliebigen Text ein, z. B. hello, um mit dem KI-Agenten zu interagieren.

    Der ADK-Agent beantwortet allgemeine Fragen und ruft die erforderlichen MCP-Tools auf.

  9. Geben Sie die folgende Frage zu einem Flug ein:

    How many flights depart from the west side?
    

    Das MCP-Tool wird aufgerufen, um diese Frage zu beantworten. Da der Begriff the west jedoch mehrdeutig ist und keine Flughäfen angibt, gibt das MCP-Tool eine Frage zur Mehrdeutigkeitsauflösung zurück, die der KI-Agent zum Erstellen einer Antwort verwendet.

    I cannot determine how many flights depart from the 'west side' as the database does not contain information about which airports are considered to be on the 'west side'. However, I can help you with questions like:
    
    1. How many flights depart from a specific airport?
    
    2. What are the departure airports for all flights?
    
    3. How many flights depart from each airport? Would you like to rephrase your question based on these options?
    
  10. Geben Sie eine Frage ein, die der Frage in der für den Agenten generierten Abfragevorlage ähnelt.

    Help me find flights from San Francisco that avoid the evening rush hour.
    

    Basierend auf dem zuvor hinzugefügten QueryData-Kontext weiß das MCP-Tool, dass evening traffic zwischen 17:00 Uhr und 19:00 Uhr stattfindet. Das MCP-Tool gibt die zugehörigen Daten zurück, die der Agent dann für die Antwort verwendet.

    Here are the flights departing from San Francisco that avoid the evening rush hour (defined as 5 PM to 7 PM):
    
    * UA 1532 departing at 05:50:00
    * UA 1158 departing at 05:57:00
    * CY 922 departing at 06:38:00
    * OO 5441 departing at 07:08:00
    * UA 616 departing at 07:14:00
    * AA 24 departing at 07:14:00
    * B6 434 departing at 08:00:00
    * AA 242 departing at 08:18:00
    * UA 1739 departing at 08:22:00
    * OO 6336 departing at 08:32:00
    * US 1784 departing at 08:47:00
    * DL 1631 departing at 09:00:00
    * DL 1106 departing at 09:06:00
    * OO 5427 departing at 09:06:00
    * CY 352 departing at 09:25:00
    

Agentenleistung iterieren

In der ADK-Web-UI können Sie die Anfrage und Antwort des MCP-Tools „QueryData“ von Gemini Data Analytics prüfen. Anhand dieser Antwort können Sie die Tool-Antworten wie die generierte MQL-Abfrage, das Ergebnis-Set, die Erklärung der Intention, die Frage zur Begriffsklärung und die Antwort in natürlicher Sprache ansehen, um die Richtigkeit der Antworten Ihres Agenten zu bestätigen.

Klicken Sie beispielsweise für den Eingabetext How many flights depart from the west side?, den Sie zuvor eingegeben haben, auf die Agent-Blase. Maximieren Sie auf dem Tab Ereignis im linken Navigationsbereich die functionResponse, um die folgende Antwort zu sehen.

"{"disambiguationQuestion": ["[NOT_ENOUGH_INFO] The database schema does not
contain information about which airports are on the 'west side'. Therefore, I
cannot determine how many flights depart from the west side.Possible alternative
questions: 1. How many flights depart from a specific airport? 2. What are the
departure airports for all flights? 3. How many flights depart from each
airport?"]}"

Antwortgenauigkeit optimieren

Sie können die Genauigkeit der Antworten des QueryData-Tools von Gemini Data Analytics kontinuierlich verbessern, indem Sie zusätzlichen Kontext hinzufügen. Verwenden Sie den Kontext-Engineering-Agenten, um Kontext zu generieren, und laden Sie dann die aktualisierte Kontextset-Datei in den vorhandenen flights-assistant-Datenagenten hoch. Weitere Informationen finden Sie unter Kontextgruppen in Firestore Studio verwalten. Die Konsole nimmt neuen Kontext sofort nach dem Hochladen auf. So können Sie die Genauigkeit des KI-Agenten verbessern, ohne dass es zu Ausfallzeiten der Anwendung kommt.

Mehrere KI-Agenten

In Ihrer Entwicklungsumgebung können Sie A/B-Tests für mehrere KI-Datenagenten-Kontexte durchführen, indem Sie Tools in Ihrer tools.yaml-Datei unterschiedliche Namen zuweisen. Sie können beispielsweise eindeutige tools.yaml-Konfigurationen erstellen, indem Sie zwei cloud-gemini-data-analytics-query-Tools mit unterschiedlichen Namen definieren, z. B. cloud_gda_query_tool_v1 und cloud_gda_query_tool_v2. Mit dieser Einrichtung können Sie eine Anwendungslogik implementieren, die die erforderliche Kontextversion programmatisch auswählt, indem der entsprechende Toolname ausgewählt wird.

Im folgenden Beispiel für tools.yaml wird gezeigt, wie Sie mehrere KI-Datenagenten für eine Datenbankquelle einrichten:

kind: source
name: gda-api-source
type: cloud-gemini-data-analytics
projectId: PROJECT_ID
---
kind: tool
name: cloud_gda_query_tool_v1
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V1_YOUR_CONTEXT_SET_ID"
generationOptions: ...
---
kind: tool
name: cloud_gda_query_tool_v2
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V2_YOUR_CONTEXT_SET_ID"
generationOptions: ...

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID
  • V1_YOUR_CONTEXT_SET_ID: Die ID des Kontextsets für Version 1.
  • V2_YOUR_CONTEXT_SET_ID: Die Kontext-Set-ID für Version 2.

Zugriffssteuerung und Sicherheitsaspekte

In der Vorschauversion werden für QueryData für Firestore mit MongoDB-Kompatibilität keine detaillierten Zugriffssteuerungen unterstützt. Wenn Sie QueryData in Ihre Anwendung einbinden, sollten Sie sich überlegen, wie der Datenzugriff gesteuert wird:

  • Granularität auf Datenbankebene: Die Zugriffsdetaillierung kann mithilfe von IAM-Bedingungen auf Datenbankebene gesteuert werden. Es gibt jedoch keine detaillierte Zugriffssteuerung auf Sammlungs-, Dokument- oder Feldebene.
  • Vollständiger Lesezugriff auf die Datenbank: Der KI-Datenagent hat Lesezugriff auf die gesamte Datenbank. Für jede vom Agenten generierte Anfrage können alle Sammlungen, Dokumente und Felder in dieser Datenbank gelesen werden. Der Daten-Agent wird nicht durch Firebase-Sicherheitsregeln eingeschränkt.
  • Bereich für Anwendungsnutzer: Da keine detaillierten Zugriffssteuerungen unterstützt werden, können Sie den Datenzugriff nicht auf bestimmte Sammlungen, Dokumente oder Felder basierend auf den Identitäten von Anwendungsnutzern beschränken. Von QueryData generierte Abfragen werden mit den vollständigen Leseberechtigungen des Datenbanknutzers oder Dienstkontos ausgeführt, das von Ihrer Anwendung verwendet wird.

Bereinigen

Nachdem Sie diese Anleitung abgeschlossen haben, sollten Sie die erstellten Ressourcen löschen, um laufende Kosten zu vermeiden. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen.

Kontextset löschen

Bevor Sie die Datenbank löschen, müssen Sie den von Ihnen erstellten Kontextsatz löschen.

  1. Rufen Sie in der Google Cloud Console die Seite „Firestore“ auf.

    Firestore aufrufen

  2. Wählen Sie eine Datenbank aus der Liste aus. Die Datenbank muss eine Datenbank der Enterprise-Version im MongoDB-Kompatibilitätsmodus sein.

  3. Klicken Sie im Navigationsmenü auf Firestore Studio.

  4. Klicken Sie im Bereich Explorer neben Ihrem Kontextsatz auf Weitere Aktionen ().

  5. Geben Sie im Fenster Kontextgruppe löschen flight-assistant in das Bestätigungsfeld ein.

  6. Klicken Sie auf Bestätigen.

Datenbank löschen

Wenn Sie die Datenbank löschen, die Sie im Abschnitt Vorbereitung erstellt haben, werden auch alle Objekte gelöscht, die Sie erstellt haben.

  1. Rufen Sie in der Google Cloud Console die Seite „Firestore“ auf.

    Firestore aufrufen

  2. Suchen Sie die Zeile mit dem Namen der Datenbank, die Sie löschen möchten.

  3. Klicken Sie auf das Symbol Aktionen () und dann auf Löschen.

  4. Bestätigen Sie, dass Sie die Datenbank löschen möchten, indem Sie den Datenbanknamen eingeben und auf Löschen klicken.

Nächste Schritte