Présentation des agents de données

Les agents de données vous permettent d'interagir avec les données de votre base de données à l'aide d'un langage conversationnel. Vous pouvez créer des agents de données en définissant le contexte d'un ensemble de tables dans votre base de données. Les agents de données peuvent ainsi traduire des questions en langage naturel en requêtes précises pour vos cas d'utilisation cibles.

Le contexte correspond à des informations spécifiques à la base de données qui permettent au LLM de générer des requêtes avec une grande précision. Le contexte inclut des modèles et des facettes qui aident l'agent à comprendre le schéma de votre base de données et la logique métier de vos applications.

Les bases de données suivantes sont compatibles :

  • AlloyDB pour PostgreSQL
  • Cloud SQL pour MySQL
  • Cloud SQL pour PostgreSQL
  • Spanner

Quand utiliser des agents de données

Vous pouvez utiliser des agents de données pour créer des applications de données conversationnelles idéales pour des cas d'utilisation tels que :

  • Automatisation du service client : gérez un volume élevé de demandes telles que "Où en est ma commande ?" ou "Quel est mon solde actuel ?".
  • Assistants d'achat pour le e-commerce : aidez les utilisateurs à parcourir de grands catalogues de produits à l'aide de requêtes en langage naturel telles que "Affiche-moi les chaussures de course à moins de 100 €".
  • Systèmes de réservation : permettez aux utilisateurs de vérifier les disponibilités et de réserver des rendez-vous, des vols ou des services de restauration via des interfaces de chat.
  • Outils d'opérations sur le terrain : permettez aux employés mobiles d'interroger en temps réel les niveaux de stock , la disponibilité des pièces ou les détails des tickets d'assistance.

Fonctionnement des agents de données

Pour créer des applications agentiques efficaces, l'agent doit comprendre l'organisation de vos données et votre logique métier. Vous fournissez ces informations sous la forme d'un contexte d'agent.

Vous définissez le contexte de l'agent dans des fichiers contenant des objets JSON pour les modèles et les facettes. Vous créez ces fichiers de contexte à l'aide de Gemini CLI. Vous importez ensuite le fichier de contexte dans un agent de données que vous créez dans la Google Cloud console. Ce processus permet à l'agent d'apprendre le schéma spécifique de la base de données et la logique métier de l'application.

Le fichier de contexte de l'agent se présente comme suit :

{
  "templates": [
    {
      "nl_query": "Count prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ],
  "facets": [
    {
      "sql_snippet": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Lorsqu'un utilisateur final pose une question en langage naturel, l'agent donne la priorité à la mise en correspondance de la question avec les modèles et les facettes qui ont été audités par le développeur qui gère le contexte. Une fois que l'agent a identifié une correspondance, il utilise le modèle de requête et les facettes sélectionnés pour synthétiser une requête de base de données. L'agent exécute ensuite cette requête sur la base de données pour renvoyer des résultats précis.

Le point de terminaison QueryData de l'API Conversational Analytics est un outil agentique qui permet une intégration programmatique à vos applications pour activer la génération de requêtes SQL à partir de questions en langage naturel. Dans une application conversationnelle, le point de terminaison QueryData doit être utilisé dans le framework qui gère l'historique et le contexte de la conversation.

Contexte de l'agent

Le contexte de l'agent consiste en un ensemble organisé de modèles et de facettes au format JSON qui guident l'agent dans la traduction de questions en langage naturel en requêtes pour une base de données spécifique. La définition du contexte garantit une génération SQL très précise pour les modèles de requêtes courants.

Assurez-vous que le contexte de l'agent est précis et complet dans sa couverture des requêtes d'application attendues afin de maximiser la précision.

Les agents et le contexte de l'agent peuvent être créés dans les régions us-central1, us-east1, europe-west4 et asia-southeast1.

Modèles de requêtes

Les modèles de requêtes sont un ensemble organisé de questions représentatives en langage naturel avec les requêtes SQL correspondantes. Ils incluent également des explications pour fournir une justification déclarative pour la génération du langage naturel vers SQL.

Un objet de modèle de requête se présente comme suit :

{
  "templates": [
    {
      "nl_query": "Count prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ]
},
...

Les principaux composants de l'objet JSON du modèle de requête sont les suivants :

  • nl_query: exemple de requête en langage naturel gérée par l'agent de données.
  • sql : requête SQL pour la requête en langage naturel.
  • intent : objectif ou finalité de la requête en langage naturel. Si cette valeur n'est pas définie, elle est définie par défaut sur la requête en langage naturel.
  • manifest : forme généralisée et générée automatiquement de l'intention.
  • parameterized_intent: forme de l'intention générée automatiquement à partir d'un modèle, avec des valeurs d'entité remplacées par des paramètres.
  • parameterized_sql: forme de la requête SQL générée automatiquement à partir d'un modèle, qui correspond à l'intention paramétrée.

Facettes de requête

Les facettes de requête sont un ensemble organisé de conditions représentatives en langage naturel avec les prédicats SQL correspondants. Les facettes gèrent le filtrage et les conditions, ce qui permet aux modèles de requêtes d'effectuer des recherches à facettes.

Un objet de facette de requête se présente comme suit :

{
...
"facets": [
    {
      "sql_snippet": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Les principaux composants de l'objet JSON de la facette sont les suivants :

  • sql_snippet : extrait SQL.
  • intent : explication du prédicat SQL.
  • manifest : forme généralisée et générée automatiquement de l'intention.
  • parameterized_intent: forme de l'intention générée automatiquement à partir d'un modèle, avec des valeurs d'entité remplacées par des paramètres.
  • parameterized_sql_snippet: forme de l'extrait sql_snippet générée automatiquement à partir d'un modèle, qui correspond à l'intention paramétrée.

Limites

Les agents de données présentent les limites suivantes :

  • Le contexte de l'agent pour les bases de données n'est compatible qu'avec les modèles et les facettes.
  • Le contexte de l'agent pour les bases de données n'est utilisé que par le point de terminaison QueryData de l'API Conversational Analytics.

Étape suivante