Descripción general de los agentes de datos

Los agentes de datos te permiten interactuar con los datos de tu base de datos mediante lenguaje conversacional. Puedes crear agentes de datos definiendo el contexto para un conjunto de tablas en tu base de datos, lo que permite que los agentes de datos traduzcan preguntas en lenguaje natural en consultas precisas para tus casos de uso objetivo.

El contexto es información específica de la base de datos que permite que el LLM genere consultas con alta precisión. El contexto incluye plantillas y facetas que ayudan al agente a comprender el esquema de tu base de datos y la lógica empresarial de tus aplicaciones.

Se admiten las siguientes bases de datos:

  • AlloyDB para PostgreSQL
  • Cloud SQL para MySQL
  • Cloud SQL para PostgreSQL
  • Spanner

Cuándo usar agentes de datos

Puedes usar agentes de datos para compilar aplicaciones de datos conversacionales ideales para casos de uso como los siguientes:

  • Automatización de la atención al cliente: Controla las consultas de gran volumen, como "¿Dónde está mi pedido?" o "¿Cuál es mi saldo actual?".
  • Asistentes de compras de comercio electrónico: Ayuda a los usuarios a navegar por grandes catálogos de productos con consultas en lenguaje natural, como "Muéstrame calzado para correr por menos de USD 100".
  • Sistemas de reservas: Permite que los usuarios consulten la disponibilidad y reserven citas, vuelos o servicios de restaurantes a través de interfaces de chat.
  • Herramientas de operaciones de campo: Permite que los empleados móviles consulten los niveles de inventario , la disponibilidad de piezas o los detalles de los tickets de servicio en tiempo real.

Cómo funcionan los agentes de datos

Para compilar aplicaciones de agentes eficaces, el agente debe comprender la organización de tus datos y la lógica empresarial. Proporcionas esta información en forma de contexto del agente.

Defines el contexto del agente en archivos que contienen objetos JSON para plantillas y facetas. Creas estos archivos de contexto con la ayuda de la CLI de Gemini. Luego, subes el archivo de contexto a un agente de datos que creas en la Cloud de Confiance by S3NS consola. Este proceso permite que el agente aprenda el esquema específico de la base de datos y la lógica empresarial de la aplicación.

El archivo de contexto del agente es similar al siguiente:

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

Cuando un usuario final hace una pregunta en lenguaje natural, el agente prioriza la coincidencia de la pregunta con las plantillas y las facetas que auditó el desarrollador que selecciona el contexto. Una vez que el agente identifica una coincidencia, usa la plantilla de consulta y las facetas seleccionadas para sintetizar una consulta de base de datos. Luego, el agente ejecuta esa consulta en la base de datos para mostrar resultados precisos.

El extremo QueryData en la API de Conversational Analytics es una herramienta de agente que permite la integración programática con tus aplicaciones para habilitar la generación de consulta en SQL a partir de preguntas en lenguaje natural. En una aplicación conversacional, el extremo QueryData se debe usar dentro del framework que administra el historial y el contexto de la conversación.

Contexto del agente

El contexto del agente consiste en un conjunto seleccionado de plantillas y facetas en formato JSON que guían al agente en la traducción de preguntas en lenguaje natural a consultas para una base de datos específica. La definición del contexto garantiza la generación de SQL de alta precisión para patrones de consulta comunes.

Asegúrate de que el contexto del agente sea preciso y completo en su cobertura de las consultas de aplicaciones esperadas para maximizar la precisión.

Los agentes y el contexto del agente se pueden crear en las regiones us-central1, us-east1, europe-west4 y asia-southeast1.

Plantillas de consulta

Las plantillas de consulta son un conjunto seleccionado de preguntas representativas en lenguaje natural con las consultas en SQL correspondientes. También incluyen explicaciones para proporcionar una justificación declarativa para la generación de lenguaje natural a SQL.

Un objeto de plantilla de consulta es similar al siguiente:

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

Los componentes principales del objeto JSON de la plantilla de consulta son los siguientes:

  • nl_query: Es un ejemplo de una consulta en lenguaje natural que controla el agente de datos.
  • sql: Es la consulta en SQL para la consulta en lenguaje natural.
  • intent: Es el objetivo o propósito de la consulta en lenguaje natural. Si no se configura, este valor se establece de forma predeterminada en la consulta en lenguaje natural.
  • manifest: Es una forma generalizada y generada automáticamente de la intención.
  • parameterized_intent: Es una forma de plantilla y generada automáticamente de la intención, con valores de entidad reemplazados por parámetros.
  • parameterized_sql: Es una forma de plantilla y generada automáticamente de la consulta en SQL que corresponde a la intención parametrizada.

Facetas de consulta

Las facetas de consulta son un conjunto seleccionado de condiciones representativas en lenguaje natural con los predicados de SQL correspondientes. Las facetas administran el filtrado y las condiciones, lo que permite que las plantillas de consulta realicen búsquedas por facetas.

Un objeto de faceta de consulta es similar al siguiente:

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

Los componentes principales del objeto JSON de la faceta son los siguientes:

  • sql_snippet: Es un fragmento de SQL.
  • intent: Es una explicación del predicado de SQL.
  • manifest: Es una forma generalizada y generada automáticamente de la intención.
  • parameterized_intent: Es una forma de plantilla y generada automáticamente de la intención, con valores de entidad reemplazados por parámetros.
  • parameterized_sql_snippet: Es una forma de plantilla y generada automáticamente del sql_snippet que corresponde a la intención parametrizada.

Limitaciones

Los agentes de datos tienen las siguientes limitaciones:

  • No se admite Cloud SQL para SQL Server.
  • El contexto del agente para bases de datos solo admite plantillas y facetas.
  • El contexto del agente para bases de datos solo lo usa el extremo QueryData en la API de Conversational Analytics.

¿Qué sigue?