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 de un conjunto de tablas de tu base de datos, lo que permite a los agentes de datos traducir preguntas en lenguaje natural en consultas precisas para tus casos prácticos objetivo.
El contexto es información específica de la base de datos que permite al LLM generar consultas con gran precisión. El contexto incluye plantillas y facetas (fragmentos) 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 for PostgreSQL
- Cloud SQL para MySQL
- Cloud SQL para PostgreSQL
- Spanner
Cuándo usar agentes de datos
Puedes usar agentes de datos para crear aplicaciones de datos conversacionales ideales para casos prácticos como los siguientes:
- Automatización del servicio de atención al cliente: gestiona consultas de gran volumen, como "¿Dónde está mi pedido?" o "¿Cuál es mi saldo actual?".
- Asistentes de compra de comercio electrónico: ayudan a los usuarios a desplazarse por catálogos de productos grandes con consultas en lenguaje natural, como "Muéstrame zapatillas para correr de menos de 100 €".
- Sistemas de reservas: permite a los usuarios consultar la disponibilidad y reservar citas, vuelos o servicios de restauración a través de interfaces de chat.
- Herramientas de operaciones de campo: permiten a los empleados móviles consultar los niveles de inventario, la disponibilidad de piezas o los detalles de las incidencias en tiempo real.
Cómo funcionan los agentes de datos
Para crear aplicaciones de agentes eficaces, el agente debe entender la organización de tus datos y la lógica empresarial. Proporcionas esta información en forma de contexto del agente.
El contexto del agente se define en archivos que contienen objetos JSON para plantillas y facetas. Puedes crear estos archivos de contexto con la ayuda de la CLI de Gemini. A continuación, subes el archivo de contexto a un agente de datos que creas en la Google Cloud consola. Este proceso permite al agente aprender el esquema específico de la base de datos y la lógica empresarial de la aplicación.
El archivo de contexto del agente tiene un aspecto 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"
}
}
],
"fragments": [
{
"fragment": "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_fragment": "T.\"A11\" BETWEEN $1 AND $2"
}
}
]
}
Cuando un usuario final hace una pregunta en lenguaje natural, el agente prioriza la búsqueda de coincidencias entre la pregunta y las plantillas y facetas que ha auditado el desarrollador que ha seleccionado 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. A continuación, el agente ejecuta esa consulta en la base de datos para devolver resultados precisos.
El endpoint QueryData de la API Conversational Analytics es una herramienta de agente que permite la integración programática con tus aplicaciones para generar consultas SQL a partir de preguntas en lenguaje natural. En una aplicación conversacional, el endpoint QueryData debe usarse en un framework que gestione el historial y el contexto de la conversación.
Contexto del agente
El contexto del agente consta de un conjunto de plantillas y facetas en formato JSON que guían al agente para traducir preguntas en lenguaje natural a consultas para una base de datos específica. Definir el contexto asegura una 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.
Plantillas de consultas
Las plantillas de consulta son un conjunto seleccionado de preguntas representativas en lenguaje natural con las consultas de SQL correspondientes. También incluyen explicaciones para proporcionar una justificación declarativa de la generación de lenguaje natural a SQL.
Un objeto de plantilla de consulta tiene un aspecto 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"
}
}
]
},
...
Estos son los componentes principales del objeto JSON de la plantilla de consulta:
nl_query: ejemplo de consulta en lenguaje natural que gestiona el agente de datos.sql: la consulta de SQL de la consulta en lenguaje natural.intent: el objetivo o la finalidad de la consulta en lenguaje natural. Si no se define, este valor se asigna de forma predeterminada a la consulta en lenguaje natural.manifest: una forma generalizada y generada automáticamente de la intención.parameterized_intent: una forma de la intención basada en plantillas y generada automáticamente, con los valores de las entidades sustituidos por parámetros.parameterized_sql: una forma de consulta de SQL generada automáticamente a partir de una plantilla que se corresponde con la intención parametrizada.
Consultar facetas
Las facetas de consulta son un conjunto seleccionado de condiciones representativas en lenguaje natural con predicados de SQL correspondientes. Las facetas gestionan los filtros y las condiciones, lo que permite que las plantillas de consulta realicen búsquedas por facetas.
Un objeto de facet (fragmento) de consulta tiene un aspecto similar al siguiente:
{
...
"fragments": [
{
"fragment": "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_fragment": "T.\"A11\" BETWEEN $1 AND $2"
}
}
]
}
Los componentes principales del objeto JSON de fragmento son los siguientes:
fragment: un predicado de SQL.intent: explicación del predicado SQL.manifest: una forma generalizada y generada automáticamente de la intención.parameterized_intent: una forma de la intención basada en plantillas y generada automáticamente, con los valores de las entidades sustituidos por parámetros.parameterized_fragment: una forma de fragmento generada automáticamente a partir de una plantilla que corresponde a la intención parametrizada.
Limitaciones
Los agentes de datos tienen las siguientes limitaciones:
- El contexto del agente para bases de datos solo admite plantillas y facetas.
- El contexto del agente de las bases de datos solo lo usa el endpoint
QueryDatade la API Conversational Analytics.
Siguientes pasos
- Consulta cómo crear o eliminar un agente de datos en AlloyDB Studio.