Introducción al diseño de mensajes

El diseño de instrucciones es el proceso de crear instrucciones que producen la respuesta deseada de los modelos de lenguaje. Escribir instrucciones bien estructuradas es una parte esencial de garantizar respuestas precisas y de alta calidad desde un modelo de lenguaje. En esta página, se presentan algunos conceptos básicos, estrategias y prácticas recomendadas para comenzar a diseñar instrucciones.

¿Qué es una instrucción?

Una instrucción es una solicitud de lenguaje natural enviada a un modelo de lenguaje para recibir una respuesta. Las instrucciones pueden contener preguntas, información contextual, ejemplos y entradas parciales para que el modelo se complete o continúe. Después de que el modelo recibe una instrucción, según el tipo de modelo que se usa, puede generar texto, incorporaciones, código, imágenes, videos, música y mucho más.

Tipos de contenido de la instrucción

Las instrucciones pueden incluir uno o más de los siguientes tipos de contenido:

Entrada

Una entrada es el texto en la instrucción al que deseas que el modelo proporcione una respuesta y es un tipo de contenido obligatorio. Las entradas pueden ser una pregunta que responda el modelo (entrada de pregunta), una tarea que realice el modelo (entrada de tarea), una entidad en la que opera el modelo (entrada de entidad) o una entrada parcial que completa el modelo o continúa (entrada de finalización).

Entrada de preguntas

Una entrada de pregunta es una pregunta que le haces al modelo y a la que el modelo responde.

Entrada de tarea

Una entrada de tarea es una tarea que quisieras que el modelo realice. Por ejemplo, puedes indicarle al modelo que te de ideas o sugerencias para algo.

Entrada de entidades

Una entrada de entidad es aquella sobre la que el modelo realiza una acción, como clasificar o resumir. Este tipo de entrada puede beneficiarse si se incluyen instrucciones.

Entrada de finalización

Una entrada de finalización es el texto que se espera que el modelo complete o continúe.

Contexto

El contexto puede ser uno de los siguientes:

  • Instrucciones que especifiquen cómo debería comportarse un modelo.
  • Información que el modelo use o a la cual se refiera para generar una respuesta.

Agrega información contextual en tu instrucción si necesitas dar información al modelo o restringir los límites de las respuestas a solo lo que está dentro de la instrucción.

Ejemplos

Los ejemplos son pares de entrada-salida que incluyes en la instrucción para dar un ejemplo de respuesta ideal al modelo. Incluir ejemplos en el mensaje es una estrategia eficaz para personalizar el formato de respuesta.

Estrategias generales de diseño de instrucciones

El diseño de instrucciones permite a los usuarios nuevos en el resultado del modelo de control del aprendizaje automático (AA) con una sobrecarga mínima. Cuando creas instrucciones con cuidado, puedes hacer que el modelo genere un resultado deseado. El diseño de instrucciones es una forma eficiente de experimentar con la adaptación de un modelo de lenguaje para un caso de uso específico.

Los modelos de lenguaje, en especial los modelos grandes de lenguaje (LLM), están entrenados con grandes cantidades de datos de texto para aprender los patrones y las relaciones entre las palabras. Cuando se proporciona texto (la instrucción), los modelos de lenguaje pueden predecir lo que viene a continuación, como una herramienta de autocompletado sofisticada. Por lo tanto, cuando diseñes instrucciones, ten en cuenta los diferentes factores que pueden influir en lo que predice un modelo.

Si bien no hay una manera correcta o incorrecta de diseñar instrucciones, hay estrategias comunes que puedes usar para afectar las respuestas del modelo. En esta sección, se presentan algunas estrategias comunes de diseño de instrucciones.

Brinda instrucciones claras

Proporcionar las instrucciones del modelo implica indicarle al modelo qué hacer. Esta estrategia puede ser una manera eficaz de personalizar el comportamiento del modelo. Asegúrate de que las instrucciones que proporciones sean claras y concisas.

El siguiente mensaje proporciona un bloque de texto y le indica al modelo que lo resuma:

El modelo proporcionó un resumen conciso, pero tal vez quieras que el resumen se escriba de una manera más fácil de comprender. Por ejemplo, en la siguiente instrucción se incluye una instrucción para escribir un resumen que sea lo suficientemente simple como para que un quinto alumno comprenda:

La instrucción para escribir el resumen con el fin de que un alumno de quinto grado pueda comprenderlo, generó una respuesta más fácil de entender.

Resumen:

  • Proporcionar instrucciones a los modelos para personalizar su comportamiento.
  • Hacer que cada instrucción sea clara y concisa.

Incluye ejemplos

Puedes incluir ejemplos en la instrucción que muestren cómo se ve el modelo. El modelo intenta identificar los patrones y las relaciones de los ejemplos y aplicarlos para formar una respuesta. Las instrucciones que contienen algunos ejemplos se denominan instrucciones con ejemplos limitados, mientras que las instrucciones que no proporcionan ejemplos se denominan instrucciones sin ejemplos. Por lo general, se usan pocas instrucciones con ejemplos limitados para regular el formato, la frase, el alcance o el patrón general de las respuestas del modelo.

Comparación entre las instrucciones sin ejemplos y con ejemplos limitados

La siguiente instrucción sin ejemplos le pide al modelo que elija la mejor explicación.

Si tu caso de uso requiere que el modelo produzca respuestas concisas, puedes incluir ejemplos en la instrucción que den preferencia a respuestas concisas.

En la siguiente instrucción, se proporcionan dos ejemplos que muestran una preferencia por las explicaciones más cortas. En la respuesta, puedes ver que los ejemplos guiaron al modelo para elegir la explicación más corta (Explicación 2) en lugar de la explicación más larga (Explicación 1) como lo hizo antes.

Encuentra la cantidad óptima de ejemplos

Puedes experimentar con la cantidad de ejemplos a fin de proporcionar en la instrucción los resultados más deseados. Los modelos como PaLM a menudo pueden recoger patrones con algunos ejemplos, aunque es posible que debas experimentar con qué cantidad de ejemplos conducen a los resultados deseados. Para modelos más simples como BERT, es posible que necesites más ejemplos. Al mismo tiempo, si incluyes demasiados ejemplos, el modelo puede comenzar a sobreajustar la respuesta a los ejemplos.

Usa ejemplos para mostrar patrones en lugar de antipatrones

Usar ejemplos con el fin de mostrar el modelo para seguir es más eficaz que usar ejemplos con el fin de mostrar el modelo para evitar un patrón.

Patrón negativo:

Patrón positivo:

Resumen:

  • Incluir ejemplos de instrucción y respuesta en el mensaje ayuda a que el modelo aprenda a responder.
  • Proporciona los ejemplos de modelos a seguir en lugar de los ejemplos de patrones que debes evitar.
  • Experimenta con la cantidad de instrucciones que se deben incluir. Según el modelo, muy pocos ejemplos son ineficaces para cambiar el comportamiento del modelo. Cuando hay demasiados ejemplos, el modelo se sobreajusta.

Deja que el modelo complete una entrada parcial

Los modelos generativos de lenguaje funcionan como una herramienta de autocompletado avanzada. Cuando proporcionas contenido parcial, el modelo puede proporcionar el resto del contenido o lo que cree que es una continuación de ese contenido como respuesta. Cuando lo haces, si incluyes ejemplos o contextos, el modelo puede tener en cuenta esos ejemplos o el contexto.

En el siguiente ejemplo, se proporciona una instrucción con una instrucción y una entrada de entidad:

Si bien el modelo hizo lo que se le indicó, escribir las instrucciones en lenguaje natural a veces puede ser difícil. En este caso, puedes dar un ejemplo y un prefijo de respuesta y dejar que el modelo lo complete:

Ten en cuenta cómo se excluyó “waffles” del resultado porque no estaba en el contexto como un campo válido.

Solicita al modelo que le de formato su respuesta

La estrategia de finalización también puede ayudar a dar formato a la respuesta. El siguiente ejemplo solicita al modelo crear un esquema de ensayo:

El mensaje no especificó el formato del esquema, y el modelo eligió un formato para ti. Para que el modelo muestre un esquema en un formato específico, puedes agregar texto que represente el inicio del esquema y dejar que el modelo lo complete según el patrón que iniciaste.

Resumen:

  • Si le das al modelo una entrada parcial, el modelo completa esa entrada según los ejemplos o el contexto disponibles en el mensaje.
  • Hacer que el modelo complete una entrada a veces puede ser más fácil que describir la tarea en lenguaje natural.
  • Agregar una respuesta parcial a un mensaje puede guiar al modelo a seguir un patrón o formato deseado.

Agrega información contextual

Puedes incluir en las instrucciones y la información del mensaje que el modelo necesita para resolver un problema en lugar de suponer que todo el modelo tiene toda la información requerida.

En el siguiente ejemplo, se le pide al modelo que proporcione orientación para solucionar problemas de un router:

La respuesta parece información de solución de problemas genérica que no es específica del router ni del estado de las luces indicadoras LED.

Para personalizar la respuesta del router específico, puedes agregar a la instrucción la guía de solución de problemas del router como contexto a fin de que este haga referencia cuando se proporciona una respuesta.

Resumen:

  • Incluye información (contexto) en el mensaje que deseas que el modelo use cuando se genere una respuesta.
  • Proporciona las instrucciones del modelo sobre qué hacer.

Agrega prefijos

Un prefijo es una palabra o frase que agregas al contenido de la instrucción que puede servir para varios propósitos, según dónde coloques el prefijo:

  • Prefijo de entrada: Agregar un prefijo a las señales de entrada para indicar partes semánticamente importantes de la entrada al modelo. Por ejemplo, los prefijos “inglés:” y “francés:” demarcan dos idiomas diferentes.
  • Prefijo de salida: Aunque el modelo genera el resultado, puedes agregar un prefijo para la salida en la instrucción. El prefijo de salida proporciona información al modelo sobre lo que se espera como respuesta. Por ejemplo, el prefijo de salida “JSON:” indica al modelo que el resultado debe estar en formato JSON.
  • Prefijo de ejemplo: En algunas instrucciones con ejemplos limitados, agregar prefijos a los ejemplos proporciona etiquetas que el modelo puede usar cuando se genera el resultado, lo que facilita el análisis del contenido de los resultados.

En el siguiente ejemplo, “Texto:” es el prefijo de entrada y “La respuesta es:” es el prefijo de salida.

Experimenta con diferentes valores de parámetros

Cada llamada que envías a un modelo incluye valores de parámetros que controlan cómo el modelo genera una respuesta. El modelo puede generar resultados diferentes para los valores de parámetros diferentes. Experimenta con diferentes valores de parámetros a fin de obtener los mejores valores para la tarea. Los parámetros disponibles para diferentes modelos pueden variar. Los parámetros más comunes son los siguientes:

  • Cantidad máxima de tokens de salida
  • Temperatura
  • K superior
  • P superior

Cantidad máxima de tokens de salida

Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene aproximadamente cuatro caracteres. 100 tokens corresponden a aproximadamente 60 a 80 palabras.

Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas más largas.

Temperatura

La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplican topP y topK. La temperatura controla el grado de aleatorización en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta más determinista y menos abierta o de creatividad, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de 0 es determinista, lo que significa que siempre se elige la respuesta de mayor probabilidad.

Para la mayoría de los casos de uso, intenta empezar con una temperatura de 0.2. Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.

K superior

El parámetro K superior cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a 1 significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3 significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.

Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.

Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. La parte superior K predeterminada es 40.

P superior

P superior cambia la manera en la que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde el más alto (consulta K superior) hasta el menos probable, hasta que la suma de sus probabilidades sea igual al valor de P superior. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor P superior es 0.5, el modelo elegirá A o B como el siguiente token mediante la temperatura y excluirá a C como candidato.

Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El P superior predeterminado es 0.95.

Estrategias de iteración de instrucciones

El diseño de instrucciones es un proceso iterativo que suele requerir algunas iteraciones antes de obtener la respuesta deseada de forma coherente. En esta sección, se proporciona orientación sobre algunos aspectos que puedes probar cuando se itera sobre las instrucciones.

Usa distintas frases

El uso de diferentes palabras o frases en tus mensajes a menudo produce respuestas diferentes del modelo, aunque todas significan lo mismo. Si no obtienes los resultados esperados de la instrucción, intenta reformularlo.

Cambia por una tarea analógica

Si no puedes obtener el modelo a fin de que siga las instrucciones de una tarea, intenta darle instrucciones para una tarea analógica que logre el mismo resultado.

Este mensaje le indica al modelo que clasifique un libro mediante categorías predefinidas.

La respuesta es correcta, pero el modelo no se mantiene dentro de los límites de las opciones. También puedes modelar para que solo responda con una de las opciones, en lugar de hacerlo en una oración completa. En este caso, puedes reformular las instrucciones como una pregunta de opción múltiple y pedir al modelo que elija una opción.

Cambia el orden del contenido de instrucciones

A veces, el orden del contenido en la instrucción puede afectar la respuesta. Intenta cambiar el orden del contenido y observa cómo eso afecta la respuesta.

Version 1:
[examples]
[context]
[input]

Version 2:
[input]
[examples]
[context]

Version 3:
[examples]
[input]
[context]

Respuestas de resguardo

Una respuesta de resguardo es una respuesta que muestra el modelo cuando el mensaje o la respuesta activan un filtro de seguridad. Un ejemplo de una respuesta de resguardo es “No puedo ayudar con eso, solo soy un modelo de lenguaje”.

Si el modelo responde con una respuesta de resguardo, intenta aumentar la temperatura.

Elementos que debes evitar

  • Evita depender de los modelos para generar información fáctica.
  • Úsalo con cuidado en problemas matemáticos y lógicos.

Próximos pasos

  • Ahora que comprendes mejor el diseño de mensajes, intenta escribir tus propios mensajes con MakerSuite.