Saltar al contenido
Programación

Cómo crear prompts efectivos para generación de código.

· Foto: Pexels
Compartir X Facebook

Guia practica de programacion asistida con IA.

Cómo crear prompts efectivos para generación de código.
Foto: Pexels

Cuando le pides a una IA que genere código, no estás invocando a un genio de la lámpara. Estás teniendo una conversación técnica con un asistente que necesita entender exactamente qué necesitas. El error más común es lanzar frases como "Hazme un CRUD" o "Crea una calculadora". Eso es como pedirle a un chef "Hazme comida" y esperar un plato específico. Los prompts efectivos son aquellos que eliminan ambigüedades y proporcionan el contexto necesario para que el modelo genere código útil y funcional.

La diferencia entre un prompt vago y uno preciso puede ser abismal: el primero te dará código genérico que probablemente no se ajuste a tu stack, mientras que el segundo te dará una solución que puedes integrar directamente en tu proyecto. Vamos a desglosar cómo construir ese prompt perfecto.

Estructura básica de un prompt efectivo

Todo prompt de código debería seguir una estructura de tres partes: rol + tarea + restricciones. El rol define cómo quieres que se comporte la IA (como experto en Python, como desarrollador backend, etc.). La tarea es la descripción clara de lo que necesitas. Las restricciones son las reglas del juego: lenguaje, framework, estilo de código, límites de rendimiento, etc.

Por ejemplo, no digas "Hazme un script para ordenar datos". En su lugar, estructura así: "Actúa como un experto en Python. Necesito una función que ordene una lista de diccionarios por una clave específica. La función debe manejar valores nulos y ser eficiente para listas de hasta 10,000 elementos. Usa solo la biblioteca estándar." Esto elimina suposiciones y te da control sobre el resultado.

El poder de los ejemplos concretos

Incluir un ejemplo de entrada y salida esperada es como darle un mapa a la IA. Si quieres un script que transforme fechas, muestra: "Entrada: '2024-01-15', Salida esperada: '15 de enero de 2024'". Esto no solo aclara el formato, sino que también guía el estilo de salida. Los modelos de lenguaje entienden patrones, y un buen ejemplo les da una referencia directa.

Además, si tienes código existente que quieres modificar o extender, inclúyelo en el prompt. Di algo como: "Aquí tengo este código que hace X, pero necesito que también haga Y. Mantén la misma estructura y estilo." Esto evita que la IA reescriba todo desde cero y te ahorra tiempo de integración.

PROMPTActúa como un desarrollador senior de Python. Necesito una función que procese un archivo CSV de ventas y genere un reporte resumido. Requisitos: - El archivo tiene columnas: 'fecha', 'producto', 'cantidad', 'precio_unitario'. - La función debe agrupar por producto y calcular: total de unidades vendidas, ingreso total (cantidad * precio), y precio promedio. - El reporte debe ser un diccionario donde las claves son los nombres de producto y los valores son diccionarios con las métricas. - Maneja errores: si falta una columna, lanza una excepción clara. - Usa solo pandas y la biblioteca estándar (csv, pathlib). - El código debe ser eficiente para archivos de hasta 500MB. Ejemplo de entrada (archivo 'ventas.csv'): fecha,producto,cantidad,precio_unitario 2024-01-01,Laptop,2,1500 2024-01-01,Raton,5,25 Salida esperada: { "Laptop": {"unidades": 2, "ingreso_total": 3000, "precio_promedio": 1500.0}, "Raton": {"unidades": 5, "ingreso_total": 125, "precio_promedio": 25.0} } Genera solo el código de la función, con docstring y comentarios explicativos.

Evita los prompts suicidas

Hay ciertos patrones que garantizan resultados mediocres. El primero es la ambigüedad temporal: decir "lo más rápido posible" o "que sea eficiente" sin métricas. En su lugar, especifica "que procese 1GB de datos en menos de 30 segundos" o "con complejidad O(n log n)". El segundo es la falta de límites: si no dices "solo usa bibliotecas estándar", la IA podría importar dependencias pesadas que no tienes instaladas.

Otro error común es pedir código "bonito" sin definir qué significa. ¿Quieres PEP8? ¿Comentarios en español? ¿Type hints? Sé explícito. Y por último, no combines múltiples tareas no relacionadas en un solo prompt. Pide una función a la vez, o si necesitas un sistema completo, divídelo en prompts secuenciales.

Tip práctico: Antes de ejecutar el prompt, pregúntate: "Si yo fuera un desarrollador junior leyendo esto, ¿sabría exactamente qué hacer?" Si la respuesta es no, añade más detalles. Un buen prompt es como una especificación técnica: cuanto más clara, menos iteraciones necesitarás.

Iteración y refinamiento: el diálogo es clave

Rara vez el primer prompt da el código perfecto. La generación de código con IA es un proceso iterativo. Si el resultado no es exactamente lo que querías, no te frustres. En lugar de reescribir todo el prompt, usa la función de seguimiento: "El código funciona, pero necesito que la función también valide que los precios no sean negativos. Añade esa validación al inicio." O "El estilo no me gusta, usa type hints y nombres de variables en inglés."

También puedes pedir explicaciones: "Muéstrame por qué elegiste esa estructura de datos" o "¿Cómo manejarías un archivo con 10 millones de filas?". Esto no solo mejora el código actual, sino que te enseña mejores prácticas. Recuerda que el modelo no tiene memoria de largo plazo en una misma sesión, así que si cambias de tema, vuelve a dar contexto.

Casos de uso específicos: pruebas y debugging

Los prompts no solo sirven para generar código nuevo. Son increíbles para escribir tests unitarios. Por ejemplo: "Dada esta función que calcula el factorial, genera tests con pytest que cubran casos borde: número negativo, cero, número grande, y entrada no entera." O para debugging: "Este código lanza un IndexError en la línea 5. El contexto es que proceso una lista de usuarios. ¿Cuál es la causa probable y cómo lo arreglarías?"

Para debugging, incluye siempre el stack trace completo y una muestra de los datos. Di: "El error ocurre cuando el archivo está vacío. ¿Cómo modifico la función para que devuelva un DataFrame vacío en lugar de fallar?" Esto convierte a la IA en un par de programación que te ayuda a resolver problemas reales.

Mide y ajusta: la práctica hace al prompt

No hay un prompt universal que funcione para todo. Lo que sirve para generar una API en Flask no sirve para un script de análisis de datos. Lleva un registro mental (o escrito) de qué prompts te han dado mejores resultados. Por ejemplo, para código de producción, incluye siempre "sigue las mejores prácticas de seguridad" y "maneja excepciones". Para prototipos rápidos, puedes ser más laxo: "Hazlo funcionar primero, la optimización viene después."

Una técnica avanzada es el prompt de roles múltiples: "Eres un experto en seguridad y un desarrollador backend. Genera un endpoint que valide entradas y prevenga SQL injection." Esto fuerza al modelo a considerar múltiples perspectivas. Otra es el prompt de restricciones negativas: "No uses bucles for, solo comprensiones de listas" o "No importes bibliotecas externas".

Finalmente, prueba tus prompts con diferentes modelos. Lo que funciona en GPT-4 puede no funcionar en Claude o Gemini. Ajusta el nivel de detalle según el modelo: algunos necesitan más ejemplos, otros son mejores siguiendo instrucciones abstractas. La clave es experimentar y refinar constantemente.

Más sobre Programación

Ver todo →