Aracılığıyla paylaş


Sıkıştırma

Konuşmalar büyüdükçe sohbet geçmişinin belirteç sayısı model bağlamı pencerelerini aşabilir veya maliyetleri artırabilir. Sıkıştırma stratejileri, önemli bağlamı korurken konuşma geçmişinin boyutunu azaltır, böylece aracılar uzun süre çalışan etkileşimler üzerinde çalışmaya devam edebilir.

Önemli

Sıkıştırma çerçevesi şu anda deneyseldir. Bunu kullanmak için #pragma warning disable MAAI001eklemeniz gerekir.

Önemli

Sıkıştırma çerçevesi şu anda Python'da deneyseldir. agent_framework._compaction'den stratejileri içe aktar.

Sıkıştırma neden önemlidir?

LLM'ye yapılan her çağrı, konuşma geçmişinin tamamını içerir. Sıkıştırma olmadan:

  • Belirteç sınırları — Konuşmalar sonunda modelin bağlam penceresini aşarak hatalara neden olur.
  • Maliyet — Daha büyük istemler daha fazla belirteç tüketerek API maliyetlerini artırır.
  • Gecikme süresi — Daha fazla giriş belirteci, yanıt sürelerinin daha yavaş olduğu anlamına gelir.

Sıkıştırma, konuşmanın eski bölümlerini seçmeli olarak kaldırarak, daraltarak veya özetleyerek bu sorunları çözer.

Temel kavramlar

Uygulanabilirlik: Yalnızca bellek içi geçmiş aracıları

Sıkıştırma yalnızca bellekte kendi konuşma geçmişini yöneten aracılar için geçerlidir. Hizmet tarafından yönetilen bağlam veya konuşma durumu kullanan aracılar, bağlam yönetimi zaten hizmet tarafından sağlandığı için optimizasyondan faydalanmaz. Hizmet tarafından yönetilen aracılara örnek olarak şunlar verilebilir:

  • Foundry Agents — bağlam, Azure AI Foundry hizmeti tarafından sunucu tarafında yönetilir.
  • Depolama etkinleştirilmiş Yanıtlar API'si (varsayılan) — konuşma durumu OpenAI hizmeti tarafından depolanır ve yönetilir.
  • Copilot Studio aracıları — konuşma bağlamı Copilot Studio hizmeti tarafından korunur.

Bu aracı tipleri için bir sıkıştırma stratejisi yapılandırmak etkili olmaz. Sıkıştırma yalnızca aracının kendi bellekteki mesaj listesini koruduğunda ve her çağrıda modele tam geçmişi aktardığında geçerlidir.

Sıkıştırma, düz ileti listesinin, iletileri atomik birimler halinde örnekler olarak adlandırılan MessageGroup şeklinde gruplandıran yapılandırılmış bir görünümü üzerinde MessageIndex çalışır. Her grup ileti sayısını, bayt sayısını ve tahmini belirteç sayısını izler.

İleti grupları

A MessageGroup , birlikte tutulması veya kaldırılması gereken mantıksal olarak ilişkili iletileri temsil eder. Örneğin, araç çağrılarını ve buna karşılık gelen araç sonuç iletilerini içeren bir asistan mesajı atomik bir grup oluşturur ve bunlardan birinin diğerinden bağımsız olarak kaldırılması LLM API hatalarına neden olur.

Her grubun bir MessageGroupKinddeğeri vardır:

Kind Açıklama
System Bir veya daha fazla sistem iletisi. Sıkıştırma sırasında her zaman korunur.
User Yeni bir dönüş başlatan tek bir kullanıcı iletisi.
AssistantText Düz yardımcı yanıt metni (araç çağrısı içermez).
ToolCall Araç çağrıları ve buna karşılık gelen araç sonuç iletileri içeren bir yardımcı ileti, atomik birim olarak değerlendirilir.
Summary Özetleme sıkıştırması tarafından üretilen sıkıştırılmış bir ileti.

Triggers

A CompactionTrigger , sıkıştırmanın geçerli MessageIndex ölçümlere göre devam edip etmeyeceğini değerlendiren bir temsilcidir:

public delegate bool CompactionTrigger(MessageIndex index);

CompactionTriggers sınıfı yaygın fabrika yöntemleri sağlar:

Tetikleyici X olduğunda tetiklenir:
CompactionTriggers.Always Her seferinde (koşulsuz olarak).
CompactionTriggers.Never Hiçbir zaman (sıkıştırmayı devre dışı bırakır).
CompactionTriggers.TokensExceed(maxTokens) Dahil edilen belirteç sayısı eşiği aşıyor.
CompactionTriggers.MessagesExceed(maxMessages) Eklenen ileti sayısı eşiği aşıyor.
CompactionTriggers.TurnsExceed(maxTurns) Eklenen kullanıcı dönüş sayısı, eşik değerini aşıyor.
CompactionTriggers.GroupsExceed(maxGroups) Dahil edilen grup sayısı eşiği aşıyor.
CompactionTriggers.HasToolCalls() En az bir tane dışlanmayan araç çağrı grubu mevcut.

Tetikleyicileri CompactionTriggers.All(...) (mantıksal VE) veya CompactionTriggers.Any(...) (mantıksal VEYA) ile birleştirin:

// Compact only when there are tool calls AND tokens exceed 2000
CompactionTrigger trigger = CompactionTriggers.All(
    CompactionTriggers.HasToolCalls(),
    CompactionTriggers.TokensExceed(2000));

Tetikleyici ve hedef karşılaştırması

Her stratejinin iki koşulu vardır:

  • TetikleyiciSıkıştırmanın ne zaman başladığını denetler. Tetikleyici false döndürürse, strateji tamamen atlanır.
  • Hedef — Sıkıştırmanın ne zaman duracağını denetler. Stratejiler grupları artımlı olarak dışlar ve her adımdan sonra hedefi yeniden değerlendirir, hedef true olarak döndüğünde durur.

Hedef belirtilmediğinde, varsayılan olarak tetikleyicinin tersi olur; sıkıştırma, tetikleyici koşulu artık tetiklenmediği anda durur.

Sıkıştırma, düz bir nesne listesi Message üzerinde çalışır. İletilere hafif grup meta verileriyle ek açıklama eklenir ve stratejiler, ileti listesi modele yansıtılmadan önce grupları dışlanmış olarak işaretlemek için bu ek açıklamaları doğrudan değiştirir.

İleti grupları

İletiler atomik birimler halinde gruplandırılır. Her gruba bir GroupKindatanır:

Kind Açıklama
system Sistem iletileri. Sıkıştırma sırasında her zaman korunur.
user Tek bir kullanıcı iletisi.
assistant_text Basit yardımcı metin yanıtı (işlev çağrısı yok).
tool_call İşlev çağrılarının yanı sıra atomik birim olarak ele alınan ilgili araç sonuç iletilerini içeren bir yardımcı ileti.

Sıkıştırma stratejileri

A CompactionStrategy protokolüdür — herhangi bir async ile çağrılabilen, list[Message] değerini kabul eden ve üzerinde yerinde değişiklikler yapıp bir şeyi değiştirdiğinde True döndüren bir protokol.

class CompactionStrategy(Protocol):
    async def __call__(self, messages: list[Message]) -> bool: ...

Tokenleştirici

Belirteç kullanan stratejiler bir TokenizerProtocol implementasyonu kabul eder. Yerleşik CharacterEstimatorTokenizer, belirteç başına 4 karakter kullanan bir sezgisel yöntem kullanır.

from agent_framework._compaction import CharacterEstimatorTokenizer

tokenizer = CharacterEstimatorTokenizer()

Belirli bir modelin kodlaması için doğru belirteç sayılarına ihtiyacınız olduğunda özel bir belirteç oluşturucu kullanın.

Sıkıştırma stratejileri

Tüm stratejiler soyut CompactionStrategy temel sınıftan devralır. Her strateji, sistem iletilerini korur ve en son sistem-dışı grupların kaldırılmasını önleyen bir MinimumPreserved tabanına saygı gösterir.

Sıkıştırma stratejileri agent_framework._compaction'dan içeri aktarılır.

TruncationCompactionStrategy

TruncationStrategy

En basit yaklaşım: Hedef koşul karşılanıncaya kadar en eski sistem dışı ileti gruplarını kaldırır.

  • Atomik grup sınırlarına saygı gösterir (araç çağrısı ve sonuç iletileri birlikte kaldırılır).
  • Katı belirteç bütçesi sınırlamaları için en iyi.
  • MinimumPreserved varsayılan olarak 32 şeklinde ayarlanır.
// Drop oldest groups when tokens exceed 32K, keeping at least 10 recent groups
TruncationCompactionStrategy truncation = new(
    trigger: CompactionTriggers.TokensExceed(0x8000),
    minimumPreserved: 10);
  • bir tokenizer sağlandığında ölçüm, token sayısıdır; aksi takdirde, içerilen ileti sayısıdır.
  • preserve_system varsayılan olarak True şeklinde ayarlanır.
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

KaydırmaPencereStratejisi

Rastgele ileti sayıları yerine mantıksal konuşma birimlerine saygı duyarak yalnızca en son değişim penceresini tutmak için eski konuşma içeriğini kaldırır. Sistem iletileri her zaman korunur.

  • Konuşma uzunluğunu tahmin edilebilir şekilde sınırlamak için en iyi yöntemdir.

Tek tek gruplar yerine mantıksal dönüş sınırları üzerinde çalışan en eski kullanıcı dönüşlerini ve ilişkili yanıt gruplarını kaldırır.

  • Dönüş, bir kullanıcı iletisiyle başlar ve sonraki kullanıcı iletisine kadar olan tüm yardımcı ve araç arama gruplarını kapsar.
  • MinimumPreserved varsayılan değeridir 1 (en azından en son sistem dışı grubu korur).
// Keep only the last 4 user turns
SlidingWindowCompactionStrategy slidingWindow = new(
    trigger: CompactionTriggers.TurnsExceed(4));

Eski olan her şeyi hariç tutarak yalnızca en son keep_last_groups sistem dışı grupları korur.

  • preserve_system varsayılan olarak True şeklinde ayarlanır.
from agent_framework._compaction import SlidingWindowStrategy

# Keep only the last 20 non-system groups
sliding_window = SlidingWindowStrategy(keep_last_groups=20)

ToolResultCompactionStrategy

Eski araç arama gruplarını sıkıştırılmış özet iletilere daraltır ve tüm ileti yükü olmadan okunabilir bir izleme korur.

  • Kullanıcı iletilerine veya düz yardımcı yanıtlarına dokunmaz.
  • Detaylı araç sonuçlarından alan kazanmak için en etkili başlangıç stratejisi olarak kullanılır.
  • Çok mesajlı araç çağrısı gruplarını (yardımcı çağrı + araç sonuçları) [Tool calls: get_weather, search_docs] gibi kısa bir özetle değiştirir.
  • MinimumPreserved varsayılan olarak 2 ve mevcut oturumdaki araç etkileşimlerinin görünür kalmasını sağlar.
// Collapse old tool results when tokens exceed 512
ToolResultCompactionStrategy toolCompaction = new(
    trigger: CompactionTriggers.TokensExceed(0x200));
  • [Tool results: get_weather: sunny, 18°C] gibi daraltılmış özet iletilere sıkıştırılır.
  • En son keep_last_tool_call_groups araç çağrı grubu değiştirilmeden bırakılır.
from agent_framework._compaction import ToolResultCompactionStrategy

# Collapse all but the newest tool-call group
tool_result = ToolResultCompactionStrategy(keep_last_tool_call_groups=1)

SummarizationCompactionStrategy

Özetleme Stratejisi

Konuşmanın eski bölümlerini özetlemek için LLM kullanır ve bunları tek bir özet iletisiyle değiştirir.

  • Varsayılan istem önemli olguları, kararları, kullanıcı tercihlerini ve araç çağrısı sonuçlarını korur.
  • Özetleme için ayrı bir LLM istemcisi gerekir; daha küçük ve daha hızlı bir model önerilir.
  • Konuşma bağlamını korurken belirteç sayısını önemli ölçüde azaltmak için en iyi yöntemdir.
  • Özel bir özetleme istemi sağlayabilirsiniz.
  • Sistem iletilerini ve en son MinimumPreserved sistem dışı grupları korur (varsayılan: 4).
  • Daha eski mesajları bir özetleme istemiyle ayrı bir IChatClient'ye gönderir, ardından özeti MessageGroupKind.Summary grubu olarak ekler.
// Summarize older messages when tokens exceed 1280, keeping the last 4 groups
SummarizationCompactionStrategy summarization = new(
    chatClient: summarizerChatClient,
    trigger: CompactionTriggers.TokensExceed(0x500),
    minimumPreserved: 4);

Özel bir özetleme istemi sağlayabilirsiniz:

SummarizationCompactionStrategy summarization = new(
    chatClient: summarizerChatClient,
    trigger: CompactionTriggers.TokensExceed(0x500),
    summarizationPrompt: "Summarize the key decisions and user preferences only.");
  • Sistem dışı mesaj sayısı target_count + threshold değerini aştığında tetiklenir.
  • En target_count yeni iletileri korur; eski olan her şeyi özetler.
  • Bir SupportsChatGetResponse istemcisi gerektirir.
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,
)

Özel bir özetleme istemi sağlayın:

summarization = SummarizationStrategy(
    client=summarizer_client,
    target_count=4,
    prompt="Summarize the key decisions and user preferences only.",
)

PipelineCompactionStrategy

Sıralı işlem hattında birden çok strateji oluşturur. Her strateji öncekinin sonucuyla çalışır ve nazikten agresife katmanlı sıkıştırma sağlar.

  • İşlem hattının kendi tetikleyicisi: CompactionTriggers.Always Her alt strateji kendi tetikleyicisini bağımsız olarak değerlendirir.
  • Stratejiler sırayla yürütülür, bu nedenle önce en nazik stratejileri koyun.
PipelineCompactionStrategy pipeline = new(
    new ToolResultCompactionStrategy(CompactionTriggers.TokensExceed(0x200)),
    new SummarizationCompactionStrategy(summarizerChatClient, CompactionTriggers.TokensExceed(0x500)),
    new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(4)),
    new TruncationCompactionStrategy(CompactionTriggers.TokensExceed(0x8000)));

Bu işlem hattı:

  1. Eski araç sonuçlarını daraltıyor (nazik).
  2. Eski konuşma aralıklarını (orta) özetler.
  3. Yalnızca son 4 kullanıcı etkileşimlerini (agresif) tutar.
  4. Eğer bütçeyi aşmaya devam ederse en eski grupları bırakır (acil durum yedek önlemi).

SeçiciAraçÇağırmaYoğunlaştırmaStratejisi

Eski araç çağrı gruplarını tamamen dışlar ve yalnızca son keep_last_tool_call_groups öğesini tutar.

  • Kullanıcı veya düz yardımcı iletilerine dokunmaz.
  • Araç titreşiminin belirteç kullanımına hakim olduğu ve tam araç geçmişinin gerekli olmadığı durumlar için en iyisidir.
from agent_framework._compaction import SelectiveToolCallCompactionStrategy

# Keep only the most recent tool-call group
selective_tool = SelectiveToolCallCompactionStrategy(keep_last_tool_call_groups=1)

TokenBütçeBileşikStrateji

Belirteç bütçesi tarafından yönetilen sıralı işlem hattında birden çok strateji oluşturur. Her alt strateji sırayla çalışır ve bütçe karşılandığında erken durduruluyor. Yerleşik geri dönüş, stratejiler tek başına hedefe ulaşamazsa en eski grupları dışlar.

  • Stratejiler sırayla yürütülür; önce en nazik stratejileri yerleştirin.
  • early_stop=True (varsayılan) belirteç bütçesi dolduğunda hemen durur.
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),
    ],
)

Bu işlem hattı:

  1. Eski araç sonuçlarını daraltıyor (nazik).
  2. Eski konuşma aralıklarını (orta) özetler.
  3. Yalnızca son 20 grubu (agresif) tutar.
  4. Hala bütçeyi aşıyorsa, acil durum önlemi olarak en eskiyi önce dışlamaya geri döner.

Bir aracı kullanarak sıkıştırma

sıkıştırma stratejisini bir CompactionProvider içinde sarmalayın ve bir AIContextProvider olarak kaydedin. Oluşturucuya tek bir strateji veya bir PipelineCompactionStrategy geçirin.

Oluşturucu API'sine kaydolma

UseAIContextProviders kullanarak sağlayıcıyı ChatClientBuilder üzerinde kaydedin. Sağlayıcı, her LLM çağrısından önce iletileri sıkıştırarak araç çağırma döngüsünün içinde çalışır.

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));

Tip

Özetleme sohbet istemcisinin özet kalitesini korurken maliyetleri azaltmak için daha küçük, daha ucuz bir model (örneğin gpt-4o-mini) kullanın.

Yalnızca bir strateji gerekiyorsa, PipelineCompactionStrategy içine sarmalamadan doğrudan CompactionProvider'a geçirin.

agentChatClient
    .AsBuilder()
    .UseAIContextProviders(new CompactionProvider(
        new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(20))))
    .BuildAIAgent(...);

ChatClientAgentOptions aracılığıyla kayıt

Sağlayıcı doğrudan üzerinde ChatClientAgentOptions.AIContextProviders de belirtilebilir.

AIAgent agent = agentChatClient
    .AsBuilder()
    .BuildAIAgent(new ChatClientAgentOptions
    {
        AIContextProviders = [new CompactionProvider(compactionPipeline)]
    });

Uyarı

ChatClientAgentOptions aracılığıyla kaydedildiğinde, araç çağırma döngüsü sırasında CompactionProvider devreye alınmaz. Aracı düzeyinde bağlam sağlayıcıları sohbet geçmişi depolanmadan önce çalışır, böylece tarafından CompactionProvider oluşturulan tüm yapay özet iletiler kullanılırken ChatHistoryProviderkalıcı geçmişin bir parçası olabilir. Özgün depolanmış geçmişi korurken yalnızca uçuş içi istek bağlamını sıkıştırmak için bunun yerine üzerinden sağlayıcıyı ChatClientBuilderUseAIContextProviders(...) kaydedin.

Geçici sıkıştırma

CompactionProvider.CompactAsync etkin aracı oturumu olmadan rastgele bir ileti listesine strateji uygular:

IEnumerable<ChatMessage> compacted = await CompactionProvider.CompactAsync(
    new TruncationCompactionStrategy(CompactionTriggers.TokensExceed(8000)),
    existingMessages);

Her ajanın çalıştırılma işleminden önce ve sonra, CompactionProvider sıkıştırma stratejileri uygulayan bir bağlam sağlayıcısıdır. Ajanın context_providers listesine bir geçmiş sağlayıcıyla birlikte ekleyin.

  • before_strategy — model çağrısından önce çalışır ve bağlama zaten yüklenmiş iletileri sıkıştırır.
  • after_strategy — model çağrısından sonra çalışır ve geçmiş sağlayıcısı tarafından depolanan iletileri sıkıştırarak, sonraki işlem daha az yer kaplayarak başlar.
  • history_source_id — depolanan iletilerin after_strategy sıkıştırılması gereken geçmiş sağlayıcısı (varsayılan olarak "in_memory").

Bir acenteye kayıt olma

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))

Tip

Özetleme istemcisinin özet kalitesini korurken maliyetleri azaltmak için daha küçük, daha ucuz bir model (örneğin gpt-4o-mini) kullanın.

Yalnızca bir strateji gerekiyorsa, doğrudan olarak before_strategygeçirin:

compaction = CompactionProvider(
    before_strategy=SlidingWindowStrategy(keep_last_groups=20),
    history_source_id=history.source_id,
)

Her çalıştırmadan sonra kalıcı veri geçmişini sıkıştırma

Geçmiş sağlayıcısı tarafından depolanan iletileri sıkıştırmak için after_strategy kullanın, böylece gelecekteki dönüşler azaltılmış bir bağlamla başlasın.

compaction = CompactionProvider(
    before_strategy=SlidingWindowStrategy(keep_last_groups=20),
    after_strategy=ToolResultCompactionStrategy(keep_last_tool_call_groups=1),
    history_source_id=history.source_id,
)

Geçici sıkıştırma

apply_compaction etkin aracı oturumu dışındaki rastgele bir ileti listesine strateji uygular:

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,
)

Strateji seçme

Strateji Saldırgan -lık Bağlamı korur LLM gerektirir En iyi kullanım alanı:
ToolResultCompactionStrategy Low Yüksek — yalnızca araç sonuçlarını daraltıyor Hayır Ayrıntılı araç çıktısından alan kazanma
SummarizationCompactionStrategy Orta Orta — geçmişi bir özetle değiştirir Evet Bağlamın önemli olduğu uzun konuşmalar
SlidingWindowCompactionStrategy High Düşük — tüm dönüşleri iptal eder Hayır Sabit dönüş sayısı sınırları
TruncationCompactionStrategy High Düşük — en eski grupları kaldırır Hayır Acil durum belirteci-bütçe destekleri
PipelineCompactionStrategy Configurable Çocuk stratejilerine bağlıdır Depends Birden çok geri dönüş içeren katmanlı sıkıştırma
Strateji Saldırgan -lık Bağlamı korur LLM gerektirir En iyi kullanım alanı:
ToolResultCompactionStrategy Low Yüksek — araç sonuçlarını özet iletilere daraltıyor Hayır Fazla ayrıntılı araç çıkışından alan geri kazanma
SelectiveToolCallCompactionStrategy Düşük–Orta Orta — eski araç çağrı gruplarını tamamen hariç tutar Hayır Sonuçlara artık gerek kalmadığında araç geçmişi kaldırılıyor
SummarizationStrategy Orta Orta — geçmişi bir özetle değiştirir Evet Bağlamın önemli olduğu uzun konuşmalar
SlidingWindowStrategy High Düşük — en eski grupları bırakır Hayır Sabit grup sayısı sınırları
TruncationStrategy High Düşük — en eski grupları siler Hayır Acil durum mesajı veya jeton bütçesi destek önlemleri
TokenBudgetComposedStrategy Configurable Çocuk stratejilerine bağlıdır Depends Belirteç bütçesi hedefi ve birden çok yedek seçenek içeren katmanlı sıkıştırma

Sonraki Adımlar