Configurazione della riassunzione
Panoramica
La configurazione summarization fornisce un controllo centralizzato sulla riassunzione delle conversazioni e sulla riduzione del contesto. Questa sostituisce i campi summarize e summaryModel per endpoint, precedentemente disponibili sugli endpoint personalizzati e Azure OpenAI.
Quando una conversazione supera la finestra di contesto del modello, il sistema di riepilogo comprime automaticamente i messaggi meno recenti in un riepilogo di controllo conciso. Ciò consente alle conversazioni di continuare indefinitamente senza perdere il contesto importante. Il sistema include anche il context pruning, che degrada progressivamente i risultati di strumenti di grandi dimensioni nei messaggi meno recenti per recuperare spazio nei token prima che sia necessario il riepilogo.
Dopo un turno di riassunto, l'indicatore di utilizzo del contesto utilizza la baseline del riassunto persistente più i turni successivi al riassunto, invece di ricalcolare la cronologia precedente al riassunto che è stata scartata. I totali cumulativi di utilizzo e costo includono comunque la spesa totale del ramo.
Esempio
summarization:
provider: 'openAI'
model: 'gpt-4o-mini'
maxSummaryTokens: 4096
reserveRatio: 0.05
trigger:
type: 'token_ratio'
value: 0.8
contextPruning:
enabled: true
keepLastAssistants: 3
softTrimRatio: 0.3
hardClearRatio: 0.5
minPrunableToolChars: 50000
softTrim:
maxChars: 4000
headChars: 1500
tailChars: 1500
hardClear:
enabled: true
placeholder: '[Old tool result content cleared]'provider
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Il provider LLM da utilizzare per le chiamate di riepilogo. Se omesso, utilizza il provider dell'agente stesso. | provider: "openAI" |
Predefinito: Provider dell'agente
model
| Key | Type | Description | Example |
|---|---|---|---|
| model | String | Il modello da utilizzare per le chiamate di riepilogo. Se omesso, viene utilizzato il modello dell'agente stesso. | model: "gpt-4o-mini" |
Predefinito: Modello dell'agente
parameters
| Key | Type | Description | Example |
|---|---|---|---|
| parameters | Object | Parametri LLM aggiuntivi per le richieste di riassunto (ad es. temperature, top_p). | parameters: { temperature: 0.3 } |
prompt
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | String | Prompt personalizzato per la riassunzione iniziale. Sostituisce il prompt di checkpoint integrato. |
Predefinito: Un prompt di checkpoint strutturato che genera sezioni per Obiettivo, Vincoli e Preferenze, Progresso, Decisioni Chiave, Prossimi Passi e Contesto Critico.
updatePrompt
| Key | Type | Description | Example |
|---|---|---|---|
| updatePrompt | String | Prompt personalizzato per la ricompattazione quando esiste già un riepilogo precedente. Utilizzato quando il riepilogo deve essere aggiornato con il nuovo contenuto della conversazione. |
Predefinito: Un prompt integrato che unisce i nuovi messaggi al checkpoint esistente, comprime i dettagli più vecchi e fornisce maggiori dettagli sulle azioni recenti.
maxSummaryTokens
| Key | Type | Description | Example |
|---|---|---|---|
| maxSummaryTokens | Number | Numero massimo di token di output per la risposta del modello di riepilogo. | maxSummaryTokens: 4096 |
reserveRatio
| Key | Type | Description | Example |
|---|---|---|---|
| reserveRatio | Number | Frazione del budget di token riservata come margine (0–1). Impedisce che il contesto venga riempito fino alla capacità assoluta. | reserveRatio: 0.05 |
Predefinito: 0.05 (5% di margine)
trigger
| Key | Type | Description | Example |
|---|---|---|---|
| trigger | Object | Definisce quando viene attivata la sintesi. Se omesso, la sintesi viene attivata ogni volta che la potatura dei messaggi ne elimina alcuni. |
Sotto-chiavi trigger
| Key | Type | Description | Example |
|---|---|---|---|
| type | String | La strategia di attivazione. Opzioni: `"token_ratio"`, `"remaining_tokens"`, `"messages_to_refine"`. | type: "token_ratio" |
| value | Number | Il valore soglia per il tipo di trigger scelto. Per `token_ratio`: 0–1 (inclusi). Per `remaining_tokens` e `messages_to_refine`: numero intero positivo. | value: 0.8 |
Tipi di trigger
| Tipo | Valore | Si attiva quando |
|---|---|---|
token_ratio | 0.0–1.0 | La frazione di token di contesto utilizzati raggiunge o supera il valore |
remaining_tokens | Intero positivo | I token di contesto rimanenti scendono al di sotto o raggiungono il valore |
messages_to_refine | Intero positivo | Il conteggio dei messaggi idonei per la riassunzione raggiunge o supera il valore |
| (non impostato) | — | Ogni volta che la potatura (pruning) elimina dei messaggi (comportamento predefinito) |
Esempio:
summarization:
trigger:
type: 'remaining_tokens'
value: 8000contextPruning
| Key | Type | Description | Example |
|---|---|---|---|
| contextPruning | Object | Configura il degrado dei risultati degli strumenti basato sulla posizione. I risultati degli strumenti di grandi dimensioni nei messaggi meno recenti vengono progressivamente tagliati o eliminati per recuperare spazio nei token. |
Il context pruning è una funzionalità opzionale che opera indipendentemente dalla riassunzione. Prende di mira i risultati di grandi chiamate a strumenti (tool call) nei messaggi meno recenti, applicando due fasi progressive:
- Soft trim — Tronca i risultati degli strumenti per mantenere solo le porzioni iniziale e finale, con un'ellissi nel mezzo
- Hard clear — Sostituisce l'intero risultato dello strumento con un breve segnaposto
Entrambe le fasi sono basate sulla posizione: i messaggi più vicini all'inizio della conversazione (più vecchi) vengono eliminati per primi.
Sotto-chiavi di contextPruning
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | Abilita il degrado dei risultati degli strumenti basato sulla posizione. | enabled: true |
| keepLastAssistants | Number | Numero di turni recenti dell'assistente da proteggere da qualsiasi potatura. | keepLastAssistants: 3 |
| softTrimRatio | Number | Rapporto di età (0–1) al quale si attiva il soft-trim. I messaggi più vecchi di questo rapporto nella conversazione sono candidati per il soft-trimming. | softTrimRatio: 0.3 |
| hardClearRatio | Number | Rapporto di età (0–1) al quale si attiva la cancellazione forzata (hard-clear). I messaggi più vecchi di questo rapporto sono candidati alla sostituzione completa. | hardClearRatio: 0.5 |
| minPrunableToolChars | Number | Numero minimo di caratteri di un risultato di uno strumento prima che venga applicata la potatura. I risultati più piccoli rimangono invariati. | minPrunableToolChars: 50000 |
| softTrim | Object | Configurazione per la fase di soft-trim. | |
| hardClear | Object | Configurazione per la fase di hard-clear. |
Predefiniti:
| Campo | Predefinito |
|---|---|
enabled | false |
keepLastAssistants | 3 |
softTrimRatio | 0.3 |
hardClearRatio | 0.5 |
minPrunableToolChars | 50000 |
Sotto-chiavi softTrim
| Key | Type | Description | Example |
|---|---|---|---|
| maxChars | Number | Numero massimo totale di caratteri dopo il soft-trimming di un risultato di uno strumento. | maxChars: 4000 |
| headChars | Number | Numero di caratteri da preservare dall'inizio del risultato dello strumento. | headChars: 1500 |
| tailChars | Number | Numero di caratteri da preservare dalla fine del risultato dello strumento. | tailChars: 1500 |
Predefiniti: maxChars: 4000, headChars: 1500, tailChars: 1500
Sotto-chiavi hardClear
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | Se la fase di hard-clear è attiva. Quando disabilitata, viene applicato solo il soft-trim. | enabled: true |
| placeholder | String | Testo segnaposto che sostituisce il contenuto completo del risultato dello strumento quando viene cancellato forzatamente. | placeholder: "[Old tool result content cleared]" |
Predefiniti: enabled: true, placeholder: "[Old tool result content cleared]"
Esempio:
summarization:
contextPruning:
enabled: true
keepLastAssistants: 5
softTrimRatio: 0.25
hardClearRatio: 0.6
minPrunableToolChars: 30000
softTrim:
maxChars: 6000
headChars: 2500
tailChars: 2500
hardClear:
enabled: true
placeholder: '[Content removed for context management]'Esempio di configurazione completa
version: 1.3.10
cache: true
summarization:
provider: 'openAI'
model: 'gpt-4o-mini'
maxSummaryTokens: 4096
reserveRatio: 0.05
trigger:
type: 'token_ratio'
value: 0.8
contextPruning:
enabled: true
keepLastAssistants: 3
softTrimRatio: 0.3
hardClearRatio: 0.5
minPrunableToolChars: 50000
softTrim:
maxChars: 4000
headChars: 1500
tailChars: 1500
hardClear:
enabled: true
placeholder: '[Old tool result content cleared]'Migrazione dalle impostazioni per endpoint
Se in precedenza hai utilizzato summarize e summaryModel su endpoint personalizzati o Azure OpenAI:
endpoints:
custom:
- name: 'My Endpoint'
summarize: true
summaryModel: 'gpt-3.5-turbo'Questi campi sono stati rimossi. Utilizza invece la configurazione di primo livello summarization:
summarization:
model: 'gpt-4o-mini'Note
- La riassunzione è configurata a livello globale anziché per singolo endpoint.
- I campi
summarizeesummaryModelsugli endpoint personalizzati e sugli endpoint Azure OpenAI non sono più supportati - Quando
provideremodelvengono omessi, per la sintesi vengono utilizzati il provider e il modello dell'agente stesso. - Il context pruning è disabilitato per impostazione predefinita e deve essere abilitato esplicitamente con
contextPruning.enabled: true - Il context pruning influisce solo sui risultati delle chiamate a strumenti che superano
minPrunableToolChars: i risultati più piccoli non vengono mai troncati. - L'impostazione
keepLastAssistantsprotegge i turni recenti dalla rimozione, indipendentemente dai rapporti di taglio/pulizia. - I valori
prompteupdatePromptpersonalizzati sostituiscono completamente i prompt integrati: utilizzare con cautela. - Imposta
AGENT_DEBUG_LOGGING=truenel tuo file.envper abilitare la registrazione dettagliata del conteggio dei token e la diagnostica della potatura del contesto.
Com’è questa guida?