OpenAI Codex

Introducción

La IA conversacional se ha manifestado de varias formas.Uno es el procesamiento del lenguaje natural (NLP) de alto nivel.

NLP aborda tareas de más alto nivel como resumen, traducción, extracción de entidades con nombre, categorización, etc. 🤗HuggingFace es uno de los líderes del mercado, y la adición más reciente es la API de OpenAI basada en GPT-3. Los grandes proveedores de plataformas en la nube también tienen sus entornos de NLP, como AWS, IBM, Microsoft, etc.

Otra parte de la IA conversacional son los marcos de desarrollo de chatbot.

Ha habido numerosos enfoques de implementación de marcos de desarrollo.

Microsoft tiene todo un ecosistema y me viene a la mente IBM Watson Assistant. Y hay varios otros entornos. La vanguardia es Rasa con su enfoque más centrado en ML.

Cabe mencionar que con la llegada de GPT-3 a través de la API de OpenAI, se ha introducido una nueva categoría de IA conversacional. Una API de entrada de texto y salida de texto.

Este enfoque Text-In-Text-Out permite un marco de ajuste fino mínimo y de código bajo. Que encapsula:

  • Gestión de estado de turno de diálogo,
  • Generación de lenguaje natural (NLG),
  • Comprensión del lenguaje natural (NLU) en términos de intenciones y entidades.

Interfaz de usuario de conversación

Las implementaciones de la interfaz de usuario conversacional se realizan a través de dos medios principales;

  • texto / chat y
  • habla / voz

La conversación entre el humano y el chatbot emula una conversación entre dos humanos. Estas conversaciones se han basado principalmente en tareas y se centran en la experiencia del cliente, la atención médica, el entretenimiento y la autoayuda. Con una pequeña porción que cubre el aspecto de compañero / amistad de un chatbot.

Codex marca el comienzo de una nueva era en la que la entrada de conversación se utiliza para escribir código y crear una aplicación.


Datos estructurados y no estructurados

Una conversación de chatbot es donde los datos no estructurados (conversación humana) se estructuran para procesar y extraer significado e intención. Cuando el chatbot responde al usuario, los datos estructurados deben desestructurarse nuevamente en lenguaje natural.

Esta desestructuración y estructuración de datos exige gastos generales y una atención especial y detallada. El grado en que los datos se pueden ingresar sin estructura determina el grado de complejidad. Cuanto más desestructurada sea la entrada, mayor será la sobrecarga para estructurar la entrada para tu procesamiento.

Algunos chatbots simplifican el proceso al presentar al usuario botones, menús y otras posibilidades de diseño. De ahí la estructuración de la interfaz de usuario hasta cierto punto.
Y nuevamente, el grado en que los datos no están estructurados en el cuadro de diálogo de retorno del chatbot se puede limitar con tarjetas, etc.

Lo que hace interesante al Codex es que el lenguaje natural se estructura en la entrada, pero no se requiere una desestructuración posterior. La entrada de lenguaje natural está estructurada y el código se deriva de estos datos.

Este formulario fue creado en JavaScript haciendo uso de las oraciones que se enumeran a continuación.


/* create a header saying Book your appointment */
/* make the font arial */
/* add a horizontal line */
/* Add Text in Arial saying "Select your representative:" */
/* change the font to Arial */
/* next to the text, add a dropdown box with 10 random names */
/* Add text saying "Select the date" */
/* Change the font to Arial */
/* add a date picker */
/* add a time picker */
/* make the background orange */
/* create a horizontal line */

El contexto se mantiene dentro del Codex y no todas las instrucciones deben ser explícitas.


Más sobre el Codex

OpenAI Codex traduce el lenguaje natural en código.

Dato interesante; Codex es el modelo que impulsa GitHub Copilot, que OpenAI construyó y lanzó en asociación con GitHub.

Codex es competente en más de 12 lenguajes de programación. Codex toma comandos simples en lenguaje natural y los ejecuta en nombre del usuario.

OpenAI Codex se basa en GPT-3. Según OpenAI, los datos de entrenamiento del Codex contienen tanto lenguaje natural como miles de millones de líneas de código fuente de fuentes disponibles públicamente, incluido el código en repositorios públicos de GitHub.

Una aplicación de JavaScript de dos bolas que se mueven aleatoriamente y cambian a colores aleatorios cuando se superponen. Esta aplicación fue diseñada con las oraciones que se enumeran aquí:


/* make a red ball bounce on the screen */
/* make it go faster */
/* crop the ball circular */
/* disable scrollbars */
/* make a blue ball bounce on the screen */
/* crop the ball circular */
/* make the blue ball move faster */
/* make both balls larger in size */
/* move the red ball faster */
/* When the blue ball and the red ball overlap, change the background color to a random color */

OpenAI Codex es más competente en Python, pero también incorpora lenguajes como:

  • JavaScript,
  • Go,
  • Perl,
  • PHP,
  • Ruby,
  • Swift
  • TypeScript
  • Shell.

Tiene una memoria de 14 KB para código Python, en comparación con GPT-3, que solo tiene 4 KB, por lo que puede tener en cuenta más de 3 veces más información contextual al realizar cualquier tarea.

El mejor enfoque a seguir al crear una aplicación:

  • Divide un problema en problemas más simples y
  • Asigna esos problemas simples al código existente (bibliotecas, API o funciones) que ya existen.

La última actividad es probablemente la parte menos divertida de la programación (y la barrera de entrada más alta), y es donde OpenAI Codex sobresale más.

Hay bastante discusión sobre la legitimidad de un enfoque de código bajo. Solo algunas reflexiones sobre low-code…

El bueno:

  • El código bajo por sí solo no es una solución a todos los problemas.
  • Las aplicaciones y utilidades más pequeñas son adecuadas para low-code.
  • El código bajo es bueno para la creación de prototipos, la experimentación y los wireframes.
  • Low-code se adapta bien como una extensión a una implementación más grande existente y permite que las unidades de negocios creen sus propias extensiones y personalización.
  • Ejemplos de buenas implementaciones de código bajo son IBM Watson Assistant Actions, Microsoft Power Virtual Agents, algunas de las funciones de la Consola de desarrollo de Amazon Alexa, etc.

Impedimentos:

  • El ajuste fino es problemático con low-code.
  • Escalado e integración.
  • Mejoramiento
  • Gestión del rendimiento
  • Invariablemente, querrá incluir funciones y extensiones que no estén disponibles en su entorno de creación.

Codificación en lenguaje natural

Comenzar con cualquier lenguaje de programación puede ser abrumador y es importante establecer buenos hábitos. Digamos, por ejemplo, que deseas comenzar con el análisis de datos en Python a través de un cuaderno …

Python

En el Codex puedes crear un marco de datos de muestra diciendo: «Crea un marco de datos de 12 ciudades estadounidenses aleatorias con una temperatura, humedad, lluvia y viento promedio anuales».

Se acomoda el error de ortografía. El código se genera para crear un marco de datos con datos de prueba.


"""
Create a dataframe of 12 random US cities with averate yearly temperature, humidity, rainfall an wind
"""

El marco de datos creado:

df

Aquí está la lista completa de código. El bloque rojo es la instrucción que escribí, el bloque azul es el código generado con comentarios por Codex.

Simplemente pidiendo al Codex que cree tres gráficos, el resultado se puede ver a continuación. Se niega el error de ortografía y se crean cuatro gráficos, en lugar de tres.

"""
Create three grahps based on df
"""

La entrada, en el bloque rojo y la salida del Codex en el azul.

Este es un rasgo común de OpenAI GTP-3 y Codex, que extiende la solicitud inicial y devuelve una respuesta aumentada.

Tres de los gráficos generados en el cuaderno Colab de Google.

La solicitud y el código completo generado…


"""
Create a dataframe of 12 random US cities with averate yearly temperature, humidity, rainfall an wind
"""
import pandas as pd
import numpy as np
import random
# Create a dataframe of 12 random US cities with averate yearly temperature, humidity, rainfall an wind
# Create a list of random US cities
cities = ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix', 'Philadelphia', 'San Antonio', 'San Diego', 'Dallas', 'San Jose', 'Austin', 'Jacksonville']
# Create a list of random average yearly temperatures
temps = [random.randint(50, 100) for i in range(len(cities))]
# Create a list of random average yearly humidity
humidity = [random.randint(50, 100) for i in range(len(cities))]
# Create a list of random average yearly rainfall
rainfall = [random.randint(50, 100) for i in range(len(cities))]
# Create a list of random average yearly wind
wind = [random.randint(50, 100) for i in range(len(cities))]
# Create a dictionary of the lists
data = {'City': cities, 'Temperature': temps, 'Humidity': humidity, 'Rainfall': rainfall, 'Wind': wind}
# Create a dataframe from the dictionary
df = pd.DataFrame(data)
# Display the dataframe
df
"""
Create three grahps based on df
"""
# Create a bar graph of the average yearly temperature for each city
df.plot.bar(x='City', y='Temperature', title='Average Yearly Temperature')
# Create a bar graph of the average yearly humidity for each city
df.plot.bar(x='City', y='Humidity', title='Average Yearly Humidity')
# Create a bar graph of the average yearly rainfall for each city
df.plot.bar(x='City', y='Rainfall', title='Average Yearly Rainfall')
# Create a bar graph of the average yearly wind for each city
df.plot.bar(x='City', y='Wind', title='Average Yearly Wind')


Conclusión

Se ha debatido mucho sobre Low Code frente a la codificación artesanal o tradicional. No se trata de lo uno ni lo otro. Hay un lugar y una aplicación para ambos. Con ventajas y desventajas.

Discuto ese tema en detalle aquí.

Y lo mismo ocurre con el Codex. ¿Se construirán los sistemas empresariales de esta manera? Lo más probable es que no. ¿Las empresas de Fortune 500 seguirán la ruta del Codex en principio… no.

Pero, hay algunas aplicaciones de nicho diferido, que pueden incluir:

  • Resolver desafíos y problemas de codificación en determinadas rutinas.
  • Establecimiento de mejores prácticas.
  • Seguro de calidad.
  • Aprendizaje interactivo
  • Generando componentes específicos para posterior revisión humana.

Por Cobus Greyling

Rasa Hero. NLP / NLU, Chatbots, Voz, UI / UX conversacional, Diseñador CX, Desarrollador, Interfaces de usuario ubicuas.

Un comentario en «OpenAI Codex e IA conversacional»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *