Introducción a la ingeniería de solicitudes

Los modelos GPT-3, GPT-3.5 y GPT-4 de OpenAI se basan en solicitudes. Con los modelos basados en solicitudes, el usuario interactúa con el modelo ingresando una solicitud de texto, a la que el modelo responde con un texto completo. Esta finalización es la continuación del modelo del texto de entrada.

Si bien estos modelos son extremadamente poderosos, su comportamiento también es muy sensible a la solicitud. Esto hace que la construcción de la solicitud sea una habilidad importante a desarrollar.

La construcción de la solicitud puede ser difícil. En la práctica, la solicitud actúa para configurar los pesos del modelo para completar la tarea deseada, pero es más un arte que una ciencia y, a menudo, requiere experiencia e intuición para crear una solicitud que tenga éxito. El objetivo de este artículo es ayudarte a empezar a trabajar con este proceso de aprendizaje. Intenta capturar conceptos y patrones generales que se aplican a todos los modelos GPT. Sin embargo, es importante comprender que cada modelo se comporta de forma diferente, por lo que es posible que los aprendizajes no se apliquen igualmente a todos los modelos.

Aspectos básicos

En esta sección se tratan los conceptos básicos y los elementos de las solicitudes de GPT.

Las solicitudes de texto son cómo interactúan los usuarios con los modelos GPT. Al igual que con todos los modelos de lenguaje generativos, los modelos GPT intentan generar la siguiente serie de palabras que es más probable que sigan del texto anterior. Es como si estamos diciendo ¿Qué es lo primero que viene a tu mente cuando digo <prompt>?. Los ejemplos siguientes muestran este comportamiento. Dadas las primeras palabras del contenido famoso, el modelo puede continuar con precisión el texto.

Prompt Completion
Puntuación de cuatro y hace siete años nuestros padres produjeron en este continente una nueva nación, concebida en libertad y dedicada a la proposición de que todos los hombres son creados iguales. [...]
"Llámame Ishmael". "Hace algunos años, no importa cuánto tiempo exactamente, teniendo poco o nada de dinero en mi bolso, y nada en particular que me interesara en tierra, pensé en navegar un poco y ver la parte acuática del mundo". […]

A medida que desarrolles solicitudes más complejas, es útil tener en cuenta este comportamiento fundamental. Independientemente de la solicitud que se proporcione, el modelo simplemente responde con lo que determina que es más probable (dados sus datos y objetivos de entrenamiento). Si haces una pregunta en la solicitud, el modelo no está siguiendo una ruta de código "Q&A" separada, sino que parece responder a la pregunta porque una respuesta es el tipo de respuesta más probable para la pregunta dada como entrada.

Componentes de la solicitud

Al usar la API Completion, aunque no hay diferenciación entre distintas partes del prompt, puede ser útil para el aprendizaje y la discusión para identificar los componentes subyacentes del prompt. Con la API de finalización de chat hay distintas secciones del mensaje que se envían a la API en forma de una matriz de diccionarios con roles asociados: sistema, usuario y asistente. Esta guía se centra más generalmente en cómo pensar en la construcción de prompts en lugar de proporcionar instrucciones prescriptivas específicas de una API sobre otra.

También es importante comprender que, aunque podría haber otras formas válidas de diseccionar prompts, el objetivo de este desglose es proporcionar una manera relativamente sencilla de pensar en la construcción de prompts. Con la API de finalización, todos los componentes son opcionales, pero al menos uno debe estar presente y la mayoría de los mensajes incluyen más de un componente. También puede haber un área gris entre componentes. El orden que se presenta a continuación se corresponde aproximadamente con la frecuencia de uso de cada componente, de la mayoría a la mínima.

Instructions

Es probable que las instrucciones sean el componente de solicitud más usado. Las instrucciones son simplemente eso: instrucciones para el modelo sobre qué hacer. Aunque son simples en concepto, pueden ser complejos en la práctica. En la tabla siguiente se muestra esto mostrando instrucciones simples y más complejas, en dos formas diferentes.

Tipo de instrucción Prompt Completion
Instrucciones sencillas Escribe una introducción para un boletín semanal. Te damos la bienvenida al boletín semanal. Esta semana tenemos un enfoque especial sobre la productividad. Compartiremos consejos y trucos sobre cómo ser productivos en todas las áreas de la vida. Esperamos que lo disfrutes y lo compartas con tus amigos!
Instrucciones complejas Escribe una introducción para un boletín semanal en mi empresa denominada Contoso. Cabe mencionar la gran reunión de manos que tuvimos la semana pasada y agradecer al equipo por todo su arduo trabajo durante los últimos meses difíciles. Te damos la bienvenida al boletín semanal de Contoso. Tuvimos una gran reunión con todos la semana pasada y quiero agradecer al equipo por todo su duro trabajo durante los últimos meses. Esperamos un futuro brillante y estoy seguro de que con la dedicación y el compromiso de nuestro equipo, lograremos grandes cosas. Gracias por ser parte de nuestro equipo y espero trabajar con todos vosotros en las próximas semanas y meses. Atentamente, [Tu nombre].
Instrucciones complejas Escribe una introducción para un boletín semanal, que incluya lo siguiente:
- Mi empresa se llama Contoso
- Un saludo exuberante
- Agradecer al equipo por su trabajo duro durante un par de meses difíciles
- Perspectivas positivas para el próximo trimestre
- Firmado por el SLT
¡Hola, equipo de Contoso! Quería dedicar un momento para agradeceros todo vuestro duro trabajo durante los últimos meses. Han sido un par de meses duros, pero todos os habéis unido y hecho un trabajo increíble. Estoy muy orgulloso de todos vosotros. De cara al próximo trimestre, me siento muy positivo. Creo que lograremos grandes cosas. Gracias de nuevo, el equipo de liderazgo sénior.

Contenido principal

El contenido principal hace referencia a algún tipo de texto que el modelo procesa o transforma. El contenido principal se usa normalmente junto con instrucciones. Un ejemplo sencillo sería la traducción de idioma. En el siguiente ejemplo, el texto en inglés se consideraría el contenido principal, mientras que "Traducir al francés:" es una instrucción.

Prompt Completion
¿Puedes decirme cómo llegar al museo?
Traducir al francés:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

El contenido principal también puede ser mucho más largo. En el ejemplo siguiente, el contenido principal es la sección de introducción de la entrada de Wikipedia sobre la complejidad del tiempo, que tiene casi 300 palabras. Este contenido se ha abreviado en nuestra tabla para facilitar la visualización.

Prompt Completion
En informática, la complejidad del tiempo es la complejidad computacional que describe la cantidad de tiempo que se tarda en ejecutar un algoritmo. La complejidad del tiempo se estima normalmente por [...]
Resumir el texto anterior en algunas oraciones:
La complejidad del tiempo es una medida del tiempo que tarda un algoritmo en ejecutarse. Normalmente se expresa como una función del tamaño de la entrada. La medida más común es la complejidad del peor de los casos, que es la cantidad máxima de tiempo necesaria para las entradas de un tamaño determinado.
En informática, la complejidad del tiempo es la complejidad computacional que describe la cantidad de tiempo que se tarda en ejecutar un algoritmo. La complejidad del tiempo se estima normalmente por [...]
TL;DR (demasiado tiempo sin lectura)
La complejidad del tiempo de un algoritmo es la cantidad de tiempo que se tarda en ejecutar un algoritmo. La complejidad del tiempo se calcula normalmente contando el número de operaciones elementales realizadas por el algoritmo, lo que supone que cada operación elemental tarda un tiempo fijo en realizar. La complejidad del tiempo se expresa generalmente como una función del tamaño de la entrada.

Los modelos GPT también pueden controlar el contenido principal estructurado. En el ejemplo siguiente, se pasa un TSV sobre cervezas en Bélgica (abreviada para su presentación en este artículo) al modelo como parte del aviso. Es capaz de interpretar correctamente el contenido y responder a preguntas sobre los datos.

Prompt Completion
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[...]
Haciendo referencia a la tabla anterior, ¿cuántas cervezas son inferiores al 6 % ABV?
Hay 10 cervezas en la tabla que tienen menos del 6 % ABV.

Ejemplos

Las indicaciones exitosas a menudo se basan en la práctica del aprendizaje de "una sola oportunidad" o "pocas oportunidades". Esto hace referencia a la inclusión de uno o varios ejemplos del comportamiento deseado del modelo, normalmente mediante la inclusión de pares de entrada y salida. Esto no está aprendiendo en el sentido de que el modelo se cambia permanentemente, sino que los ejemplos mejor condición que el modelo responda según lo deseado solo para la inferencia actual. El uso de avisos sin ejemplos a veces se denomina aprendizaje de “una sola oportunidad”. Tenga en cuenta que con la API de finalización de chat, los ejemplos de aprendizaje de pocas tomas generalmente se agregan a la matriz de mensajes en forma de interacciones de usuario/asistente de ejemplo después del mensaje inicial del sistema.

Tipo de aprendizaje Prompt Completion
Zero-shot Titular: El entrenador confía en que la lesión no descarrilará a los Warriors
Tema:
El entrenador confía en que la lesión no descarrile la temporada de los Warriors. El equipo sigue centrado en sus objetivos y seguirá trabajando duro para conseguirlos.
Few-shot Titular: Correa de los Twins usará la exclusión voluntaria y probará la agencia libre
Tema: Béisbol
Titular: La Copa Mundial de Qatar tendrá zonas para recuperar la sobriedad
Tema: Fútbol
Titular: Yates: Actualidad de la Fantasy Football - Semana 6
Tema: Fútbol
Titular: El entrenador confía en que la lesión no descarrilará a los Warriors
Tema:
Baloncesto

En el ejemplo anterior se muestra la utilidad del aprendizaje de pocas oportunidades. Sin los ejemplos, el modelo parece adivinar el comportamiento deseado, mientras que los ejemplos muestran limpiamente el modelo cómo operar. Esto también muestra la potencia del modelo, puede deducir la categoría de etiqueta que se desea, incluso sin una etiqueta de "baloncesto" en los ejemplos.

Pila

Las señales actúan como el "punto de partida" para la salida del modelo, lo que ayuda a dirigir el modelo hacia la salida deseada. A menudo es un prefijo en el que el modelo se puede compilar. En el ejemplo siguiente, se muestra la indicación que dirige la historia para incluir elementos clave. Las indicaciones a menudo se usan junto con instrucciones, pero no siempre. En los ejemplos siguientes, el modelo se usa para resumir un correo electrónico de anuncio largo. En un caso se usa una indicación para ayudar a centrar la salida del modelo y sugerir un formato de salida específico (puntos de viñetas) en el otro.

En el contexto de las instrucciones de la API de finalización de chat toman la forma del mensaje del sistema y algunos ejemplos de captura se indican proporcionando una serie de interacciones de usuario y asistente de ejemplo para ayudar a mejorar el modelo.

Número de indicaciones Prompt Completion
0 Las revisiones de rendimiento son un componente fundamental de nuestro enfoque de desarrollo y rendimiento en Contoso. [...]
Resumir el mensaje de correo electrónico anterior:
El propósito de este correo electrónico es informar a los empleados de los cambios recientes en la experiencia de revisión de rendimiento, que forma parte del enfoque de desarrollo y rendimiento de Contoso. Los cambios incluyen una estructura mejorada, una experiencia de usuario actualizada en la herramienta y mensajes centrados. Además, ahora hay una sección opcional de inicios de conversación para que los empleados marquen los temas que les gustaría discutir con sus administradores.
1 Las revisiones de rendimiento son un componente fundamental de nuestro enfoque de desarrollo y rendimiento en Contoso. [...]
Resumir el mensaje de correo electrónico anterior:
El punto clave del mensaje es
que Contoso está mejorando la experiencia de revisión de rendimiento haciendo que se centre más en las prioridades principales, las expectativas y el impacto. Además, están actualizando la experiencia del usuario en la herramienta con sugerencias, recursos e instrucciones. Por último, están agregando instrucciones sobre cómo activar las prioridades principales de toda la empresa.
2 Las revisiones de rendimiento son un componente fundamental de nuestro enfoque de desarrollo y rendimiento en Contoso. [...]
Resumir el mensaje de correo electrónico anterior:
Puntos clave:
Contoso está introduciendo cambios en la experiencia de revisión de rendimiento, en función de los comentarios de los empleados.
• Los cambios incluyen un nuevo enfoque en las prioridades fundamentales, las expectativas y el impacto; una experiencia de usuario mejorada; y nueva orientación sobre las prioridades fundamentales de toda la empresa.
• Las revisiones de rendimiento son un momento para reflexionar sobre el rendimiento y el aprendizaje pasados, así como para planear prioridades futuras y oportunidades de crecimiento.
• Los empleados y gerentes deben escribir comentarios con antelación de la reunión de revisión de rendimiento.
• Debe haber al menos dos revisiones de rendimiento al año.
• La inversión de tiempo para cada revisión debe permanecer aproximadamente igual.

Contenido adicional

El contenido auxiliar es información que el modelo puede usar para influir en la salida de alguna manera. Difiere del contenido principal en que no es el destino principal de la tarea, pero normalmente se usa junto con el contenido principal. Entre los ejemplos comunes se incluyen información contextual, como la fecha actual, el nombre del usuario, las preferencias del usuario, etc. En el ejemplo siguiente se usa contenido auxiliar para ayudar a organizar un conjunto de talleres planeados para el usuario. Sin el apoyo (temas importantes), el modelo simplemente muestra los talleres (truncados para su presentación), cuando se informa de mis temas importantes, el modelo puede agrupar con precisión las reuniones.

Contenido adicional Prompt Completion
SIN Lista de talleres:
Descripción del título
Inicio del taller de planificación ¡Únete a nosotros para iniciar el taller! Escucha a nuestros líderes hablar sobre las prioridades y los aprendizajes de los grupos cruzados para el próximo año. La invitación a este evento ya se ha enviado a todos en [...]
Resumir los talleres anteriores, agrupados por tema:
Lista de talleres:
Inicio del taller de planeación
-Resumen del taller de planificación
- Reunión principal
- Perspectivas controladas por el cliente
-Impacto y áreas de enfoque clave
-Procedimientos recomendados
-Aceleración de la adopción de aplicaciones [...]
With Lista de talleres:
Descripción del título
Inicio del taller de planificación ¡Únete a nosotros para iniciar el taller! Escucha a nuestros líderes hablar sobre las prioridades y los aprendizajes de los grupos cruzados para el próximo año. La invitación a este evento ya se ha enviado a todos en [...]
Mis temas importantes: ingeniería de mensajes, búsqueda, modelos GPT
Resumir los talleres anteriores, agrupados por mis temas importantes:
1. Ingeniería de solicitudes:
- Nuevas sugerencias de ingeniería de solicitudes
- El arte de la ingeniería de las solicitudes
2. Búsqueda:
-Introducción a la búsqueda de vectores con incrustación
3. Modelos GPT:
- Introducción a GPT-4
- GPT-35-Turbo en profundidad.

Procedimientos recomendados

  • Sé específico. Deja lo menos posible a la interpretación. Restringe el espacio operativo.
  • Sé descriptivo. Usa analogías.
  • Esfuérzate más. A veces es posible que tenga que repetirse en el modelo. Proporciona instrucciones antes y después del contenido principal, usa una instrucción y una indicación, etc.
  • El orden importa. El orden en el que presente información al modelo podría afectar a la salida. Ya sea que coloques instrucciones antes de tu contenido ("resumir lo siguiente...") o después ("resumir lo anterior...") puede alterar el resultado. Incluso el orden de algunos ejemplos puede importar. Esto se conoce como sesgo de actualidad.
  • Dale al modelo una "salida". A veces, puede resultar útil proporcionar al modelo una ruta de acceso alternativa si no puede completar la tarea asignada. Por ejemplo, al formular una pregunta sobre un fragmento de texto, puede incluir algo como "responder con "no encontrado" si la respuesta no está presente". Esto puede ayudar al modelo a evitar generar respuestas falsas.

Ahorro de espacio

Aunque el tamaño de entrada aumenta con cada nueva generación de modelos GPT, seguirá habiendo escenarios que proporcionen más datos de los que el modelo puede controlar. Los modelos GPT dividen las palabras en "tokens". Si bien las palabras comunes de varias sílabas suelen ser un único token, las palabras menos comunes se dividen en sílabas. A veces, los tokens pueden ser intuitivos, como se muestra en el ejemplo siguiente, que muestra los límites de token para distintos formatos de fecha. En este caso, deletrear el mes completo es más eficiente en espacio que una fecha completamente numérica. La gama actual de compatibilidad con tokens va desde 2000 tokens con modelos GPT-3 anteriores hasta 32 768 tokens con la versión 32k del modelo GPT-4 más reciente.

Captura de pantalla de una cadena de texto con colores resaltados que delimitan los límites del token.

Dado este espacio limitado, es importante utilizarlo de la manera más eficiente posible.

  • Tablas: como se muestra en los ejemplos de la sección anterior, los modelos GPT pueden comprender datos con formato tabular con bastante facilidad. Esta puede ser una forma eficiente de espacio para incluir datos, en lugar de preceder cada campo con un nombre (como con JSON).
  • Espacio en blanco: los espacios en blanco consecutivos se tratan como tokens separados, lo que puede ser una manera fácil de desperdiciar espacio. Los espacios que preceden a una palabra, por otro lado, normalmente se tratan como parte del mismo token que la palabra. Observa cuidadosamente el uso de espacios en blanco y no uses puntuación cuando un espacio solo sea suficiente.

Pasos siguientes

Obtenga información sobre Azure OpenAI.