Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
-
Tetikleyici — Sıkıştırmanın ne zaman başladığını denetler. Tetikleyici
falsedö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
trueolarak 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.
-
MinimumPreservedvarsayılan olarak32ş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
tokenizersağlandığında ölçüm, token sayısıdır; aksi takdirde, içerilen ileti sayısıdır. -
preserve_systemvarsayılan olarakTrueş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.
-
MinimumPreservedvarsayılan değeridir1(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_systemvarsayılan olarakTrueş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. -
MinimumPreservedvarsayılan olarak2ve 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_groupsaraç ç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
MinimumPreservedsistem dışı grupları korur (varsayılan:4). - Daha eski mesajları bir özetleme istemiyle ayrı bir
IChatClient'ye gönderir, ardından özetiMessageGroupKind.Summarygrubu 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 + thresholddeğerini aştığında tetiklenir. - En
target_countyeni iletileri korur; eski olan her şeyi özetler. - Bir
SupportsChatGetResponseistemcisi 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.AlwaysHer 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ı:
- Eski araç sonuçlarını daraltıyor (nazik).
- Eski konuşma aralıklarını (orta) özetler.
- Yalnızca son 4 kullanıcı etkileşimlerini (agresif) tutar.
- 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ı:
- Eski araç sonuçlarını daraltıyor (nazik).
- Eski konuşma aralıklarını (orta) özetler.
- Yalnızca son 20 grubu (agresif) tutar.
- 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 iletilerinafter_strategysı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 |