Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering para programación, Unidad 2 — Cómo razona un LLM sobre código, 2.1 — Código como texto estructurado ·

Patrones frecuentes

Patrones frecuentes: Cómo razona un LLM sobre código

Introducción

En la era de la inteligencia artificial (IA) asistida, es crucial entender cómo los modelos de lenguaje de aprendizaje por refuerzo (LLM en inglés) interpretan y generan código. Un patrón frecuente que observamos es que estos modelos tienden a basarse en estructuras comunes de codificación y a imitar las formas de expresión que han aprendido a través del entrenamiento. Comprender estas tendencias puede ayudarnos a generar código más preciso, evitar errores y mejorar nuestra eficiencia.

Explicación principal con ejemplos

Tokens y sintaxis

Los LLMs interpretan el código como una secuencia de tokens (palabras o símbolos individuales) que siguen ciertas reglas de sintaxis. Por ejemplo, un modelo puede prever qué tokens seguirán en una línea de código basándose en la estructura gramatical del lenguaje utilizado. Consideremos un ejemplo simple en Python:

def suma(a, b):
    return a + b

Un LLM podría generar el siguiente patrón para una función de suma:

  • Comienza con def seguido del nombre de la función.
  • Sigue con los parámetros entre paréntesis.
  • Termina con return y la operación.

Patrones frecuentes

LLMs tienden a seguir ciertos patrones que son comunes en el código. Estos pueden incluir:

  1. Comentarios: Los modelos suelen generar comentarios en un estilo similar al de los datos de entrenamiento, como:
   # Esta es una línea de comentario para explicar lo siguiente
  1. Estructuras condicionales: Las estructuras if-else son frequentemente generadas con la misma sintaxis y estilos comunes.
   if condición:
       acción1
   else:
       acción2
  1. Bucles: Los bucles como for y while suelen ser generados siguiendo las mismas estructuras aprendidas durante el entrenamiento.
   for i in range(n):
       # Código a ejecutar en cada iteración

Ejemplo de Generación

Imaginemos que queremos generar una función para calcular la media de una lista. Un modelo podría generar algo como:

def calcular_media(lista_numeros):
    suma = sum(lista_numeros)
    cantidad_elementos = len(lista_numeros)
    return suma / cantidad_elementos

Errores típicos / trampas

Aunque los LLMs suelen seguir patrones, también pueden cometer errores debido a la naturaleza de su entrenamiento. Algunas de las trampas más comunes son:

  1. Influencia del contexto: Los modelos tienden a basarse en el contexto proporcionado. Si no se le proporciona toda la información necesaria, puede generar código que no funciona correctamente.
   def calcular_media(lista):
       return sum(lista) / len(lista)
  1. Sobrecarga de métodos: Los modelos pueden generar funciones con demasiados parámetros sin importar si son necesarios o relevantes para la tarea.
   def crear_usuario(nombre, edad, altura, peso, nacionalidad):
       # Código del usuario
  1. Generación insegura: Algunos LLMs pueden generar código que tiene potenciales riesgos de seguridad, como la inyección SQL o el manejo incorrecto de datos.
   def ejecutar_query(query):
       resultado = db.execute(query)
       return resultado

Checklist accionable

Para mejorar la calidad del código generado por LLMs, siga estos pasos:

  1. Proporcionar contexto completo: Incluya todos los detalles necesarios para que el modelo genere el código correcto.
  2. Verificar parámetros y métodos: Asegúrese de que el número y tipo de parámetros coincidan con la tarea.
  3. Revisar seguridad: Analice si el código generado podría presentar riesgos de seguridad.
  4. Generar pruebas unitarias: Cree pruebas para validar que el código funciona como se espera.
  5. Documentar: Documente los prompts y decisiones tomadas durante el proceso.

Cierre: Siguientes pasos

Siguiendo estos consejos, puede mejorar significativamente la calidad del código generado por LLMs. Algunas sugerencias adicionales son:

  • Explorar más recursos: Aprenda sobre otros patrones comunes y cómo evitarlos.
  • Experimentar con diferentes modelos: Pruebe varios LLMs para ver si obtiene mejores resultados.
  • Participar en comunidades: Únase a foros y grupos donde otros programadores comparten sus experiencias y mejores prácticas.

Gracias por seguir aprendiendo sobre prompt engineering, ¡hasta la próxima!

Contacto

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