Codex para la generación de código, explicado

Codex cambió la forma en que los desarrolladores escriben software al convertir el lenguaje natural en código que funciona. Este artículo explica cómo funciona, qué puede hacer, dónde se queda corto y cómo los modelos de código actuales, más capaces, han retomado el trabajo donde él lo dejó.

Codex para la generación de código, explicado
Cristian Da Conceicao
Fundador de Picasso IA

Codex, de OpenAI, llegó en 2021 y cambió de inmediato lo que los desarrolladores creían posible. Antes, el autocompletado servía para terminar el nombre de una variable. Después, podías escribir una frase en inglés sencillo y ver cómo aparecía una función que funcionaba. Ese cambio, que pasa de la ayuda sintáctica a la traducción de intenciones, es lo que desgrana este artículo.

Desarrollador programando con autocompletado de IA en su escritorio

Qué es Codex en realidad

Codex es un modelo de lenguaje grande entrenado tanto con texto en lenguaje natural como con un enorme corpus de código fuente extraído de repositorios públicos, sobre todo de GitHub. En esencia, es un descendiente de GPT-3, con ajuste fino específico para predecir tokens de código en lugar de prosa.

Los datos de entrenamiento le dieron algo notable: un conocimiento estadístico de cómo escriben software las personas. No solo reglas de sintaxis, sino también modismos habituales, convenciones de bibliotecas, cómo suelen nombrarse las funciones y cómo se relacionan los comentarios con el código que hay debajo. Aprendió a programar no a partir de especificaciones formales, sino de millones de ejemplos de programadores haciendo su trabajo.

El modelo detrás de la sugerencia

La arquitectura es un transformer, la misma familia de redes neuronales que está detrás de todos los grandes modelos de lenguaje actuales. Los transformers usan un mecanismo llamado autoatención para ponderar la relevancia de cada token del contexto de entrada frente a todos los demás. En código, esto es muy potente: una variable definida 200 líneas antes sigue siendo "visible" para el modelo cuando predice lo que viene después.

Codex se lanzó en dos configuraciones principales: una variante cushman más pequeña (de unos 12.000 millones de parámetros), optimizada para la velocidad, y una variante davinci más grande, centrada en la precisión. La variante davinci impulsó el GitHub Copilot original y fue la configuración que de verdad sorprendió a la gente cuando se lanzó.

En qué se diferencia de los LLM generales

Los LLM de uso general están entrenados para manejarlo todo: ensayos, preguntas, resúmenes, conversaciones. Codex sacrificó amplitud a cambio de profundidad. Su ajuste fino con código le permite producir de forma fiable resultados sintácticamente válidos en decenas de lenguajes de programación, manejar el contexto específico del código mejor que los modelos centrados en la prosa y entender conceptos abstractos de programación, como la recursión, la ejecución asíncrona y los contratos de API, a nivel práctico.

💡 Un LLM general describirá un algoritmo de ordenación. Codex lo escribirá, con los casos límite resueltos.

Oficina tecnológica de planta abierta con desarrolladores en mesas de pie durante la hora dorada

Cómo funciona la generación de código

A nivel mecánico, la generación de código es predicción del siguiente token. Le das al modelo un prompt, que puede ser un comentario, la firma de una función o un archivo existente, y el modelo calcula una distribución de probabilidad sobre todos los posibles tokens siguientes y luego muestrea a partir de esa distribución.

Lo que hace esto tan potente para el código es que los programas válidos ocupan solo una fracción minúscula de todas las secuencias de tokens posibles. Entrenar con código real enseña al modelo la forma de ese espacio válido, así que sus predicciones caen dentro de él la mayor parte del tiempo.

Tokens, contexto y predicción

Los modelos de código operan dentro de una ventana de contexto, es decir, un número máximo de tokens que pueden procesar a la vez. En Codex, esto era de 4.096 u 8.192 tokens según la variante. Eso limita cuánto código circundante puede "ver" el modelo al hacer una predicción.

Los modelos de código actuales han ampliado esto de forma espectacular. GPT 4.1 maneja contextos de hasta 1 millón de tokens, lo que significa que bases de código enteras pueden caber en un solo prompt. Granite 8B Code Instruct 128K, de IBM, ofrece 128.000 tokens optimizados específicamente para tareas de código, una mejora enorme frente a los límites originales de Codex.

Del lenguaje natural al código ejecutable

La "magia" aparente de Codex es que se entrenó con repositorios de código que contenían, uno al lado del otro, tanto comentarios como implementaciones. Aprendió que un comentario como # parse a JSON file and return a dict suele preceder a un tipo concreto de función en Python. Si le das ese comentario, se activa la asociación y predice la implementación correspondiente.

Esto no es razonamiento en ningún sentido filosófico. Es un reconocimiento de patrones extraordinariamente potente, que opera a una escala que produce resultados indistinguibles de la comprensión.

💡 Conviene saberlo: Codex no ejecuta el código ni lo comprueba contra un entorno de ejecución. Cada sugerencia es una predicción estadística. Por eso el código generado con IA sigue necesitando revisión humana.

Rostro de un desarrollador iluminado por el resplandor de la pantalla en una habitación oscura

Qué puede hacer Codex (y qué no)

Conocer el perfil real de capacidades evita que esperes demasiado o demasiado poco de cualquier modelo de IA para código.

Donde mejor funciona

  • Generación de código repetitivo: operaciones CRUD, manejadores de E/S de archivos, andamiaje de clientes de API
  • Tareas de una sola función: cualquier cosa que quepa en unas pocas decenas de líneas con entradas y salidas claras
  • Generación de pruebas unitarias: dada una función, escribir pruebas para su comportamiento esperado
  • Traducción entre lenguajes: convertir Python a JavaScript, o consultas SQL a consultas ORM
  • Documentación: generar docstrings a partir de las firmas de las funciones
  • Expresiones regulares: lo que la mayoría de los desarrolladores busca una y otra vez

Los límites con los que chocarás rápido

  • Razonamiento entre varios archivos: Codex tiene dificultades cuando la respuesta correcta depende de un contexto repartido entre muchos archivos. No puede explorar tu proyecto, solo ve lo que le das.
  • Corrección de la lógica de negocio: puede escribir código que parece correcto pero que viola invariantes específicos del dominio que no tiene forma de conocer.
  • Planificación a largo plazo: diseñar una arquitectura de sistema completa va más allá de la predicción del siguiente token.
  • Conciencia de seguridad: Codex puede introducir inyección SQL, XSS o patrones de autenticación rotos si el código circundante ya tiene esos antipatrones. También aprendió de ellos.

Ingeniera de software revisando código en pantalla dividida desde un escritorio de pie

Codex frente a los LLM de código actuales

OpenAI retiró Codex en marzo de 2023. El panorama de la generación de código ha cambiado mucho desde entonces, y todas las mejoras relevantes se deben a dos ejes: ventanas de contexto más grandes y razonamiento integrado.

ModeloVentana de contextoEspecializaciónDisponible
Codex (davinci)8K tokensCentrado en códigoRetirado
GPT 4.11M tokensGeneral + códigoPicassoIA
Granite 8B Code 128K128K tokensSolo códigoPicassoIA
Granite 20B Code 8K8K tokensSolo códigoPicassoIA
DeepSeek R1128K tokensCódigo + razonamientoPicassoIA
Claude 4 Sonnet200K tokensCódigo + escrituraPicassoIA
Kimi K2 Instruct128K tokensProgramación agénticaPicassoIA

Por qué los modelos nuevos lo superan

Codex se optimizó para una sola tarea: predecir qué código viene a continuación. Los modelos más nuevos combinan la generación de código con razonamiento en cadena de pensamiento, resolviendo un problema paso a paso antes de producir el código. Esto cierra la brecha en tareas de programación de varios pasos, donde el mero reconocimiento de patrones no basta.

DeepSeek R1 destaca en este punto: muestra las trazas de razonamiento, así que puedes seguir exactamente por qué estructuró el código de una determinada manera. Claude 4 Sonnet explica también su código en lenguaje natural sin que se lo pidas, lo que hace que revisar el resultado generado por IA sea bastante más rápido.

Pantalla de un equipo portátil con un editor de código y un panel de sugerencias de autocompletado con IA

Cómo usar modelos de código con IA en PicassoIA

Los modelos que superaron a Codex están disponibles en la colección de modelos de lenguaje grandes de PicassoIA. Sin claves de API que gestionar, sin configuración de entorno local. Así se ponen a trabajar en tareas reales de generación de código.

Paso a paso con Granite 8B Code Instruct

Granite 8B Code Instruct 128K es el modelo de código dedicado de IBM, entrenado específicamente en tareas de programación como la generación, la depuración, la explicación y la refactorización.

  1. Abre Granite 8B Code Instruct 128K en PicassoIA
  2. En el campo del prompt, pega la firma de tu función o describe lo que necesitas en lenguaje sencillo
  3. Incluye el contexto relevante: el lenguaje, los frameworks que usas y lo que debe devolver la función
  4. Pulsa generar. En funciones complejas, añade un mensaje de seguimiento pidiéndole que escriba pruebas unitarias para lo que acaba de producir
  5. Revisa el resultado antes de usarlo. Granite es preciso, pero la lógica de negocio sigue siendo tuya

💡 Consejo: para tareas de refactorización, pega primero la función existente y luego añade: "Reescríbela para gestionar [caso límite] manteniendo la misma interfaz".

Usar GPT 4.1 para revisar código con mucho contexto

GPT 4.1 brilla cuando la tarea abarca varios archivos. Su ventana de 1 millón de tokens te permite pegar módulos enteros o varios archivos relacionados y pedirle que razone sobre todos a la vez. Esta es la tarea en la que Codex se quedaba claramente corto, y donde GPT 4.1 ofrece una experiencia realmente distinta.

Úsalo para:

  • Refactorización entre archivos: pega juntos tus modelos de datos y tus manejadores de API y pide una refactorización unificada
  • Retroalimentación sobre la arquitectura: describe tu sistema y pregunta qué patrones aplican
  • Revisión de seguridad: pega un diff y pide vulnerabilidades y problemas de lógica

Escritorio de un despacho en casa, desordenado, con dos monitores y café por la tarde

Flujo de trabajo real: desarrollo asistido por IA

Los desarrolladores que más partido sacan a la generación de código con IA la tratan como un primer borrador rápido, no como un producto terminado. Así es como se ve en la práctica.

Escribir pruebas con prompts de IA

La generación de pruebas es donde los LLM de código aportan más valor práctico en el día a día. La mayoría de los desarrolladores escribe las pruebas después de implementar la función, y es tedioso. Ya sabes qué hace la función, solo tienes que enumerar los casos.

Un patrón de prompt productivo:

Given this function:
[paste function]

Write pytest unit tests covering:
- The happy path
- Empty input
- Edge case: [specific case you are worried about]
- Error conditions

Kimi K2 Instruct maneja muy bien este patrón. Se entrenó pensando en flujos de programación agénticos, lo que significa que produce conjuntos de pruebas coherentes entre sí, en lugar de funciones de prueba aisladas que no comparten accesorios ni configuración.

Refactorizar código heredado

La refactorización es un reto distinto a la generación. El modelo necesita entender el código existente antes de mejorarlo, y por eso el tamaño de la ventana de contexto es el factor decisivo.

Pega el módulo heredado, describe el problema y pide una versión refactorizada con la misma interfaz externa. Claude 4.5 Sonnet y GPT 4.1 se desenvuelven bien en esto porque pueden tener presente la función original completa mientras generan el reemplazo, en lugar de adivinar lo que había antes.

Desarrollador revisando código en un monitor panorámico, vista por encima del hombro

La forma correcta de escribir prompts para código

Los prompts malos producen código malo. Los buenos producen código que puedes desplegar. La diferencia depende casi por completo de cuánto contexto le das al modelo desde el principio.

El contexto lo es todo

Un modelo que genera código sin contexto está adivinando tus restricciones. Indicarle tu lenguaje y tu framework reduce a la mitad la probabilidad de que elija un enfoque equivocado. Indicarle la interfaz existente elimina de antemano toda una clase de errores de integración.

Prompt con contexto mínimo:

Write a function to parse CSV files

Prompt con contexto eficaz:

Python 3.11, using the csv module (not pandas).
Write a function parse_csv(filepath: str) -> list[dict]
that reads a CSV with a header row and returns a list of dicts.
Handle FileNotFoundError and return an empty list if the file is empty.

El segundo prompt produce código utilizable. El primero produce algo plausible que puede encajar o no en tu base de código.

3 patrones de prompt que funcionan

  1. Firma primero: da la firma de la función y el docstring, y pide al modelo que complete el cuerpo. Esto limita el resultado a tu interfaz existente.
  2. Guiado por pruebas: da primero las pruebas y pide la implementación que las supera. Obliga a un comportamiento correcto desde el principio.
  3. Explicar y luego escribir: pide al modelo que exponga su enfoque en una frase antes de escribir. Así salen a la luz los malentendidos antes de que tengas que leer 50 líneas de resultado equivocado.

💡 Si la primera respuesta es errónea, no vuelvas a ejecutar el mismo prompt sin más. Añade una frase que explique qué estaba mal. Los modelos responden mucho mejor a los mensajes de corrección que a los prompts idénticos repetidos.

Vista aérea cenital de un espacio de trabajo de desarrollo con teclado y documentos impresos de revisión de código

Cómo cambió todo el tamaño de la ventana de contexto

Una de las brechas prácticas más importantes entre Codex y los modelos actuales no está en la capacidad por token. Está en cuántos tokens pueden atender a la vez.

Codex, con 8K tokens, podía procesar unas 400 a 600 líneas de código. Eso funciona para funciones individuales, pero se rompe de inmediato en cualquier tarea que involucre varios archivos con tipos compartidos, manejadores de API que referencian modelos de base de datos o pruebas de integración que abarcan varios módulos.

Granite 20B Code Instruct 8K iguala la ventana de contexto de Codex, pero tiene bastantes más parámetros y un corpus de entrenamiento más reciente, lo que hace que su resultado por token sea bastante más preciso. Granite 8B Code Instruct 128K sacrifica el número bruto de parámetros a cambio de alcance: 128K tokens en un modelo creado desde cero para tareas de código.

Para operaciones sobre bases de código completas, GPT 5 representa la vanguardia actual, al combinar un contexto prácticamente ilimitado con una amplia capacidad de ingeniería de software en todos los lenguajes y frameworks principales.

Manos de un desarrollador sosteniendo un teléfono que muestra un fragmento de código en una mesa de cafetería

Qué aporta el razonamiento a la generación de código

El paradigma de generación que estableció Codex era: dar contexto, predecir tokens. El paradigma de razonamiento que vino después añade un paso antes de la salida: pensar primero el problema.

Modelos como DeepSeek R1 y GPT 5 recorren una cadena de pensamientos intermedios antes de producir código. Esto marca una diferencia real en:

  • Algoritmos con una corrección poco evidente: ordenación, recorrido de grafos, programación dinámica
  • Código concurrente: las condiciones de carrera exigen razonar sobre el orden de ejecución, no solo reconocer patrones de ejemplos anteriores
  • Rutas sensibles a la seguridad: los flujos de autenticación, la sanitización de entradas y el uso de criptografía se benefician de un análisis paso a paso deliberado

La traza de razonamiento también es valiosa para revisar el código. Si el modelo explica que eligió un patrón concreto para evitar una clase específica de error, puedes verificar ese razonamiento directamente, en lugar de auditar una salida de caja negra.

💡 Nota práctica: los modelos de razonamiento son más lentos y cuestan más por token. Úsalos para el código donde la corrección es crítica. Para el código repetitivo y las pruebas, un modelo rápido como Claude 4.5 Haiku es mucho más eficiente.

Dos desarrolladores programando en pareja en escritorios contiguos en un espacio de trabajo luminoso y colaborativo

Empieza a escribir código con IA hoy

Codex para la generación de código fue una prueba de concepto que toda la industria validó y que luego dejó atrás a toda velocidad. Los modelos disponibles ahora hacen todo lo que hacía Codex, con ventanas de contexto más grandes, mejor razonamiento y resultados más precisos en una gama más amplia de lenguajes y frameworks.

Si no has usado en serio un modelo de IA para código, el lugar más fácil para empezar es una tarea que haces cada semana pero que te resulta tediosa. La generación de pruebas, la escritura de docstrings y el andamiaje de código repetitivo tienen todos un ciclo de retroalimentación corto: ves de inmediato si el resultado es útil. Empieza por ahí, adquiere intuición sobre lo que funciona y avanza hacia tareas más difíciles a medida que ajustes tu forma de escribir prompts.

Cada modelo de la tabla comparativa de arriba está disponible ahora mismo en PicassoIA. Sin configuración. Sin claves de API. Elige uno, pega una función y mira qué hace en menos de un minuto. Prueba GPT 5 para el trabajo complejo entre archivos, DeepSeek R1 cuando necesites ver el razonamiento, o Granite 8B Code Instruct 128K para una experiencia centrada solo en código, rápida y ágil. La distancia entre "he oído hablar de las herramientas de programación con IA" y "las uso todos los días" es una sola tarde de experimentación.

Compartir este artículo

Elige tu idioma