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>