Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Configuration de la synthèse

Aperçu

La configuration summarization offre un contrôle centralisé sur la synthèse des conversations et l'élagage du contexte. Cela remplace les champs summarize et summaryModel par endpoint qui étaient précédemment disponibles sur les endpoints personnalisés et Azure OpenAI.

Lorsqu'une conversation dépasse la fenêtre de contexte du modèle, le système de résumé compresse automatiquement les anciens messages en un résumé de point de contrôle concis. Cela permet aux conversations de se poursuivre indéfiniment sans perdre de contexte important. Le système inclut également le context pruning (élagage de contexte), qui dégrade progressivement les résultats d'outils volumineux dans les anciens messages afin de récupérer de l'espace de jetons avant que la synthèse ne soit nécessaire.

Après un tour de résumé, la jauge d'utilisation du contexte utilise la ligne de base du résumé persisté ainsi que les tours suivant le résumé, au lieu de recompter l'historique pré-résumé supprimé. Les totaux cumulés de l'utilisation et des coûts incluent toujours la dépense totale de la branche.

Exemple

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

KeyTypeDescriptionExample
providerStringLe fournisseur LLM à utiliser pour les appels de résumé. S'il est omis, le propre fournisseur de l'agent est utilisé.provider: "openAI"

Par défaut : Fournisseur propre à l'agent

model

KeyTypeDescriptionExample
modelStringLe modèle à utiliser pour les appels de résumé. S'il est omis, le modèle propre à l'agent est utilisé.model: "gpt-4o-mini"

Par défaut : Modèle propre à l'agent

parameters

KeyTypeDescriptionExample
parametersObjectParamètres LLM supplémentaires pour les requêtes de résumé (par ex. temperature, top_p).parameters: { temperature: 0.3 }

prompt

KeyTypeDescriptionExample
promptStringInvite personnalisée pour la synthèse initiale. Remplace l'invite de point de contrôle intégrée.

Par défaut : Un prompt de point de contrôle structuré qui génère des sections pour Objectif, Contraintes et Préférences, Progrès, Décisions clés, Prochaines étapes et Contexte critique.

updatePrompt

KeyTypeDescriptionExample
updatePromptStringInvite personnalisée pour la re-compaction lorsqu'un résumé existe déjà. Utilisée lorsque le résumé doit être mis à jour avec le nouveau contenu de la conversation.

Par défaut : Un prompt intégré qui fusionne les nouveaux messages dans le point de contrôle existant, compresse les détails plus anciens et donne plus de détails aux actions récentes.

maxSummaryTokens

KeyTypeDescriptionExample
maxSummaryTokensNumberNombre maximal de jetons de sortie pour la réponse du modèle de résumé.maxSummaryTokens: 4096

reserveRatio

KeyTypeDescriptionExample
reserveRatioNumberFraction du budget de jetons réservée comme marge de sécurité (0–1). Empêche le contexte d'être rempli à sa capacité absolue.reserveRatio: 0.05

Par défaut : 0.05 (5 % de marge)

trigger

KeyTypeDescriptionExample
triggerObjectDéfinit quand la synthèse est activée. Si omis, la synthèse se déclenche dès que le nettoyage des messages en supprime.

Sous-clés trigger

KeyTypeDescriptionExample
typeStringLa stratégie de déclenchement. Options : `"token_ratio"`, `"remaining_tokens"`, `"messages_to_refine"`.type: "token_ratio"
valueNumberLa valeur seuil pour le type de déclencheur choisi. Pour `token_ratio` : 0–1 (inclus). Pour `remaining_tokens` et `messages_to_refine` : entier positif.value: 0.8

Types de déclencheurs

TypeValueSe déclenche quand
token_ratio0.0–1.0La fraction de jetons de contexte utilisés atteint ou dépasse la valeur
remaining_tokensEntier positifLe nombre de jetons de contexte restants tombe à ou en dessous de la valeur
messages_to_refineEntier positifLe nombre de messages éligibles à la synthèse atteint ou dépasse la valeur
(non défini)Chaque fois que l'élagage supprime des messages (comportement par défaut)

Exemple :

summarization:
  trigger:
    type: 'remaining_tokens'
    value: 8000

contextPruning

KeyTypeDescriptionExample
contextPruningObjectConfigure la dégradation des résultats d'outils basée sur la position. Les résultats d'outils volumineux dans les messages plus anciens sont progressivement tronqués ou supprimés pour récupérer de l'espace de jetons.

Le nettoyage du contexte (context pruning) est une fonctionnalité optionnelle qui fonctionne indépendamment de la synthèse. Elle cible les résultats volumineux d'appels d'outils dans les messages plus anciens, en appliquant deux étapes progressives :

  1. Soft trim — Tronque les résultats des outils pour ne conserver que les parties de début et de fin, avec des points de suspension entre les deux
  2. Hard clear — Remplace l'intégralité du résultat de l'outil par un court espace réservé

Les deux étapes sont basées sur la position : les messages situés au début de la conversation (les plus anciens) sont supprimés en premier.

Sous-clés de contextPruning

KeyTypeDescriptionExample
enabledBooleanActive la dégradation des résultats d'outils basée sur la position.enabled: true
keepLastAssistantsNumberNombre de tours récents de l'assistant à protéger de toute suppression.keepLastAssistants: 3
softTrimRatioNumberRatio d'âge (0–1) auquel le soft-trim s'active. Les messages plus anciens que ce ratio de la conversation sont candidats au soft-trimming.softTrimRatio: 0.3
hardClearRatioNumberRatio d'âge (0–1) auquel le hard-clear s'active. Les messages plus anciens que ce ratio sont candidats à un remplacement complet.hardClearRatio: 0.5
minPrunableToolCharsNumberNombre minimal de caractères d'un résultat d'outil avant que l'élagage ne soit appliqué. Les résultats plus petits restent inchangés.minPrunableToolChars: 50000
softTrimObjectConfiguration pour l'étape de soft-trim.
hardClearObjectConfiguration pour l'étape de hard-clear.

Valeurs par défaut :

ChampPar défaut
enabledfalse
keepLastAssistants3
softTrimRatio0.3
hardClearRatio0.5
minPrunableToolChars50000

Sous-clés softTrim

KeyTypeDescriptionExample
maxCharsNumberNombre maximal total de caractères après le découpage léger d'un résultat d'outil.maxChars: 4000
headCharsNumberNombre de caractères à conserver depuis le début du résultat de l'outil.headChars: 1500
tailCharsNumberNombre de caractères à conserver à la fin du résultat de l'outil.tailChars: 1500

Par défaut : maxChars: 4000, headChars: 1500, tailChars: 1500

Sous-clés hardClear

KeyTypeDescriptionExample
enabledBooleanSi l'étape de nettoyage complet (hard-clear) est active. Lorsqu'elle est désactivée, seul un nettoyage léger (soft-trim) est appliqué.enabled: true
placeholderStringTexte de remplacement qui remplace le contenu complet du résultat de l'outil lorsqu'il est effacé.placeholder: "[Old tool result content cleared]"

Valeurs par défaut : enabled: true, placeholder: "[Old tool result content cleared]"

Exemple :

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]'

Exemple de configuration complète

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]'

Migration depuis les paramètres par endpoint

Si vous utilisiez précédemment summarize et summaryModel sur des endpoints personnalisés ou Azure OpenAI :

endpoints:
  custom:
    - name: 'My Endpoint'
      summarize: true
      summaryModel: 'gpt-3.5-turbo'

Ces champs ont été supprimés. Utilisez plutôt la configuration summarization au niveau supérieur :

summarization:
  model: 'gpt-4o-mini'

Notes

  • La synthèse est configurée globalement plutôt que par endpoint.
  • Les champs summarize et summaryModel sur les endpoints personnalisés et les endpoints Azure OpenAI ne sont plus pris en charge.
  • Lorsque provider et model sont omis, le fournisseur et le modèle propres à l'agent sont utilisés pour la synthèse.
  • Le nettoyage du contexte (context pruning) est désactivé par défaut et doit être explicitement activé avec contextPruning.enabled: true
  • Le nettoyage de contexte (context pruning) n'affecte que les résultats d'appels d'outils qui dépassent minPrunableToolChars — les résultats plus petits ne sont jamais nettoyés.
  • Le paramètre keepLastAssistants protège les tours récents de la suppression, indépendamment des ratios de découpage/effacement.
  • Les valeurs personnalisées prompt et updatePrompt remplacent entièrement les prompts intégrés — à utiliser avec précaution
  • Définissez AGENT_DEBUG_LOGGING=true dans votre fichier .env pour activer la journalisation détaillée du nombre de jetons et des diagnostics de réduction de contexte.

Que pensez-vous de ce guide ?