AI Prompt Engineering · Lección

Elección de parámetros para su caso de uso

Configuraciones recomendadas para preguntas y respuestas factuales, escritura creativa, código y chat.

Lección 4 de 413 pasos

Elección de parámetros para su caso de uso 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.

El marco para decidir los parámetros

Elegir los parámetros de muestreo no es cuestión de adivinar: se basa en una lógica determinada por los requisitos de su tarea. Dos dimensiones clave determinan la configuración adecuada:

  1. Precisión de la salida: ¿qué importancia tiene que la salida sea correcta y predecible?
  2. Diversidad de la salida: ¿qué importancia tiene que las salidas varíen y exploren distintas posibilidades?

Alta precisión → temperatura baja. Alta diversidad → temperatura alta. La mayoría de las tareas se sitúan entre estos dos extremos.

Preguntas y respuestas factuales: la precisión lo es todo

En las preguntas y respuestas factuales, normalmente existe una única respuesta correcta. Cualquier aleatoriedad aumenta la probabilidad de obtener una respuesta incorrecta. Use:

  • temperature = 0: decodificación greedy, completamente determinista
  • top_p = 1.0: déjelo sin restricciones; con temperature=0, top-p no tiene ningún efecto

Esto garantiza que el modelo siempre elija la respuesta en la que tiene mayor confianza, que es la que tiene más probabilidades de ser correcta.

import openai
client = openai.OpenAI(api_key='sk-...')

# Factual Q&A configuration
def factual_qa(question):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Answer factual questions concisely and accurately.'},
            {'role': 'user', 'content': question}
        ],
        temperature=0,
        top_p=1.0
    )
    return resp.choices[0].message.content

answer = factual_qa('What is the boiling point of water at sea level?')
print(answer)  # Always: '100 degrees Celsius (212 degrees Fahrenheit).'

Generación de código: casi greedy

El código debe ser sintácticamente correcto y semánticamente preciso. La aleatoriedad provoca errores de sintaxis, nombres de variables incorrectos o una lógica errónea. Use:

  • temperature = 0–0.2: casi greedy: permite pequeñas variaciones, pero favorece firmemente las elecciones correctas de tokens
  • top_p = 0.95: elimina los tokens de la cola extrema que podrían provocar errores de sintaxis
# Code generation configuration
def generate_code(task):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are an expert Python programmer. Write clean, correct code.'},
            {'role': 'user', 'content': task}
        ],
        temperature=0.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

code = generate_code('Write a Python function that merges two sorted lists.')
print(code)

Resumen: configuración moderada

El resumen necesita precisión (no distorsionar los hechos), pero se beneficia de una ligera variación (distintas ejecuciones pueden destacar aspectos diferentes). Use:

  • temperature = 0.3–0.5: una aleatoriedad ligera conserva una redacción natural
  • top_p = 1.0: no es necesario restringir el núcleo con una temperatura baja
# Summarization configuration
def summarize(text):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Summarize the following text in 3 sentences.'},
            {'role': 'user', 'content': text}
        ],
        temperature=0.4,
        top_p=1.0
    )
    return resp.choices[0].message.content

summary = summarize(long_article)
print(summary)

Chat conversacional: variación natural

Las respuestas de chat se benefician de una variación natural: la misma pregunta no debería producir siempre exactamente la misma redacción. Un exceso de aleatoriedad hace que las respuestas pierdan coherencia. Use:

  • temperature = 0.7–0.9: conversación natural y variada
  • top_p = 0.9–0.95: elimina los tokens improbables de la cola que producen una redacción poco natural
# Chat configuration
def chat_response(user_message, history):
    messages = history + [{'role': 'user', 'content': user_message}]
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a friendly, helpful assistant.'},
            *messages
        ],
        temperature=0.8,
        top_p=0.9
    )
    reply = resp.choices[0].message.content
    history.append({'role': 'user', 'content': user_message})
    history.append({'role': 'assistant', 'content': reply})
    return reply, history

Escritura creativa: alta diversidad

La escritura creativa valora la originalidad y lo inesperado. Las temperaturas bajas producen salidas llenas de clichés y predecibles. Las temperaturas altas producen elecciones vívidas e inesperadas, aunque un valor demasiado alto provoca incoherencia. Use:

  • temperature = 0.9–1.2: vocabulario diverso y elecciones de palabras no obvias
  • top_p = 0.95: evita los tokens incoherentes de la cola y permite una exploración amplia
# Creative writing configuration
def write_story_opening(prompt):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a creative fiction writer. Write vivid, original prose.'},
            {'role': 'user', 'content': f'Write a story opening for: {prompt}'}
        ],
        temperature=1.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

opening = write_story_opening('A detective discovers her partner is the killer.')
print(opening)

Lluvia de ideas e ideación

En una lluvia de ideas, el objetivo es maximizar la diversidad de ideas, incluso las inusuales o inesperadas. Use la temperatura práctica más alta:

  • temperature = 1.0–1.5: exploración amplia del espacio de ideas
  • top_p = 0.95–1.0: restricción mínima

Ejecute el proceso varias veces y recopile todas las salidas; después, filtre manualmente las mejores ideas. Los prompts para lluvias de ideas se benefician de solicitudes explícitas de variedad: 'Deme 10 enfoques diferentes, incluidos algunos inusuales.'

# Brainstorming: run multiple times for variety
def brainstorm(topic, n_runs=5):
    ideas = []
    for _ in range(n_runs):
        resp = client.chat.completions.create(
            model='gpt-4o',
            messages=[
                {'role': 'system', 'content': 'Generate creative, diverse ideas. Include unusual approaches.'},
                {'role': 'user', 'content': f'Give me 3 ideas for: {topic}'}
            ],
            temperature=1.3,
            top_p=0.95
        )
        ideas.append(resp.choices[0].message.content)
    return ideas

all_ideas = brainstorm('reducing customer churn')

Pruebas de sensibilidad de parámetros

Antes de fijar los parámetros, realice pruebas de sensibilidad de parámetros: mantenga constante el prompt, varíe un parámetro cada vez y evalúe la calidad de la salida con cada configuración.

def sensitivity_test(prompt, evaluator, temperatures, n_samples=5):
    results = {}
    for temp in temperatures:
        scores = []
        for _ in range(n_samples):
            resp = client.chat.completions.create(
                model='gpt-4o',
                messages=[{'role': 'user', 'content': prompt}],
                temperature=temp
            )
            score = evaluator(resp.choices[0].message.content)
            scores.append(score)
        results[temp] = sum(scores) / len(scores)

    for temp, score in sorted(results.items()):
        print(f'T={temp}: avg score = {score:.2f}')
    best_temp = max(results, key=results.get)
    print(f'Best temperature: {best_temp}')
    return best_temp

Cuándo dejar los valores predeterminados

No todas las aplicaciones necesitan parámetros personalizados. Déjelos con sus valores predeterminados cuando:

  • El caso de uso sea un chat general: la temperatura predeterminada (1.0 en la mayoría de las API) está bien ajustada
  • Esté creando un prototipo y todavía no sepa cuáles son los valores adecuados
  • La tarea equilibre precisión y creatividad (p. ej., redactar correos electrónicos)

Regla práctica: personalice los parámetros únicamente cuando el comportamiento predeterminado provoque un problema de calidad medible durante las pruebas. Ajustar los parámetros prematuramente añade complejidad sin aportar un beneficio medible.

# Defaults are often correct
default_resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Draft a professional email declining a meeting.'}]
    # No temperature or top_p specified — API defaults apply
    # OpenAI default: temperature=1, top_p=1
)
print(default_resp.choices[0].message.content)

Tarjeta de referencia rápida

Tabla resumen de la configuración recomendada según el caso de uso:

PARAMETER_PRESETS = {
    # task: (temperature, top_p, notes)
    'factual_qa':        (0.0, 1.0, 'greedy, max accuracy'),
    'classification':    (0.0, 1.0, 'deterministic labels'),
    'code_generation':   (0.1, 0.95, 'near-greedy, avoid tail tokens'),
    'data_extraction':   (0.2, 1.0, 'slight variation for robustness'),
    'summarization':     (0.4, 1.0, 'preserve facts, vary phrasing'),
    'translation':       (0.3, 1.0, 'accurate but natural'),
    'chat':              (0.8, 0.9, 'natural conversation'),
    'email_drafting':    (0.7, 0.9, 'professional but varied'),
    'creative_writing':  (1.1, 0.95, 'vivid, original'),
    'brainstorming':     (1.3, 0.95, 'maximum diversity'),
}

for task, (temp, top_p, notes) in PARAMETER_PRESETS.items():
    print(f'{task:22} temp={temp}, top_p={top_p} | {notes}')

Penalizaciones de frecuencia y presencia

Dos parámetros adicionales complementan la temperatura y top-p:

  • frequency_penalty (0–2): reduce la probabilidad de los tokens de forma proporcional a la frecuencia con la que han aparecido en la salida hasta ese momento; evita la repetición de palabras
  • presence_penalty (0–2): reduce la probabilidad de cualquier token que haya aparecido al menos una vez; fomenta la diversidad temática

Para la escritura creativa: añada frequency_penalty=0.5 para reducir la repetición de palabras sin cambiar la temperatura.

resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Write a paragraph about coffee.'}],
    temperature=1.0,
    top_p=0.95,
    frequency_penalty=0.5,  # discourage repeating the same words
    presence_penalty=0.3    # encourage introducing new topics/aspects
)
print(resp.choices[0].message.content)

Comprobación de conocimientos

Para una tarea que genere código Python que se ejecutará en producción, ¿qué configuración de parámetros es la más adecuada?

Repaso: elección de los parámetros de muestreo

Adapte los parámetros a sus necesidades de precisión y diversidad:

  • Hechos/código: temp=0–0.2, top_p=0.95: la precisión es prioritaria
  • Resumen: temp=0.3–0.5: equilibrio
  • Chat: temp=0.7–0.9, top_p=0.9: variación natural
  • Creatividad: temp=0.9–1.2, top_p=0.95: diversidad
  • Lluvia de ideas: temp=1.3, top_p=0.95: máxima exploración

Realice pruebas de sensibilidad de parámetros. Mantenga los valores predeterminados cuando no se observe ningún problema de calidad. Añada frequency_penalty para resolver problemas de repetición. Aquí concluye el curso 19. A continuación: pruebas de prompts y regresión.

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 «Elección de parámetros para su caso de uso» es gratis?

Sí — el texto completo de «Elección de parámetros para su caso de uso» 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 «Elección de parámetros para su caso de uso»?

Configuraciones recomendadas para preguntas y respuestas factuales, escritura creativa, código y chat. 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 «Elección de parámetros para su caso de uso»?

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. ¿Qué es la temperatura en los LLM?
  2. Muestreo de núcleo Top-p
  3. Muestreo Top-k
  4. Elección de parámetros para su caso de uso
← Volver a AI Prompt Engineering