Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering para programación, Unidad 2 — Cómo razona un LLM sobre código, 2.2 — Por qué el código puede fallar ·

Suposiciones implícitas

Suposiciones implícitas: Por qué el código puede fallar

Introducción

Las suposiciones implícitas son uno de los mayores desafíos cuando se trabaja con lenguajes de programación. Son asumiciones que un desarrollador hace sin expresarlas explícitamente, y estas pueden llevar a comportamientos inesperados o errores en el código. Estas asunciones pueden ser inherentes al problema que intentamos resolver, a la forma en que escribimos nuestro código, o incluso a las expectativas del lenguaje de programación mismo.

Cuando trabajamos con inteligencia artificial (IA) para programar, estas suposiciones implícitas pueden convertirse en una verdadera trampa. La IA puede basarse en estas asunciones implícitas y generar código que funciona correctamente bajo ciertas condiciones pero falla cuando esas condiciones cambian. Por lo tanto, es crucial tener un entendimiento profundo de las suposiciones implícitas que subyacen en nuestro código.

Explicación principal

La IA puede hacer suposiciones implícitas basadas en su entrenamiento y contexto proporcionado. Estas suposiciones pueden ser sobre:

  1. Tipo de datos: La IA puede asumir ciertos tipos de datos sin necesariamente expresarlos explícitamente.
  2. Valores específicos: Puede asumir valores específicos para variables o parámetros que no se proporcionan.
  3. Condiciones previas: La IA puede hacer suposiciones sobre condiciones previas o contextuales del código.

Ejemplo

Vamos a considerar un pequeño ejemplo en Python:

def calcular_costo(cantidad, precio_unitario):
    return cantidad * precio_unitario

print(calcular_costo(10))

En este caso, la función calcular_costo asume que los parámetros cantidad y precio_unitario serán proporcionados por el usuario. Si no se proporcionan estos valores, el programa fallará con un error.

Errores típicos / trampas

1. Suposición de tipos de datos incorrectos

La IA puede asumir que ciertos parámetros son del tipo int o float, pero si en realidad son strings, los resultados serán inesperados. Por ejemplo:

def calcular_costo(cantidad, precio_unitario):
    return cantidad * precio_unitario

print(calcular_costo("10", 2.5))

Este código generará un error de tipo.

2. Suposición de valores específicos para variables o parámetros

La IA puede asumir ciertos valores por defecto para las variables o parámetros que no se proporcionan explícitamente:

def calcular_costo(cantidad, precio_unitario):
    if cantidad is None:
        cantidad = 10
    return cantidad * precio_unitario

print(calcular_costo(None, 2.5))

3. Suposición de condiciones previas o contextuales

La IA puede hacer suposiciones sobre las condiciones previas del código:

def calcular_descuento(cantidad, descuento):
    return cantidad * (1 - descuento)

print(calcular_descuento(100))

En este caso, la función asume que el descuento es un valor entre 0 y 1. Si se proporciona un descuento fuera de ese rango, como una cadena o un número mayor a 1, el resultado será incorrecto.

Checklist accionable

Para mitigar los errores causados por suposiciones implícitas, aquí hay un checklist que puedes seguir:

  1. Validación explícita: Asegúrate de validar explícitamente los tipos y valores de las variables antes de usarlas.
  2. Documentación clara: Documenta en tu código cuáles son las asunciones implícitas para que otros desarrolladores (o tú mismo más tarde) entiendan el contexto.
  3. Pruebas exhaustivas: Realiza pruebas con valores extremos y tipos incorrectos para garantizar la robustez del código.
  4. Comentarios en el código: Agrega comentarios a tu código para explicar las asunciones implícitas que estás haciendo.
  5. Uso de linters: Utiliza herramientas como flake8 o pylint para encontrar posibles errores relacionados con suposiciones implícitas.

Cierre

Siguientes pasos

  1. Refactorizar el código existente: Analiza tu código actual y realiza refactorizaciones donde sea necesario para eliminar asunciones implícitas.
  2. Implementar validaciones: Agrega validaciones explícitas a tus funciones para asegurarte de que los tipos y valores correctos se proporcionan.
  3. Revisión del código: Realiza revisiones periódicas del código para identificar posibles suposiciones implícitas.
  4. Entrenamiento adicional en IA: Aprende más sobre cómo la IA puede asumir cosas basándose en su entrenamiento y contexto.

Seguir estos pasos te ayudará a escribir código más robusto y menos propenso a errores debido a suposiciones implícitas.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).