OpenAI: entendiendo los prompts, las respuestas y los tokens
Cualquier texto puede utilizarse como un prompt (enviar un texto y obtener otro texto como respuesta). Pero por muy entretenido que sea ver lo que hace GPT-3, el verdadero poder viene de entender cómo se escriben instrucciones (en inglés «prompt») eficaces.
Introducción a GPT-3
En pocas palabras, GPT-3 es un modelo de lenguaje: un modelo estadístico que calcula la probabilidad de distribución de una secuencia de palabras. Es decir, GPT-3 es un sistema para adivinar el texto que viene a continuación cuando se le da un texto como entrada.
Ahora, antes de profundizar en lo que es el GPT-3, vamos a hacer una breve introducción (o repaso) sobre el Procesamiento del Lenguaje Natural (PLN).
Simplificando la PNL
La PNL es una rama de la IA que se centra en el uso del lenguaje humano natural para diversas aplicaciones informáticas. La PNL abarca muchos tipos diferentes de funciones de procesamiento del lenguaje, como el análisis de sentimientos, el reconocimiento del habla, la traducción automática, la generación de textos y el resumen de textos, por nombrar sólo algunos.
En PNL, los modelos de lenguaje se utilizan para calcular la distribución de probabilidad sobre una secuencia de palabras. Los modelos lingüísticos son esenciales debido a la naturaleza tan compleja y llena de matices de los idiomas del ser humano.
Por ejemplo, las palabras homónimas «hablando» y «ablando» suenan igual pero tienen significados muy diferentes. Una frase como «estoy quemado» puede ser literal o figurada, y palabras como «mayor» y «grande» pueden usarse indistintamente en algunos casos pero no en otros; por ejemplo, usar la palabra «mayor» para referirse a un hermano mayor no tendría el mismo significado que usar la palabra «grande».
Por eso se utilizan modelos lingüísticos para hacer frente a esta complejidad, pero es más fácil decirlo que hacerlo.
Aunque entender cosas como el significado de las palabras y su uso adecuado parece fácil para nosotros, las tareas de PNL pueden ser un reto para las máquinas. Esto es así en el caso de tareas más complejas, como el reconocimiento de la ironía o el sarcasmo, que incluso desafían a los humanos.
¿Qué es exactamente GPT-3?
Aunque GPT-3 es un sistema de PNL de propósito general, en realidad sólo hace una cosa: predecir lo que viene a continuación basándose en el texto que se le entrega como entrada. Pero resulta que, con la estructura correcta y los datos suficientes, esta única cosa puede manejar una asombrosa cantidad de tareas de procesamiento del lenguaje.
GPT-3 es la tercera versión del modelo de lenguaje GPT de OpenAI. Así, aunque empezó a hacerse conocido en el verano de 2020, la primera versión de GPT se anunció 2 años antes, y la siguiente versión, GPT-2, en febrero de 2019.
Pero aunque GPT-3 es su tercera versión, el diseño y la arquitectura general del sistema no han cambiado mucho con respecto a GPT-2. Pero hay una gran diferencia, y es el tamaño del conjunto de datos que se utilizó para el entrenamiento.
GPT-3 se entrenó con una enorme base de datos compuesta por texto de Internet, libros y otras fuentes, que contiene unos 57.000 millones de palabras y 175.000 millones de parámetros.
¡Esto es 10 veces más grande que GPT-2 y el siguiente modelo lingüístico más grande!
Para relativizar el tamaño del modelo, un ser humano cualquiera puede leer, escribir, hablar y escuchar más de mil millones de palabras en toda su vida.
Por lo tanto, GPT-3 se ha entrenado con un número de palabras estimado en 57 veces el número de palabras que la mayoría de los humanos llegarán a procesar.
El modelo lingüístico de GPT-3 es enorme, por lo que no es algo que vayas a descargar y a experimentar en tu ordenador portátil.
Pero incluso si se pudiera (que no se puede porque no está disponible para su descarga), costaría millones de euros en recursos informáticos cada vez que se quisiera construir el modelo.
Esto pondría a GPT-3 lejos del alcance de la mayoría de las pequeñas empresas y de prácticamente todos los usuarios particulares si tuvieras que depender de tus propios recursos informáticos para utilizarlo.
Por suerte, no es así. OpenAI hace que GPT-3 esté disponible a través de una API que es económica y fácil de usar. Así, cualquiera puede utilizar una de las IA más avanzadas jamás creadas.
GPT-4
Ahora la parte más esperada es GPT-4. Sam Altman, el director general de OpenAI, verificó las especulaciones sobre la presentación del modelo GPT-4 en el evento online AC10.
Según Altman, GPT-4 no será sustancialmente mayor que GPT-3. Como resultado, podemos esperar que contenga parámetros de 175B-280B.
El enorme modelo Megatron NLG es tres veces mayor que el GPT-3, con 530B de características, y tiene un rendimiento similar. El modelo más pequeño que le siguió lo superó en términos de rendimiento. En pocas palabras, más tamaño no implica un mejor rendimiento.
Todavía no se conoce la fecha de lanzamiento de la GPT-4, y se puede suponer que la empresa está centrando sus esfuerzos en otras tecnologías, como el reconocimiento de texto a imagen y de voz. Es posible que lo veamos el año que viene o el mes que viene. No se sabe con seguridad.
De lo que sí podemos estar seguros es de que la próxima versión solventará los problemas de la anterior y ofrecerá mejores resultados.
Democratizando PNL
Cualquiera puede utilizar GPT-3 con acceso a la API de OpenAI. La API es una interfaz de entrada y salida de texto de uso general que puede emplearse para prácticamente cualquier tarea lingüística.
Para utilizar la API, basta con introducir un texto y recibir una respuesta en forma de texto. La tarea puede ser realizar un análisis de sentimientos, escribir un artículo, responder a una pregunta o resumir un documento.
No importa, en lo que respecta a la API, todo se hace de la misma manera, lo que hace que el uso de la API sea lo suficientemente fácil para casi cualquier persona, incluso los que no son programadores.
El texto que escribes se denomina «prompt» y el texto que devuelve «completion». GPT-3 utiliza un prompt para determinar la mejor manera de completar la tarea. En el caso más simple, un prompt puede proporcionar algunas palabras para comenzar.
Por ejemplo, si el prompt fuera «Si hoy es lunes, mañana es», GPT-3 probablemente respondería con «martes», junto con algún texto adicional como «Si hoy es martes, mañana es miércoles», y así sucesivamente. Esto significa que lo que se obtiene de GPT-3 depende de lo que se le envíe.
Como puedes adivinar, la calidad del resultado depende en gran medida del texto enviado. GPT-3 utiliza todo el texto de una pregunta para ayudar a generar la respuesta más relevante.
Todas y cada una de las palabras, junto con la estructura del mensaje, ayudan a mejorar los resultados de predicción del modelo lingüístico. Por lo tanto, entender cómo se escriben y se prueban las instrucciones es esencial para poder aprovechar el verdadero potencial de GPT-3.
El poder de los prompts
Los prompt son la forma de hacer que GPT-3 haga lo que tú quieres. Es como programar, pero en español. Por lo tanto, tienes que conocer lo que estás intentando lograr, pero en lugar de escribir código, utilizas palabras y texto plano.
Cuando se escriben prompts, lo más importante que hay que saber es que GPT-3 está intentando averiguar el texto que debe continuar, por lo que incluir cosas como instrucciones y ejemplos proporciona un contexto que ayuda al modelo a averiguar el mejor resultado posible.
Además, la calidad es importante: por ejemplo, la ortografía, la falta de claridad del texto y el número de ejemplos que se añadan afectarán a la calidad de la respuesta.
Otra cuestión fundamental es el tamaño de la pregunta. Si bien el texto de la pregunta puede ser cualquiera, la pregunta y la respuesta resultante deben sumar menos de 2.048 caracteres. Más adelante veremos los tokens, pero esto es aproximadamente 1.500 palabras.
Por lo tanto, un prompt puede ser cualquier texto, y no hay reglas estrictas que deban seguirse como cuando se escribe código. Pero existen algunas pautas para estructurar el texto de las instrucciones que pueden ser útiles para conseguir los mejores resultados.
Los diferentes tipos de prompts
A lo largo de este artículo veremos los diferentes tipos de prompts, que se describen a continuación.
Son los siguientes:
Prompts Zero-Shot
Un prompt cero es el tipo de prompt más básico. Sólo describe una tarea o un texto para que GPT-3 comience a trabajar. Puede ser cualquier cosa: una pregunta, el arranque de una historia, instrucciones… lo que sea, pero cuanto más claro sea el texto, más fácil será para GPT-3 entender lo que debe hacer a continuación.
Este es un ejemplo de un prompt cero para crear un correo electrónico que se completará donde termine el texto, en este caso, después de Asunto:
Por lo tanto, un prompt Zero es simplemente unas pocas palabras o una breve descripción de una tarea sin ningún ejemplo. A veces esto es todo lo que GPT-3 necesita para terminar la tarea. Otras veces, puede necesitar incluir uno o más ejemplos. Un prompt que proporciona un solo ejemplo se conoce como un prompt One-Shot.
Prompts One-Shot
Un prompt individual proporciona un ejemplo que GPT-3 puede usar para aprender la mejor manera de completar una tarea. Este es un ejemplo de un prompt individual que tiene una descripción de la tarea (la primera línea) y un solo ejemplo (la segunda línea):
Un listado de los actores de la serie de televisión Better Call Saul
1. Bob Odenkirk es Saul Goodman
Con sólo la descripción y el ejemplo, GPT-3 aprende cuál es la situación de la tarea y cómo debe completarse. En este ejemplo, se trata de crear una lista de actores de la serie Better Call Saul.
El prompt individual funciona muy bien para listas y patrones de comprensión habitual. Pero a veces necesitará más de un ejemplo. En ese caso, utilizará un prompt Few-Shots.
Prompts Few-Shot
Los prompts múltiples tienen varios ejemplos, normalmente de 10 a 100. Pueden ser útiles para mostrar un patrón que el GPT-3 debe de continuar.
Los prompts de este tipo, probablemente aumentarán la calidad de la respuesta porque las instrucciones proporciona más información para que el GPT-3 aprenda.
Este es un ejemplo de un prompt de una obra de teatro infantil que he obtenido de una guía infantil para generar una conversación simulada (en color verde). Observa que los ejemplos muestran un diálogo bidireccional, con cosas que podrían decirse en una conversación:
Ahora que entiende los diferentes tipos de prompts, veamos algunos ejemplos.
Ejemplos de prompts
La API de OpenAI puede realizar una gran variedad de tareas. Las posibilidades van desde crear historias originales hasta hacer complejos análisis de texto, y cualquier cosa por el estilo.
Para familiarizarnos con el tipo de tareas que puede hacer GPT-3, OpenAI ofrece una serie de ejemplos de instrucciones. Puedes encontrarlos en el Playground y en la documentación de OpenAI.
En el Playground, los ejemplos se denominan presets.
La documentación de OpenAI es realmente buena e incluye un gran número de ejemplos de prompts, con enlaces para abrirlos y probarlos en el Playground.
Ahora que tienes una idea de los prompt, vamos a hablar de cómo GPT-3 los utiliza para generar una «completion».
Completions
Una vez más, una completion se refiere al texto que se genera y devuelve como resultado del prompt proporcionado.
Recuerda que GPT-3 no ha sido entrenado específicamente para realizar ningún tipo de tarea de NLP (Natural Language Processing), sino que es un sistema de procesamiento del lenguaje de uso general.
Pero se puede enseñar a GPT-3 a realizar una tarea determinada utilizando una instrucción. Esto se llama metaaprendizaje.
Metaaprendizaje
En la mayoría de los sistemas de NLP, los datos utilizados para enseñar al sistema cómo completar una tarea se proporcionan cuando se entrena el modelo de Machine Learning del que depende.
Por lo tanto, para mejorar los resultados de una tarea determinada, hay que actualizar el entrenamiento subyacente y construir una nueva versión del modelo.
GPT-3 funciona de forma diferente, ya que no está entrenado para ninguna tarea específica.
Se ha diseñado para reconocer patrones en el texto de la consulta y continuar con el patrón o patrones utilizando el modelo de uso general subyacente.
Este método se denomina metaaprendizaje porque el mensaje se utiliza para enseñar a GPT-3 cómo generar la mejor respuesta (completion) posible, sin necesidad de reentrenamiento.
Así que, en efecto, los diferentes tipos de prompts que he descrito, se pueden utilizar para programar GPT-3 para diferentes tipos de tareas, y proporcionar una gran cantidad de instrucciones en el prompt (hasta 2.048 tokens).
Muy bien, ahora es un buen momento para hablar de los tokens.
Tokens
Cuando se envía un prompt a GPT-3, se fragmenta en tokens. Los tokens son representaciones numéricas de palabras o de partes de palabras.
Los números se usan para los tokens en lugar de las palabras o las frases porque se pueden procesar de forma más sencilla.
De esta manera, GPT-3 puede trabajar con cantidades relativamente grandes de texto.
Dicho esto, como ya has aprendido, todavía hay un límite de 2.048 tokens (aproximadamente son unas 1.500 palabras) para el prompt y el resultado que se ha generado.
Puedes intentar limitar los tokens estimando el número de tokens que se utilizarán en tu pregunta y en la respuesta resultante.
En promedio, para las palabras en español, cada 3 caracteres representan un token.
Por lo tanto, sólo tienes que sumar el número de caracteres de tu pregunta a la longitud de la respuesta y dividir la suma entre tres.
Esto te dará una idea general de los tokens necesarios.
Es muy útil si quieres saber cuántos tokens se necesitan para una serie de tareas.
Otra forma de conseguir el recuento de tokens es con el indicador de recuento de tokens en el Playground.
Se encuentra justo debajo de la entrada de texto grande, en la parte inferior derecha.
La zona resaltada en la caja muestra el recuento de tokens.
Si pasas el ratón por encima del número, también verás el recuento total con la completion.
Para este ejemplo, la pregunta «Solo sé que no sé nada.», la famosa frase del filósofo griego Sócrates, utiliza 11 tokens y 64 tokens con la completion:
Aunque entender los tokens es importante para no superar el límite de 2.048 tokens, también lo son porque es lo que OpenAI usa como base para aplicar las tarifas de uso.
Los informes de uso de tokens están disponibles para tu cuenta en https://beta.openai.com/account/usage.
La siguiente captura de pantalla muestra un ejemplo de informe de uso.
Aparte del uso de tokens, otra cosa que afecta a los precios de GPT-3 es el motor que se elija para procesar los prompts.
El motor se refiere al modelo de lenguaje que se utilizará.
La principal diferencia entre los motores es el tamaño del modelo asociado.
Los más grandes pueden hacer tareas más complejas, pero los más pequeños son más eficientes.
Por lo tanto, dependiendo de la complejidad de la tarea, puede reducir significativamente los costes utilizando un modelo más pequeño.
La siguiente captura de pantalla muestra los precios de los modelos en el momento de la publicación.
Como puedes ver, las diferencias de costes pueden ser notables.
Precio por cada 1.000 tokens o 600 palabras:
- Ada: 0.004$
- Babbage: 0.0005$
- Curie: 0.0020$
- Davinci: 0,0200$
Breve explicación de Davinci, Babbage, Curie y Ada
El enorme conjunto de datos que se utiliza para el entrenamiento de GPT-3 es la principal razón por la que es tan potente. Ahora bien, lo más grande sólo es mejor cuando es necesario, y una mayor potencia tiene un precio.
Por ello, OpenAI ofrece varios modelos entre los que elegir. En la actualidad hay cuatro modelos principales disponibles, junto con un modelo de filtrado de contenidos y modelos de instrucciones.
Los modelos o motores disponibles (como también se les denomina) se llaman Davinci, Babbage, Curie y Ada. De los cuatro, Davinci es el más grande y el más potente.
Davinci puede realizar cualquier tarea que cualquier otro motor pudiera llevar a cabo. Babbage es el siguiente motor más eficaz, que puede hacer cualquier cosa que Curie o Ada puedan hacer. Ada es el motor menos potente, pero el de mejor rendimiento y menor coste.
Cuando se está aprendiendo y para probar inicialmente nuevas instrucciones, normalmente se suele empezar con Davinci, y luego Ada, Babbage o Curie para ver si uno de ellos puede completar la tarea más rápidamente o de forma más económica.
A continuación veremos una explicación de cada motor y los tipos de tareas que pueden ser más adecuados para cada uno de ellos.
Eso sí, recuerda que deberás hacer pruebas. Aunque los motores más pequeños no hayan sido entrenados con tantos datos, todos siguen siendo modelos de uso general.
Davinci
Davinci es el modelo más completo y puede hacer todo lo que cualquier otro modelo puede hacer, y mucho más, con menos instrucciones. Davinci puede resolver problemas de lógica, averiguar la causa y el efecto, comprender la intención del texto, crear contenidos creativos, explicar los propósitos de un personaje y llevar a cabo complicadas tareas de resumen.
Curie
Curie intenta equilibrar potencia y velocidad. Puede hacer todo lo que Ada o Babbage pueden hacer, pero también es capaz de manejar tareas de clasificación más complejos y más sutiles como resúmenes, análisis de sentimientos, aplicaciones de chatbot y preguntas y respuestas.
Babbage
Babbage es un poco más capaz que Ada, pero no tiene el mismo rendimiento. Puede realizar las mismas tareas que Ada, pero también puede manejar tareas de clasificación un poco más complicadas, y es muy apropiado para tareas de búsqueda semántica que califiquen el grado de coincidencia de los documentos con una consulta de búsqueda.
Ada
Ada suele ser el modelo más rápido y económico. Es el más indicado para tareas con menos detalles, como el análisis sintáctico de textos, el reformateo de textos y las funciones de clasificación más sencillas. Cuanto más contexto se le proporcione a Ada, mejor será su rendimiento.
Modelo de filtrado de contenidos
Para ayudar a evitar terminaciones inapropiadas, OpenAI ofrece un modelo de filtrado de contenido que está ajustado para reconocer el lenguaje potencialmente ofensivo o perjudicial.
Modelos de instrucción
Se trata de modelos construidos sobre los modelos Davinci y Curie. Unas instrucciones claras pueden dar a menudo mejores resultados que el modelo principal asociado. Ahora están obsoletos y OpenAI aconseja no usarlos.
Como lágrimas en la lluvia
Una observación final a tener en cuenta sobre todos los motores es que son una gota de lluvia, momentos se perderán en el tiempo, lo que significa que los datos utilizados para entrenarlos terminan en la fecha en que se elaboró el modelo.
Por lo tanto, GPT-3 no trabaja con datos actualizados al minuto o incluso al día, sino que probablemente sean de hace semanas o meses. OpenAI tiene previsto añadir más entrenamiento en el futuro, pero hoy es una posibilidad a tener en cuenta.
Todos los modelos de GPT-3 son muy potentes y capaces de generar textos que no se distinguen de los escritos por humanos. Esto tiene un increíble potencial para todo tipo de aplicaciones.
En la mayoría de los casos, eso es bueno. Pero no todos los casos son buenos.
Entendiendo los riesgos de GPT-3
GPT-3 es una tecnología fantástica, con innumerables aplicaciones prácticas y de gran valor. Pero, como suele ocurrir con las tecnologías potentes, su potencial entraña riesgos.
En el caso de GPT-3, algunos de esos riesgos incluyen resultados inadecuados y casos de uso potencialmente perjudiciales.
Resultados inapropiados u ofensivos
GPT-3 genera el texto tan bien que puede parecer que es consciente de lo que dice.
No lo es.
Es un sistema de IA con un excelente modelo de lenguaje; no es consciente de ninguna manera, así que nunca dirá deliberadamente algo ofensivo o inapropiado porque no tiene voluntad.
Eso sí, puede generar resultados inadecuados, de odio o malintencionados, pero no de forma intencionada.
De todas formas, hay que entender que la GPT-3 puede generar, y probablemente generará, texto ofensivo en algunas ocasiones, y hay que tenerlo en cuenta cuando se utilice la GPT o se pongan al alcance de otros los resultados de la GPT-3.
Esto es particularmente cierto para los resultados que pueden ser vistos por los niños.
Potencial de uso malicioso
No es difícil imaginar usos potencialmente maliciosos o dañinos para GPT-3. OpenAI incluso describe cómo GPT-3 podría utilizarse como arma para campañas de desinformación o para crear reseñas falsas de productos.
Pero la misión declarada de OpenAI es garantizar que la inteligencia artificial general beneficie a toda la humanidad. Por lo tanto, perseguir esa misión incluye tomar medidas responsables para evitar que su IA se utilice con fines equivocados.
Por ello, OpenAI ha puesto en marcha un proceso de aprobación de aplicaciones para todas aquellas que vayan a utilizar la GPT-3 o la API de OpenAI.
Los programadores de aplicaciones también deben tener en cuenta este aspecto. Cuando construimos una aplicación que utiliza GPT-3, tenemos que considerar si la aplicación podría ser utilizada para fines discutibles y cómo hacerlo, y tomar las medidas necesarias para evitarlo.
Me inscribí hoy en esta app, hice unas tres preguntas, algunas respuestas recibidas incorrectas, interactúe aclarando y ahora intente preguntar otras cosas y el sistema dice que agoté los tokens.
Pagué la cuota anual. Apreciaré una respuesta.