La IA o Inteligencia Artificial es una idea para enseñar a las computadoras a realizar tareas humanas a una velocidad y eficiencia mucho mayor. Lo que hace que la IA sea aún más útil es la capacidad de aprender, en función del contexto y el material proporcionados. Además, a la IA generalmente se le enseña a responder de manera humana, a menudo creando una sensación de conversación y familiaridad.
En particular, ChatGPT realmente ha conquistado Internet. Lanzado en noviembre de 2022, este modelo de lenguaje OpenAI pudo obtener 1 millón de usuarios en solo 5 días. Este es un rendimiento récord, ya que otros productos tecnológicos populares tardaron meses, a veces incluso años, en alcanzar esa capacidad.
En resumen, ChatGPT es un chatbot que intenta responder a cualquier pregunta. Se ha demostrado que acorta el tiempo de investigación de temas desconocidos. Por ejemplo, descubrir una respuesta a una pregunta común se ha convertido en una cuestión de preguntarle a la IA, no de leer varios recursos.
En este blog, vamos a crear una aplicación de preguntas y respuestas, basada en los modelos de lenguaje de OpenAI, similar a ChatGPT.
Primero, asegúrese de suscríbase a SAP Build Apps y crear un nuevo Aplicaciones SAP Build: web y móvil proyecto. Lo animo a completar una serie de videos de incorporación, que se encuentran en la parte inferior de la pantalla. Esto le permitirá comprender mejor otras instrucciones.
A continuación, regístrese para obtener una cuenta de usuario gratuita en beta.openai.com y genere una nueva clave API haciendo clic en su imagen de perfil en la esquina superior derecha y eligiendo «Ver claves API» en el menú desplegable. Tome nota de la clave, ya que la necesitará más adelante. Recuerda no compartirlo con otros, ya que la siguiente clave puede ser utilizada para realizar solicitudes desde tu cuenta.
Opcionalmente, familiarícese con OpenAI documentación para entender mejor la tecnología. En particular, la finalización del texto es el tema principal de este blog.
Comencemos construyendo la base de la interfaz de usuario. Con el uso de arrastrar y soltar, coloque los siguientes componentes en el lienzo de vista: Título, Campo de entrada, Botón, Spinner y Texto. Siéntase libre de cambiar la etiqueta del título y aplicar estilo a los componentes.
Cambie a la vista Variables a través de un control deslizante y abra la pestaña Variables de página.
Aquí, queremos definir todas las variables que vamos a utilizar en la aplicación. Necesitaríamos tres:
Puede crear los tres haciendo clic en el ícono Más e ingresando un nombre en la sección «Nombre de la variable» a la derecha. Preste atención a los tipos de variables, mientras que pensando en progreso requerirá un cambio de tipo a Verdadero/falso.
Vuelva al lienzo de vista con el mismo control deslizante y haga clic en el componente Campo de entrada. Desde la vista de propiedades a la derecha, debe notar que el campo Valor no tiene valor. Aquí, queremos unirlo a nuestro pregunta variable. Para hacerlo, haga clic en el icono de enlace (icono cuadrado con una cruz), luego elija «Datos y variables». Seleccione «Variable de página» y, por último pregunta. Haga clic en Guardar para aplicar el enlace. Ahora debería ver lo siguiente:
Seleccione el componente Texto y, con el mismo procedimiento exacto, vincule la propiedad «Contenido» a la variable de página. respuesta. Luego, expanda el menú desplegable Propiedades avanzadas para revelar la propiedad «Visible». Haga clic en el icono de enlace (cuadro cuadrado) y elija «Fórmula». Haga clic en el campo blanco con la palabra «verdadero» para ingresar al editor de fórmulas. Aquí, borre todo el contenido y pegue lo siguiente:
NOT(pageVars.thinkingInProgress)
Para finalizar el inicio de sesión de visibilidad, elija el componente Spinner y expanda las propiedades avanzadas. Vincule la propiedad «Visible» a la variable pensando en progreso. La idea aquí es invertir la visibilidad de Text y Spinner, haciendo que la aplicación muestre solo la rueda giratoria cuando la ejecución aún está en progreso. Una fórmula NOT()
modificará una variable Verdadero/falso al valor exactamente opuesto.
Encuentre el resultado final de todos los enlaces a continuación (Spinner a la izquierda, Texto a la derecha):
Ahora nos acercamos al último y más importante paso: configurar la lógica de ejecución. Elegir el Botón componente y expanda el lienzo lógico desde la parte inferior de la pantalla. Una imagen a continuación retrata la lógica final. Analicemos cada función de flujo por separado.
Esta función de flujo se ejecutará primero. Aquí, queremos establecer el pensando en progreso variable a True para indicar que la ejecución ha comenzado. Escoger pensando en progreso en la propiedad “Nombre de la variable” y elija True como el “Valor asignado”.
Diseñemos esta función de flujo de acuerdo con el Referencia de la API de OpenAI. Podemos ver el siguiente cURL Solicitud POST ejemplo disponible:
curl https://api.openai.com/v1/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'
En primer lugar, podemos deducir que https://api.openai.com/v1/completions
es la URL de destino. En segundo lugar, hay 2 encabezados obligatorios: Content-Type
y Authorization
y el cuerpo de la solicitud es un objeto JSON con cuatro claves.
Comience instalando la función de flujo de solicitud HTTP desde Marketplace (Documentación relevante). Conéctelo al final de la variable Establecer página.
Para URL, coloque la URL de destino mencionada anteriormente. Elija POST como el método HTTP. Expanda el menú desplegable «Entradas opcionales» para revelar más configuraciones. Abra la lista de encabezados y complete los valores de la siguiente manera, sustituyendo <API_KEY>
con la clave obtenida en el sitio web de OpenAI:
Su lista debe verse de la siguiente manera:
A continuación, abra el icono de enlace para «Cuerpo de la solicitud» y seleccione ‘Fórmula’. Pegue lo siguiente:
{ "model": "text-davinci-003", "prompt": pageVars.question, "max_tokens": 250, "temperature": 0.5 }
Aquí, definimos 4 valores fundamentales: Modelo de IA a utilizar (model
), la pregunta (prompt
), medida de aleatoriedad (max_tokens
) y originalidad (temperature
). La siguiente solicitud es compatible con todos GPT-3 y Códice modelos, así que siéntase libre de modificar el valor del modelo. El valor max_token le permite definir la aleatoriedad máxima y la longitud de una respuesta, consulte el Herramienta tokenizadora para explorar la correlación entre la complejidad de las oraciones y la cantidad de fichas necesarias. La temperatura es la medida de la ‘creatividad’ que toma valores entre 0 y 1. Finalmente, guarda la fórmula.
Alert es responsable del manejo de errores. Conéctelo a la tercera salida de la solicitud HTTP y vincule su «Título de diálogo» a ‘Valor de salida de otro nodo’ → ‘Solicitud HTTP’ → ‘Error’ → Guardar. De esta forma, recibirá un mensaje de error si la solicitud de la API falla.
Conecte esta función de flujo a la primera salida de la solicitud HTTP. Dado que esta salida significa éxito, debemos indicar que la ejecución ha concluido. Para hacerlo, simplemente invierta el paso 1: vincular pensando en progreso a Falso.
Por último, ingresemos el resultado de la solicitud API al respuesta variable. Vincule el «Valor asignado» a la siguiente fórmula:
STRING(outputs["HTTP request"].resBodyParsed.choices[0].text)
Puede notar que el editor de fórmulas mostrará una advertencia. Esto sucede porque la fórmula aún no tiene acceso al resultado de las solicitudes HTTP, por lo que no garantiza que el objeto deseado esté disponible. Dado que estamos seguros de que la respuesta existe, esta advertencia puede descartarse.
¡La aplicación ya está lista! Podemos probarlo navegando a la pestaña Iniciar y abriendo el portal de vista previa. Encuentre amablemente un video de demostración a continuación:
En este blog, hemos creado una aplicación simple, impulsada por GPT-3. Con el mismo concepto, ahora puedes ir más allá y crear cualquier cosa que te propongas. Si bien la IA es un campo de rápido crecimiento, todavía está lejos de estar siquiera cerca de los humanos, así que siempre sea tolerante con los errores que pueda cometer el modelo de lenguaje.
👉 Mantente sintonizado para más.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073