Intégrer QueryData à une application

Ce tutoriel explique comment configurer et utiliser QueryData dans Firestore compatible avec MongoDB à l'aide de la console Google Cloud et comment l'intégrer à votre application. Découvrez comment créer le fichier d'ensemble de contextes, créer un ensemble de contextes qui utilise le fichier d'ensemble de contextes, utiliser MCP Toolbox pour appeler la méthode QueryData dans l'API Conversational Analytics afin de générer des requêtes en langage de requête compatible avec MongoDB (MQL) pour les questions en langage naturel, et l'intégrer à votre application.

Pour en savoir plus, consultez la présentation de QueryData.

Objectifs

  • Créer des bases de données et les remplir avec des données
  • Créez un fichier d'ensemble de contextes avec l'agent d'ingénierie contextuelle.
  • Créez un ensemble de contextes et importez un fichier d'ensemble de contextes.
  • Testez QueryData et générez des requêtes MQL dans Firestore avec MongoDB compatibility Studio.
  • Intégrez QueryData à votre application à l'aide de l'outil Gemini Data Analytics QueryData dans MCP Toolbox.
  • Ajoutez l'ancrage aux réponses du LLM à l'aide de requêtes de recherche de valeurs.

Coûts

Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai sans frais.

Pour éviter de continuer à payer des frais, supprimez les ressources que vous avez créées une fois que vous avez terminé les tâches décrites dans ce document. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

Avant de créer un ensemble de contextes, assurez-vous de remplir les conditions préalables suivantes.

Activer les services requis

Activez les services suivants pour votre projet :

Préparer une base de données Firestore

Assurez-vous de disposer d'une base de données Firestore Enterprise Edition compatible avec MongoDB.

Si vous essayez les exemples de cette page, nous vous recommandons de créer une base de données à cet effet. Pour en savoir plus, consultez Créer et gérer des bases de données.

Rôles et autorisations nécessaires

Remplir les collections flights et airports

Dans cette section, vous allez remplir les collections flights et airports à l'aide des scripts MQL fournis.

  1. Dans la console Google Cloud , accédez à la page Firestore.

    Accéder à Firestore

  2. Sélectionnez une base de données dans la liste. Par exemple, si vous avez créé une base de données précédemment, sélectionnez-la. La base de données doit être une base de données Enterprise Edition compatible avec MongoDB.

  3. Dans le menu de navigation, cliquez sur Firestore Studio.

  4. Cliquez sur Nouvel onglet de l'éditeur MQL ou sur Nouvel onglet pour ouvrir un nouvel onglet.

  5. Remplissez la collection airports en exécutant le script suivant. Assurez-vous que l'option Lecture seule n'est pas sélectionnée.

  6. Remplissez la collection flights en exécutant le script suivant. Assurez-vous que l'option Lecture seule n'est pas sélectionnée.

Créer un ensemble de contextes dans Firestore Studio

Dans cette section, créez un ensemble de contextes nommé flights-assistant. Cet ensemble de contexte n'inclut aucun fichier d'ensemble de contexte importé.

  1. Dans la console Google Cloud , accédez à la page Firestore.

    Accéder à Firestore

  2. Sélectionnez une base de données dans la liste. La base de données doit être une base de données de l'édition Enterprise en mode de compatibilité MongoDB.

  3. Dans le menu de navigation, cliquez sur Firestore Studio.

  4. Dans le volet Explorateur, à côté de Ensembles de contextes, cliquez sur Autres actions ().

  5. Cliquez sur Créer un ensemble de contextes.

  6. Dans Nom de l'ensemble de contexte, saisissez flights-assistant.

  7. Cliquez sur Créer.

Tester QueryData dans Studio

Dans cette section, utilisez le contexte flights-assistant défini en posant des questions en langage naturel pour générer une requête MQL. Comme l'ensemble de contextes ne contient aucun fichier d'ensemble de contextes, même après avoir posé une question avec un contexte tel que nighttime traffic, QueryData génère une requête sous-optimale.

  1. Dans le volet Explorateur, à côté de votre ensemble de contextes, cliquez sur Autres actions ().
  2. Cliquez sur Tester l'ensemble de contextes.
  3. Dans l'éditeur de requête, cliquez sur Générer du MQL à l'aide de QueryData avec : flights-assistant.
  4. Saisissez la question suivante en langage naturel pour générer une requête MQL, puis cliquez sur Générer.

    Find flights from SFO to JFK.
    

    Examinez la requête MQL. Notez que QueryData génère la requête MQL correcte pour cette question non ambiguë.

      db.flights.find({"departure_airport": "SFO", "arrival_airport": "JFK"})
    
  5. Dans la fenêtre Générer une requête MQL à l'aide de QueryData avec : flights-assistant, cliquez sur Modifier.

  6. Saisissez la question suivante en langage naturel pour générer une requête MQL, puis cliquez sur Mettre à jour.

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

    La base de données ne comprend pas le terme "trafic" nighttime. Cela peut l'empêcher de générer une requête MQL ou l'amener à générer une requête qui ignore le terme, comme le montre la requête suivante.

    // 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}}
          ]
        }
      ]
    })
    

Générer un contexte pour l'ensemble de contextes

Dans cette section, vous allez préparer l'environnement et créer un fichier de contexte qui permet d'améliorer les capacités d'interrogation de l'ensemble de contexte.

Configurer votre environnement

Avant de pouvoir commencer à générer du contexte, vous devez préparer votre environnement.

Pour configurer votre environnement, procédez comme suit :

  1. Installez l'interface de ligne de commande Antigravity. Pour en savoir plus, consultez Premiers pas avec Antigravity CLI.
  2. Installez la Google Cloud CLI.
  3. Configurez les Identifiants par défaut de l'application (ADC). Exécutez les commandes suivantes dans votre terminal pour vous authentifier et sélectionner votre projet :

    gcloud auth application-default login
  4. Installez uv, un gestionnaire de packages et de projets Python requis pour l'agent d'ingénierie de contexte. Si Python n'est pas déjà installé sur votre système, uv peut l'installer pour vous.

  5. Installez l'agent d'ingénierie du contexte :

    agy plugin install https://github.com/GoogleCloudPlatform/db-context-enrichment/tree/main/plugin
  6. Dans votre terminal, démarrez la CLI Antigravity.

    agy
  7. Configurez une connexion à une base de données pour la génération de contexte à l'aide de MCP Toolbox. La connexion est définie dans le fichier de configuration tools.yaml.

    Pour créer le fichier de configuration tools.yaml dans votre répertoire actuel, saisissez une invite telle que :

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

    Suivez les instructions fournies par la skill. Pour en savoir plus sur le fichier tools.yaml, consultez la documentation de MCP Toolbox.

  8. Pour recharger la configuration après la création du fichier tools.yaml, exécutez la commande suivante dans la CLI Antigravity et suivez les instructions pour recharger le serveur MCP de la boîte à outils :

    /mcp
    1. Sélectionnez db-context-engineering_toolbox.

    2. Sélectionnez Restart.

  9. Vérifiez que la boîte à outils MCP et le plug-in de l'agent d'ingénierie de contexte sont connectés et prêts à être utilisés.

    /mcp

Générer le contexte du modèle

Dans cette section, pour résoudre le problème de la section précédente où QueryData ne reconnaissait pas le terme nighttime traffic, définissez le terme dans le fichier d'ensemble de contexte comme le trafic se produisant entre 5:00 PM et 7:00 PM.

Pour générer le contexte du modèle, procédez comme suit :

  1. Saisissez le prompt suivant dans la CLI Antigravity :

    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. L'agent convertit votre entrée dans un format spécifique qui affine les performances de l'ensemble de contexte sur un large éventail de requêtes utilisateur. Pour en savoir plus, consultez Présentation des ensembles de contexte.

  3. Examinez le modèle de requête généré. Vous pouvez enregistrer le modèle de requête en tant que nouveau fichier de contexte d'agent ou l'ajouter à un fichier de contexte d'agent existant.

  4. Demandez à l'agent d'enregistrer le modèle :

    Save it to context_set.json.
    

    L'agent crée le fichier dans le même répertoire, avec le contenu suivant :

    {
      "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"
          }
        }
      ]
    }
    

Importer le fichier de l'ensemble de contexte dans QueryData

Dans cette section, vous allez importer le fichier d'ensemble de contextes dans QueryData afin d'améliorer les capacités de génération de MQL de QueryData sur votre base de données.

Pour importer le contexte, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Firestore.

    Accéder à Firestore

  2. Sélectionnez une base de données dans la liste. La base de données doit être une base de données Enterprise en mode de compatibilité MongoDB.

  3. Dans le menu de navigation, cliquez sur Firestore Studio.

  4. Dans le volet Explorateur, à côté de Ensembles de contextes, cliquez sur l'icône Actions ().

  5. Cliquez sur Modifier l'ensemble de contextes.

  6. Cliquez sur Parcourir dans la section Importer un fichier d'ensemble de contexte, puis sélectionnez le fichier d'ensemble de contexte généré précédemment.

  7. Cliquez sur Enregistrer.

Générer une requête MQL à l'aide de QueryData

Dans cette section, vous allez utiliser le fichier d'ensemble de contexte que vous avez importé pour poser des questions en langage naturel. Cela vous permet de vérifier que QueryData comprend et applique correctement les définitions de termes tels que nighttime traffic et d'autres expressions associées.

Pour générer des requêtes MQL, procédez comme suit :

  1. Dans le volet Explorateur, à côté de votre ensemble de contexte, cliquez sur Autres actions ().
  2. Cliquez sur Tester le contexte défini.
  3. Dans l'éditeur de requête, cliquez sur Générer du MQL à l'aide de QueryData avec : flights-assistant.
  4. Saisissez la question suivante en langage naturel pour générer une requête MQL, puis cliquez sur Générer.

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

    La requête MQL générée ressemble à ceci :

    // 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] }
                ]
              }
            ]
          }
        }
      }
    ])
    

    Il s'agit de la même question que celle que vous avez ajoutée au contexte de QueryData. Notez que QueryData peut désormais interpréter précisément le terme nighttime traffic.

    Bien que le contexte provienne d'une question particulière, QueryData l'utilise pour améliorer la génération de MQL pour un large éventail de questions similaires.

  5. Dans la fenêtre Générer une requête MQL à l'aide de QueryData avec : flights-assistant, cliquez sur Modifier.

  6. Saisissez la question similaire suivante pour générer une requête MQL, puis cliquez sur Mettre à jour.

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

    Étant donné que la question remplace le terme nighttime traffic par un terme similaire, evening traffic, QueryData fournit une réponse cohérente à cette question en appliquant la même interprétation.

    La requête MQL générée ressemble à ceci :

    // 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] }
                ]
              }
            ]
          }
        }
      }
    ])
    

Intégrer QueryData à votre application

Dans cette section, vous allez créer un agent de données pour une application de recherche de vols. Cet agent de données fournit une interface conversationnelle aux tables flights et airports que vous avez créées précédemment. Il explique également comment créer et intégrer cet agent de données dans votre application à l'aide d'Agent Development Kit (ADK), de l'outil MCP QueryData de Gemini Data Analytics et d'un ensemble de contextes pour améliorer la qualité des réponses.

  1. Téléchargez MCP Toolbox version 1.14.0 ou ultérieure. MCP Toolbox expose l'agent de données en tant qu'outil auquel les applications peuvent se connecter. MCP Toolbox diffère de l'agent de context engineering que vous avez installé précédemment, qui génère du contexte.

  2. Configurez les identifiants par défaut de l'application (ADC).

    gcloud auth application-default login
  3. Recherchez l'ID de l'ensemble de contexte que vous avez créé précédemment. Pour savoir comment trouver l'ID de l'ensemble de contextes, consultez Trouver l'ID de l'ensemble de contextes.

  4. Ajoutez les éléments suivants à la configuration tools.yaml pour vous connecter à l'agent de données à l'aide de MCP Toolbox. Pour en savoir plus, consultez Source d'analyse de données Gemini et Outil QueryData d'analyse de données Gemini.

    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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • DATABASE_ID : nom de la base de données à laquelle se connecter.
    • REGION_ID : région de votre base de données (par exemple, us-central1).
    • CONTEXT_SET_ID : ID de l'ensemble de contexte. Pour savoir comment trouver l'ID de l'ensemble de contextes, consultez Trouver l'ID de l'ensemble de contextes.
  5. Exécutez le serveur MCP Toolbox avec le fichier tools.yaml.

    ./toolbox --config autoctx/tools.yaml
  6. Créez une application ADK qui appelle l'outil QueryData de Gemini Data Analytics à l'aide du SDK Python de MCP Toolbox. Pour en savoir plus sur l'utilisation du SDK Python de la boîte à outils MCP, consultez le guide de démarrage rapide de la boîte à outils. Pour en savoir plus sur le SDK Python ADK, consultez le guide de démarrage rapide de l'ADK.

    1. Créez un répertoire pour stocker l'application, par exemple flight-assistant-app.
    2. Accédez au répertoire flight-assistant-app.

      mkdir flight-assistant-app
      cd flight-assistant-app
    3. Exécutez les commandes suivantes dans le répertoire flight-assistant-app pour créer un environnement virtuel et installer les composants requis.

      uv init
      uv add google-adk toolbox-core google-genai
    4. Configurer un agent ADK

      1. Créer un agent ADK.

        uv run adk create my_agent
      2. Sélectionnez le modèle gemini-3.8-flash ou une version ultérieure.

      3. Sélectionnez Google AI, puis saisissez votre clé API Gemini. Pour savoir comment trouver votre clé API, consultez Utiliser des clés API Gemini. (Si vous n'avez pas besoin d'un essai sans frais, vous pouvez sélectionner Vertex AI et spécifier un projet Google Cloud avec la facturation activée.)

    5. Remplacez le contenu du fichier agent.py par l'exemple de code d'application Flight Data Assistant suivant.

      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. Exécutez les commandes suivantes dans le répertoire flight-assistant-app pour démarrer l'application et accéder au serveur Web ADK à l'adresse http://127.0.0.1:8000.

    uv run adk web --port 8000
  8. Saisissez du texte, par exemple hello, pour commencer à interagir avec l'agent.

    L'agent ADK répond aux questions générales et appelle les outils MCP requis.

  9. Saisissez la question suivante concernant les vols.

    How many flights depart from the west side?
    

    L'outil MCP est appelé à répondre à cette question. Toutefois, comme le terme the west est ambigu et ne spécifie aucun aéroport, l'outil MCP renvoie une question de désambiguïsation que l'agent utilise pour construire une réponse.

    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. Saisissez une question semblable à celle du modèle de requête généré pour l'agent.

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

    En fonction du contexte QueryData ajouté précédemment, l'outil MCP comprend que evening traffic se produit entre 17h et 19h. L'outil MCP renvoie les données associées que l'agent peut utiliser pour élaborer sa réponse.

    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
    

Améliorer les performances de l'agent de manière itérative

L'UI Web de l'ADK vous permet d'inspecter la requête et la réponse de l'outil MCP QueryData de Gemini Data Analytics. Vous pouvez utiliser cette réponse pour observer les réponses de l'outil, telles que la requête MQL générée, l'ensemble de résultats, l'explication de l'intention, la question de désambiguïsation et la réponse en langage naturel, afin de vous aider à confirmer l'exactitude des réponses de votre agent.

Par exemple, pour le texte d'entrée How many flights depart from the west side? que vous avez saisi précédemment, cliquez sur la bulle de l'agent. Dans l'onglet Événement du panneau de navigation de gauche, développez functionResponse pour afficher la réponse suivante.

"{"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?"]}"

Améliorer la précision des réponses

Vous pouvez affiner en continu la justesse des réponses de l'outil QueryData de Gemini Data Analytics en ajoutant du contexte. Utilisez l'agent d'ingénierie contextuelle pour générer le contexte, puis importez le fichier d'ensemble de contextes mis à jour dans l'agent de données flights-assistant existant. Pour en savoir plus, consultez Gérer les ensembles de contexte dans Firestore Studio. La console ingère immédiatement le nouveau contexte après que vous l'avez importé, ce qui vous permet d'améliorer la précision de l'agent sans aucun temps d'arrêt de l'application.

Plusieurs agents

Dans votre environnement de développement, vous pouvez effectuer des tests A/B sur plusieurs contextes d'agent de données en attribuant des noms distincts aux outils dans votre fichier tools.yaml. Par exemple, vous pouvez créer des configurations tools.yaml uniques en définissant deux outils cloud-gemini-data-analytics-query avec des noms différents, tels que cloud_gda_query_tool_v1 et cloud_gda_query_tool_v2. Cette configuration vous permet d'implémenter une logique d'application qui sélectionne de manière programmatique la version de contexte requise en choisissant le nom de l'outil correspondant.

L'exemple tools.yaml suivant montre comment configurer plusieurs agents de données pour une source de données de base de données :

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: ...

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • V1_YOUR_CONTEXT_SET_ID : ID de l'ensemble de contextes pour la version 1.
  • V2_YOUR_CONTEXT_SET_ID : ID de l'ensemble de contexte pour la version 2.

Contrôle des accès et points à prendre en compte concernant la sécurité

Dans la version preview, QueryData pour Firestore compatible avec MongoDB ne prend pas en charge les contrôles des accès ultraprécis. Lorsque vous intégrez QueryData à votre application, tenez compte de la manière dont l'accès aux données est contrôlé :

  • Précision au niveau de la base de données : la précision de l'accès peut être contrôlée à l'aide des conditions IAM au niveau de la base de données. Toutefois, il n'existe pas de contrôle des accès précis au niveau des collections, des documents ou des champs.
  • Accès complet en lecture à la base de données : l'agent de données dispose d'un accès en lecture à l'intégralité de la base de données. Toute requête générée par l'agent peut lire toutes les collections, tous les documents et tous les champs de cette base de données. L'agent de données n'est pas limité par les règles de sécurité Firebase.
  • Définition du champ d'application des utilisateurs de l'application : étant donné que les contrôles d'accès précis ne sont pas acceptés, vous ne pouvez pas limiter l'accès aux données à des collections, des documents ou des champs spécifiques en fonction des identités des utilisateurs de l'application. Les requêtes générées par QueryData s'exécutent avec les autorisations de lecture complètes de l'utilisateur de la base de données ou du compte de service utilisé par votre application.

Effectuer un nettoyage

Une fois que vous avez terminé ce tutoriel, vous devez supprimer les ressources que vous avez créées pour éviter des coûts récurrents. Dans les sections suivantes, nous allons voir comment supprimer ces ressources.

Supprimer l'ensemble de contexte

Avant de supprimer la base de données, supprimez l'ensemble de contexte que vous avez créé.

  1. Dans la console Google Cloud , accédez à la page Firestore.

    Accéder à Firestore

  2. Sélectionnez une base de données dans la liste. La base de données doit être une base de données de l'édition Enterprise en mode de compatibilité MongoDB.

  3. Dans le menu de navigation, cliquez sur Firestore Studio.

  4. Dans le volet "Explorateur", à côté de votre ensemble de contexte, cliquez sur Plus d'actions ().

  5. Dans la fenêtre Supprimer l'ensemble de contexte, saisissez flight-assistant dans la zone de confirmation.

  6. Cliquez sur Confirmer.

Supprimer la base de données

Lorsque vous supprimez la base de données que vous avez créée dans la section Avant de commencer, vous supprimez également tous les objets que vous avez créés.

  1. Dans la console Google Cloud , accédez à la page "Firestore".

    Accéder à Firestore

  2. Recherchez la ligne correspondant au nom de la base de données que vous souhaitez supprimer.

  3. Cliquez sur l'icône Actions (), puis sur Supprimer.

  4. Confirmez que vous souhaitez supprimer la base de données en saisissant son nom et en cliquant sur Supprimer.

Étapes suivantes