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

Ingeniería de prompts

Mejora los 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 de texto, como código, ecuaciones matemáticas, datos JSON estructurados o prosa similar a la que escribiría una persona.

Aquí tienes un ejemplo sencillo con la API Responses.

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, hay un solo resultado, que se ve así:

[
  {
    "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 es seguro suponer que el texto generado por el modelo se encuentra en output[0].content[0].text.

Algunos de nuestros SDK oficiales incluyen, para mayor comodidad, una propiedad output_text en las respuestas del modelo que reúne todo el texto generado en una sola cadena. Esta propiedad puede ser útil para acceder directamente al texto generado por el modelo.

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

Elegir un modelo

Una decisión clave al generar contenido mediante la API es qué modelo usar: se especifica con el parámetro model de los ejemplos de código anteriores. Aquí puedes encontrar la lista completa de modelos disponibles. Estos son algunos factores que debes considerar al elegir un modelo para generar texto.

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

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

Ingeniería de prompts

La ingeniería de prompts es el proceso de escribir instrucciones eficaces para que un modelo genere de manera consistente contenido que cumpla tus requisitos.

Como el contenido generado por un modelo no es determinista, diseñar prompts para obtener el resultado deseado combina arte y ciencia. Sin embargo, puedes aplicar técnicas y prácticas recomendadas para obtener buenos resultados de manera consistente.

Algunas técnicas de ingeniería de prompts, como el uso de roles de mensaje, funcionan con todos los modelos. Sin embargo, distintos tipos de modelos (como los de razonamiento y los GPT) pueden necesitar prompts diferentes para dar los mejores resultados. Incluso distintas instantáneas de modelos de la misma familia podrían producir resultados diferentes. Por eso, a medida que desarrolles aplicaciones más complejas, te recomendamos especialmente:

  • Fijar tus aplicaciones de producción a instantáneas específicas de los modelos (como gpt-4.1-2025-04-14, por ejemplo) para garantizar un comportamiento consistente
  • Crear pruebas y conjuntos de evaluación que midan el comportamiento de los prompts para que puedas monitorear el rendimiento a medida que los mejoras o cuando cambias o actualizas las versiones de los modelos

Ahora, veamos algunas herramientas y técnicas que tienes disponibles 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, incluidos el tono, los objetivos y ejemplos de respuestas correctas. Todas las instrucciones proporcionadas de esta manera tendrán prioridad sobre un prompt en el 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 aproximadamente a usar 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);

Ten en cuenta que 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, las instrucciones de instructions usadas en turnos anteriores no estarán presentes en el contexto.

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

developeruserassistant
Los mensajes developer son instrucciones proporcionadas por el desarrollador de la aplicación y tienen prioridad sobre los mensajes user.Los mensajes user son instrucciones proporcionadas por un 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 constar de varios mensajes de estos tipos, junto con otros tipos de contenido proporcionados tanto por ti como por el modelo. Obtén más información sobre cómo administrar el estado de la conversación aquí.

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

  • Los mensajes developer proporcionan las reglas y la lógica de negocio del sistema, 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 código

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

OpenAI está retirando los objetos de prompt reutilizables de la API. La creación de prompts perderá protagonismo a partir del 3 de junio de 2026, y está previsto que v1/prompts deje de funcionar el 30 de noviembre de 2026. Consulta la página de funciones obsoletas para conocer el cronograma actual.

Para nuevos trabajos de ingeniería de prompts:

  • Mantén los generadores de prompts en un módulo pequeño cerca de la funcionalidad que los utiliza.
  • Usa argumentos de función tipados o esquemas para valores dinámicos, como datos de clientes, archivos u opciones de tareas.
  • Pasa los valores generados de instructions y input directamente a la API Responses.
  • Agrega fixtures representativos, pruebas y verificaciones de evaluación antes de cambiar los prompts de producción.
  • Implementa los cambios en los prompts mediante tu sistema de despliegue y usa indicadores de funcionalidades o configuración cuando necesites lanzamientos por etapas.

Si tu integración ya llama a un prompt guardado mediante un ID o una versión de prompt, usa la guía de migración de objetos de prompt para trasladar ese prompt al código.

Formato de mensajes con Markdown y XML

Al escribir mensajes developer y user, puedes ayudar al modelo a entender los límites lógicos de tu prompt y de los datos de contexto mediante una combinación de formato Markdown y etiquetas XML.

Los encabezados y las listas de Markdown pueden servir para delimitar las distintas secciones de un prompt e indicar su jerarquía al modelo. También pueden facilitar la lectura de tus prompts durante el desarrollo. Las etiquetas XML pueden ayudar a delimitar dónde comienza y termina un fragmento de contenido, como un documento de apoyo que se usa como referencia. Los atributos XML también permiten definir metadatos sobre el contenido del prompt a los que puedes hacer referencia en tus instrucciones.

En general, un mensaje de desarrollador contiene las siguientes secciones, normalmente en este orden (aunque el contenido y el orden óptimos 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: orienta al modelo sobre cómo generar la respuesta que buscas. ¿Qué reglas debe seguir? ¿Qué debe hacer y qué no debe hacer nunca? Esta sección puede contener varias subsecciones relevantes para tu caso de uso, como la manera en que el modelo debe llamar a funciones personalizadas.
  • Ejemplos: proporciona ejemplos de posibles entradas junto con la salida que esperas del modelo.
  • Contexto: proporciona al modelo cualquier información adicional que 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 serán especialmente relevantes. Por lo general, conviene colocar este contenido cerca del final del prompt, ya que puedes incluir un contexto diferente para cada solicitud de generación.

A continuación se muestra un ejemplo de cómo usar Markdown y etiquetas XML para construir un mensaje developer con secciones diferenciadas y ejemplos de apoyo.

Un 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 costos y latencia con el almacenamiento de prompts en caché

Al construir 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 Chat Completions o Responses. Esto te permite maximizar la reducción de costos y latencia que ofrece el almacenamiento de prompts en caché.

Aprendizaje con pocos ejemplos

El aprendizaje con pocos ejemplos te permite orientar un modelo de lenguaje grande hacia una nueva tarea mediante unos cuantos ejemplos de entrada y salida en el prompt, en lugar de realizar un ajuste fino del modelo. El modelo “capta” implícitamente el patrón de esos ejemplos y lo aplica a un prompt. Al proporcionar ejemplos, procura mostrar una variedad de entradas posibles con las salidas deseadas.

Por lo general, los ejemplos se incluyen como parte de un mensaje developer en la solicitud a la API. Aquí tienes un mensaje developer de muestra con ejemplos que enseñan al modelo a clasificar reseñas de atención al cliente como positivas o negativas.

# Identity

You are a helpful assistant that labels short product reviews as
Positive, Negative, or Neutral.

# Instructions

* Only output a single word in your response with no additional formatting
  or commentary.
* Your response should only be one of the words "Positive", "Negative", or
  "Neutral" depending on the sentiment of the product review you are given.

# Examples

<product_review id="example-1">
I absolutely love this headphones — sound quality is amazing!
</product_review>

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

<product_review id="example-2">
Battery life is okay, but the ear pads feel cheap.
</product_review>

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

<product_review id="example-3">
Terrible customer service, I'll never buy from them again.
</product_review>

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

Incluye información de contexto relevante

Suele ser útil incluir en el prompt información de contexto adicional que el modelo pueda usar para generar una respuesta. Estas son algunas razones habituales para hacerlo:

  • Dar al modelo acceso a datos de propiedad exclusiva o a cualquier otro dato que no forme parte del conjunto de datos con el que se entrenó.
  • Limitar la respuesta del modelo a un conjunto específico de recursos que hayas determinado que serán los más útiles.

La técnica de añadir contexto relevante a la solicitud de generación del modelo a veces se denomina generación aumentada por recuperación (RAG). Puedes añadir contexto al prompt de muchas maneras: por ejemplo, consultar una base de datos vectorial e incluir el texto obtenido en el prompt, o usar la herramienta de búsqueda de archivos integrada de OpenAI para generar contenido a partir de documentos cargados.

Planificar según la ventana de contexto

Los modelos solo pueden manejar una cantidad limitada de datos dentro del contexto que consideran durante una solicitud de generación. Este límite de memoria se denomina ventana de contexto y se mide en tokens (fragmentos de los datos que proporcionas, desde texto hasta imágenes).

Los modelos tienen ventanas de contexto de distintos tamaños, desde poco más de 100 000 tokens hasta un millón de tokens en los modelos GPT-4.1 más recientes. Consulta la documentación de los modelos para conocer el tamaño específico de la ventana de contexto de cada uno.

Diseño de prompts para los modelos actuales

Los modelos GPT como gpt-6-astra se benefician de instrucciones precisas que incluyan explícitamente en el prompt la lógica y los datos necesarios para completar la tarea. Para aprovechar al máximo el modelo más reciente, comienza con la guía actual de diseño de prompts.

GPT-6 Astra prompting guide

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

Prácticas recomendadas de diseño de prompts para el modelo más reciente

Para obtener información completa y actualizada, consulta las prácticas recomendadas de diseño de prompts para el modelo más reciente. Los recordatorios prácticos que aparecen a continuación siguen siendo válidos.

Diseño de prompts para modelos de razonamiento

Hay algunas diferencias que debes considerar al diseñar prompts para un modelo de razonamiento en comparación con un modelo GPT. En general, los modelos de razonamiento ofrecen mejores resultados en tareas con solo indicaciones generales. Esto difiere de los modelos GPT, que se benefician de instrucciones muy precisas.

Puedes entender la diferencia entre los modelos de razonamiento y los modelos GPT de la siguiente manera.

  • Un modelo de razonamiento es como un colega experimentado. Puedes darle un objetivo y confiar en que resolverá los detalles.
  • Un modelo GPT es como un colega con poca experiencia. Trabajará mejor si recibe instrucciones explícitas para generar 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 continuar con alguno de estos recursos.

Crea un prompt en el Playground

Usa el Playground para desarrollar prompts y mejorarlos de forma iterativa.

Genera datos JSON con resultados estructurados

Asegúrate de que los datos JSON generados por un 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 inspiración, visita el OpenAI Cookbook, que contiene código de ejemplo y enlaces a recursos de terceros, como: