Saltar al contenido principal
Principiante IACódigoHerramientas

La IA Me Da Código Incompleto: Cómo Solucionar el 'Lazy Coding' de ChatGPT y Claude

¿ChatGPT o Claude te dicen 'aquí va el resto del código'? Por qué ocurre el lazy coding, cómo evitarlo con prompts específicos y qué modelo lo hace menos.

Fran Cobos 6 min de lectura 1126 palabras

Tabla de contenidos

Abres ChatGPT, le pides que refactorice tu componente de 200 líneas, y te devuelve esto:

export function Dashboard() {
  // ... existing imports ...

  const [data, setData] = useState(null);

  // Aquí va tu lógica de fetch existente

  return (
    <div>
      {/* ... resto del JSX ... */}
      <NewFeature data={data} />
    </div>
  );
}

60% del código es // .... No te ha dado nada útil. Has perdido 30 segundos esperando la respuesta y ahora tienes que juntar las piezas como un rompecabezas.

Este problema tiene nombre: Lazy Coding. Y todos los modelos de IA lo hacen — unos más que otros.

Por qué la IA hace lazy coding

1. Límite de tokens de salida

Cada modelo tiene un máximo de tokens que puede generar en una respuesta:

ModeloMax output tokens¿Suficiente para código largo?
GPT-4.132.768Sí, pero se “cansa” antes
GPT-4.1 mini16.384Justo para archivos medianos
Claude Sonnet 416.384Buen balance
Claude Opus 432.768El más generoso

Pero el problema no es solo el límite técnico — los modelos están entrenados para ser concisos. En el entrenamiento, las respuestas cortas y resumidas se premiaron más que las respuestas exhaustivas.

2. El modelo “cree” que ya sabes el resto

Cuando le pasas tu código existente y pides un cambio, el modelo interpreta que solo quieres ver la diferencia. Es lógico para una conversación humana, pero inútil cuando necesitas copiar-pegar el archivo completo.

3. Repeticiones penalizadas

Los LLMs penalizan la generación de texto repetitivo. Si tu archivo tiene 50 líneas de JSX similares, el modelo las resume con // ... resto del JSX porque generar cada una le “cuesta” probabilísticamente.

Cómo evitarlo: Prompts que funcionan

Prompt directo anti-lazy

Reescribe este archivo COMPLETO con los cambios aplicados. 
NO omitas código. NO uses "// ..." ni "// existing code". 
Incluye TODAS las líneas del archivo, incluidas las que no cambian.
Necesito poder copiar y pegar tu respuesta directamente.

Prompt para cambios parciales (cuando es un archivo enorme)

Muéstrame SOLO las funciones que cambian, pero cada función COMPLETA 
(desde la declaración hasta el cierre). No omitas líneas dentro 
de las funciones.

Prompt estilo diff (ahorra tokens y es preciso)

Dame los cambios en formato diff (unified diff). 
Solo las líneas que cambian con 3 líneas de contexto.

Respuesta del modelo:

@@ -15,7 +15,9 @@ export function Dashboard() {
   const [data, setData] = useState(null);
+  const [loading, setLoading] = useState(true);

   useEffect(() => {
-    fetchData().then(setData);
+    setLoading(true);
+    fetchData().then(setData).finally(() => setLoading(false));
   }, []);

Esto es mucho más útil que recibir medio archivo con // ....

Comparativa: ¿Qué herramienta hace menos lazy coding?

Probé el mismo prompt (“refactoriza este componente de 180 líneas para añadir cache”) en 5 herramientas:

HerramientaCódigo completoLazy codingNotas
ChatGPT (web)❌ 40%60% omitidoEl peor — resume todo
Claude (web)⚠️ 70%30% omitidoMejor, pero aún corta
GitHub Copilot Chat⚠️ 65%35% omitidoDepende del prompt
Cursor (Agent mode)✅ 95%5% omitidoEdita el archivo directamente
Aider + Claude✅ 98%2% omitidoEl mejor — edita con diffs

Los editores que trabajan directamente con archivos (Cursor, Aider, Copilot Edits) hacen mucho menos lazy coding porque no necesitan “mostrar” el código en chat — lo aplican directamente.

Técnica avanzada: System prompt para APIs

Si usas la API directamente (no la web), puedes añadir un system prompt persistente:

const response = await openai.chat.completions.create({
  model: 'gpt-4.1',
  messages: [
    {
      role: 'system',
      content: `Eres un asistente de código. Reglas estrictas:
1. SIEMPRE escribe el código completo, nunca omitas líneas
2. NUNCA uses "// ..." o "// existing code" o "// resto del código"
3. Si el archivo es muy largo, divide la respuesta en partes numeradas
4. Cada función debe estar completa de principio a fin`
    },
    {
      role: 'user',
      content: `Refactoriza este archivo:\n\n${fileContent}`
    }
  ],
  max_tokens: 16384,  // Asegúrate de dar suficiente espacio
});

Para APIs, revisa cómo usar la API de ChatGPT y Claude sin arruinarte. El max_tokens alto sube el coste pero evita respuestas cortadas.

Técnica nuclear: Divide el archivo antes de pedir

Si tu archivo tiene +300 líneas, no se lo pases entero. Divídelo:

Tengo un archivo con 3 secciones:
1. Imports y tipos (líneas 1-30)  
2. Hooks y lógica (líneas 31-120)
3. JSX/render (líneas 121-300)

Necesito cambiar la sección 2. Te la paso completa.
Dame la sección 2 COMPLETA con los cambios. Yo la pegaré en su sitio.

[Pega solo las líneas 31-120]

Así el modelo no tiene la tentación de resumir las otras secciones porque no las tiene.

Configuración en editores para reducir lazy coding

Cursor

// .cursorrules (en la raíz del proyecto)
Always write complete code. Never use placeholder comments like 
"// existing code" or "// ...". When editing a file, rewrite the 
entire function or component, not just the changed lines.

GitHub Copilot

En VS Code, usa el modo Copilot Edits en lugar del chat normal. Edits modifica el archivo directamente y no necesita “mostrar” el código.

Cline / Claude Dev

// En la configuración de Cline, system prompt personalizado:
"When writing code, always provide complete implementations. 
Never abbreviate with comments. Write every line."

¿Cuándo está bien que la IA resuma?

No siempre es malo. A veces quieres que resuma:

  • Revisión de código: “¿Ves bugs en este archivo?” → No necesitas que reescriba todo
  • Explicaciones: “¿Qué hace esta función?” → Solo necesitas la explicación
  • Diffs pequeños: Si cambias una línea, no necesitas las otras 299

El lazy coding solo es un problema cuando necesitas código ejecutable que puedas copiar y pegar o que el editor aplique directamente.

Resumen

SituaciónSolución
Chat web (ChatGPT/Claude)Prompt explícito: “código COMPLETO, sin omisiones”
API directaSystem prompt + max_tokens alto
Archivo enorme (+300 líneas)Divide en secciones, pide una a la vez
Editor (Cursor/Copilot)Usa modo Agent/Edits en vez de chat
Terminal (Aider)Ya genera código completo por defecto

Artículos relacionados

Fran Cobos

Fran Cobos

Desarrollador Full Stack especializado en IA aplicada, automatización y desarrollo web. Escribo sobre herramientas, tutoriales y casos reales para programadores.

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.