Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Naarmate gesprekken toenemen, kan het tokenaantal van de chatgeschiedenis de modelcontextvensters overschrijden of de kosten verhogen. Compressiestrategieën verminderen de grootte van de gespreksgeschiedenis met behoud van belangrijke context, zodat agents kunnen blijven functioneren via langdurige interacties.
Belangrijk
Het compressieframework is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable MAAI001.
Belangrijk
Het compressieframework is momenteel experimenteel in Python. Strategieën importeren uit agent_framework._compaction.
Waarom compressie belangrijk is
Elke oproep naar een LLM bevat de volledige gespreksgeschiedenis. Zonder compressie:
- Tokenlimieten : gesprekken overschrijden uiteindelijk het contextvenster van het model, wat fouten veroorzaakt.
- Kosten : grotere prompts verbruiken meer tokens, waardoor de API-kosten toenemen.
- Latentie : meer invoertokens betekenen tragere reactietijden.
Compressie lost deze problemen op door selectief oudere delen van het gesprek te verwijderen, samen te vouwen of samen te vatten.
Basisconcepten
Toepasselijkheid: alleen voor in-memory geschiedenisagenten
Compressie is alleen van toepassing op agents die hun eigen gespreksgeschiedenis in het geheugen beheren. Agents die afhankelijk zijn van door de service beheerde context of gespreksstatus, profiteren niet van compressie omdat de service al contextbeheer afhandelt. Voorbeelden van door de service beheerde agents zijn:
- Foundry Agents : context wordt beheerd aan de serverzijde van de Azure AI Foundry-service.
- Antwoord-API waarvoor Store is ingeschakeld (de standaardinstelling): de gespreksstatus wordt opgeslagen en beheerd door de OpenAI-service.
- Copilot Studio-agents : gesprekscontext wordt onderhouden door de Copilot Studio-service.
Voor deze agenttypen heeft het configureren van een compressiestrategie geen effect. Compressie is alleen relevant wanneer de agent een eigen berichtenlijst in het geheugen onderhoudt en de volledige geschiedenis doorgeeft aan het model voor elke aanroep.
Compressie werkt op een MessageIndex — een gestructureerde weergave van de platte berichtenlijst die berichten groepeert in atomische eenheden, genaamd MessageGroup exemplaren. Elke groep houdt het aantal berichten, het aantal byte en het geschatte aantal tokens bij.
Berichtgroepen
A MessageGroup vertegenwoordigt logisch gerelateerde berichten die samen moeten worden bewaard of verwijderd. Een assistentbericht met hulpprogrammaaanroepen en de bijbehorende berichten over het resultaat van het hulpprogramma vormen bijvoorbeeld een atomische groep. Als u een bericht verwijdert zonder de andere, zou dat fouten met de LLM-API veroorzaken.
Elke groep heeft een MessageGroupKind:
| Kind | Beschrijving |
|---|---|
System |
Een of meer systeemberichten. Altijd behouden tijdens verdichting. |
User |
Eén gebruikersbericht waarmee een nieuwe beurt wordt gestart. |
AssistantText |
Een eenvoudig assistent-antwoord (geen hulpfunctie-oproepen). |
ToolCall |
Een assistentbericht met hulpprogrammaaanroepen en de bijbehorende berichten over hulpprogrammaresultaten, behandeld als een atomische eenheid. |
Summary |
Een verkort bericht dat wordt geproduceerd door samenvattingscompressie. |
Triggers
A CompactionTrigger is een gemachtigde die evalueert of compressie moet worden voortgezet op basis van de huidige MessageIndex metrische gegevens:
public delegate bool CompactionTrigger(MessageIndex index);
De CompactionTriggers klasse biedt veelgebruikte factorymethoden:
| Aanleiding | Wordt geactiveerd wanneer |
|---|---|
CompactionTriggers.Always |
Elke keer (onvoorwaardelijke) |
CompactionTriggers.Never |
Nooit (schakelt compressie uit). |
CompactionTriggers.TokensExceed(maxTokens) |
Het aantal opgenomen tokens overschrijdt de drempelwaarde. |
CompactionTriggers.MessagesExceed(maxMessages) |
Het aantal opgenomen berichten overschrijdt de drempelwaarde. |
CompactionTriggers.TurnsExceed(maxTurns) |
Het aantal gebruikersbeurten overschrijdt de drempelwaarde. |
CompactionTriggers.GroupsExceed(maxGroups) |
Het opgenomen aantal groepen overschrijdt de drempelwaarde. |
CompactionTriggers.HasToolCalls() |
Er bestaat ten minste één niet-uitgesloten groep voor het aanroepen van hulpprogramma's. |
Triggers combineren met CompactionTriggers.All(...) (logische AND) of CompactionTriggers.Any(...) (logische OF):
// Compact only when there are tool calls AND tokens exceed 2000
CompactionTrigger trigger = CompactionTriggers.All(
CompactionTriggers.HasToolCalls(),
CompactionTriggers.TokensExceed(2000));
Trigger versus doel
Elke strategie heeft twee predicaten:
-
Trigger : hiermee bepaalt u wanneer de compressie begint. Als de trigger
falseretourneert, wordt de strategie volledig overgeslagen. -
Doel — Regelt wanneer compacte stopt. Strategieën sluiten incrementeel groepen uit en evalueren het doel na elke stap opnieuw, stoppen zodra het doel retourneert
true.
Wanneer er geen doel is opgegeven, wordt standaard de inverse van de triggerconditie gebruikt. Compactie stopt zodra de triggervoorwaarde niet meer wordt geactiveerd.
Compressie werkt op een platte lijst Message met objecten. Berichten worden geannoteerd met lichtgewicht groepsmetagegevens en strategieën muteren deze aantekeningen om groepen te markeren als uitgesloten voordat de berichtenlijst naar het model wordt geprojecteerd.
Berichtgroepen
Berichten worden gegroepeerd in atomische eenheden. Aan elke groep wordt een GroupKind:
| Kind | Beschrijving |
|---|---|
system |
Systeemberichten. Altijd behouden tijdens compactie. |
user |
Eén gebruikersbericht. |
assistant_text |
Een eenvoudige assistent tekstreactie (geen functie-aanroepen). |
tool_call |
Een assistentbericht met functieaanroepen plus de bijbehorende berichten van het resultaat van de tool, behandeld als een ondeelbare eenheid. |
Compressiestrategieën
A CompactionStrategy is een protocol: elk async aanroepbaar dat een list[Message] accepteert en het ter plekke muteert, retourneert True wanneer het iets wijzigt:
class CompactionStrategy(Protocol):
async def __call__(self, messages: list[Message]) -> bool: ...
Tokenizer
Tokenbewuste strategieën accepteren een TokenizerProtocol implementatie. De ingebouwde CharacterEstimatorTokenizer maakt gebruik van een heuristiek van 4 tekens per token:
from agent_framework._compaction import CharacterEstimatorTokenizer
tokenizer = CharacterEstimatorTokenizer()
Geef een aangepaste tokenizer door wanneer u nauwkeurige tokenaantallen nodig hebt voor de codering van een specifiek model.
Compressiestrategieën
Alle strategieën nemen over van de abstracte CompactionStrategy basisklasse. Elke strategie behoudt systeemberichten en respecteert een MinimumPreserved vloer die de meest recente niet-systeemgroepen beschermt tegen verwijdering.
Compressiestrategieën worden geïmporteerd uit agent_framework._compaction.
TruncationCompactionStrategy
TruncationStrategy
De eenvoudigste aanpak: verwijdert de oudste niet-systeemberichtgroepen totdat aan de doelvoorwaarde wordt voldaan.
- Respecteert de grenzen van atomische groepen (hulpprogramma-aanroep- en resultaatberichten worden samen verwijderd).
- Het beste voor harde tokenbudget backstops.
-
MinimumPreservedwordt standaard ingesteld op32.
// Drop oldest groups when tokens exceed 32K, keeping at least 10 recent groups
TruncationCompactionStrategy truncation = new(
trigger: CompactionTriggers.TokensExceed(0x8000),
minimumPreserved: 10);
- Wanneer er een
tokenizerwordt opgegeven, wordt het aantal tokens als metriek gebruikt; anders wordt het aantal berichten meegeteld. -
preserve_systemwordt standaard ingesteld opTrue.
from agent_framework._compaction import CharacterEstimatorTokenizer, TruncationStrategy
# Exclude oldest groups when tokens exceed 32 000, trimming to 16 000
truncation = TruncationStrategy(
max_n=32_000,
compact_to=16_000,
tokenizer=CharacterEstimatorTokenizer(),
)
SlidingWindowCompactionStrategy
SlidingWindowStrategy
Hiermee verwijdert u oudere gespreksinhoud om alleen het meest recente venster van uitwisselingen te behouden, waarbij logische gesprekseenheden worden gerespecteerd in plaats van willekeurige aantallen berichten. Systeemberichten worden gehandhaafd.
- Het beste voor het voorspelbaar begrenzen van gesprekslengte.
Verwijdert de oudste dialoogbeurten en de bijbehorende antwoordgroepen, die werken op logische grenzen van beurten in plaats van afzonderlijke groepen.
- Een beurt begint met een gebruikersbericht en bevat alle volgende assistent- en hulpprogrammaoproepgroepen tot het volgende gebruikersbericht.
-
MinimumPreservedstandaard op1(behoudt ten minste de meest recente niet-systeemgroep).
// Keep only the last 4 user turns
SlidingWindowCompactionStrategy slidingWindow = new(
trigger: CompactionTriggers.TurnsExceed(4));
Bewaart alleen de meest recente keep_last_groups niet-systeemgroepen, met uitzondering van alles wat ouder is.
-
preserve_systemwordt standaard ingesteld opTrue.
from agent_framework._compaction import SlidingWindowStrategy
# Keep only the last 20 non-system groups
sliding_window = SlidingWindowStrategy(keep_last_groups=20)
ToolResultCompactionStrategy
Hiermee worden oudere groepen voor het aanroepen van hulpprogramma's gecomprimeerd tot compacte overzichtsberichten, waarbij leesbare sporen behouden blijven zonder onnodige berichtoverlast.
- Raakt geen gebruikersberichten of eenvoudige assistentantwoorden aan.
- Het beste als een first-pass-strategie om ruimte vrij te maken van uitgebreide toolresultaten.
- Vervangt oproepgroepen met meerdere berichten (assistentgesprek + resultaten) door een korte samenvatting zoals
[Tool calls: get_weather, search_docs]. -
MinimumPreservedis standaard ingesteld op2, zodat de interacties van de huidige beurt zichtbaar blijven.
// Collapse old tool results when tokens exceed 512
ToolResultCompactionStrategy toolCompaction = new(
trigger: CompactionTriggers.TokensExceed(0x200));
- Wordt samengevouwen tot compacte samenvattingsberichten zoals
[Tool results: get_weather: sunny, 18°C]. - De meest recente
keep_last_tool_call_groupsgroepen voor het aanroepen van hulpprogramma's blijven ongewijzigd.
from agent_framework._compaction import ToolResultCompactionStrategy
# Collapse all but the newest tool-call group
tool_result = ToolResultCompactionStrategy(keep_last_tool_call_groups=1)
SummarizationCompactionStrategie
Samenvattingsstrategie
Hiermee wordt een LLM gebruikt om oudere gedeelten van het gesprek samen te vatten en deze te vervangen door één samenvattingsbericht.
- Een standaardprompt behoudt belangrijke feiten, beslissingen, gebruikersvoorkeuren en resultaten van de aanroep van hulpprogramma's.
- Vereist een afzonderlijke LLM-client voor samenvatting: een kleiner, sneller model wordt aanbevolen.
- Het meest geschikt voor het behouden van gesprekscontext, terwijl het aantal tokens aanzienlijk wordt verminderd.
- U kunt een aangepaste samenvattingsprompt opgeven.
- Beveiligt systeemberichten en de meest recente
MinimumPreservedniet-systeemgroepen (standaard:4). - Verzendt de oudere berichten naar een afzonderlijk
IChatClientmet een samenvattingsprompt en voegt vervolgens de samenvatting in als groepMessageGroupKind.Summary.
// Summarize older messages when tokens exceed 1280, keeping the last 4 groups
SummarizationCompactionStrategy summarization = new(
chatClient: summarizerChatClient,
trigger: CompactionTriggers.TokensExceed(0x500),
minimumPreserved: 4);
U kunt een aangepaste samenvattingsprompt opgeven:
SummarizationCompactionStrategy summarization = new(
chatClient: summarizerChatClient,
trigger: CompactionTriggers.TokensExceed(0x500),
summarizationPrompt: "Summarize the key decisions and user preferences only.");
- Wordt geactiveerd wanneer het aantal niet-systeemberichten groter is dan
target_count + threshold. - Behoudt de nieuwste
target_countberichten; geeft een overzicht van alle oudere berichten. - Hiervoor is een
SupportsChatGetResponseclient vereist.
from agent_framework._compaction import SummarizationStrategy
# Summarize when non-system message count exceeds 6, retaining the 4 newest
summarization = SummarizationStrategy(
client=summarizer_client,
target_count=4,
threshold=2,
)
Geef een aangepaste samenvattingsprompt op:
summarization = SummarizationStrategy(
client=summarizer_client,
target_count=4,
prompt="Summarize the key decisions and user preferences only.",
)
PipelineCompactionStrategy
Stelt meerdere strategieën samen in een sequentiële pijplijn. Elke strategie werkt op het resultaat van de vorige strategie, waardoor gelaagde compressie van zacht tot agressief mogelijk is.
- De eigen trigger van de pijplijn is
CompactionTriggers.Always: elke onderliggende strategie evalueert een eigen trigger onafhankelijk. - Strategieën worden op volgorde uitgevoerd, dus plaats eerst de zachtste strategieën.
PipelineCompactionStrategy pipeline = new(
new ToolResultCompactionStrategy(CompactionTriggers.TokensExceed(0x200)),
new SummarizationCompactionStrategy(summarizerChatClient, CompactionTriggers.TokensExceed(0x500)),
new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(4)),
new TruncationCompactionStrategy(CompactionTriggers.TokensExceed(0x8000)));
Deze pijplijn:
- Hiermee worden oude toolresultaten samengevouwen (zacht).
- Geeft een overzicht van oudere gesprekken (gemiddeld).
- Houdt alleen de laatste vier gebruikersbeurten bij (agressief).
- De oudste groepen worden verwijderd als ze nog steeds boven het budget zijn (noodmaatregel).
SelectieveGereedschapsAanroepCompactieStrategie
Sluit volledig oudere tool-aanroepgroepen uit en houdt alleen de laatste keep_last_tool_call_groups.
- Raakt geen berichten van de gebruiker of platte assistent aan.
- Het beste wanneer toolchatter het tokengebruik overheerst en de volledige hulpprogrammageschiedenis niet nodig is.
from agent_framework._compaction import SelectiveToolCallCompactionStrategy
# Keep only the most recent tool-call group
selective_tool = SelectiveToolCallCompactionStrategy(keep_last_tool_call_groups=1)
TokenBudgetComposedStrategy
Stelt meerdere strategieën samen in een sequentiële pijplijn die wordt aangestuurd door een tokenbudget. Elke kindstrategie wordt in volgorde uitgevoerd en stopt vroeg zodra het budget is gevuld. Een ingebouwde terugval sluit de oudste groepen uit als de strategieën alleen het doel niet kunnen bereiken.
- Strategieën worden op volgorde uitgevoerd; plaats eerst de zachtste strategieën.
-
early_stop=True(de standaardinstelling) stopt zodra aan het tokenbudget is voldaan.
from agent_framework._compaction import (
CharacterEstimatorTokenizer,
SelectiveToolCallCompactionStrategy,
SlidingWindowStrategy,
SummarizationStrategy,
TokenBudgetComposedStrategy,
ToolResultCompactionStrategy,
)
tokenizer = CharacterEstimatorTokenizer()
pipeline = TokenBudgetComposedStrategy(
token_budget=16_000,
tokenizer=tokenizer,
strategies=[
ToolResultCompactionStrategy(keep_last_tool_call_groups=1),
SummarizationStrategy(client=summarizer_client, target_count=4, threshold=2),
SlidingWindowStrategy(keep_last_groups=20),
],
)
Deze pijplijn:
- Hiermee worden oude toolresultaten samengevouwen (zacht).
- Geeft een overzicht van oudere gesprekken (gemiddeld).
- Houdt alleen de laatste 20 groepen (agressief).
- Valt terug op oudste uitsluiting als het budget nog steeds is overschreden (noodstop).
Compressie gebruiken met een agent
Verpakt een compressiestrategie in een CompactionProvider en registreer deze als een AIContextProvider. Geef één strategie of een PipelineCompactionStrategy door aan de constructor.
Registreren bij de builder-API
Registreer de provider op de ChatClientBuilder met behulp van UseAIContextProviders. De provider wordt uitgevoerd in de lus voor het aanroepen van hulpprogramma's, waarbij berichten vóór elke LLM-aanroep worden gecomprimeerd.
IChatClient agentChatClient = openAIClient.GetChatClient(deploymentName).AsIChatClient();
IChatClient summarizerChatClient = openAIClient.GetChatClient(deploymentName).AsIChatClient();
PipelineCompactionStrategy compactionPipeline =
new(
new ToolResultCompactionStrategy(CompactionTriggers.TokensExceed(0x200)),
new SummarizationCompactionStrategy(summarizerChatClient, CompactionTriggers.TokensExceed(0x500)),
new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(4)),
new TruncationCompactionStrategy(CompactionTriggers.TokensExceed(0x8000)));
AIAgent agent =
agentChatClient
.AsBuilder()
.UseAIContextProviders(new CompactionProvider(compactionPipeline))
.BuildAIAgent(
new ChatClientAgentOptions
{
Name = "ShoppingAssistant",
ChatOptions = new()
{
Instructions = "You are a helpful shopping assistant.",
Tools = [AIFunctionFactory.Create(LookupPrice)],
},
});
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine(await agent.RunAsync("What's the price of a laptop?", session));
Aanbeveling
Gebruik een kleiner, goedkoper model (zoals gpt-4o-mini) voor de samenvattingschatclient om de kosten te verlagen terwijl de kwaliteit van de samenvatting behouden blijft.
Als er slechts één strategie nodig is, kunt u deze rechtstreeks aan CompactionProvider doorgeven zonder deze in een PipelineCompactionStrategy:
agentChatClient
.AsBuilder()
.UseAIContextProviders(new CompactionProvider(
new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(20))))
.BuildAIAgent(...);
Registreren via ChatClientAgentOptions
De provider kan ook rechtstreeks worden opgegeven op ChatClientAgentOptions.AIContextProviders:
AIAgent agent = agentChatClient
.AsBuilder()
.BuildAIAgent(new ChatClientAgentOptions
{
AIContextProviders = [new CompactionProvider(compactionPipeline)]
});
Opmerking
Wanneer geregistreerd via ChatClientAgentOptions, wordt de CompactionProviderniet geactiveerd tijdens de lus voor het aanroepen van hulpprogramma's. Contextproviders op agentniveau worden uitgevoerd voordat de chatgeschiedenis wordt opgeslagen, zodat eventuele synthetische samenvattingsberichten die worden geproduceerd door CompactionProvider , deel kunnen uitmaken van de permanente geschiedenis bij gebruik ChatHistoryProvider. Als u alleen de context van de aanvraag tijdens de vlucht wilt comprimeren terwijl de oorspronkelijke opgeslagen geschiedenis behouden blijft, registreert u de provider op de ChatClientBuilder via UseAIContextProviders(...) .
Ad-hoc compressie
CompactionProvider.CompactAsync past een strategie toe op een willekeurige berichtenlijst zonder een actieve agentsessie:
IEnumerable<ChatMessage> compacted = await CompactionProvider.CompactAsync(
new TruncationCompactionStrategy(CompactionTriggers.TokensExceed(8000)),
existingMessages);
CompactionProvider is een contextprovider die compressiestrategieën toepast voor en na elke agentuitvoering. Voeg deze toe naast een geschiedenisprovider in de lijst van context_providers de agent.
-
before_strategy— wordt uitgevoerd vóór de modeloproep, waarbij berichten die al in de context zijn geladen, worden gecomprimeerd. -
after_strategy— wordt uitgevoerd na de modelaanroep, waarbij de berichten die zijn opgeslagen door de geschiedenisprovider worden gecomprimeerd, zodat de volgende beurt kleiner wordt gestart. -
history_source_id— desource_idgeschiedenisprovider waarvan de opgeslagen berichtenafter_strategymoeten worden gecomprimeerd (standaard ingesteld op"in_memory").
Registreren bij een agent
from agent_framework import Agent, CompactionProvider, InMemoryHistoryProvider
from agent_framework._compaction import (
CharacterEstimatorTokenizer,
SlidingWindowStrategy,
SummarizationStrategy,
TokenBudgetComposedStrategy,
ToolResultCompactionStrategy,
)
tokenizer = CharacterEstimatorTokenizer()
pipeline = TokenBudgetComposedStrategy(
token_budget=16_000,
tokenizer=tokenizer,
strategies=[
ToolResultCompactionStrategy(keep_last_tool_call_groups=1),
SummarizationStrategy(client=summarizer_client, target_count=4, threshold=2),
SlidingWindowStrategy(keep_last_groups=20),
],
)
history = InMemoryHistoryProvider()
compaction = CompactionProvider(
before_strategy=pipeline,
history_source_id=history.source_id,
)
agent = Agent(
client=client,
name="ShoppingAssistant",
instructions="You are a helpful shopping assistant.",
context_providers=[history, compaction],
)
session = agent.create_session()
print(await agent.run("What's the price of a laptop?", session=session))
Aanbeveling
Gebruik een kleiner, goedkoper model (zoals gpt-4o-mini) voor de samenvattingsclient om de kosten te verlagen terwijl de kwaliteit van de samenvatting behouden blijft.
Als er slechts één strategie nodig is, geeft u deze rechtstreeks door als before_strategy:
compaction = CompactionProvider(
before_strategy=SlidingWindowStrategy(keep_last_groups=20),
history_source_id=history.source_id,
)
Opgeslagen geschiedenis comprimeren na elke uitvoering
Gebruik after_strategy dit om de berichten die zijn opgeslagen door de geschiedenisprovider te comprimeren, zodat toekomstige beurten beginnen met een beperkte context:
compaction = CompactionProvider(
before_strategy=SlidingWindowStrategy(keep_last_groups=20),
after_strategy=ToolResultCompactionStrategy(keep_last_tool_call_groups=1),
history_source_id=history.source_id,
)
Ad-hoc compressie
apply_compaction past een strategie toe op een willekeurige berichtenlijst buiten een actieve agentsessie:
from agent_framework._compaction import apply_compaction, TruncationStrategy, CharacterEstimatorTokenizer
tokenizer = CharacterEstimatorTokenizer()
compacted = await apply_compaction(
messages,
strategy=TruncationStrategy(
max_n=8_000,
compact_to=4_000,
tokenizer=tokenizer,
),
tokenizer=tokenizer,
)
Een strategie kiezen
| Strategie | Agressiviteit | Context behouden | Vereist LLM | Het beste voor |
|---|---|---|---|---|
ToolResultCompactionStrategy |
Laag | Hoog: alleen de uitkomsten van hulpprogramma's samenvouwen | No | Ruimte vrijmaken van uitgebreide tooluitvoer |
SummarizationCompactionStrategy |
Gemiddeld | Gemiddeld : vervangt de geschiedenis door een samenvatting | Ja | Lange gesprekken waarbij context belangrijk is |
SlidingWindowCompactionStrategy |
Hoog | Laag — slaat volledige beurten over | No | Vaste limieten voor het aantal draaiingen |
TruncationCompactionStrategy |
Hoog | Laag — laat oudste groepen vallen | No | Backstops voor noodtokenbudget |
PipelineCompactionStrategy |
Configurable | Afhankelijk van onderliggende strategieën | Dat hangt ervan af. | Gelaagde verdichting met meerdere terugvallen |
| Strategie | Agressiviteit | Context behouden | Vereist LLM | Het beste voor |
|---|---|---|---|---|
ToolResultCompactionStrategy |
Laag | Hoog - vat de resultaten van het tool samen in overzichtsberichten | No | Ruimte vrijmaken van uitgebreide tooluitvoer |
SelectiveToolCallCompactionStrategy |
Laag-gemiddeld | Gemiddeld — sluit volledig oude 'tool-call groepen' uit | No | Hulpprogrammageschiedenis verwijderen wanneer resultaten niet meer nodig zijn |
SummarizationStrategy |
Gemiddeld | Gemiddeld : vervangt de geschiedenis door een samenvatting | Ja | Lange gesprekken waarbij context belangrijk is |
SlidingWindowStrategy |
Hoog | Laag — laat oudste groepen vallen | No | Strikte limieten voor het aantal groepen |
TruncationStrategy |
Hoog | Laag — laat oudste groepen vallen | No | Noodbericht- of tokenbudget-achtervang |
TokenBudgetComposedStrategy |
Configurable | Afhankelijk van kindstrategieën | Dat hangt ervan af. | Gelaagde compactie met een tokenbudgetdoel en meerdere terugvalopties |