Generar respuesta a partir del modelo
Obtiene una respuesta de texto de un modelo de IA dada una indicación del usuario.
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 de usuario es una expresión de texto para la petición o pregunta en lenguaje natural que se envía al modelo, que suele ser la petición realizada por el usuario.
-
El modo Agentic controla cómo este paso de guión maneja las interacciones automatizadas de las herramientas:
-
Activado: habilita la interacción automatizada de varios pasos donde el modelo puede llamar a las herramientas repetidamente hasta que alcanza un resultado final.
-
Desactivado: realiza una única interacción y se detiene después de la primera llamada a la herramienta sin ejecutar la llamada a la herramienta ni devolver un resultado en Respuesta, lo que permite el manejo y la depuración manuales. Si no se realizan llamadas a herramientas, devuelve el resultado del modelo en Respuesta.
-
-
Respuesta especifica el campo o la variable donde se almacenará el resultado del paso de guion. Si especifica un campo y selecciona Transmisión, el campo debe estar en la presentación actual.
-
Instrucciones es una expresión de texto que proporciona contexto adicional o pautas de comportamiento para el modelo.
-
Mensajes especifica el campo o variable que contiene el historial de mensajes para proporcionar el contexto del modelo de interacciones anteriores. Los mensajes son una matriz de objetos JSON. Cada objeto JSON debe contener pares clave-valor para el texto del mensaje (
content
) y quién proporcionó el contenido (role
), ya sea el usuario ("user"
) o el modelo ("assistant"
). Por ejemplo:Copiar[
{
"content": "¿Qué temperatura hace en Cupertino?",
"role": "user"
},
{
"content": "La temperatura en Cupertino es de 72 grados Fahrenheit.",
"role": "assistant"
}
] -
Guardar historial de mensajes en especifica la variable donde el paso de guión almacena el historial de mensajes. El formato es el mismo que para Mensajes, con el par de mensajes para la ejecución actual de este paso de guión añadido al final.
Si desea que el historial de mensajes persista después de que finalice el guión actual, utilice una variable global (que persiste hasta que finalice la sesión del cliente de FileMaker) o almacene el valor de la variable en un campo. Consulte Usar variables o el paso de guión Establecer campo.
-
Conteo del historial de mensajes es una expresión numérica que controla el número de pares de mensajes anteriores (pregunta del usuario y respuesta del asistente) para incluir en la variable especificada por Guardar historial de mensajes en.
-
Temperatura controla la aleatoriedad o creatividad de la respuesta de un modelo frente a una indicación. Los valores bajos producen resultados más deterministas y fácticos. Los valores altos generan resultados más creativos, inesperados o menos coherentes. Consulte la documentación del proveedor de modelos para conocer los rangos válidos para el modelo específico que está utilizando.
-
Definiciones de herramientas especifica una matriz JSON de herramientas disponibles que el modelo puede llamar durante el procesamiento. Vea "Definiciones de herramientas" a continuación.
-
Llamadas a herramientas desde el modelo especifica dónde almacenar información sobre las llamadas a las herramientas realizadas por el modelo. Esto puede ser útil para depurar o para auditar el uso de herramientas del modelo.
-
Transmisión controla cómo se entrega la respuesta:
-
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. -
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 la respuesta se puede pasar a la función JavaScript y transmitirse 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 | Sí |
FileMaker Cloud | Sí |
FileMaker Data API | Sí |
Publicación en la Web personalizada | Sí |
Se origina en
22.0
Descripción
Este paso de guión facilita la interacción de varios pasos entre la aplicación personalizada y los modelos de IA, lo que permite al modelo acceder y manipular datos a través de llamadas de herramientas cuando sea necesario. El paso de guión opera en dos modos distintos basados en la opción Modo Agentic, cada uno de los cuales proporciona diferentes niveles de automatización y control sobre la interacción.
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 de usuario, cualquier instrucción, el contexto de conversación de los mensajes y las definiciones de herramientas disponibles al modelo configurado.
-
El modelo analiza la indicación y determina si puede proporcionar una respuesta directa o necesita usar herramientas para recopilar información adicional o realizar acciones.
-
Si se necesitan herramientas, el modelo genera llamadas a herramientas con parámetros apropiados basados en las definiciones de herramientas disponibles y la petición del usuario.
-
Este paso de guión recibe las llamadas a la herramienta del modelo y el cliente de FileMaker las ejecuta. La ejecución de la herramienta puede incluir las herramientas predefinidas, como consultas SQL o llamadas a sus propias funciones personalizadas.
-
Este paso de guión envía los resultados de la ejecución de la herramienta de vuelta al modelo, proporcionando al modelo los datos o la confirmación que necesita para continuar procesando.
-
Si el modelo determina que se necesitan herramientas adicionales para abordar completamente la indicación, puede generar más llamadas de herramientas (repitiendo los pasos 3-5). Este proceso iterativo continúa hasta que el modelo tenga suficiente información para proporcionar una respuesta integral.
-
Después de que el modelo haya completado todas las interacciones de herramientas necesarias, genera una respuesta final que incorpora los resultados de la herramienta y aborda la indicación de usuario original.
-
Este paso de guión recibe la respuesta final, la almacena en el objetivo de respuesta especificado y, opcionalmente, actualiza el historial de interacciones en Guardar historial de mensajes en.
La opción Modo Agentic determina cómo se maneja la interacción:
-
Activado: habilita la interacción automatizada de varios pasos con las herramientas, ejecutando el flujo de trabajo completo (pasos 1-8) automáticamente. Cuando el modelo de IA determina que se necesitan herramientas para cumplir con la petición, llama automáticamente a las herramientas adecuadas y continúa procesando hasta llegar a un resultado final. El modelo puede hacer múltiples rondas de llamadas de herramientas según sea necesario, y cada ronda se basa en los resultados de las ejecuciones de herramientas anteriores. Este modo es para tareas complejas que requieren múltiples interacciones con herramientas, como analizar datos en múltiples tablas, generar informes o realizar operaciones de varios pasos.
-
Desactivado: realiza una sola interacción con el modelo de IA, ejecutando solo los pasos 1-3 y deteniéndose después de la primera llamada a la herramienta. Si el modelo determina que se necesitan herramientas, el paso de guión se detiene y devuelve la información de la llamada de la herramienta en Llamadas a herramientas desde el modelo en lugar de ejecutar las herramientas automáticamente. Este modo es útil para depurar interacciones con herramientas, comprender qué herramientas quiere usar el modelo o cuando se desea obtener control manual sobre la ejecución de herramientas. Puede examinar las llamadas a la herramienta y luego decidir si ejecutarlas manualmente o modificar el enfoque.
El flujo de información entre este paso de guión y el modelo garantiza que los datos confidenciales permanezcan seguros al tiempo que habilita la funcionalidad impulsada por IA. El modelo solo recibe la información proporcionada explícitamente a través de indicaciones, instrucciones y resultados de herramientas; no tiene acceso directo a su base de datos o archivos de FileMaker. Las llamadas a herramientas se ejecutan dentro del entorno controlado de FileMaker, lo que le permite mantener un control total sobre el acceso a los datos y las operaciones a través de cuentas y privilegios de FileMaker mientras aprovecha las capacidades analíticas y de razonamiento del modelo.
Definiciones de herramientas
Uso de herramientas (también denominado llamadas a funciones por algunos proveedores de modelos) permite que el modelo vuelva a llamar a la aplicación FileMaker Pro para hacer o proporcionar algo que el modelo necesita para generar su respuesta final. En el modo Agentic, el modelo puede llamar a varias herramientas repetidamente hasta que termine. En la opción Definiciones de herramientas, puede definir las siguientes herramientas:
-
execute_sql
: una herramienta predefinida que realiza la consulta SQL especificada, capaz de ejecutar una declaración SQL enviada por el modelo de la misma manera que lo hace el paso de guión Ejecuta una consulta SQL mediante lenguaje natural. -
retrieve_image
: Una herramienta predefinida que recupera una imagen del campo contenedor especificado por una consulta SQL, nombre de tabla y nombre de campo contenedor. -
Funciones personalizadas: cualquier función personalizada definida en su archivo. Consulte Uso de funciones personalizadas.
Las definiciones de herramientas se especifican utilizando el formato JSON requerido por el proveedor del modelo. En general, la definición es una matriz de objetos donde cada uno especifica el nombre de una herramienta, una descripción detallada de lo que hace la herramienta y qué reglas debe seguir el modelo al usarla, y para cada parámetro de entrada, su nombre, tipo de datos y descripción. Las descripciones deben tan detalladas como sea necesario para que el modelo utilice la herramienta de forma fiable. Si utiliza las herramientas predefinidas, comience utilizando las definiciones que se proporcionan a continuación. Si es necesario, modifíquelas para lograr resultados óptimos para los modelos que utiliza.
Para ayudarle a depurar las definiciones de sus herramientas, establezca la opción Llamadas a herramientas desde el modelo en un campo o variable donde pueda ver cómo o si el modelo llamó a las herramientas. Esto puede ayudar a revelar lo que puede necesitar agregar o cambiar en las descripciones que proporciona en sus definiciones de herramientas.
Para conocer el formato JSON específico utilizado para las definiciones de herramientas y las llamadas a herramientas, consulte la documentación del proveedor del modelo, por ejemplo, Anthropoc, Cohere y OpenAI.
execute_sql
Nombre de función |
|
|
Descripción de la función |
|
|
Nombre de parámetro |
|
|
Descripción del parámetro |
Añada el esquema que desea que utilice el modelo al final de esta descripción. Proporcione el esquema en lenguaje de definición de datos (DDL) según lo devuelto por la función función GetTableDDL para las ocurrencias de la tabla que desea incluir. |
Devuelve: el resultado de la consulta SQL como una cadena.
retrieve_image
Nombre de función |
|
|
Descripción de la función |
|
|
Nombre del parámetro 1 |
|
|
Descripción del parámetro 1 |
Añada el esquema que desea que utilice el modelo al final de esta descripción. Proporcione el esquema en lenguaje de definición de datos (DDL) según lo devuelto por la función función GetTableDDL para las ocurrencias de la tabla que desea incluir. |
|
Nombre del parámetro 2 |
|
|
Descripción del parámetro 2 |
El nombre de la tabla que contiene el campo de imagen. |
|
Nombre del parámetro 3 |
|
|
Descripción del parámetro 3 |
El campo contenedor donde se almacena la imagen. |
Devuelve: datos JSON en el siguiente formato, que contienen la imagen como una cadena codificada en Base64.
[
{
"data": "/9j/4AAQ...//2Q=="
}
]
Funciones personalizadas
Siga estas pautas para las definiciones de herramientas para llamar a funciones personalizadas:
-
Para la función:
-
En la clave
name
, use exactamente el nombre de la función personalizada según lo definido en el cuadro de diálogo Editar función personalizada. -
En la clave
description
, proporcione una descripción detallada de lo que hace la función personalizada y qué reglas debe seguir el modelo al usarla.
-
-
Para los parámetros:
-
Defina exactamente el mismo número de
parámetros
y en el mismo orden que los parámetros definidos en el cuadro de diálogo Editar función personalizada. Los nombres de los parámetros no tienen que ser los mismos. -
En la clave
description
, proporcione una descripción detallada de lo que el modelo debe proporcionar en el parámetro. -
Establezca el valor de la clave
type
en "cadena" (los parámetros siempre se tratan como texto).
-
Notas
-
Los mensajes de error comunes incluyen "No existe ninguna llamada de herramienta para la indicación" cuando el modelo no puede determinar las herramientas adecuadas para usar, y "Función no encontrada" cuando una definición de herramienta hace referencia a una función personalizada que no existe.
Ejemplo 1
Configura una cuenta de IA, va a la presentación de Contactos y luego muestra un cuadro de diálogo para que el usuario introduzca una pregunta. El paso de guión Generar respuesta a partir del modelo envía la indicación y el historial de mensajes recientes al modelo y transmite el resultado al campo de respuesta. Para una interacción simple de pregunta y respuesta como esta, no se selecciona el modo Agentic. Para mantener el contexto con el modelo durante la sesión de cliente de FileMaker actual, el paso de guión almacena los 10 mensajes más recientes en la variable global $$Messages a través de la opción Guardar historial de mensajes en. A través de la opción Mensajes, el paso de guión envía el valor de la variable $$Messages al modelo cuando este guión se ejecuta posteriormente en la misma sesión. Debido a que no se utiliza la opción Definiciones de herramientas, el modelo no podrá responder preguntas sobre sus datos.
Configurar cuenta de IA [ Nombre de cuenta: "my-account" ; Proveedor de modelos: OpenAI ; Clave de API: Global::API_Key ]
Ir a la presentación [ "Contactos" (Contactos) ]
Mostrar cuadro de diálogo personalizado [ "Introducir pregunta" ; $UserPrompt ]
Generar respuesta a partir del modelo [ Nombre de cuenta: "my-account" ; Modelo: Global::ModelName ; Indicación de usuario: $UserPrompt ; Respuesta: Contacts::Response ; Mensajes: $$Messages ; Guardar historial de mensajes en: $$Messages ; Recuento del historial de mensajes: 10 ; Transmisión ]
Ejemplo 2
Configura una cuenta de IA, va a la presentación de Contactos y luego envía una indicación preguntando por los datos en la tabla de Contactos al modelo, que utiliza herramientas para generar una respuesta. Debido a que se guardan hasta 10 mensajes a través de $$Messages en el campo global Mensajes, el contexto se conserva en las sesiones de cliente de FileMaker.
Configurar cuenta de IA [ Nombre de cuenta: "my-account" ; Proveedor de modelos: OpenAI ; Clave de API: Global::API_Key ]
Ir a la presentación [ "Contactos" (Contactos) ]
Establecer variable [ $Instructions ; Valor: "Eres un asistente útil que puede realizar consultas en la información de bases de datos. Proporciona siempre respuestas claras y con formato". ]
Establecer variable [ $UserPrompt ; "¿Cuántos contactos de Acme Anvils tenemos y cuáles son sus nombres y direcciones de correo electrónico? Añade un asterisco junto a los contactos que están en una ciudad donde tenemos una oficina de ventas". ]
Generar respuesta a partir del modelo [ Nombre de cuenta: "my-account" ; Modelo: Global::ModelName ; Indicación de usuario: $UserPrompt ; Respuesta: Contacts::Response ; Llamadas a herramientas desde el modelo: $$ToolCalls ; Instrucciones: $Instructions ; Mensajes: Global::Messages ; Guardar historial de mensajes en: $$Messages ; Recuento del historial de mensajes: 10 ; Definiciones de herramientas: Global::ToolDefinitions ; Transmisión ]
Establecer campo [ Global::Messages ; $$Messages ]
El campo ToolDefinitions presenta el siguiente contenido utilizando el formato JSON para el proveedor de modelos OpenAI:
[
{
"function": {
"description": "Respond to the user’s questions by executing the appropriate SQL query using this function. Strictly follow these rules:\r 1. The input should be a fully formed SQL query.\r 2. Perform separate SQL instead of one nested SQL.\r3. Escaping special characters for SQL query.\r 4. If the result of the toolCall is a raw string that reads 'empty' or 'null', the answer should contain the quoted raw string, which is case sensitive.\r 5. Convert the user’s request into an SQL query using standard SQL syntax only. Ensure that table names and field names match exactly as they appear in the database schema.",
"name": "execute_sql",
"parameters": {
"properties": {
"sql_query": {
"description": "Generate a fully formed SQL query based on following rules:\r 1. Enclose all table and field names in double quotes.\r2. Format dates as \"DATE 'YYYY-MM-DD'\", times as \"TIME 'HH:MM:SS'\" and timestamps as \"TIMESTAMP 'YYYY-MM-DD HH:MM:SS'\".\r3. Return queries in plain text (not JSON).\r 4. Use \"FETCH FIRST n ROW ONLY\" instead of \"LIMIT\".\r 5. Support single queries only.\r 6. No semicolon is needed at the end of SQL query.\r 7. Don't generate nested SQL queries.\r 8. Use \"LIKE\" instead of \"ILIKE\".\r 9. Keep all comparisons case-sensitive.\r 10. Do not include fields that are not included in the question.\r 11. Use unquoted ROWID in queries.\r 12. Only utilize the following database schema:\rCREAR TABLA \"Contacts\" (\r\"First Name\" varchar(255),\r\"Last Name\" varchar(255),\r\"Email\" varchar(255),\r\r\"City\" varchar(255),\r\"Company\" varchar(255)\r);\r\r",
"type": "string"
}
},
"type": "object",
"required": ["sql_query"]
}
},
"type": "function"
},
{
"function": {
"description": "Comprueba si nuestra empresa tiene una oficina de ventas en una ciudad concreta. . Si es así, la función devuelve 'sí', de lo contrario, devuelve 'no'.",
"name": "CityHasSalesOffice",
"parameters": {
"properties": {
"city": {
"description": "Nombre de una ciudad",
"type": "string"
}
},
"type": "object",
"required": ["city"]
}
},
"type": "function"
}
]
Para execute_sql, utilice la descripción de la función y la descripción del parámetro proporcionadas anteriormente. En el parámetro sql_query, utilice la descripción proporcionada anteriormente seguida del esquema para la tabla Contactos.
La función personalizada CityHasSalesOffice devuelve "sí" o "no" dependiendo de si la ciudad especificada tiene una oficina de ventas.
Posible respuesta transmitida al campo de respuesta:
Tenemos 4 contactos de Acme Anvils. Aquí encontrarás sus nombres, direcciones de correo electrónico y un asterisco para indicar si están en una ciudad con oficina de ventas:
1. Alea Marks, aleamarks165@example.com
2. Kelly Holden, kellyholden1361@example.com *
3. Kelsey Cummings, kelseycummings1396@example.com
4. Kuame Savage, kuamesavage7146@example.com
La variable $$ToolCalls contiene varias llamadas a execute_sql y CityHasSalesOffice.
[
{
"index": 0,
"id": "call_e7...",
"type": "function",
"function": {
"name": "execute_sql",
"arguments": "{\"sql_query\":\"SELECCIONAR RECUENTO(*) DE \\\"Contacts\\\" DONDE \\\"Company\\\" = 'Acme Anvils'\"}"
}
},
{
"index": 0,
"id": "call_o0...",
"type": "function",
"function": {
"name": "execute_sql",
"arguments": "{\"sql_query\":\"SELECCIONAR \\\"First Name\\\", \\\"Last Name\\\", \\\"Email\\\", \\\"City\\\" DE \\\"Contacts\\\" DONDE \\\"Company\\\" = 'Acme Anvils'\"}"
}
},
{
"index": 0,
"id": "call_ev...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Onitsha\"}"
}
},
{
"index": 1,
"id": "call_IC...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Berlin\"}"
}
},
{
"index": 2,
"id": "call_Pw...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Saint-Malo\"}"
}
},
{
"index": 3,
"id": "call_Uy...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Wanneroo\"}"
}
}
]