Ejemplo 1: configuración de "OpenAI Completions API (GPT-3) - Rows"
Este ejemplo le muestra cómo usar el conector de análisis de OpenAI con la configuración de "OpenAI Completions API (GPT-3) - Rows". A partir de ahí, le guiará a través de ejemplos básicos para conocer cómo incorporar la funcionalidad en su modelo de datos y expresiones gráficas.
La funcionalidad de la configuración de este conector es muy similar a la de la configuración de "OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rows". Sin embargo, estas dos configuraciones utilizan modelos diferentes, lo que a su vez da lugar a respuestas distintas. Además, debido a las diferencias en los nombres de los parámetros entre estas dos configuraciones, consulte el ejemplo del tutorial que corresponda con su configuración. Para la configuración de Chat Completions, vea Ejemplo 3: configuración de "OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rows".
También puede completar este ejemplo utilizando el conector de Azure OpenAI. Al utilizar ese conector, interactúa con los modelos a través de la plataforma de Microsoft Azure, en lugar de la plataforma de OpenAI.
Antes de comenzar:
Antes de poder completar este ejemplo, debe realizar los siguientes pasos.
-
Crear una cuenta en la plataforma OpenAI
-
Obtener una clave API de OpenAI
-
Habilitar la funcionalidad de conexión analítica en Qlik Cloud
-
Crear conexiones con las configuraciones de conectores aplicables
Usar el conector OpenAI en su script de carga
Cree una nueva app de Qlik Sense, a la que agregará un script de carga para comunicarse con la plataforma OpenAI. Las tablas que cargue con este script estarán accesibles en el modelo de datos de su app.
Siga los pasos a continuación. Para ver detalles adicionales, consulte Seleccionar y cargar datos desde una conexión a OpenAI.
Crear la tabla de datos que se ha de enviar a OpenAI
El primer paso es crear una tabla que contenga la solicitud que está enviando a OpenAI. Las filas de datos en la solicitud se conocen como "finalizaciones". El texto de cada elemento debe estar contenido como filas en un solo campo (columna) de la tabla. Cada fila de esta columna representa el texto que debe completar la API de OpenAI.
Puede haber un segundo campo adicional para el Campo de asociación, pero debe coincidir con el nombre de campo especificado en la configuración. Este es un campo especial que no se enviará a OpenAI, pero se adjunta a las respuestas con el fin de generar un modelo de datos de Qlik.
En su aplicación, abra el editor de carga de datos y pegue el siguiente código en una nueva sección de script:
SourceTable:
NoConcatenate
LOAD
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];
Esta tabla contiene un campo llamado Text, que contiene una sola pregunta que le estamos haciendo a OpenAI. Se pueden agregar preguntas adicionales como nuevas celdas individuales debajo de la celda de la pregunta actual. El campo RowId es el Campo de asociación, que se utilizará en el paso siguiente para vincular las respuestas al modelo de datos de la aplicación.
Crear la sentencia de carga de OpenAI
El paso siguiente es crear otra sentencia de carga para comunicarse con OpenAI. La tabla que cargue con esa sentencia apunta a los nombres de la tabla y los campos que está utilizando para enviar los datos de la solicitud. En resumen, el script está cargando una segunda tabla para proporcionar las respuestas de OpenAI a los elementos de su solicitud.
Para generar esta parte del script, puede utilizar el asistente Seleccionar datos para la conexión que está usando. Esto genera un script de plantilla que incluye los nombres de las propiedades que proporciona. Como alternativa, puede agregar esta tabla manualmente en el editor de script sin usar el asistente.
Localice la conexión que está utilizando en el panel Fuentes de datos del editor de carga de datos y haga clic en . Esto abre el asistente Seleccionar datos.
Al usar el asistente Seleccionar datos, debe proporcionar dos propiedades:
-
El nombre de la Tabla Resident. Esta es la tabla con las preguntas que se envían a OpenAI. En este caso, es SourceTable.
-
El nombre del Campo de datos. Este es el campo que contiene las preguntas que se envían a OpenAI. En este caso, es Text.
En Tablas, haga clic en la casilla de verificación de la tabla llamada openai.
Cuando hace clic en Insertar script, la nueva tabla se agrega a la secuencia del script de carga.
Con la sentencia de carga de OpenAI ya agregada, su script de carga debería tener el siguiente aspecto:
Ya está listo para ejecutar el script de carga.
Cargar los datos en la app
Una vez el script esté completo, haga clic en Cargar datos. Esto realiza las comunicaciones con OpenAI e inserta las tablas en el modelo de datos de su aplicación.
Abra el visor del modelo de datos y observe que las dos tablas están vinculadas tal como se esperaba. En el panel de Vista previa, la respuesta de OpenAI a la pregunta que hicimos se incluye en la segunda tabla.
Ahora puede generar contenido analítico utilizando los datos que se han cargado en la aplicación. No necesitará hacer referencia a la conexión OpenAI en ningún gráfico que cree utilizando estos datos. Para aprender a usar la conexión OpenAI directamente en expresiones de gráfico (en lugar de usarla en el script de carga), consulte Uso del conector OpenAI en expresiones de gráfico.
Uso del conector OpenAI en expresiones de gráfico
Además de agregar preguntas y respuestas de OpenAI al modelo de datos de su aplicación mediante el script de carga, también puede realizar estas operaciones directamente en un gráfico en su aplicación. Esta puede ser una alternativa al uso de tablas en el script de carga para comunicarse con OpenAI.
Los datos de un solo campo se envían de un lado a otro entre usted y OpenAI. En muchos casos, el código utilizado para una conexión de script de carga se puede reutilizar para su uso en un gráfico, con algunas diferencias notables.
Para ver detalles adicionales, consulte Utilizar conexiones a OpenAI en expresiones de visualización.
Consideraciones en cuanto a los volúmenes de solicitud de datos
Se recomienda utilizar conexiones de OpenAI únicamente en expresiones de gráfico para una o varias filas de datos. No se recomienda utilizar expresiones de gráfico para enviar grandes cantidades de datos a OpenAI.
Es importante tener en cuenta cuántas filas está enviando con cada solicitud. Los errores en la configuración de la conexión en una expresión de gráfico pueden dar lugar a solicitudes involuntariamente grandes (por ejemplo, filas idénticas con la misma pregunta debido al uso inadecuado del modelo de datos en un gráfico). Antes de interactuar con una plataforma de terceros, asegúrese de saber cómo los campos utilizados en el cálculo de la expresión del gráfico y su ubicación en el modelo de datos afectan a su acuerdo financiero y de facturación con el tercero. Un mayor uso de la plataforma externa podría generar mayores costes.
Siga estas pautas para moderar y limitar el tamaño de sus solicitudes:
-
Solo utilice la conexión en una expresión de gráfico de Texto e imagen. Se desaconseja enfáticamente usar una conexión de OpenAI en un objeto de Tabla, especialmente si está agregando la expresión a una tabla con una o más dimensiones ya agregadas.
-
Si la expresión del gráfico está vinculada al modelo de datos de su app, utilice una sentencia if en la expresión para calcular solo el gráfico cuando se realiza una sola selección en la app. Esto reduce drásticamente el número de filas en las solicitudes que su gráfico enviará a OpenAI.
-
Si está usando la conexión de OpenAI para enviar solicitudes grandes, utilice la conexión en su script de carga en lugar de en una expresión de gráfico, para que los datos se carguen previamente en su modelo de datos.
Ejercicio: crear una expresión básica de gráfico
Haga lo siguiente:
-
Cree una app de Qlik Sense y abra una hoja nueva en el modo de edición avanzada.
Nota informativaLa conexión analítica que está utilizando para la expresión del gráfico ya debe estar creada en el espacio donde crea la app. Puede hacerlo en el editor de carga de datos dentro de una app, o desde la página Crear del centro de actividades de Analítica. Para más información, vea Crear una conexión a OpenAI. -
Arrastre un gráfico de Texto e imagen a la hoja 3.
-
En el panel de propiedades, bajo Datos > Medidas, agregue una medida y haga clic en para abrir el editor de expresiones.
-
Pegue la siguiente expresión en el editor de expresiones:
endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
Nota informativaEn este ejemplo, es aceptable no utilizar una sentencia if, porque solo estamos enviando una única fila de datos y no hay conexión con un modelo de datos. En otros casos, utilice una sentencia if para asegurarse de que el gráfico únicamente se calcule cuando se seleccione un único valor de campo en la aplicación. Para ver ejemplos, consulte Ejemplos rápidos.Nota informativaPara que este código exacto funcione correctamente en su app, su conexión OpenAI también debe configurarse con el mismo valor de Nombre que el connectionname especificado en la expresión. Para los valores utilizados con los fines de este tutorial, vea Crear las conexiones. -
Haga clic en Aplicar.
Ejercicio: crear un cuadro de entrada de texto usando una variable
Como alternativa, puede reemplazar la cadena de preguntas con el nombre de una variable que haya creado en la aplicación, lo que permite la creación de un cuadro de entrada donde los consumidores de la aplicación pueden ingresar sus propias preguntas sin interactuar con las expresiones.
Esta sencilla interfaz se puede utilizar para enriquecer los datos de su aplicación con información contextual generada en tiempo real.
Haga lo siguiente:
-
Cree una app y agregue algunos datos y visualizaciones en una hoja nueva.
-
Haga clic en para crear una variable. Para este ejercicio asígnele el NombrevUserQuestion. Deje los parámetros restantes en blanco.
-
En el panel de activos, arrastre un gráfico de Entrada de variable a la hoja. Este se ubica en Extensiones > Qlik Dashboard bundle.
-
En el panel de propiedades del gráfico de Entrada de variable, expanda Aspecto > Variable.
-
En Nombre, seleccione vUserQuestion.
-
En Mostrar como, seleccione Cuadro de entrada.
-
En el panel de activos, arrastre un gráfico de Texto e imagen a la hoja.
-
En el panel de propiedades, bajo Datos > Medidas, agregue una medida y haga clic en para abrir el editor de expresiones.
-
Pegue la siguiente expresión en el editor de expresiones:
if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}',vUserQuestion))
Nota informativaPara que este código exacto funcione correctamente en su app, su conexión OpenAI también debe configurarse con el mismo valor de Nombre que el connectionname especificado en la expresión. Para los valores utilizados con los fines de este tutorial, vea Crear las conexiones -
Haga clic en Aplicar.
-
Ajuste el tamaño de estos cuadros de entrada y respuesta para que se adapten a sus necesidades.
Ahora debería poder salir del modo de edición y escribir una pregunta en el cuadro de entrada. Cuando pulsa Intro o hace clic en cualquier otro lugar de la hoja, el cuadro de respuesta poblará una respuesta de OpenAI.
La conexión de OpenAI en este ejercicio no se comunica en absoluto con el modelo de datos de la aplicación, pero es posible crear aplicaciones mucho más sofisticadas que estén completamente integradas con los datos cargados en la aplicación y respondan a las selecciones que realice en la aplicación.
Para más información sobre cómo trabajar con variables, consulte Crear una variable y El control de entrada de variable.
Diferencias entre el script de carga y el código de expresión del gráfico
En estas expresiones de gráfico, hemos rediseñado el código introducido en la lección anterior del script de carga. La siguiente lista destaca las diferencias más importantes entre la versión del script de carga y las expresiones del gráfico:
-
Hemos cambiado ScriptEval a ScriptAggrStr. Esto describe que estamos enviando una sola fila de datos y esperando una sola fila de vuelta. Esto es necesario cuando se trabaja con datos personalizados, como una variable o una constante, como en este caso. “Str” indica que estamos enviando y recibiendo valores de texto.
-
Agregamos una nueva propiedad, column, con un valor de choice.text. Está anidada dentro del objeto endpoint. Esta incorporación a la cadena de configuración es necesaria para especificar qué campo se devolverá desde el conector. En una expresión de gráfico, solo se usa un campo, y debemos especificar cuál.
Para más información, vea Sintaxis de las extensiones del lado del servidor.