Saltar al contenido principal

Prompt Engineering

Las técnicas que se muestran a continuación funcionan para la mayoría de los modelos disponibles en OpenAI.
Aplicarlas correctamente permite obtener respuestas más consistentes y mejorar la calidad de los resultados.


Recomendaciones para mejores resultados

  • Usar una versión específica del modelo
    Ejemplo: gpt-4.1-2025-04-14.
    Esto asegura consistencia en cada petición, evitando variaciones entre versiones del mismo modelo.

  • Construir Evals
    Diseñar evaluaciones personalizadas (Evals) ayuda a medir el comportamiento de cada prompt, validando su rendimiento y ajustando la redacción para mejorar precisión, coherencia y estabilidad.


✅ Estas acciones representan buenas prácticas de prompt engineering, ya que permiten optimizar tanto la calidad de las respuestas como la confiabilidad de las pruebas.

Mensajes de instrucción e instrucciones a continuación

Para definir instrucciones al modelo se puede utilizar el campo instructions dentro de la petición.
Este parámetro indica al modelo cómo debe comportarse y qué reglas debe seguir al generar la respuesta.

En otras palabras, el campo instructions permite establecer el comportamiento base del asistente, asegurando consistencia en el tono, estilo o restricciones aplicadas durante la interacción.

import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
model: "gpt-5",
reasoning: { effort: "low" },
instructions: "Talk like a pirate.",
input: "Are semicolons optional in JavaScript?",
});

console.log(response.output_text);

El campo instructions es equivalente a agregar un mensaje con el rol developer dentro del arreglo de entradas (input).

En ambos casos, el modelo recibe un mensaje de instrucción que define su comportamiento base, asegurando que las respuestas se alineen con el estilo, reglas o restricciones establecidas.

La diferencia radica únicamente en la forma de escritura de la petición:

  • Usando instructions → más directo y sencillo para casos simples.
  • Usando role: developer → más flexible cuando se construye un prompt con múltiples roles y mensajes.
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
model: "gpt-5",
reasoning: { effort: "low" },
input: [
{
role: "developer",
content: "Talk like a pirate."
},
{
role: "user",
content: "Are semicolons optional in JavaScript?",
},
],
});

console.log(response.output_text);

Roles

Existen diferentes roles de mensajes, los cuales definen para quién van dirigidos y cómo debe manejarlos el modelo. Estos roles permiten estructurar mejor el prompt y diferenciar entre instrucciones, entradas dinámicas y respuestas.

  • Developer
    Son mensajes de instrucción que establecen el comportamiento base del modelo.
    Idealmente se ubican en la parte principal del prompt y no cambian con cada petición.

  • User
    Representan las instrucciones dinámicas proporcionadas por el usuario, es decir, la pregunta o entrada específica que se desea procesar.

  • Assistant
    Son los mensajes generados por el propio modelo en respuesta a las instrucciones del desarrollador y del usuario.
    Este rol refleja la salida final de la interacción.


✅ El uso correcto de estos roles ayuda a estructurar prompts más claros, organizados y efectivos, mejorando la coherencia de las respuestas del modelo.

Mensajes en formato Markdown y XML

El uso de Markdown y XML en la construcción de prompts ayuda a los modelos a entender mejor la lógica del mensaje, facilitando la organización del contenido y proporcionando contexto esencial para generar respuestas más coherentes y útiles.


Markdown

Con Markdown es posible añadir:

  • Encabezados (#, ##, ###) para dividir secciones.
  • Listas ordenadas y no ordenadas.

Esto no solo ayuda al modelo a identificar secciones dentro del prompt, sino que también facilita el trabajo de los desarrolladores al mantener los prompts más claros y fáciles de leer.


XML

El uso de XML permite definir atributos y delimitadores que estructuran aún más el prompt.
Gracias a esto, se pueden crear secciones explícitas que dan contexto adicional al modelo y marcan con claridad las instrucciones, ejemplos o datos relevantes.


Estructura recomendada de un prompt con Prompt Engineering

Al diseñar prompts, una buena práctica es dividirlos en secciones como las siguientes:

  • Identity: Describe el propósito, estilo de comunicación y objetivos generales del asistente.
  • Instructions: Indican las reglas que el modelo debe seguir. Explican qué hacer y qué no hacer. Aquí también se pueden definir subreglas como la forma de invocar funciones personalizadas.
  • Examples: Incluyen ejemplos de entradas posibles junto con la salida esperada del modelo.
  • Context: Aporta información adicional que el modelo necesita para responder correctamente. Suele colocarse al final, ya que puede variar según la solicitud.

Ejemplo prompt engineering

# Identity

You are coding assistant that helps enforce the use of snake case
variables in JavaScript code, and writing code that will run in
Internet Explorer version 6.

# Instructions

- When defining variables, use snake case names (e.g. my_variable)
instead of camel case names (e.g. myVariable).
- To support old browsers, declare variables using the older
"var" keyword.
- Do not give responses with Markdown formatting, just return
the code as requested.

# Examples

<user_query>
How do I declare a string variable for a first name?
</user_query>

<assistant_response>
var first_name = "Anna";
</assistant_response>

Investigaciones compatibles

Referencias

Prompt engineering