Saltar al contenido principal Saltar al contenido complementario

Ejemplo 3: configuración de "OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rows"

Este ejemplo le enseña cómo usar el conector de análisis de OpenAI con la configuración "OpenAI Chat Completions API (GPT-3.5, GPT-4) - 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 de gráfico.

La funcionalidad de la configuración de este conector es muy similar a la de la configuración de "OpenAI Completions API (GPT-3) - 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 Completions, vea Ejemplo 1: configuración de "OpenAI Completions API (GPT-3) - 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.

Nota informativaSi está utilizando la misma app para completar esta sección que la sección del script de carga del ejemplo 2, debe comentar o eliminar el script del ejemplo 2 antes de cargar el script a continuación. Si no lo hace, el modelo de datos tendrá problemas e incluso podría encontrar un error al cargar los datos.

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 Seleccionar datos. Esto abre el asistente Seleccionar datos.

El botón Seleccionar datos para una conexión de análisis en el editor de carga de datos

La pestaña "Agregar datos" del editor de carga de datos, con el icono para "Seleccionar datos" resaltado

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.

El asistente Seleccionar datos en el editor de carga de datos

La pestaña "Agregar datos" del editor de carga de datos, con el icono para "Seleccionar datos" resaltado

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:

SourceTable: NoConcatenate LOAD RowNo() as RowId, Text Inline [Text translate from English to French: What is the time you go to work?]; [openai]: LOAD [id], [object], [created], [model], [prompt_tokens], [completion_tokens], [total_tokens], [choices.message.role], [choices.message.content], [choices.index], [choices.finish_reason], [RowId] EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows"}}', SourceTable);

 

Nota informativaPara que este código exacto funcione correctamente en su aplicación, su conexión OpenAI también debe configurarse con el mismo valor de Nombre que el connectionname especificado en el script de carga anterior. Para los valores utilizados con los fines de este tutorial, vea Crear las conexiones.

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.

Nota informativaSi recibe un error al cargar el script, es posible que haya una discrepancia entre el Campo de asociación secundario opcional en la configuración de la conexión y el script de carga. Si ha definido un Campo de asociación en la configuración de su conexión, asegúrese de que también esté incluido en el script de solicitud.

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.

Modelo de datos creado a partir de la conexión OpenAI

Visor del modelo de datos que muestra el modelo de datos resultante, que incluye dos tablas.

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

  1. 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.
  2. Arrastre un gráfico de Texto e imagen a la hoja 3.

  3. En el panel de propiedades, bajo Datos > Medidas, agregue una medida y haga clic en Expresión para abrir el editor de expresiones.

  4. Pegue la siguiente expresión en el editor de expresiones:

    endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}', '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.
  5. Haga clic en Aplicar.

Gráfico de Texto e imagen de Qlik Sense con la respuesta de OpenAI

Objeto de hoja de Qlik Sense con la respuesta de OpenAI.

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.

  1. Cree una app y agregue algunos datos y visualizaciones en una hoja nueva.

  2. Haga clic en Variables para crear una variable. Para este ejercicio asígnele el Nombre: vUserQuestion. Deje los parámetros restantes en blanco.

  3. En el panel de activos, arrastre un gráfico de Entrada de variable a la hoja. Este se ubica en ExtensionesQlik Dashboard bundle.

  4. En el panel de propiedades del gráfico de Entrada de variable, expanda Aspecto > Variable.

  5. En Nombre, seleccione vUserQuestion.

  6. En Mostrar como, seleccione Cuadro de entrada.

  7. En el panel de activos, arrastre un gráfico de Texto e imagen a la hoja.

  8. En el panel de propiedades, bajo Datos > Medidas, agregue una medida y haga clic en Expresión para abrir el editor de expresiones.

  9. Pegue la siguiente expresión en el editor de expresiones:

    if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}',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.
  10. Haga clic en Aplicar.

  11. 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.

Hoja simple con datos genéricos y cuadro de entrada para hacer preguntas a OpenAI

Objeto de hoja de Qlik Sense con la 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 choices.message.content. 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.

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.