Ejecuta una consulta SQL mediante lenguaje natural
Envía una indicación en lenguaje natural y un esquema de bases de datos a un modelo, lo que devuelve una consulta SQL para obtener un resultado de la base de datos y utilizarlo en su respuesta.
Temas relacionados
Opciones
-
Nombre de cuenta es una expresión de texto de la cuenta de IA que debe usar este paso de guión. En el archivo actual, utilice el paso de guión Configurar cuenta de IA para configurar la cuenta y asignarle este nombre en cualquier momento antes de que se ejecute este paso de guión.
-
Modelo es el nombre del modelo de generación de texto que se utiliza. Especifique el nombre del modelo como expresión de texto. Para conocer los modelos compatibles, consulte las Especificaciones técnicas de FileMaker.
-
Indicación es una expresión de texto para la solicitud o pregunta de lenguaje natural que se enviará al modelo.
-
Opciones especificadas determina cómo se configuran las otras opciones para este paso de guión.
-
Desde la lista: configura las opciones individualmente utilizando la configuración de abajo.
-
Por datos JSON: configura las siguientes opciones proporcionando un objeto JSON. Esta opción es útil para establecer valores dinámicamente. El objeto JSON debe contener pares clave-valor correspondientes a las opciones del paso de guión y sus valores. Las claves para las opciones admitidas son:
-
acción
: valor de cadena correspondiente a la acción deseada:"consulta"
,"consulta solo de datos"
,"obtener sql"
,"obtener solo primer sql"
,"obtener ddl"
. -
tablas de datos
: una matriz JSON de cadenas, donde cada cadena es el nombre de una tabla cuyo esquema debe incluirse. Por ejemplo:["Contactos", "Direcciones"]
. -
transmisión
: valor de cadena para la opción Transmisión ("encendida" o "apagada").
Por ejemplo:
Copiar{
"acción" : "obtener sql",
"tablas de datos" : [ "Productos", "Facturas" ],
"transmisión" : "apagada"
} -
-
-
Acción especifica el tipo de respuesta a recuperar del modelo.
-
Consulta: devuelve la respuesta final del modelo a la indicación del usuario en lenguaje natural.
-
Consulta solo de datos: devuelve solo los datos recuperados por la última consulta SQL del modelo ejecutada por este paso de guión.
-
Obtener SQL: devuelve todas las secuencias SQL generadas por el modelo durante toda la interacción.
-
Obtener solo primer SQL: devuelve solo la primera secuencias SQL generada por el modelo.
-
Obtener DDL: devuelve el esquema de la base de datos (en lenguaje de definición de datos) que este paso de guión genera y envía al modelo.
-
-
Tablas de datos indica cómo desea especificar el esquema de base de datos de las tablas para el modelo. Solo se envía el esquema de las tablas especificadas.
-
Desde la lista: seleccione tablas específicas de una lista.
-
Por nombre: proporcione una lista de nombres de tablas como expresión de texto. Separe los nombres de tablas con retornos de carro.
-
Por DDL: proporcione una expresión de texto DDL personalizada. Esto le permite controlar exactamente qué información del esquema se envía al modelo.
-
-
Tablas es donde se seleccionan las tablas cuando Tablas de datos se ha establecido en Desde la lista.
-
Transmisión determina cómo se entrega la respuesta cuando Acción se ha establecido en Consulta.
-
Encendida: la respuesta se recupera y se entrega de forma incremental (palabra por palabra o en trozos). Esto puede hacer que el cliente de FileMaker se sienta más receptivo.
-
Apagada: toda la respuesta se recupera antes de que esté disponible. Esto puede hacer que el cliente de FileMaker no responda mientras espera una respuesta completa.
-
-
Parámetros es una expresión de texto para un objeto JSON que consiste en pares clave-valor para parámetros adicionales que son compatibles con el proveedor del modelo. Por ejemplo:
{"temperatura": 0.7, "semilla": 42}
. Consulte la documentación del proveedor del modelo para conocer los nombres clave de los parámetros admitidos y sus rangos válidos. -
Nombre de plantilla de indicaciones especifica el nombre de una plantilla de indicaciones personalizada configurada utilizando el paso de guion paso de guión Configurar plantilla de indicaciones. Utilice esta opción para diseñar una indicación adicional con el fin de contribuir a lograr una respuesta óptima en un modelo de IA.
-
Objetivo de respuesta especifica el campo o la variable donde se almacenará el resultado del paso de guion.
-
Ejecutar JavaScript en el visualizador Web especifica el código JavaScript para ejecutar en un visualizador Web de destino después de que se complete el paso de guión. Esta opción es similar a ejecutar el paso de guión Ejecutar JavaScript en el visualizador Web como siguiente paso de guión, excepto que el Objetivo de respuesta se puede pasar a la función JavaScript y la respuesta se puede transmitir al visualizador Web cuando la opción Transmisión se establece en Encendida.
-
Visualizador Web especifica el nombre de objeto de un visualizador Web en la presentación actual.
-
Nombre de función es el nombre de la función JavaScript para llamar al visualizador Web.
-
Compatibilidad
Producto | Format |
FileMaker Pro | Sí |
FileMaker Go | Sí |
FileMaker WebDirect | Sí |
FileMaker Server | Parcial |
FileMaker Cloud | Parcial |
FileMaker Data API | Parcial |
Publicación en la Web personalizada | Parcial |
Se origina en
22.0
Descripción
Este paso de guión le permite consultar su base de datos utilizando lenguaje natural en lugar de escribir secuencias SQL directamente. Utiliza un modelo de IA para interpretar una indicación en lenguaje natural, analizar el esquema de la base de datos, generar consultas SQL apropiadas; después de que este paso de script ejecute las consultas SQL, el modelo puede responder en lenguaje natural con los resultados. No es necesario enviar ninguno de sus datos de FileMaker al modelo.
La interacción entre este paso de guión y el modelo suele seguir estos pasos:
-
Este paso de guión envía la indicación y el esquema de base de datos relevante (DDL especificado por Tablas de datos) al modelo de IA configurado. (Esto incluye las indicaciones proporcionadas en una plantilla de indicaciones opcional).
-
El modelo analiza la indicación y el esquema y genera una o más consultas SQL diseñadas para recuperar la información solicitada de la base de datos.
-
Este paso de guión recibe las consultas SQL generadas del modelo y las ejecuta.
-
Este paso de guión envía los resultados de la ejecución de la consulta SQL de vuelta al modelo.
-
Si el modelo determina que los resultados requieren un procesamiento o refinamiento adicional para abordar completamente la indicación, puede generar consultas SQL adicionales (repitiendo los pasos 2-4). Esto permite realizar consultas complejas o recuperaciones de datos en varios pasos.
-
Cuando el modelo tiene suficiente información, genera una respuesta final basada en la indicación y los resultados de la consulta SQL que recibió.
-
Este paso de guión recibe la respuesta final y la almacena en el Objetivo de respuesta.
La opción Acción determina lo que se devuelve al Objetivo de respuesta en las diferentes etapas de este proceso:
Acción | Hace lo siguiente |
---|---|
Consulta |
Completa todo el flujo de trabajo (pasos 1-7), incluidas las rondas repetidas de generación y ejecución de SQL. El Objetivo de respuesta recibe la respuesta final en lenguaje natural del modelo, que puede incluir los datos de la consulta SQL integrada en una respuesta conversacional. |
Consulta solo de datos |
Ejecuta los pasos 1-6, pero se detiene antes del paso 7. El Objetivo de respuesta recibe solo los datos devueltos por la última consulta. |
Para la depuración: | |
Obtener SQL |
Ejecuta los pasos 1-6, pero se detiene antes del paso 7. El Objetivo de respuesta recibe el texto de todas las secuencias SQL generadas por el modelo a lo largo de la interacción. |
Obtener solo primer SQL |
Realiza solo los pasos 1-2 y se detiene. El Objetivo de respuesta recibe solo el texto de la primera secuencia SQL generada por el modelo. Esta opción ayuda a reducir el uso de tokens durante la depuración. |
Obtener DDL |
Ejecuta solo el paso 1 (generando el DDL basado en la opción Tablas de datos). No interactúa con el modelo. El Objetivo de respuesta recibe el texto del DDL generado. |
Las acciones de depuración son principalmente útiles para comprender cómo interactúa el paso de guión con el modelo y el esquema de su base de datos mientras prueba el guión.
Notas
-
Si especifica un Nombre de plantilla de indicaciones, este paso de guión utiliza la plantilla configurada a través del paso de guión Configurar plantilla de indicaciones. Estas plantillas pueden usar constantes como
:schema:
,:question:
,:sql_query:
y:sql_results:
que se reemplazan dinámicamente durante la ejecución. Las constantes disponibles dependen del tipo de plantilla y de la acción actual. -
Los comentarios de campo que introduzca en el cuadro de diálogo Administrar base de datos se incluyen con el esquema de base de datos enviado al modelo. Con el fin de mejorar la capacidad del modelo para generar secuencias SQL útiles, puede usar el comentario para explicar el propósito del campo (por ejemplo, cuando un campo es una clave externa que identifica un registro en una tabla relacionada). Consulte Prácticas recomendadas para el esquema de base de datos en la generación de consultas DDL y SQL
-
Este paso de guión no puede determinar qué ronda de generación y ejecución de SQL es la última hasta que se reciba la respuesta final en lenguaje natural del modelo.
-
Durante la ejecución de las acciones Consulta o Consulta solo de datos, este paso de guión recibe y almacena todas las secuencias SQL generadas por el modelo y el resultado de la última consulta SQL ejecutada. Estos son los mismos resultados devueltos por las acciones Obtener SQL y Consulta solo de datos, respectivamente.
-
Cuando este paso de guión se ejecuta sin errores, pero no se encuentra información relevante, se devuelve un mensaje en el Objetivo de respuesta, y la función Get ( LastError ) devuelve el error 0 ("Sin errores").
-
En los guiones ejecutados por FileMaker Server, FileMaker Cloud, FileMaker Data API, OData API y Publicación en la Web personalizada, la opción Ejecutar JavaScript en el visualizador Web no es compatible.
Ejemplo 1
Configura una cuenta de IA, luego utiliza el paso de guión Ejecuta una consulta SQL mediante lenguaje natural para hacer una pregunta sobre los datos en la tabla Contactos, que tiene datos en los campos Nombre y Empresa. El paso de guión envía el esquema de la tabla Contactos y la indicación "¿Para qué empresa trabaja Alea?" al modelo. El modelo genera la consulta SQL necesaria y este paso de guión la ejecuta; luego el modelo proporciona una respuesta en lenguaje natural almacenada en el campo Respuesta.
Configurar cuenta de IA [ Nombre de cuenta: "my-account" ; Proveedor del modelo: OpenAI ; Clave API: "sk-..." ]
Ejecuta una consulta SQL mediante lenguaje natural [ Nombre de cuenta: "my-account"; Modelo: "gpt-4o" ; Indicación: "¿Para qué empresa trabaja Alea?" ; Opciones especificadas: Desde la lista ; Acción: Consulta ; Tablas de datos: Desde la lista ; Tablas... ; Transmisión; Objetivo de respuesta: Contactos::Respuesta ]
Posible respuesta almacenada en el campo Contactos::Respuesta:
Alea trabaja para Acme Anvils, Inc.
Ejemplo 2
Le pide al usuario una pregunta en un cuadro de diálogo personalizado, donde el botón predeterminado es "Consulta", el botón 2 es "Solo datos" y el botón 3 es "Cancelar", y la pregunta se almacena en la variable $$UserPrompt. Luego establece la variable $options para reflejar la elección del usuario para la acción
que se va a realizar: consulta
o consulta solo de datos
. Si el usuario ha introducido una pregunta y no ha hecho clic en Cancelar, ejecuta el paso de guión Ejecuta una consulta SQL mediante lenguaje natural, pasa a $$UserPrompt y $options, y luego devuelve los resultados del modelo en $$QueryResultData, que se muestra en otro cuadro de diálogo personalizado. Las consultas se limitan a las tablas Contactos y Empleados.
Configurar cuenta de IA [ Nombre de cuenta: "my-account" ; Proveedor del modelo: OpenAI ; Clave API: "sk-..." ]
Mostrar cuadro de diálogo personalizado [ "Pida a la base de datos:" ; $$UserPrompt ]
Establecer variable [ $options ; Valor:
Let ( [
$choice = Get ( LastMessageChoice ) ;
action_choice = Case (
$choice = 1 ; "consulta" ;
$choice = 2 ; "consulta solo de datos"
)
] ;
JSONSetElement (
"";
[ "acción" ; action_choice ; JSONString ] ;
[ "tablas de datos" ; JSONMakeArray (
"Contactos¶Empleados" ;
"¶" ;
JSONString
) ;
JSONArray ] ;
[ "transmisión" ; "apagada" ; JSONString ]
)
)
]
If [ not IsEmpty ( $$UserPrompt ) and $choice ≠ 3 ]
Ejecuta una consulta SQL mediante lenguaje natural [ Nombre de cuenta: "my-account" ; Modelo: "gpt-4o" ; Indicación: $$UserPrompt ; Opciones especificadas: Por datos JSON ; Objetivo de respuesta: $$QueryResultData ]
Mostrar cuadro de diálogo personalizado [ "Resultado de datos:" ; $$QueryResultData ]
End If
Posible respuesta almacenada en $$QueryResultData, asumiendo que el mensaje era "¿Para qué empresa trabaja Alea?" y el usuario hizo clic en el botón Solo datos:
Acme Anvils, Inc.
Ejemplo 3
Demuestra el uso de las acciones Obtener SQL y Obtener DDL para la depuración. El guión primero recupera el DDL generado para las tablas Productos y Pedidos, luego recupera todas las secuencias SQL generadas por el modelo para una indicación específica y almacena cada una en variables independientes para su revisión.
Ejecuta una consulta SQL mediante lenguaje natural [ Nombre de cuenta: "my-account" ; Modelo: "gpt-4o" ; Indicación: " "; Opciones especificadas: Desde la lista ; Acción: Obtener DDL ; Tablas de datos: Por nombre ; "Productos¶Pedidos" ; Objetivo de respuesta: $$ProductsOrdersDDL ]
Ejecuta una consulta SQL mediante lenguaje natural [ Nombre de cuenta: "my-account" ; Modelo: "gpt-4o" ; Indicación: "Busca el valor total de pedidos para el ID de producto 101" ; Opciones especificadas: Desde la lista ; Acción: Obtener SQL ; Tablas de datos: Por nombre ; "Productos¶Pedidos" ; Objetivo de respuesta: $$GeneratedSQL ]
Mostrar cuadro de diálogo personalizado [ "Información de depuración" ; "DDL generado:" & ¶ & $$ProductsOrdersDDL & ¶ & ¶ & "SQL generado:" & ¶ & $$GeneratedSQL ]
Posible DDL almacenado en $$ProductsOrdersDDL:
CREATE TABLE "Productos" (
"ProductID" int, /*Clave principal que identifica de forma única un producto*/
"ProductName" varchar(255), /*Nombre descriptivo del producto*/
"Price" int, /*Precio del producto en USD*/
PRIMARY KEY (ProductID)
);
CREATE TABLE "Pedidos" (
"OrderID" int, /*Clave principal que identifica de forma única un pedido*/
"ProductID" int, /*Clave externa para una relación de muchos a uno con la tabla Productos*/
"Quantity" int, /*Cantidad del producto en el pedido*/
PRIMARY KEY (OrderID),
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
Posible secuencia SQL almacenada en $$GeneratedSQL:
SELECT SUM("Cantidad" * "Precio") AS "TotalValue" FROM "Pedidos" JOIN "Productos" ON "Pedidos"."ProductID" = "Productos"."ProductID" WHERE "Pedidos"."ProductID" = 101