En el módulo de IA generativa, aprendiste que el espacio de entrada de los modelos de IA generativa es prácticamente ilimitado. Para generar resultados que se ajusten a las expectativas de los usuarios, debes crear instrucciones. Una instrucción es un contrato estructurado entre tu aplicación y el modelo.
Una instrucción bien escrita:
- Indica cómo debe generar su respuesta el LLM.
- Consta de varios componentes que se pueden versionar, probar y mejorar con el tiempo.
- Puede actuar como un artefacto compartido para la colaboración entre equipos.
En este módulo, aprenderás a escribir instrucciones eficaces. Explicamos cómo se estructura una instrucción y cómo se distribuyen sus componentes entre el sistema y el usuario final. También aprenderás técnicas básicas para crear instrucciones y los casos en los que se aplica cada una de ellas.
A lo largo de este módulo, usaremos un ejemplo compartido: BlogBuddy, un asistente de escritura potenciado por IA inspirado en el uso de la API de Prompt de CyberAgent.
Vuelve al módulo de IA generativa para el plan del sistema BlogBuddy.
Componentes de las instrucciones
Cada componente de la instrucción tiene un rol específico en la dirección del comportamiento del modelo.
- Contexto: Establece el rol y el dominio del modelo para que comprenda cómo comportarse.
- Instrucción: Asigna una tarea específica al modelo.
- Variables de entrada: Contexto específico de la situación, proporcionado por tu aplicación en tiempo real.
- Formato de salida: Define la estructura de salida esperada. Por ejemplo, es posible que desees resultados en formato JSON.
- Ejemplos: Demuestra cómo se debe ejecutar la tarea para una o más entradas.
- Restricciones: Establece límites claros para que el resultado sea coherente, seguro y acorde con la marca.
Tu instrucción puede incluir algunos de estos componentes o todos ellos. En el siguiente ejemplo, se ilustran estos componentes para la función de asistente de escritura de BlogBuddy.
### Context
You are a writing assistant for blog authors.
Your job is to generate helpful, concise, and engaging content.
### Instruction
Generate 3 alternative titles for the user's blog post with a given style.
### Input variables
Here is the content of the blog post:
${blogPostContent}
Here is the desired style:
${titleStyle}
### Output format
Return valid JSON ONLY, in the following exact structure:
{
"titles": ["Title option 1", "Title option 2", "Title option 3"]
}
### Examples
Example input:
{
"blogPostContent": "I finally visited the small neighborhood café I've been eyeing for months...",
"titleStyle": "friendly"
}
Example output:
{
"titles": [
"A First Visit to the Neighborhood Café",
"Trying the Café I've Wanted to Visit for Months",
"My Experience at a Long-Awaited Local Spot"
]
}
### Constraints
- Each title must be under 128 characters.
- Titles must be original, not copied verbatim from the draft.
- Keep the tone natural and human. Avoid emojis unless explicitly requested.
- Avoid sensationalism or clickbait.
- If the draft includes multiple topics, choose the most prominent topic.
Para tus primeros mensajes, comienza con lo esencial: la instrucción y el formato de salida. Luego, agrega más componentes de forma iterativa a medida que analices los resultados y determines qué controles más precisos se necesitan para tener éxito.
Comparación entre las instrucciones del sistema y las del usuario
Algunos de los componentes de la instrucción están codificados, mientras que otros los puede proporcionar el usuario final:
Los desarrolladores de la aplicación proporcionan la instrucción del sistema, que define el comportamiento general del modelo. Puede establecer el rol del modelo, el tono esperado, el formato de salida (como un esquema JSON estricto) y cualquier restricción global. La instrucción del sistema también es donde codificas los requisitos de seguridad y responsabilidad. Se mantiene coherente en todas las solicitudes y proporciona una base estable para el comportamiento del modelo.
La instrucción del usuario contiene la solicitud inmediata que genera un resultado. El usuario solicita una tarea específica, que puede incluir variables específicas. Por ejemplo, "Muestra tres títulos para esta publicación", "Continúa este párrafo" o "Haz que este texto suene más formal".
La mayoría de las APIs de IA generativa te permiten estructurar una instrucción como un array de mensajes, cada uno con un rol (sistema o usuario) y contenido. Esto facilita la separación de las instrucciones estables y globales de la entrada dinámica por solicitud.
¿Cómo decides qué componentes pertenecen a la instrucción del sistema y qué debe especificar el usuario? La respuesta depende de la flexibilidad de tu experiencia del usuario y de la capacidad de tu modelo.
Casos de uso restringidos
En el caso de los casos de uso muy específicos, la mayor parte de la instrucción se puede predefinir en la instrucción del sistema. Por ejemplo, en BlogBuddy, los usuarios pueden hacer clic en Show Titles para ver una lista de sugerencias de títulos generados para su borrador.

La tarea es fija, se conoce el formato de salida y el usuario no necesita proporcionar contexto adicional para obtener el resultado esperado. En este caso, coloca todas las reglas estables, los lineamientos de tono, los esquemas de salida y los ejemplos en la instrucción del sistema.
Para compilar esto con la API de Prompt, usaríamos initialPrompts para definir el comportamiento a nivel del sistema para toda la sesión:
// Defines stable behavior for the entire session
const session = await LanguageModel.create({
initialPrompts: [
{
role: "system",
content: `You are a blog-writing assistant.
Your task is to generate high-quality titles for blog posts.
Always respond in concise, friendly language.
Return exactly 3 alternative titles.
Produce valid JSON with a "titles" array of strings.`
}
]
});
Cuando el usuario hace clic en Mostrar títulos, se invoca el mensaje para el contenido actual:
// The only variable input is the blog content
const result = await session.prompt(blogContent);
Con el tiempo, es posible que los usuarios soliciten más flexibilidad y control. En este caso, puedes mover ciertos componentes a la instrucción del usuario, con controles de interfaz. Por ejemplo, un menú desplegable de especificaciones de estilo o tono.
Sin embargo, demasiadas acciones estructuradas pueden sobrecargar la experiencia del usuario. Cuando esto sucede, es posible que desees cambiar a un diseño más abierto que permita a los usuarios especificar la mayoría de sus instrucciones. Aprenderás más sobre la optimización de este diseño en el módulo de patrones de UX.
Las tareas flexibles se basan en instrucciones detalladas del usuario
Una experiencia interactiva y abierta que ayuda a los usuarios a escribir entradas de blog desde cero les ofrece más flexibilidad. Pueden pedir ideas, esquemas, reescrituras, cambios de tono o intercambios de ideas, o bien especificar cómo se debe ejecutar una tarea. Con este tipo de aplicación, es probable que necesites un modelo más potente del servidor.

Con las tareas flexibles, el usuario debe especificar más información, ya que el rango posible de opciones es mucho más amplio. La instrucción del sistema sigue controlando el comportamiento general.
Las prácticas recomendadas son las siguientes:
- Coloca reglas, estructura y ejemplos estables en la instrucción del sistema. Coloca contenido dinámico y solicitudes específicas de tareas en la instrucción del usuario.
- Cuanto más abierta sea tu UX, más flexibilidad necesitará la instrucción del usuario para adaptarse a entradas impredecibles.
- Cuanto más trabajo deba realizar la instrucción del usuario, más capacidad deberá tener el modelo, ya que tendrá que controlar una mayor variación con menos estructura integrada.
Puedes usar estas reglas para optimizar gradualmente la compensación entre el control y la flexibilidad del usuario en el contexto de tu producto. Observa de cerca las preferencias y los comportamientos de los usuarios. Una mayor flexibilidad no siempre se traduce en valor real. Tus usuarios también deben tener el tiempo, las habilidades y el ancho de banda cognitivo para crear instrucciones más extensas.
Técnicas comunes de creación de instrucciones
Por lo general, los desarrolladores prueban varias técnicas de instrucciones para encontrar lo que funciona mejor para su caso de uso y modelo.
Instrucciones sin ejemplos
Describes la tarea para el modelo y esperas lo mejor. Por ejemplo:
"What is the capital of France?"
Las instrucciones sin ejemplos son una referencia eficiente para muchas tareas de IA. Para las solicitudes que no son complejas, como las consultas de conocimiento enciclopédico, probablemente sea mejor que sigas usando esta técnica. Sin embargo, en la mayoría de las aplicaciones del mundo real, debes expandir tu instrucción con lógica y condiciones adicionales.
Instrucciones con varios ejemplos
Con el few-shot prompting, proporcionas ejemplos para demostrar el comportamiento, el estilo, la estructura y otras variables importantes correctos. Este es un ejemplo de instrucción para la clasificación de opiniones:
You classify user messages into one of the following categories:
- "positive"
- "negative"
- "neutral"
Here are examples to guide your classifications:
Input: "I love this product! It works perfectly."
Output: { "label": "positive" }
Input: "This is terrible. I want a refund."
Output: { "label": "negative" }
Las instrucciones con pocos ejemplos son útiles para este tipo de tareas pseudopredictivas. También se puede aplicar a tareas que siguen una estructura reconocible, como la generación de títulos en la Figura 1.
Cuando el espacio de salida es muy amplio, como en el caso del contenido de formato abierto o de formato largo, es probable que el few-shot prompting no sea la mejor técnica. Es difícil o incluso imposible proporcionar ejemplos que abarquen el espacio de manera significativa.
Cadena de pensamientos
Fomentas que el modelo razone paso a paso antes de producir una respuesta. Los pasos se pueden describir de forma explícita o se pueden dejar para que los defina el modelo. Por ejemplo:
"Think step-by-step to identify the main idea of this paragraph. Then produce a
short heading under 60 characters."
La cadena de pensamiento funciona muy bien para las tareas que requieren razonamiento y ejecución de varios pasos, como delinear una entrada de blog o respaldar decisiones complejas. Es la técnica principal detrás de los llamados modelos de razonamiento.
Esto puede ser costoso. Generar registros de razonamiento paso a paso aumenta la capacidad de procesamiento, el costo y la latencia. Úsalo solo cuando tu caso de uso requiera una planificación y un razonamiento complejos.
Instrucciones para la autorreflexión
Después de la generación inicial, le solicitas al modelo que critique y revise su propio resultado. Por ejemplo:
"Review your previous output.
Identify unclear phrasing and rewrite it more concisely."
La autorreflexión es especialmente útil para las tareas que se benefician del perfeccionamiento iterativo, como las herramientas de edición o reescritura. Es rápida de implementar y puede producir ganancias sustanciales en la calidad. Un ciclo de autorreflexión es beneficioso una vez que tu instrucción funciona bien. Primero, refina el resultado para que sea más claro o para que los usuarios disfruten más.
Tus conclusiones
En este módulo, aprendiste cómo se compilan las instrucciones a partir de componentes estructurados. En la práctica, la ingeniería de instrucciones es altamente experimental. La claridad y la confiabilidad solo surgen después de varias rondas de perfeccionamiento.
En el próximo módulo, analizaremos el desarrollo de instrucciones basadas en la evaluación. Esta práctica te ayuda a mejorar las instrucciones de forma sistemática y a determinar qué funciona mejor para tu producto y tus usuarios.
Recursos
Cada una de estas técnicas tiene sus propias variantes y prácticas recomendadas. Hay una amplia variedad de recursos externos detallados, por ejemplo:
- La guía de ingeniería de instrucciones de Google Cloud
- Guía de ingeniería de instrucciones de DAIR
- Cómo escribir instrucciones de forma sencilla, de Janna Lipenkova
- Lee el capítulo 6 de The Art of AI Product Development.
Consulta la documentación del modelo que elegiste, ya que es posible que haya sugerencias específicas para que obtengas los mejores resultados posibles.
Verifica tus conocimientos
¿Qué tipos de reglas puedes especificar en una instrucción del sistema?
¿Qué técnica debes usar cuando quieres que el modelo razone paso a paso antes de producir la respuesta?
¿Cuándo es más útil la instrucción con pocos ejemplos?
¿Qué es la técnica de instrucciones de autorreflexión?