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, 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.
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.
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.
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.
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.
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.
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.
En el campo del prompt, pega la firma de tu función o describe lo que necesitas en lenguaje sencillo
Incluye el contexto relevante: el lenguaje, los frameworks que usas y lo que debe devolver la función
Pulsa generar. En funciones complejas, añade un mensaje de seguimiento pidiéndole que escriba pruebas unitarias para lo que acaba de producir
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
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.
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
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.
Guiado por pruebas: da primero las pruebas y pide la implementación que las supera. Obliga a un comportamiento correcto desde el principio.
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.
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.
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.
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.