Cabe en la ventana de contexto
Un modelo local con 8K de contexto no admite todo el historial. Conserva el mensaje de sistema y los mensajes más recientes que quepan.
Escribe dos funciones. estimateTokens(text) devuelve Math.ceil(text.length / 4), una estimación habitual para texto en lenguas europeas.
fitContext(messages, budget) recibe mensajes { role, content } y un presupuesto en tokens. Los mensajes con role: 'system' se conservan siempre. Después añade los demás desde el más reciente hacia atrás mientras la suma total no supere budget; en cuanto uno no cabe, para (no saltes a mensajes más antiguos). Devuelve los mensajes en su orden original, sin modificar el array de entrada. Si los mensajes de sistema solos ya superan el presupuesto, lanza un error.
CHAT tiene un historial de ejemplo de 168 tokens.
Retos 0/5
- estimateTokens redondea hacia arriba
- Con 70 tokens conserva sistema y los tres últimos
- Para en el primer mensaje que no cabe (no salta a otros más antiguos)
- Devuelve todo si cabe y no modifica la entrada
- Lanza un error si el sistema no cabe
function estimateTokens(text) {
// unos 4 caracteres por token, redondeando hacia arriba
return text.length;
}
function fitContext(messages, budget) {
// conserva los mensajes system y añade los más recientes mientras quepan
return messages.slice(-3);
}
console.log(fitContext(CHAT, 70).map((m) => m.role));Para profundizar: la guía relacionada →
¿Esto en producción, con tus datos? Hablemos 15 minutos →