AI Prompt Engineering · Lección

Comparación entre instrucciones vagas y específicas

Ejemplos paralelos que muestran la gran diferencia que marca la especificidad.

Lección 4 de 413 pasos

Comparación entre instrucciones vagas y específicas es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.

Método de comparación lado a lado

La forma más rápida de interiorizar la calidad de los prompts es estudiar reescrituras específicas una junto a otra y analizar por qué funciona cada mejora.

En esta lección examinaremos cinco prompts vagos y sus reescrituras específicas. Para cada par, identificaremos los cambios exactos realizados y el mecanismo mediante el cual cada mejora guía al modelo hacia una salida de mayor calidad.

Par 1: la publicación del blog

Vago: «Escriba una publicación de blog sobre el trabajo remoto».

Específico: «Escriba una publicación de blog de 600 palabras titulada “Los 3 hábitos de trabajo remoto que acabaron con mi productividad (y lo que hago ahora)” para una audiencia de desarrolladores de software de nivel intermedio. Voz en primera persona y tono conversacional. Estructura: 1 párrafo de introducción, 3 secciones con encabezados H2 y 1 CTA final para descargar una plantilla gratuita».

Por qué funciona: Añade el recuento de palabras, el título (y, por tanto, el enfoque), la audiencia, la voz, el tono, la estructura y un elemento final específico. No deja ninguna dimensión al azar.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=800,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 600-word blog post titled '
            '"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
            'for an audience of mid-level software developers. '
            'First-person voice, conversational tone. '
            'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
            '1 closing paragraph with a CTA to download a free productivity template.'
        )
    }]
)
print(response.content[0].text[:400], '...')

Par 2: la revisión de código

Vago: «Revise mi código».

Específico: «Revise la siguiente función de Python. Céntrese únicamente en: 1) errores de corrección, 2) casos límite no gestionados. NO haga comentarios sobre el estilo, los nombres ni el formato. Formato de salida: lista numerada de problemas, cada uno con: descripción del problema (1 oración), línea o líneas afectadas, solución sugerida (fragmento de código)».

Por qué funciona: Define el alcance de la revisión (corrección y casos límite), excluye explícitamente otras dimensiones (estilo y nombres) y especifica una estructura de salida precisa con tres campos por hallazgo.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

code = (
    'def get_user(users, user_id):\n'
    '    for user in users:\n'
    '        if user["id"] == user_id:\n'
    '            return user["name"]\n'
    '    return users[0]["name"]\n'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Review the following Python function.\n'
            'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
            'Do NOT comment on style, naming conventions, or formatting.\n'
            'Output format: numbered list. Each item: issue (1 sentence), '
            'affected line, suggested fix as a code snippet.\n\n'
            + code
        )
    }]
)
print(response.choices[0].message.content)

Par 3: la línea de asunto del correo electrónico

Vago: «Escriba líneas de asunto para el correo informativo de mi boletín».

Específico: «Escriba 10 líneas de asunto para un boletín semanal sobre Python dirigido a científicos de datos. Cada línea de asunto debe tener menos de 50 caracteres, incluir un gancho para aumentar la tasa de apertura (brecha de curiosidad, lista numerada o afirmación sorprendente) y evitar palabras que activan los filtros de spam, como GRATIS o URGENTE. Preséntelas como una lista numerada e indique entre corchetes el tipo de gancho».

Por qué funciona: Especifica la cantidad, la restricción de longitud, el requisito del gancho, la lista de exclusiones y un formato de salida etiquetado, convirtiendo una tarea creativa vaga en una tarea de generación basada en reglas.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Write 10 email subject lines for a weekly newsletter '
            'about Python tips for data scientists. '
            'Requirements:\n'
            '- Each under 50 characters\n'
            '- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
            '- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
            '- Output as numbered list with hook type in brackets at the end of each line'
        )
    }]
)
print(response.content[0].text)

Par 4: el resumen de la reunión

Vago: «Resuma esta transcripción de la reunión».

Específico: «Resuma esta transcripción de la reunión utilizando el siguiente formato: 1) Propósito de la reunión (1 oración), 2) Decisiones clave tomadas (lista con viñetas, máximo 5), 3) Elementos de acción (tabla con las columnas: Tarea, Responsable, Fecha límite), 4) Preguntas abiertas (lista numerada). Si falta información para algún campo, escriba N/D. No incluya opiniones; solo hechos y compromisos».

Por qué funciona: Proporciona una plantilla exacta, especifica los límites de cada sección, define el esquema de la tabla, establece un valor alternativo para los datos que faltan y añade una restricción de tono (solo hechos).

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

transcript = (
    'John: We need to decide on the launch date. '
    'Sarah: I think Q3 works. We need the API done first. '
    'John: Agreed. Sarah, can you own the API? '
    'Sarah: Yes, I can have it by July 15th. '
    'John: Great. Who handles marketing? '
    'Mike: I will, but I need the feature list first. '
    'John: We still need to confirm pricing — tabled for next week.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Summarize this meeting transcript in this exact format:\n'
            '1. Meeting Purpose: (1 sentence)\n'
            '2. Key Decisions: (bullet list, max 5)\n'
            '3. Action Items: (markdown table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: write N/A. Facts only, no opinions.\n\n'
            'Transcript:\n' + transcript
        )
    }]
)
print(response.choices[0].message.content)

Par 5: la explicación

Vago: «Explique el machine learning».

Específico: «Explique el machine learning en 3 párrafos para un responsable de producto de una empresa sanitaria que entiende de estadística, pero nunca ha escrito código. Párrafo 1: qué es y en qué se diferencia de la programación tradicional. Párrafo 2: un ejemplo real del ámbito sanitario (diagnóstico o descubrimiento de fármacos). Párrafo 3: un error común que se debe evitar. Máximo 200 palabras en total».

Por qué funciona: Define la estructura (3 párrafos con temas asignados), la audiencia (puesto, dominio y contexto específicos), los requisitos de contenido de cada párrafo y un límite total de palabras.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=350,
    messages=[{
        'role': 'user',
        'content': (
            'Explain machine learning in exactly 3 paragraphs. '
            'Audience: a product manager at a healthcare company who understands statistics '
            'but has never written code.\n'
            'Paragraph 1: what ML is and how it differs from traditional programming.\n'
            'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
            'Paragraph 3: one common misconception non-technical people have about ML.\n'
            'Max 200 words total. No bullet points — flowing prose only.'
        )
    }]
)
print(response.content[0].text)

La anatomía de una buena reescritura

Al observar los cinco pares, toda reescritura eficaz hace lo mismo:

  1. Sustituye un verbo vago («escribir», «revisar», «explicar») por una tarea estructurada
  2. Indica el formato de salida (lista, tabla o párrafos con contenido asignado)
  3. Añade restricciones medibles (recuento de palabras, número de elementos o límites de caracteres)
  4. Especifica la audiencia (puesto, contexto y conocimientos previos)
  5. Añade al menos una regla de exclusión (qué se debe omitir)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
    improvements = []
    words = specific.lower()
    if any(str(n) in words for n in range(10, 10000)):
        improvements.append('Quantitative constraint added')
    if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
        improvements.append('Negative constraint added')
    if 'audience' in words or 'for a' in words or 'targeting' in words:
        improvements.append('Audience specified')
    if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
        improvements.append('Output format defined')
    if 'example' in words or 'such as' in words or 'like:' in words:
        improvements.append('Example provided')
    print('Improvements detected:')
    for i in improvements:
        print(f'  + {i}')

vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)

Qué ocurre al añadir una sola dimensión

Añadir una sola mejora ayuda, pero una especificidad parcial todavía deja grandes vacíos. Compare:

  • «Escriba una publicación de blog sobre el trabajo remoto»: sin restricciones
  • «Escriba una publicación de blog de 600 palabras sobre el trabajo remoto»: solo se especifica la extensión; el enfoque, la audiencia y la estructura siguen siendo vagos
  • «Escriba una publicación de blog de 600 palabras sobre el trabajo remoto para desarrolladores, con un tono conversacional»: extensión, audiencia y tono; la estructura, el CTA y el estilo de los encabezados siguen siendo vagos

Cada dimensión que deje sin especificar es una lotería. Añada todas las dimensiones sobre las que tenga información.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Progressively more specific prompts
prompts = [
    'Write about Python.',
    'Write a 200-word article about Python.',
    'Write a 200-word article about Python for beginners who know no programming.',
    (
        'Write a 200-word article about Python for beginners who know no programming. '
        'Start with a real-world analogy. Use 3 short paragraphs. '
        'End with one actionable first step they can take today.'
    )
]

for i, p in enumerate(prompts, 1):
    print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
    print()

Aplicación práctica de la técnica del par comparativo

La técnica del par comparativo es una herramienta de depuración muy eficaz. Cuando obtenga una salida deficiente:

  1. Guarde el prompt vago que produjo la salida deficiente
  2. Identifique la dimensión que causó el problema
  3. Escriba una reescritura específica dirigida únicamente a esa dimensión
  4. Ejecute ambos prompts y compare las salidas
  5. Identifique qué sigue necesitando corrección y, a continuación, añada la siguiente restricción

Este enfoque científico le enseña rápidamente qué restricciones son más importantes para su caso de uso.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
    client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
    for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
        response = client_ref.messages.create(
            model='claude-opus-4-5',
            max_tokens=150,
            messages=[{'role': 'user', 'content': prompt}]
        )
        print(f'=== {label} ===')
        print(prompt)
        print('--- OUTPUT ---')
        print(response.content[0].text)
        print()

compare_prompts(
    prompt_a='Explain APIs.',
    prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
    label_a='VAGUE',
    label_b='SPECIFIC'
)

La auditoría de dos minutos del prompt

Antes de enviar cualquier prompt importante, realice esta auditoría de 2 minutos. Si la respuesta a alguna pregunta es «no», añada el detalle que falta:

  • ¿Se indica el formato? (lista, tabla, párrafo o JSON)
  • ¿Se especifica la extensión? (recuento de palabras o número de elementos)
  • ¿Se describe la audiencia? (puesto y contexto)
  • ¿Está claro el objetivo? (para qué sirve la salida)
  • ¿Hay al menos una exclusión? (qué se debe omitir)
  • ¿Hay un ejemplo o una plantilla? (si el estilo es importante)
def two_minute_audit(prompt):
    score = 0
    checks = {
        'Format specified': any(w in prompt.lower() for w in
            ['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
        'Length given': any(c.isdigit() for c in prompt),
        'Audience named': any(w in prompt.lower() for w in
            ['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
        'Exclusion added': any(w in prompt.lower() for w in
            ['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
        'Goal stated': any(w in prompt.lower() for w in
            ['goal', 'purpose', 'so that', 'in order to', 'will be used']),
    }
    print('Prompt Audit:')
    for check, passed in checks.items():
        icon = 'PASS' if passed else 'FAIL'
        print(f'  [{icon}] {check}')
        if passed: score += 1
    print(f'Score: {score}/{len(checks)}')

two_minute_audit(
    'Write 5 bullet-point suggestions for improving user onboarding '
    'for a B2B SaaS app targeting first-time non-technical users. '
    'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)

Cómo crear su biblioteca de prompts

Cada vez que escriba un prompt que produzca una salida excelente, guárdelo. Cree una biblioteca personal de prompts organizada por tipo de tarea.

Una buena entrada de la biblioteca de prompts incluye:

  • La plantilla del prompt con marcadores de posición como [AUDIENCE] y [WORD_COUNT]
  • El caso de uso para el que se diseñó
  • El modelo y la configuración utilizados
  • Una nota sobre lo que lo hace eficaz

Con el tiempo, su biblioteca se convertirá en su recurso más valioso para la productividad con IA.

# Example prompt library entry
prompt_library = {
    'meeting_summary': {
        'template': (
            'Summarize the following meeting transcript in this format:\n'
            '1. Purpose: (1 sentence)\n'
            '2. Decisions: (bullet list, max 5)\n'
            '3. Action Items: (table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
        ),
        'use_case': 'Post-meeting automation for Slack or Notion',
        'model': 'claude-opus-4-5',
        'temperature': 0,
        'notes': 'Works best with verbatim transcripts, not paraphrased notes'
    }
}

# Use the template
def run_meeting_summary(transcript):
    template = prompt_library['meeting_summary']['template']
    return template.replace('[TRANSCRIPT]', transcript)

print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])

Comprobación de conocimientos

Al observar los cinco pares comparativos de esta lección, ¿qué cambio individual mejoró de forma más constante la calidad de los prompts en los cinco ejemplos?

Vago frente a específico: resumen

Los cinco pares comparativos revelan un patrón coherente sobre lo que hace eficaces a las reescrituras de prompts:

  • Estructura de salida: es la mejora con mayor retorno; defínala siempre
  • Recuento de palabras o elementos: elimina por completo la negociación sobre la extensión
  • Descripción de la audiencia: calibra automáticamente el vocabulario y la profundidad
  • Reglas de exclusión: evitan contenido genérico predecible
  • Especificidad parcial: todavía deja vacíos; cada dimensión no especificada es una suposición
  • Bibliotecas de prompts: conservan plantillas eficaces para reutilizarlas
Gratis para empezar

Aprende AI Prompt Engineering con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
53
Lecciones
199

Preguntas frecuentes

¿La lección «Comparación entre instrucciones vagas y específicas» es gratis?

Sí — el texto completo de «Comparación entre instrucciones vagas y específicas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.

¿Qué aprenderé en «Comparación entre instrucciones vagas y específicas»?

Ejemplos paralelos que muestran la gran diferencia que marca la especificidad. Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Prompt Engineering?

No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Comparación entre instrucciones vagas y específicas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?

Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué es importante la especificidad
  2. Eliminar la ambigüedad de las instrucciones
  3. Añadir detalles concretos
  4. Comparación entre instrucciones vagas y específicas
← Volver a AI Prompt Engineering