Tester QueryData dans Firestore Studio

Ce document explique comment tester QueryData et mettre à jour le fichier d'ensemble de contexte. Vous pouvez tester la capacité de QueryData à générer des requêtes en langage de requête compatible avec MongoDB (MQL) à partir de questions en langage naturel. Si une requête générée n'est pas précise, vous pouvez mettre à jour le fichier d'ensemble de contexte.

Pour en savoir plus sur les ensembles de contexte, consultez la présentation des ensembles de contexte.

Avant de commencer

Assurez-vous qu'un ensemble de contexte est déjà créé et que le fichier d'ensemble de contexte est importé dans l'agent QueryData. Pour en savoir plus, consultez Gérer les ensembles de contexte dans Firestore Studio.

Pour télécharger, mettre à jour et importer des fichiers d'ensemble de contexte, assurez-vous que l'utilisateur IAM dispose du rôle Éditeur de catalogue Dataplex (roles/dataplex.catalogEditor) ou Administrateur de catalogue Dataplex (roles/dataplex.catalogAdmin) sur le projet. Pour en savoir plus, consultez Autorisations des ensembles de contexte.

Tester QueryData

Pour tester un QueryData, procédez comme suit :

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

    Accéder à Firestore

  2. Sélectionnez une base de données à laquelle vous avez ajouté un ensemble de contexte. Seule Firestore compatible avec MongoDB est prise en charge.

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

  4. Dans le volet Explorateur, cliquez sur Afficher les actions à côté de l'ensemble de contexte que vous utilisez.

  5. Cliquez sur Tester l'ensemble de contexte.

  6. Dans l'éditeur de requête, cliquez sur Générer une requête pour ouvrir le panneau Aide-moi à coder.

  7. Saisissez une question en langage naturel dans l'éditeur pour générer une requête MQL, puis cliquez sur Générer.

  8. Vérifiez l'exactitude de la requête MQL.

Télécharger et mettre à jour un ensemble de contexte

Si vous n'êtes pas satisfait de la requête MQL générée pour une question en langage naturel, téléchargez le fichier d'ensemble de contexte existant. Vous pouvez ensuite examiner et mettre à jour le modèle de requête, puis importer à nouveau le fichier de contexte mis à jour dans l'agent.

Pour télécharger et mettre à jour un ensemble de contexte, procédez comme suit :

  1. Dans le volet Explorateur, cliquez sur Afficher les actions.
  2. Cliquez sur Télécharger le fichier de contexte.
  3. Suivez les étapes de la section Créer des ensembles de contexte à l'aide de l'agent d'ingénierie contextuelle pour mettre à jour le contexte avec des paires de requêtes supplémentaires.
  4. Dans le volet Explorateur, cliquez sur Afficher les actions à côté de l'ensemble de contexte que vous utilisez.
  5. Cliquez sur Modifier l'ensemble de contexte.
  6. Cliquez sur Parcourir dans la section Importer le fichier d'ensemble de contexte, puis sélectionnez le fichier d'ensemble de contexte mis à jour.
  7. Cliquez sur Enregistrer pour mettre à jour l'ensemble de contexte.

Une fois que vous êtes satisfait de l'exactitude de vos réponses, vous pouvez utiliser le point de terminaison QueryData pour connecter votre application à l'ensemble de contexte.

Trouver l'ID de l'ensemble de contexte

Pour connecter une application de données à l'agent QueryData, vous avez besoin de l'ID de l'ensemble de contexte.

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

    Accéder à Firestore

  2. Sélectionnez une base de données à laquelle vous avez ajouté un ensemble de contexte.

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

  4. Dans le volet Explorateur, cliquez sur Afficher les actions à côté de l'ensemble de contexte que vous utilisez.

  5. Cliquez sur Modifier l'ensemble de contexte.

  6. Notez l'ID de contexte dans ID de l'ensemble de contexte. Le format de l'ID de l'ensemble de contexte est semblable à projects/data-agents-project/locations/us-central1/contextSets/bdf_pg_all_templates.

Connecter QueryData à l'application

Définissez l'ID de l'ensemble de contexte dans l'appel de méthode QueryData pour fournir un contexte créé pour les sources de données de base de données telles qu'AlloyDB, Spanner, Cloud SQL, Cloud SQL pour PostgreSQL et Firestore. Pour en savoir plus, consultez Définir le contexte de l'agent de données pour les sources de données de base de données.

Après avoir testé l'ensemble de contexte, vous pouvez référencer la source de données de base de données dans votre appel QueryData.

Exemple de requête QueryData avec un contexte créé

L'exemple suivant montre une requête QueryData utilisant la source de données firestore_reference (Firestore compatible avec MongoDB). Le champ agent_context_reference.context_set_id est utilisé pour établir un lien vers le contexte pré-créé stocké dans la base de données.

{
  "parent": "projects/context-set-project/locations/us-central1",
  "prompt": "How many accounts in the Prague region are eligible for loans?",
  "context": {
    "datasource_references": [
      {
        "firestore_reference": {
          "database_reference": {
            "project_id": "context-set-project",
            "region": "us-central1",
            "database_id": "financial"
          },
          "agent_context_reference": {
            "context_set_id": "projects/context-set-project/locations/us-central1/contextSets/bdf_pg_all_templates"
          }
        }
      }
    ]
  },
  "generation_options": {
    "generate_query_result": true,
    "generate_natural_language_answer": true,
    "generate_disambiguation_question": true,
    "generate_explanation": true
  }
}

Le corps de la requête contient les champs suivants :

  • prompt : question en langage naturel de l'utilisateur final.
  • context : contient des informations sur les sources de données.
    • datasource_references : spécifie le type de source de données.
      • firestore_reference : obligatoire lors de l'interrogation de la base de données. Ce champ change en fonction de la base de données que vous interrogez.
        • database_reference : spécifie les informations liées à votre instance de base de données.
          • project_id : ID du projet de la base de données.
          • region : région de la base de données.
          • database_id : ID de la base de données.
        • agent_context_reference : lien vers le contexte créé dans la base de données.
          • context_set_id : ID complet de l'ensemble de contexte du contexte stocké dans la base de données. Par exemple, projects/context-set-project/locations/us-central1/contextSets/bdf_gsql_gemini_all_templates.
  • generationOptions : configure le type de sortie à générer.
    • generate_query_result : défini sur "true" pour générer et renvoyer les résultats de la requête.
    • generate_natural_language_answer : facultatif. Si la valeur est "true", génère une réponse en langage naturel.
    • generate_explanation : facultatif. Si la valeur est "true", génère une explication de la requête MQL.
    • generate_disambiguation_question : facultatif. Si la valeur est définie sur "true", génère des questions de désambiguïsation si la requête est ambiguë.

Exemple de réponse QueryData

Voici un exemple de réponse réussie à un appel QueryData :

{
  "generated_query": "// Count the number of accounts in Prague that are eligible for loans\ndb.loans.aggregate([\n  // 1. Filter loans in the Prague region\n  { \n    $match: { \"district.name\": \"Prague\" } \n  },\n  // 2. Group by account_id to get distinct values, and count them\n  { \n    $group: { \n      _id: null, \n      uniqueAccounts: { $addToSet: \"$account_id\" } \n    } \n  },\n  // 3. Project the size of the unique accounts array\n  { \n    $project: { \n      _id: 0,\n      distinct_account_count: { $size: \"$uniqueAccounts\" } \n    } \n  }\n]);",
  "intent_explanation": "The question asks for the number of accounts eligible for loans in the Prague region. I need to filter the documents in the loans collection to only give me those in the Prague region. Then I need to group the loans by account ID to get distinct values and count them. Finally, I need to project the size of the array of unique accounts.",
  "query_result": {
    "columns": [
      {
        "name": "distinct_account_count"
      }
    ],
    "rows": [
      {
        "values": [
          {
            "value": "2"
          }
        ]
      }
    ],
    "total_row_count": 1
  },
  "natural_language_answer": "There are 2 accounts in Prague that are eligible for loans."
}

Étape suivante