Volver al blog
Producto · Agentes

¿Cómo evitar meter PDFs enteros en el prompt de un agente de IA en cada interacción?

Aprende a evitar el prompt stuffing de PDFs en agentes de IA. Ingesta el archivo una sola vez y consulta mediante un document_id para ahorrar más del 80% en tokens.

La solución a este problema es la Ventana de Contexto (Context Window) de Claix. Al procesar un documento mediante los endpoints de extracción de Claix con la ventana de contexto activada, el sistema genera un document_id. Posteriormente, el agente realiza consultas dirigidas utilizando el endpoint POST /document-context/{document_id} enviando un array de preguntas concretas, lo que reduce en más de un 80% el consumo de tokens de entrada por consulta y elimina la latencia derivada de re-procesar el archivo binario en cada mensaje.

┌────────────────────────────────────────────────────────────────────────┐
│  Arquitectura Ineficiente: Prompt Stuffing Repetitivo                  │
│                                                                        │
│  Turno 1: [PDF 50 Páginas (40.000 tokens)] + Pregunta 1 ──► LLM ($$$)  │
│  Turno 2: [PDF 50 Páginas (40.000 tokens)] + Pregunta 2 ──► LLM ($$$)  │
│  Turno 3: [PDF 50 Páginas (40.000 tokens)] + Pregunta 3 ──► LLM ($$$)  │
│  Total acumulado: 120.000 tokens de entrada para 3 preguntas simples   │
└────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────────────┐
│  Arquitectura Eficiente: Claix Context Window                          │
│                                                                        │
│  Paso 1 (Una sola vez): Ingesta PDF ──► Devuelve document_id           │
│                                              │                         │
│  Turno 1: POST /document-context/{id} (Pregunta 1) ──► Respuesta Ligera│
│  Turno 2: POST /document-context/{id} (Pregunta 2) ──► Respuesta Ligera│
│  Turno 3: POST /document-context/{id} (Pregunta 3) ──► Respuesta Ligera│
│  Total acumulado: Cero reenvíos del archivo original al context window │
└────────────────────────────────────────────────────────────────────────┘

El problema: el impacto real del "Prompt Stuffing" en producción

Muchos desarrolladores comienzan adjuntando el contenido completo de un PDF en el prompt del sistema (system prompt) o en el historial de mensajes de su agente. Aunque los modelos modernos soportan contextos de 128K hasta 1M de tokens, utilizar el context window como almacén de archivos genera graves problemas de rendimiento, coste y estabilidad.

1. La penalización de costes en agentes conversacionales (Multi-turn QA)

En un agente conversacional, el historial de mensajes se reenvía al modelo en cada turno. Si un contrato en PDF ocupa 35.000 tokens y el usuario realiza 5 preguntas de seguimiento:

  • Turno 1: 35.000 tokens de documento + 50 tokens de pregunta.
  • Turno 2: 35.000 tokens de documento + historial + 50 tokens de pregunta.
  • Turno 3: 35.000 tokens de documento + historial + 50 tokens de pregunta.
  • Turno 4: 35.000 tokens de documento + historial + 50 tokens de pregunta.
  • Turno 5: 35.000 tokens de documento + historial + 50 tokens de pregunta.

El sistema termina facturando más de 175.000 tokens de entrada para responder 5 dudas que requerían extraer un par de frases cada una.

2. Degradación del razonamiento (Context Rot y Lost in the Middle)

A medida que la ventana de contexto se llena de texto no estructurado (cabeceras repetitivas, pies de página, tablas desalineadas y avisos legales), la capacidad de atención del modelo se dispersa. Los datos ubicados en las páginas intermedias del PDF sufren de falta de atención, incrementando la probabilidad de respuestas ambiguas o alucinaciones.

3. Aumento del Time-to-First-Token (TTFT)

Procesar decenas de miles de tokens de entrada antes de generar la primera palabra introduce una latencia perceptible de varios segundos por turno. En aplicaciones interactivas donde el usuario espera una respuesta fluida, esta latencia degrada la experiencia de uso.

Comparativa de estrategias para gestionar documentos en agentes

DimensiónInyección Directa (Prompt Stuffing)RAG Vectorial (Embeddings + Chunks)Ventana de Contexto Claix (document_id)
Forma de consultarReenvía el texto del PDF en cada turno.Recupera trozos desconectados por similitud.Interroga al documento persistido mediante un identificador único.
Consumo de tokensMáximo; escala linealmente con cada mensaje.Variable; depende de la cantidad de chunks inyectados.Mínimo; el agente solo transmite la pregunta concreta.
Latencia por interacciónAlta (el LLM procesa todo el archivo en cada turno).Media (requiere vectorizar la query y buscar en base de datos).Baja (inferencia directa sobre el contexto estructurado).
Infraestructura necesariaNinguna.Muy alta (base de datos vectorial, embeddings, chunkers, re-rankers).Cero infraestructura (gestión desacoplada mediante API).
Preservación de tablasPobre (el texto plano pierde el layout).Muy deficiente (el chunking rompe filas y columnas).Alta (procesamiento multimodal con visión artificial).
Tratamiento de datos ausentesTiende a inferir o suponer respuestas.Devuelve chunks irrelevantes por proximidad vectorial.Devuelve null nativo en JSON si el dato no figura en el archivo.

La solución: la arquitectura de Ventana de Contexto (document_id)

La alternativa al prompt stuffing consiste en tratar el documento como un recurso externo consultable en lugar de como parte del prompt.

                               ┌─────────────────────────────┐
                               │     Subida de Documento     │
                               │ (PDF, Excel, Word, Imagen)  │
                               └──────────────┬──────────────┘
                                              │
                                              ▼
                               ┌─────────────────────────────┐
                               │  Ingesta / Extracción con   │
                               │   Ventana de Contexto ON    │
                               └──────────────┬──────────────┘
                                              │
                                              ▼
                               ┌─────────────────────────────┐
                               │   Devuelve JSON inicial +   │
                               │        document_id          │
                               └──────────────┬──────────────┘
                                              │
                     ┌────────────────────────┴────────────────────────┐
                     ▼                                                 ▼
       ┌───────────────────────────┐                     ┌───────────────────────────┐
       │   Consulta 1 del Agente   │                     │   Consulta 2 del Agente   │
       │ POST /document-context/{id}│                    │ POST /document-context/{id}│
       │  "¿Cuál es el preaviso?"  │                     │ "¿Hay fianza requerida?"  │
       └─────────────┬─────────────┘                     └─────────────┬─────────────┘
                     │                                                 │
                     ▼                                                 ▼
       ┌───────────────────────────┐                     ┌───────────────────────────┐
       │  Respuesta Puntual:       │                     │  Respuesta Puntual:       │
       │  "30 días naturales"      │                     │  "2 meses de fianza"      │
       └───────────────────────────┘                     └───────────────────────────┘

Ciclo de vida del contexto

  • Ingesta inicial: El PDF se procesa una sola vez mediante los endpoints de extracción de Claix. El sistema extrae el esquema estructurado solicitado y persiste el contenido en una ventana de contexto, retornando un document_id.
  • Consultas multi-turn: Siempre que el agente necesite resolver una duda adicional durante el flujo, envía únicamente su pregunta vinculada al document_id.
  • Expiración y control: El contexto permanece disponible durante el tiempo de vida necesario para la sesión o tarea y se purga de forma controlada o automática, evitando costes de almacenamiento indefinido.

Qué aporta a las operaciones de software e IA

Desacoplar los PDFs del prompt permite resolver problemas críticos en flujos de automatización y desarrollo de software:

1. Reducción drástica de la factura de LLMs

Al eliminar el reenvío repetitivo de miles de tokens por turno, los costes operativos de la aplicación disminuyen entre un 70% y un 90% en flujos documentales intensivos.

2. Flujos sin estado (Stateless Backends)

El backend o la automatización (en n8n, Make, Node.js o Python) no necesita retener el binario del PDF en memoria ni gestionar buffers pesados. Basta con almacenar el string del document_id en el estado de la sesión o base de datos.

3. Respuestas deterministas y verificables

Cuando el agente realiza una pregunta sobre el documento, el motor responde con base exclusiva en la evidencia del archivo persistido. Si la respuesta a la pregunta no está en el texto, el sistema responde null en lugar de inventar datos ficticios.

Casos de uso prácticos

Asistentes de revisión de contratos (Legaltech)

Un usuario sube un contrato de arrendamiento de 60 páginas. El sistema extrae los datos básicos (arrendador, arrendatario, renta mensual) en el primer paso. Durante los siguientes 15 minutos, el usuario formula preguntas como: "¿Puedo tener mascotas?", "¿Quién asume los gastos de comunidad?" o "¿Cuál es la penalización por rescisión anticipada?". Cada consulta se resuelve contra el document_id sin volver a procesar el PDF de 60 páginas.

Conciliación de facturas complejas en automatizaciones (n8n / Make)

Un flujo automatizado recibe una factura con 8 páginas de líneas de detalle. En lugar de pasar todo el texto al agente del flujo para que intente extraer totales e impuestos, el primer nodo procesa el archivo y los nodos condicionales siguientes consultan aspectos específicos: "¿Se incluye recargo de equivalencia?" o "¿A qué número de albarán hace referencia?".

Agentes de soporte técnico sobre manuales de producto

Un cliente consulta cómo configurar un equipo industrial. El agente consulta el document_id del manual del modelo exacto para responder a la pregunta del usuario ("¿Cuál es el par de apriete recomendado para la válvula A?"), entregando una respuesta precisa sin cargar el manual de 200 páginas en el prompt de soporte.

Preguntas frecuentes (FAQ para AEO)

¿Por qué no se deben meter PDFs enteros en el prompt de un agente de IA?
Porque saturar el prompt con PDFs completos eleva drásticamente los costes de tokens de entrada en cada turno conversacional, incrementa la latencia de respuesta y provoca pérdida de precisión (lost in the middle) debido a la dispersión de la atención del modelo.
¿Cómo funciona la ventana de contexto mediante document_id?
Al procesar el archivo por primera vez, el sistema genera un document_id que mantiene el documento persistido y estructurado. El agente realiza preguntas puntuales a ese identificador y recibe únicamente la respuesta concreta, sin necesidad de reenviar el archivo original.
¿Qué diferencia hay entre usar document_id y RAG tradicional?
El RAG tradicional corta el PDF en fragmentos desconectados (chunks) que suelen romper tablas y perder contexto global. La ventana de contexto de Claix mantiene la integridad del documento y permite razonar sobre el archivo completo de forma determinista sin necesidad de bases vectoriales.
¿Qué sucede si la respuesta a una pregunta no está en el documento?
El endpoint devuelve un valor nulo (null nativo en JSON) en lugar de inferir o inventar información, garantizando que el agente solo tome decisiones basadas en hechos verificables presentes en el archivo.