For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

Ingeniería de prompts

Mejora tus resultados con estrategias de ingeniería de prompts.

Con la API de OpenAI, puedes usar un modelo de lenguaje de gran tamaño para generar texto a partir de un prompt, como lo harías con ChatGPT. Los modelos pueden generar casi cualquier tipo de respuesta en texto, como código, ecuaciones matemáticas, datos estructurados en JSON o prosa similar a la que escribiría una persona.

Este ejemplo sencillo usa la API de respuestas.

Genera texto a partir de un prompt sencillo
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  input: "Write a one-sentence bedtime story about a unicorn.",
});

console.log(response.output_text);

La propiedad output de la respuesta contiene un arreglo con el contenido generado por el modelo. En este ejemplo sencillo, el arreglo contiene un solo resultado:

[
  {
    "id": "msg_67b73f697ba4819183a15cc17d011509",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "output_text",
        "text": "Under the soft glow of the moon, Luna the unicorn danced through fields of twinkling stardust, leaving trails of dreams for every child asleep.",
        "annotations": []
      }
    ]
  }
]

¡El arreglo output suele contener más de un elemento! Puede incluir llamadas a herramientas, datos sobre los tokens de razonamiento generados por los modelos de razonamiento y otros elementos. No puedes dar por hecho que encontrarás el texto generado por el modelo en output[0].content[0].text.

Algunos de nuestros SDK oficiales incluyen la propiedad output_text en las respuestas del modelo. Esta propiedad reúne todo el texto generado por el modelo en una sola cadena y te permite acceder a él directamente.

Además de texto sin formato, puedes pedirle al modelo que devuelva datos estructurados en formato JSON. Esta función se llama resultados estructurados.

Cómo elegir un modelo

Al generar contenido con la API, una decisión importante es qué modelo usar. En los ejemplos de código anteriores, se indica con el parámetro model. Consulta la lista completa de modelos disponibles. Al elegir un modelo para generar texto, considera los siguientes factores:

  • Los modelos de razonamiento generan una cadena de pensamiento interna para analizar el prompt de entrada. Se destacan por su capacidad para comprender tareas complejas y planificar en varios pasos. Por lo general, también son más lentos y costosos de usar que los modelos GPT.
  • Los modelos GPT son rápidos, económicos y muy inteligentes, y dan mejores resultados cuando reciben instrucciones más explícitas sobre cómo realizar las tareas.
  • Los modelos grandes y los pequeños (mini o nano) ofrecen distintas combinaciones de velocidad, costo e inteligencia. Los grandes comprenden mejor los prompts y resuelven problemas con mayor eficacia en distintos ámbitos. Los pequeños suelen ser más rápidos y económicos.

Si tienes dudas, gpt-6-astra es una buena opción predeterminada para generar texto de uso general y refinar tus prompts.

Ingeniería de prompts

La ingeniería de prompts consiste en redactar instrucciones eficaces para que un modelo genere de forma consistente contenido que cumpla tus requisitos.

Como el contenido que genera un modelo no es determinista, diseñar prompts para obtener el resultado que buscas tiene tanto de arte como de ciencia. Aun así, puedes aplicar técnicas y prácticas recomendadas para obtener buenos resultados de manera consistente.

Algunas técnicas de ingeniería de prompts, como usar roles de mensaje, funcionan con todos los modelos. Sin embargo, para obtener los mejores resultados, quizás debas redactar los prompts de manera distinta según el tipo de modelo, por ejemplo, si usas un modelo de razonamiento o un modelo GPT. Incluso dos versiones de modelos de una misma familia pueden producir resultados diferentes. Por eso, a medida que desarrolles aplicaciones más complejas, te recomendamos especialmente estas dos prácticas:

  • Configura tus aplicaciones en producción para que usen versiones específicas de los modelos (por ejemplo, gpt-4.1-2025-04-14) y mantengan un comportamiento consistente.
  • Crea pruebas y conjuntos de evaluaciones que midan cómo responde el modelo a tus prompts. Así podrás monitorear su desempeño a medida que refines los prompts o cuando cambies o actualices la versión del modelo.

Veamos algunas herramientas y técnicas que puedes usar para crear prompts.

Roles de mensaje y seguimiento de instrucciones

Puedes darle al modelo instrucciones con distintos niveles de autoridad mediante el parámetro instructions de la API o los roles de mensaje.

El parámetro instructions le da al modelo instrucciones generales sobre cómo debe comportarse al generar una respuesta. Puedes indicar el tono y los objetivos, y dar ejemplos de respuestas correctas. Las instrucciones que proporciones de esta manera tienen prioridad sobre el prompt del parámetro input.

Genera texto con instrucciones
import OpenAI from "openai";
const client = new OpenAI();

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

console.log(response.output_text);

El ejemplo anterior equivale, a grandes rasgos, a incluir los siguientes mensajes de entrada en el arreglo input:

Genera texto con mensajes de distintos roles
import OpenAI from "openai";
const client = new OpenAI();

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

console.log(response.output_text);

El parámetro instructions solo se aplica a la solicitud actual de generación de respuesta. Si administras el estado de la conversación con el parámetro previous_response_id, el contexto no incluirá las instrucciones que hayas enviado mediante instructions en turnos anteriores.

Las especificaciones del modelo de OpenAI describen cómo nuestros modelos asignan prioridades a los mensajes según su rol.

developer user assistant
Los mensajes developer contienen instrucciones de quien desarrolla la aplicación y tienen prioridad sobre los mensajes user. Los mensajes user contienen instrucciones del usuario final y tienen menor prioridad que los mensajes developer. Los mensajes generados por el modelo tienen el rol assistant.

Una conversación de varios turnos puede incluir varios mensajes de estos tipos, además de otros tipos de contenido que aporten tanto tú como el modelo. Consulta más información sobre cómo administrar el estado de la conversación.

Puedes pensar en los mensajes developer y user como en una función y sus argumentos en un lenguaje de programación.

  • Los mensajes developer establecen las reglas del sistema y la lógica de negocio, como la definición de una función.
  • Los mensajes user proporcionan las entradas y la configuración a las que se aplican las instrucciones del mensaje developer, como los argumentos de una función.

Control de versiones de prompts en el código

Guarda los prompts de producción en el código de tu aplicación en lugar de crear objetos de prompt reutilizables. Al administrar los prompts en el código, puedes usar entradas tipadas, revisiones de código, pruebas y tu proceso habitual de despliegue para cambiar el comportamiento del modelo.

OpenAI está retirando gradualmente los objetos de prompt reutilizables de la API. A partir del 3 de junio de 2026, se dará menos prioridad a la creación de prompts. Está previsto que v1/prompts deje de funcionar el 30 de noviembre de 2026. Consulta las fechas vigentes en la página de funciones en desuso.

Para nuevos trabajos de ingeniería de prompts:

  • Agrupa las funciones que construyen los prompts en un módulo pequeño, cerca del código de la funcionalidad que las usa.
  • Usa argumentos de función tipados o esquemas para los valores dinámicos, como datos de clientes, archivos u opciones de tareas.
  • Pasa los valores generados de instructions e input directamente a la API de respuestas.
  • Agrega datos de prueba representativos, pruebas y comprobaciones de evaluación antes de cambiar los prompts de producción.
  • Distribuye los cambios en los prompts a través de tu sistema de despliegue. Usa indicadores de funcionalidad u opciones de configuración cuando necesites lanzar los cambios por etapas.

Si tu integración ya invoca un prompt guardado mediante su ID o versión, usa la guía de migración de objetos de prompt para trasladarlo al código.

Formato de mensajes con Markdown y XML

Al escribir mensajes developer y user, puedes combinar el formato Markdown con etiquetas XML para que el modelo distinga las partes del prompt y de los datos de contexto.

Los encabezados y las listas de Markdown ayudan a delimitar las secciones de un prompt y a comunicar su jerarquía al modelo. También pueden facilitar la lectura de los prompts durante el desarrollo. Las etiquetas XML permiten indicar dónde empieza y termina un contenido, como un documento de referencia. Con los atributos XML también puedes definir metadatos sobre el contenido del prompt y hacer referencia a ellos en tus instrucciones.

En general, un mensaje de desarrollador contiene las siguientes secciones en este orden, aunque el contenido y el orden más adecuados pueden variar según el modelo que uses:

  • Identidad: describe el propósito, el estilo de comunicación y los objetivos generales del asistente.
  • Instrucciones: indica cómo debe generar el modelo la respuesta que buscas. ¿Qué reglas debe seguir? ¿Qué debe hacer y qué debe evitar siempre? Puedes incluir tantas subsecciones como requiera tu caso de uso, por ejemplo, para indicar cómo debe llamar a funciones personalizadas.
  • Ejemplos: incluye ejemplos de posibles entradas junto con la salida que esperas del modelo en cada caso.
  • Contexto: proporciona la información adicional que el modelo pueda necesitar para generar una respuesta, como datos privados o de propiedad exclusiva que no formen parte de sus datos de entrenamiento, u otros datos que sepas que son especialmente relevantes. Por lo general, conviene colocar este contenido cerca del final del prompt, ya que el contexto puede variar de una solicitud de generación a otra.

El siguiente ejemplo usa Markdown y etiquetas XML para crear un mensaje developer con secciones bien delimitadas y ejemplos de apoyo.

Mensaje de desarrollador para generar código
# 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>

Reduce los costos y la latencia con el almacenamiento en caché de prompts

Al crear un mensaje, procura colocar el contenido que esperas reutilizar en tus solicitudes a la API al principio del prompt y entre los primeros parámetros de la API que envíes en el cuerpo JSON de la solicitud a la API para completar chats o a la API de respuestas. Así podrás aprovechar al máximo la reducción de costos y latencia que ofrece el almacenamiento en caché de prompts.

Aprendizaje con pocos ejemplos

El aprendizaje con pocos ejemplos te permite orientar un modelo de lenguaje de gran tamaño hacia una tarea nueva mediante unos cuantos ejemplos de entradas y salidas en el prompt, en lugar de ajustar el modelo. El modelo deduce el patrón a partir de los ejemplos y lo aplica al prompt. Procura que los ejemplos cubran una variedad de entradas posibles e indica la salida deseada para cada una.

Por lo general, los ejemplos se incluyen en un mensaje developer de la solicitud a la API. El siguiente mensaje developer muestra cómo pedirle al modelo que clasifique reseñas, como las que valoran el servicio al cliente, y responda con una sola palabra.

# Identidad

Eres un asistente que clasifica reseñas breves de productos con una de estas etiquetas: “Positive”, “Negative” o “Neutral”.

# Instrucciones

* Responde con una sola palabra, sin formato adicional ni comentarios.
* Elige únicamente entre “Positive”, “Negative” y “Neutral” según la opinión que exprese la reseña del producto que recibas.

# Ejemplos

<product_review id="example-1">
¡Me encantan estos audífonos! La calidad del sonido es increíble.
</product_review>

<assistant_response id="example-1">
Positive
</assistant_response>

<product_review id="example-2">
La duración de la batería es aceptable, pero las almohadillas se sienten de mala calidad.
</product_review>

<assistant_response id="example-2">
Neutral
</assistant_response>

<product_review id="example-3">
La atención al cliente fue pésima. Nunca volveré a comprarles.
</product_review>

<assistant_response id="example-3">
Negative
</assistant_response>

Incluye información de contexto relevante

A menudo conviene incluir en el prompt información adicional que el modelo pueda usar al generar una respuesta. Estos son algunos motivos habituales para hacerlo:

  • Darle al modelo acceso a datos de propiedad exclusiva o a otros datos que no formen parte de su conjunto de entrenamiento.
  • Limitar la respuesta del modelo a un conjunto específico de recursos que hayas identificado como los más útiles.

La técnica de agregar contexto relevante a la solicitud de generación del modelo se conoce a veces como generación aumentada por recuperación (RAG). Puedes agregar contexto al prompt de distintas maneras. Por ejemplo, puedes consultar una base de datos vectorial e incluir el texto que obtengas en el prompt, o usar la herramienta de búsqueda de archivos integrada de OpenAI para generar contenido a partir de documentos que hayas cargado.

Planificación según la ventana de contexto

La cantidad de datos que un modelo puede tener en cuenta al procesar una solicitud de generación es limitada. Este límite de memoria se llama ventana de contexto y se mide en tokens (fragmentos de los datos que envías, desde texto hasta imágenes).

El tamaño de la ventana de contexto varía según el modelo. Va desde poco más de 100 000 tokens hasta un millón en los modelos GPT-4.1 más recientes. Consulta la documentación de los modelos para conocer el tamaño de la ventana de contexto de cada uno.

Cómo escribir prompts para los modelos actuales

Los modelos GPT como gpt-6-astra dan mejores resultados cuando el prompt contiene instrucciones precisas que explicitan la lógica y los datos necesarios para completar la tarea. Para aprovechar al máximo el modelo más reciente, empieza por la guía de prompts vigente.

GPT-6 Astra prompting guide

Aprovecha al máximo los prompts para el modelo más reciente con recomendaciones actualizadas, ejemplos prácticos y notas de migración.

Prácticas recomendadas para escribir prompts para el modelo más reciente

Consulta las prácticas recomendadas para escribir prompts para el modelo más reciente para obtener las recomendaciones completas y actualizadas. Los siguientes consejos siguen vigentes.

Cómo escribir prompts para modelos de razonamiento

Al escribir un prompt para un modelo de razonamiento, conviene tener en cuenta algunas diferencias con los modelos GPT. En general, los modelos de razonamiento dan mejores resultados cuando solo reciben indicaciones generales para la tarea. Los modelos GPT, en cambio, se benefician de instrucciones muy precisas.

Puedes pensar en la diferencia entre los modelos de razonamiento y los modelos GPT de esta manera:

  • Un modelo de razonamiento se parece a un colega con mucha experiencia. Puedes darle un objetivo y confiar en que resolverá los detalles.
  • Un modelo GPT se parece a un colega con menos experiencia. Obtendrás mejores resultados si le das instrucciones explícitas para producir un resultado específico.

Para obtener más información sobre las prácticas recomendadas al usar modelos de razonamiento, consulta esta guía.

Próximos pasos

Ahora que conoces los conceptos básicos de las entradas y salidas de texto, puedes explorar estos recursos.

Crea un prompt en el Playground

Usa el Playground para desarrollar y refinar tus prompts.

Genera datos JSON con resultados estructurados

Asegúrate de que los datos JSON que genere el modelo se ajusten a un esquema JSON.

Referencia completa de la API

Consulta todas las opciones de generación de texto en la referencia de la API.

Otros recursos

Para encontrar más ideas, visita el OpenAI Cookbook, donde encontrarás ejemplos de código y enlaces a recursos de terceros como los siguientes: