Compressione contestuale autonoma

Langchain ha aggiunto una funzionalità di compressione contestuale autonoma al Deep Agents SDK (Python) e alla CLI. Questa permette ai modelli di comprimere le proprie finestre di contesto nei momenti più opportuni.

La compressione contestuale riduce le informazioni nella memoria di lavoro di un agente. I messaggi meno recenti vengono sostituiti da un riassunto o da una rappresentazione condensata dei progressi dell'agente, preservando ciò che è rilevante per un'attività. Questa azione è spesso necessaria per adattarsi alle finestre di contesto finite e ridurre il deterioramento del contesto.

Gli agenti spesso controllano questo compattando a una soglia di token fissa. Questo design è subottimale perché ci sono momenti buoni e cattivi per compattare: non è ideale compattare quando si è nel mezzo di un complesso refactoring; è meglio compattare quando si inizia una nuova attività o si ritiene che il contesto precedente perda rilevanza.

Molti strumenti di sviluppo interattivi includono un comando /compact o simile, che consente agli utenti di attivare manualmente una fase di compressione contestuale nei momenti opportuni. Questa nuova funzionalità espone uno strumento all'agente che gli consente di attivare autonomamente la compressione contestuale. Ciò consente una compattazione più opportunistica senza richiedere agli utenti dell'applicazione di essere consapevoli delle finestre di contesto finite o di emettere comandi specifici.

Questo strumento è attualmente abilitato in Deep Agents CLI e opt-in nel Deep Agents SDK.

Quando dovremmo compattare?

Ci sono diverse situazioni che potrebbero giustificare un'azione di compressione contestuale:

  • Ai confini delle attività:
    • Un utente segnala che sta passando a una nuova attività per la quale il contesto precedente è probabilmente irrilevante
    • L'agente ha terminato una consegna e l'utente riconosce il completamento dell'attività
  • Dopo aver estratto un risultato da una grande quantità di contesto:
    • L'agente ha ottenuto un fatto, una conclusione, un riassunto o un altro risultato consumando una quantità significativa di contesto, come in un'attività di ricerca
  • Prima di consumare una grande quantità di nuovo contesto:
    • L'agente sta per generare una lunga bozza
    • L'agente sta per leggere una grande quantità di nuovo contesto
  • Prima di entrare in un complesso processo multi-step:
    • L'agente sta per iniziare un lungo refactoring, migrazione, modifica di più file o risposta a un incidente
    • L'agente ha prodotto un piano e sta per iniziare a eseguire i passaggi
  • È stata presa una decisione che sostituisce il contesto precedente:
    • Sono emersi nuovi requisiti che invalidano il contesto precedente
    • Ci sono molte tangenti o vicoli ciechi che possono essere ridotti a un riassunto

Cosa succede quando viene chiamato lo strumento?

Lo strumento è parametrizzato allo stesso modo del middleware di riepilogo esistente di Deep Agents: conserviamo i messaggi recenti (10% del contesto disponibile) e riepiloghiamo ciò che viene prima. I messaggi recenti, inclusa la chiamata allo strumento di compressione e la relativa risposta, vengono conservati nel contesto recente.

Come usare

Lo strumento è implementato come middleware separato, quindi puoi abilitarlo aggiungendolo all'elenco middleware in create_deep_agent.

Nella CLI, è sufficiente chiamare /compact quando si è pronti a tagliare il contesto o passare a una nuova attività.

La nostra esperienza con questa funzionalità

Abbiamo testato:

  • Una suite di valutazione personalizzata, in cui abbiamo utilizzato le tracce di LangSmith per iniettare prompt di follow-up a thread che giustificano o meno la compressione;
  • Terminal-bench-2, in cui non abbiamo osservato alcuna istanza di compressione autonoma;
  • Le nostre attività di sviluppo in Deep Agents CLI.

In pratica, gli agenti sono prudenti nell'attivare la compressione, ma quando lo fanno tendono a scegliere momenti in cui migliora chiaramente il flusso di lavoro.

La compressione contestuale autonoma è una piccola funzionalità, ma indica una direzione più ampia per la progettazione degli agenti: dare ai modelli un maggiore controllo sulla propria memoria di lavoro e meno regole rigide e regolate manualmente nell'agente.