← Blog

Lo caro de un chat largo es el historial que reenviás en cada turno

CognitionDesk Team··7 min de lectura

Un modelo de lenguaje no recuerda nada entre una llamada y la siguiente. Para que «se acuerde» de la conversación, en cada turno le mandás la conversación entera. Ahí está el costo que no se ve.

La cuenta que no es lineal

En el turno 1 mandás un mensaje. En el turno 2, dos. En el turno 50, cincuenta. Cada turno nuevo paga de nuevo todos los anteriores.

Por eso el total de texto enviado no crece como la charla: crece mucho más rápido. Duplicar la cantidad de turnos multiplica el total casi por cuatro.

turno 1turno 2turno 3turno 4turno 5turno 66 turnos,21 mensajes enviados
Cada turno nuevo vuelve a pagar todos los anteriores.

Medido sobre conversaciones simuladas, contando los caracteres de historial que recibe el modelo en todos los turnos:

  • 20 turnos: 157 mil caracteres en total.
  • 60 turnos: 1,4 millones.
  • 200 turnos: 16,2 millones. Sólo el último turno ya manda 162 mil.

Un chat de soporte que se estira, un asistente que acompaña a alguien toda la tarde, un widget que nunca se cierra: los tres viven en la zona cara de esa curva.

Ventana más resumen

La salida no es borrar memoria, es dejar de mandar todo en crudo:

  1. Una ventana. Pasan sólo los mensajes más nuevos, con dos techos: cantidad (por ejemplo, 40 mensajes) y tamaño (por ejemplo, ~32 000 caracteres). Lo que llegue primero.
  2. La ventana arranca en un mensaje de la persona. Si empieza a mitad de una respuesta del asistente, el modelo lee una contestación sin su pregunta.
  3. Lo que quedó afuera se resume en un solo mensaje, rotulado como resumen para que el modelo sepa que no es textual.
Resumen(rotulado)personaasistentepersonaasistentepersonaasistentelo viejo: un solo mensajeventana: los más nuevos, arranca en la persona
Lo viejo se comprime, lo nuevo pasa entero.
Caracteres enviados en toda la conversación60 turnos1,4 M0,87 M (60 %)200 turnos16,2 M3,4 M (21 %)todo el historialventana + resumen
Cada par de barras está en su propia escala: lo que importa es cuánto queda de la barra gris.

Con eso, la charla de 200 turnos pasa de 16,2 a 3,4 millones de caracteres, y el último turno de 162 mil a 18 mil. La de 20 turnos no cambia: nunca llega al techo, así que las conversaciones cortas siguen exactamente igual.

Un resumen que no cuesta otra llamada

El resumen puede escribirlo otro modelo, pero eso suma una llamada, latencia y una fuente nueva de errores. Hay una opción más barata: resumen extractivo. Se arma con texto que ya existe: el primer pedido de la persona y el comienzo de cada pedido que quedó afuera, con su propio techo de tamaño.

Persona: primer pedidoAsistente: respuestaPersona: pedido omitidoAsistente: respuestaResumen:primer pedido +comienzo de lospedidos omitidos
Sin otra llamada al modelo: sólo texto que la persona ya escribió.

Tiene tres ventajas: no cuesta nada, da siempre lo mismo para la misma charla (se puede testear) y no repite lo que dijo el asistente, que es justo lo que un modelo tiende a copiar sin verificar. Si algún día hace falta un resumen redactado, se cambia esa pieza sola.

Antes de prenderlo

  • Que se pueda apagar sin desplegar código. Una variable de entorno que, en cero, devuelve el comportamiento anterior.
  • Que se mida antes y después, con conversaciones de distintos largos. Si no medís la de 20 turnos, no sabés si rompiste las cortas.

El usuario sigue viendo su conversación entera en pantalla. Lo único que cambia es lo que viaja al modelo en cada turno.

Probalo con tus números: sumá los caracteres que manda tu asistente en una charla de 200 turnos, poné la ventana y volvé a sumar. Si querés ayuda para medirlo, escribinos por el chat de esta página.

Comentarios y correcciones

Creá tu primer agente IA hoy

RAG sobre tus documentos, tools, workflows y widget web — con plan gratuito.

Empezar gratis