Role prompting

Intermedio
OpenAI
OpenAI
Actualizado: 03/07/2025

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

System, user y assistant roles y su impacto

Los roles de mensaje en OpenAI definen quién está hablando en cada parte de la conversación y determinan cómo el modelo interpreta y responde a cada entrada. Cada rol tiene un propósito específico que influye directamente en el comportamiento del modelo y la calidad de las respuestas generadas.

La API Responses de OpenAI reconoce cuatro roles principales: system, user, assistant y developer. Cada uno cumple una función distinta en la estructura de la conversación y afecta de manera diferente la interpretación del contexto por parte del modelo.

Rol system: configuración del comportamiento

El rol system establece las instrucciones fundamentales que definen cómo debe comportarse el modelo durante toda la conversación. Estas instrucciones actúan como una configuración persistente que influye en todas las respuestas posteriores.

from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "system",
            "content": "Eres un experto en programación Python. Responde siempre con ejemplos de código y explica cada línea detalladamente."
        },
        {
            "role": "user",
            "content": "¿Cómo creo una lista en Python?"
        }
    ]
)

print(response.output_text)

El mensaje system es especialmente útil para establecer el tono, la personalidad y el formato de las respuestas. El modelo mantiene estas instrucciones como referencia constante, incluso cuando la conversación se extiende a través de múltiples intercambios.

Rol user: entrada del usuario final

El rol user representa las consultas, preguntas o solicitudes del usuario final. Este rol indica al modelo que debe procesar la información como una entrada directa que requiere una respuesta útil y relevante.

response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "system",
            "content": "Eres un asistente técnico especializado en bases de datos."
        },
        {
            "role": "user",
            "content": "Necesito optimizar una consulta SQL que tarda mucho en ejecutarse"
        },
        {
            "role": "user",
            "content": "La tabla tiene 2 millones de registros y uso WHERE con múltiples condiciones"
        }
    ]
)

Los mensajes user pueden acumularse para proporcionar contexto adicional o aclaraciones sobre la solicitud inicial. El modelo interpreta todos los mensajes user como parte de la misma consulta o conversación.

Utilizar siempre un system prompt y no solo el user prompt es vital para delimitar qué cosas puede hacer y cuáles no puede hacer un modelo, tal y como muestra este gráfico del blog de openai:

openai roles

Rol assistant: respuestas del modelo

El rol assistant representa las respuestas previas del modelo en una conversación. Este rol es fundamental para mantener el contexto conversacional y permitir que el modelo recuerde sus respuestas anteriores.

response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "system",
            "content": "Eres un tutor de matemáticas paciente y didáctico."
        },
        {
            "role": "user",
            "content": "¿Puedes explicarme qué es una derivada?"
        },
        {
            "role": "assistant",
            "content": "Una derivada mide la tasa de cambio instantánea de una función. Es como calcular la velocidad exacta de un coche en un momento específico, no la velocidad promedio."
        },
        {
            "role": "user",
            "content": "¿Puedes darme un ejemplo práctico de esa explicación?"
        }
    ]
)

Incluir mensajes assistant permite al modelo mantener coherencia en conversaciones largas y construir sobre respuestas anteriores de manera natural.

El rol assistant es muy útil para poder tener una conversación completa con las interacciones del usuario y del LLM así poder enviarle de vuelta toda la conversación al LLM y que sepa seguirla.

Rol developer: instrucciones técnicas

La mayoría de proveedores de LLM utilizan tres roles estándar que ya hemos mencionado.

  • System: Proporciona instrucciones de alto nivel y define el contexto general del comportamiento del modelo.
  • User: Presenta consultas o prompts del usuario.
  • Assistant: Representa la respuesta del modelo.

El rol developer proporciona instrucciones específicas sobre cómo debe procesar o formatear la respuesta. A diferencia del rol system, que establece el comportamiento general, el rol developer se enfoca en aspectos técnicos específicos de la tarea.

response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "developer",
            "content": "Responde únicamente con código JSON válido, sin explicaciones adicionales."
        },
        {
            "role": "user",
            "content": "Crea un objeto JSON para un usuario con nombre, email y edad"
        }
    ]
)

El rol developer en los modelos gpt se comporta como rol sytem:

El rol "developer" es una característica específica de OpenAI que no está ampliamente adoptada por otros proveedores y que openai introdujo para su serie de modelos razonadores o-series. 

Aunque funcionalmente puede parecer similar al rol "system", produce comportamientos y distribuciones de probabilidad diferentes en el modelo, ver pruebas estadísticas: https://community.openai.com/t/system-vs-developer-role-in-4o-model/1119179/2

Impacto de la combinación de roles

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

La combinación estratégica de roles permite crear experiencias conversacionales sofisticadas y controladas. Cada rol aporta una dimensión diferente al contexto que el modelo utiliza para generar respuestas.

Ejemplo de conversación estructurada:

response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "system",
            "content": "Eres un revisor de código senior con 15 años de experiencia. Analiza el código y proporciona exactamente 3 sugerencias de mejora en formato de lista numerada."
        },
        {
            "role": "user",
            "content": "def calcular_total(items):\n    total = 0\n    for item in items:\n        total = total + item['precio']\n    return total"
        }
    ]
)

Jerarquía y prioridad de roles

Los roles tienen diferentes niveles de influencia en el comportamiento del modelo. El rol system establece el contexto base, el rol developer proporciona instrucciones técnicas específicas, y los roles user y assistant mantienen el flujo conversacional.

Cuando hay conflictos entre instrucciones de diferentes roles, el modelo generalmente prioriza las instrucciones más específicas y recientes, pero mantiene el contexto general establecido por el rol system.

# Ejemplo de roles con instrucciones complementarias
response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "system",
            "content": "Eres un experto en seguridad informática. Estructura tu respuesta en: 1) Riesgo identificado, 2) Impacto potencial, 3) Solución recomendada."
        },
        {
            "role": "user",
            "content": "¿Es seguro almacenar contraseñas en texto plano en una base de datos?"
        }
    ]
)

La comprensión profunda de estos roles y su impacto permite crear aplicaciones que aprovechan al máximo las capacidades del modelo, generando respuestas más precisas, consistentes y útiles para los usuarios finales.

Aprendizajes de esta lección

  • Comprender la función y propósito del rol system para configurar el comportamiento del modelo.
  • Identificar cómo el rol user representa las entradas del usuario y su impacto en la conversación.
  • Entender el rol assistant para mantener el contexto y coherencia en las respuestas.
  • Conocer el rol developer y su uso para instrucciones técnicas específicas.
  • Analizar la interacción y jerarquía entre los diferentes roles para optimizar las respuestas del modelo.

Completa OpenAI y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración