Prompt de ChatGPT para programar
Un prompt de programación preciso que consigue código limpio y funcional con el contexto y las restricciones que la IA necesita.
Prompt listo para copiar
Eres un ingeniero sénior de [lenguaje]. Escribe código para [tarea]. Contexto: [framework/versión, entorno, restricciones]. Entradas: [describe]. Salida esperada: [describe]. Requisitos: - Código limpio, legible e idiomático en [lenguaje]. - Maneja los casos límite y los errores con elegancia. - Añade comentarios breves que expliquen las partes no obvias. - Incluye un breve ejemplo de uso. - Indica cualquier suposición que hayas hecho.
¿Quieres una versión a tu medida?
Responde unas preguntas rápidas y el Generador de prompts de código creará un prompt personalizado con tus datos exactos.
💻 Abrir el Generador de prompts de códigoPor qué la mayoría de los prompts de programación con IA te hacen perder el tiempo
Pídele a ChatGPT que "escriba una función para subir un archivo" y obtendrás código que compila, se ejecuta en algún entorno imaginario y no encaja con el tuyo. Puede que asuma Python 3.12 cuando estás en 3.8, elija una biblioteca que no tienes instalada o maneje un formato de archivo que nunca mencionaste. El modelo no adivina al azar: rellena los huecos que dejaste abiertos con los valores por defecto más comunes estadísticamente. Cada ambigüedad en tu petición se convierte en una decisión que el modelo toma por ti, y cuantas más decisiones toma, más retrabajo heredas. El prompt de arriba funciona cerrando esos huecos antes de que el modelo escriba una sola línea, lo que convierte un borrador tosco en código que a menudo puedes pegar directamente.
El contexto es lo que hace que el código encaje con tu stack
La línea de contexto —framework, versión, entorno, restricciones— es el campo que más tiempo ahorra. "Node 18 con Express y TypeScript, sin bibliotecas HTTP externas, ejecutándose en AWS Lambda" le dice al modelo exactamente qué apuntar, y evitará sugerir un paquete que no puedes usar o una sintaxis que tu runtime rechaza. La versión importa más de lo que la gente espera: los patrones asíncronos, las funciones de la biblioteca estándar y la sintaxis de tipos difieren entre lanzamientos, y el código escrito para la versión equivocada falla de formas confusas. Indicar las restricciones de entrada ("debe ser sin dependencias", "no puede usar recursión", "debe ejecutarse en menos de 100ms sobre una lista de 10.000 elementos") también guía la elección del algoritmo, no solo la sintaxis. Sin esta línea, el modelo optimiza para parecer correcto de forma aislada en lugar de para funcionar en tu proyecto.
Entradas, salidas y casos límite
Describir las entradas exactas y la salida esperada elimina otra clase entera de desajustes. "Recibe una lista de diccionarios de pedidos con las claves id, total y estado; devuelve la suma de total de los pedidos cuyo estado es \'pagado\'" le da al modelo un contrato preciso que satisfacer, y dará forma a la firma de la función y al tipo de retorno en consecuencia. El requisito de manejar los casos límite y los errores con elegancia es lo que separa los fragmentos desechables del código listo para producción. Sin indicárselo, ChatGPT escribe para el camino feliz e ignora las entradas vacías, los valores nulos, los datos mal formados y los fallos de red. Nombrar este requisito lo obliga a añadir las protecciones que de otro modo descubrirías en producción. Cuando puedas, describe los casos límite concretos que importan para tus datos —una lista vacía, una clave faltante, un timeout— para que el modelo maneje los que realmente enfrentas.
Las suposiciones y la verificación cierran el ciclo
El último requisito, "indica cualquier suposición que hayas hecho", es el más infrautilizado y el más valioso. El modelo siempre hace suposiciones; la única pregunta es si puedes verlas. Cuando las escribe —"asumí que las marcas de tiempo están en UTC", "asumí que la entrada ya está validada"— puedes detectar una equivocada en segundos en lugar de depurarla durante una hora. El ejemplo de uso cumple el mismo propósito de verificación: te muestra cómo se supone que debe llamarse el código y te permite comprobar la interfaz antes de integrarla. Incluso con un buen prompt, trata el resultado como el primer borrador de un ingeniero sénior, no como un commit terminado. Léelo, ejecútalo contra un caso límite real y, para cualquier cosa importante, continúa con "escribe pruebas unitarias que cubran los casos de entrada vacía y de error" para confiar en las pruebas en lugar de confiar en el modelo.
Por qué funciona este prompt
Los prompts de programación vagos producen código que no encaja con tu stack. Este prompt aporta lenguaje, framework, entradas y salidas de entrada, para que la IA escriba código idiomático que de verdad se ejecute en tu entorno, y saca a la luz sus suposiciones para que detectes los desajustes pronto.
Cómo personalizarlo
- Indica siempre la versión del lenguaje y el framework para evitar código incompatible.
- Describe las entradas y las salidas esperadas con precisión.
- Pide pruebas si la lógica es importante.
Ejemplo de resultado
Solo un ejemploPrompt completado: lenguaje = Python 3.9, tarea = "analizar un CSV de transacciones y devolver el total de una categoría dada", restricciones = "solo biblioteca estándar".
import csv
from decimal import Decimal, InvalidOperation
def total_for_category(csv_path, category):
"""Devuelve la suma de 'amount' de las filas que coinciden con 'category'.
Asume que el CSV tiene las cabeceras 'category' y 'amount'.
Omite las filas con un amount faltante o no numérico.
"""
total = Decimal("0")
with open(csv_path, newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
if reader.fieldnames is None or "amount" not in reader.fieldnames:
raise ValueError("El CSV debe tener una columna 'amount'")
for row in reader:
if row.get("category") != category:
continue
try:
total += Decimal(row["amount"])
except (InvalidOperation, TypeError):
# Omite los amounts mal formados en lugar de romper toda la ejecución.
continue
return total
# Ejemplo de uso:
# print(total_for_category("transactions.csv", "groceries"))
Suposiciones: los importes son cadenas decimales; el archivo es UTF-8; las filas mal formadas deben omitirse, no hacer fallar todo el análisis. Se usa Decimal en lugar de float para evitar errores de redondeo con el dinero.
Variantes del prompt para probar
Explicar el enfoque antes de programar
Eres un ingeniero sénior de [lenguaje]. Necesito [tarea], con estas restricciones: [framework/versión, entorno]. Antes de escribir código, explica brevemente el enfoque que piensas seguir, las principales concesiones y cualquier decisión donde exista más de una opción razonable. Espera a que confirme el enfoque y luego escribe código limpio e idiomático en [lenguaje] con manejo de errores y un ejemplo de uso.
Refactorizar código existente
Eres un ingeniero sénior de [lenguaje]. Refactoriza el código de abajo para que sea más limpio, legible e idiomático para [framework/versión], sin cambiar su comportamiento. Señala cualquier bug o caso límite que maneje mal actualmente y añade manejo de errores donde falte. Mantén la interfaz pública igual. Explica brevemente cada cambio significativo. Código: [pega el código].
Código más pruebas a la vez
Eres un ingeniero sénior de [lenguaje]. Escribe código para [tarea] en [framework/versión], entradas [describe], salida esperada [describe]. Luego escribe un conjunto de pruebas unitarias con [framework de pruebas] que cubra el camino feliz, las entradas vacías y nulas, los valores límite y al menos una condición de error. Indica cualquier suposición. Mantén tanto el código como las pruebas idiomáticos y legibles.
Errores comunes que debes evitar
- Omitir la versión del lenguaje. La sintaxis asíncrona, las funciones de la biblioteca estándar y las anotaciones de tipos difieren entre lanzamientos, así que el código para la versión equivocada falla de forma extraña. Indícala siempre:
Python 3.9,Node 18,Java 17. - No describir las entradas y salidas con precisión. "Procesa los datos" no le da al modelo ningún contrato que satisfacer. Especifica la forma exacta de la entrada y lo que la función debe devolver.
- Olvidar nombrar las restricciones. Si no puedes añadir dependencias o debes alcanzar un objetivo de rendimiento, dilo de entrada; de lo contrario, el modelo elige una biblioteca que no tienes o un algoritmo demasiado lento.
- Saltarse el manejo de errores en la petición. Sin indicárselo, ChatGPT escribe solo el camino feliz. Pídele explícitamente que maneje entradas vacías, nulos y fallos, nombrando idealmente los que tus datos producen de verdad.
- Confiar en el código sin ejecutarlo. Incluso un borrador bien construido puede arrastrar una suposición equivocada. Ejecútalo contra un caso límite real y pide pruebas unitarias antes de depender de nada importante: trata el resultado como un primer borrador, no como un commit.
Preguntas frecuentes
¿Por qué ChatGPT me da código que no funciona en mi proyecto?
Casi siempre porque el prompt dejó el entorno sin especificar. El modelo recurre a la versión del lenguaje y las bibliotecas más comunes, que pueden no coincidir con las tuyas. Rellenar el campo de contexto —framework, versión y restricciones— resuelve la mayoría de estos desajustes antes de que se escriba el código.
¿Debería pedir pruebas junto con el código?
Para cualquier cosa de la que vayas a depender de verdad, sí. Las pruebas son la forma más fiable de verificar el código escrito por IA, ya que atrapan las suposiciones equivocadas y los bugs de casos límite que el modelo pasó por alto. Añade "incluye pruebas unitarias para la entrada vacía y los casos de error" al prompt, o usa la variación de código más pruebas de arriba.
¿Cómo evito que la IA haga suposiciones silenciosas?
Mantén el requisito "indica cualquier suposición que hayas hecho" en cada prompt de programación. El modelo siempre asume algo; esto hace visibles esas suposiciones para que puedas detectar una equivocada en segundos. Cuando una suposición listada sea errónea, simplemente corrígela y pide una revisión.
¿Es seguro pegar este código directamente en producción?
Trátalo como el primer borrador de un ingeniero sénior, no como un commit terminado. Léelo, ejecútalo contra entradas reales y de casos límite, revisa las suposiciones indicadas y añade pruebas para cualquier cosa importante. Un buen prompt te acerca mucho, pero la revisión humana sigue siendo la última línea de defensa.
Consejo: sustituye las partes entre [corchetes] por tus propios datos antes de enviar. Cuanto más concreto seas — público, tono, objetivo, restricciones — mejor será el resultado de la IA.