Astreus

Bağlam

Otomatik sıkıştırma ile uzun konuşmalar için akıllı bağlam yönetimi Güvenilir Astreus agent sistemleri oluşturmak için gereken kurulum kalıplarını, API'leri...

Otomatik sıkıştırma ile uzun konuşmalar için akıllı bağlam yönetimi

Genel Bakış

Astreus'taki otomatik bağlam sıkıştırma, uzun konuşma geçmişlerini otomatik olarak yöneterek akıllı konuşma yönetimi sağlar. Sistem, önemli bilgileri korurken eski mesajları sıkıştırır ve böylece ajanların model token limitlerini aşmadan tutarlı uzun konuşmalar sürdürebilmesini sağlar.

Temel Kullanım

Otomatik konuşma yönetimi elde etmek için otomatik bağlam sıkıştırmayı etkinleştirin:

import { Agent } from '@astreus-ai/astreus';

// Create an agent with auto context compression enabled
const agent = await Agent.create({
  name: 'ContextAwareAgent',
  model: 'gpt-4o',
  autoContextCompression: true  // Enable smart context management
});

// Long conversations are automatically managed
for (let i = 1; i <= 50; i++) {
  const response = await agent.ask(`Tell me fact #${i} about TypeScript`);
  console.log(`Fact ${i}:`, response);
}

// Agent can still reference early conversation through compressed context
const summary = await agent.ask('What was the first fact you told me?');
console.log(summary); // System retrieves from compressed context

Görevlerle Örnek

Otomatik bağlam sıkıştırma, hem doğrudan konuşmalarla hem de görevlerle çalışır:

const agent = await Agent.create({
  name: 'ResearchAgent',
  model: 'gpt-4o',
  autoContextCompression: true,
  memory: true // Often used together with memory
});

// Create multiple related tasks
const task1 = await agent.createTask({
  prompt: "Research the latest trends in AI development"
});

const result1 = await agent.executeTask(task1.id);

const task2 = await agent.createTask({
  prompt: "Based on the research, what are the key opportunities?"
});

const result2 = await agent.executeTask(task2.id);
// Task can reference previous context even if it was compressed

Otomatik bağlam sıkıştırma, ajanların tutarlılığı korurken ve token limitleri içinde kalırken her uzunlukta konuşma ve görevi işleyebilmesini sağlar.

Yapılandırma Seçenekleri

Otomatik bağlam sıkıştırma davranışını şu parametrelerle özelleştirebilirsiniz:

const agent = await Agent.create({
  name: 'CustomContextAgent',
  model: 'gpt-4o',
  autoContextCompression: true,
  
  // Context compression configuration
  maxContextLength: 4000,           // Trigger compression at 4000 tokens
  preserveLastN: 5,                 // Keep last 5 messages uncompressed
  compressionRatio: 0.4,            // Target 40% size reduction
  compressionStrategy: 'hybrid',    // Use hybrid compression strategy
  
  memory: true,
});

Yapılandırma Parametreleri

ParametreTipVarsayılanAçıklama
autoContextCompressionbooleanfalseOtomatik bağlam sıkıştırmayı etkinleştirir
maxContextLengthnumber8000Sıkıştırmanın tetiklendiği token limiti
preserveLastNnumber3Sıkıştırılmadan tutulacak son mesaj sayısı
compressionRationumber0.3Hedef sıkıştırma oranı (0.1 = %90 azaltma)
compressionStrategystring'hybrid'Kullanılacak sıkıştırma algoritması

Sıkıştırma Matematiği

Sıkıştırma oranı, bağlamın ne kadar azaltıldığını belirler:

Compression Ratio=compressed tokensoriginal tokens\text{Compression Ratio} = \frac{\text{compressed tokens}}{\text{original tokens}}

Örneğin, 0.3 oranıyla:

  • Orijinal: 1000 token
  • Sıkıştırılmış: 300 token
  • Azaltma: %70

Token azaltma yüzdesi şu şekilde hesaplanır: Reduction %=(1ratio)×100%\text{Reduction \%} = (1 - \text{ratio}) \times 100\%

compressionRatio = 0.3 ile: Reduction=(10.3)×100%=70%\text{Reduction} = (1 - 0.3) \times 100\% = 70\%

Sıkıştırma Stratejileri

Kullanım senaryonuza en uygun sıkıştırma stratejisini seçin:

'summarize' - Metin Özetleme

  • En uygun: Genel konuşmalar, soru-cevap, tartışmalar
  • Nasıl çalışır: Mesaj gruplarının kısa özetlerini oluşturur
  • Artıları: Bağlam akışını korur, çoğu kullanım senaryosu için uygundur
  • Eksileri: Belirli detayları kaybedebilir
const agent = await Agent.create({
  name: 'SummarizingAgent',
  autoContextCompression: true,
  compressionStrategy: 'summarize',
  preserveLastN: 4
});

'selective' - Önemli Mesaj Seçimi

  • En uygun: Görev odaklı konuşmalar, teknik tartışmalar
  • Nasıl çalışır: Önemli mesajları belirlemek ve korumak için AI kullanır
  • Artıları: Kritik bilgileri sağlam tutar
  • Eksileri: Daha fazla kaynak tüketebilir
const agent = await Agent.create({
  name: 'SelectiveAgent',
  autoContextCompression: true,
  compressionStrategy: 'selective',
  preserveLastN: 3
});

'hybrid' - Birleşik Yaklaşım (Önerilen)

  • En uygun: Çoğu uygulama, dengeli yaklaşım
  • Nasıl çalışır: Özetlemeyi ve seçici korumayı birleştirir
  • Artıları: Bağlam koruma ile verimlilik arasında denge sağlar
  • Eksileri: Önemli bir eksisi yok
const agent = await Agent.create({
  name: 'HybridAgent',
  autoContextCompression: true,
  compressionStrategy: 'hybrid', // Default and recommended
});

Gelişmiş Kullanım

Kullanım Senaryosuna Göre Özel Sıkıştırma Ayarları

Yüksek Frekanslı Konuşmalar

Çok sayıda kısa mesaj içeren chatbot veya etkileşimli ajanlar için:

const chatbot = await Agent.create({
  name: 'Chatbot',
  autoContextCompression: true,
  maxContextLength: 2000,     // Compress more frequently
  preserveLastN: 8,           // Keep more recent messages
  compressionRatio: 0.5,      // More aggressive compression
  compressionStrategy: 'summarize'
});

Uzun Formatlı İçerik Üretimi

Detaylı içerikle çalışan ajanlar için:

const writer = await Agent.create({
  name: 'ContentWriter',
  autoContextCompression: true,
  maxContextLength: 12000,    // Allow longer context
  preserveLastN: 3,           // Keep recent context tight
  compressionRatio: 0.2,      // Gentle compression
  compressionStrategy: 'selective'
});

Teknik Dokümantasyon

Karmaşık teknik tartışmaları ele alan ajanlar için:

const techAgent = await Agent.create({
  name: 'TechnicalAssistant',
  autoContextCompression: true,
  maxContextLength: 6000,
  preserveLastN: 5,           
  compressionRatio: 0.3,      
  compressionStrategy: 'hybrid' // Best for mixed content
});

Bağlam Sıkıştırma Nasıl Çalışır

Sıkıştırma Süreci

1

Token İzleme: Ajan, konuşmadaki toplam token sayısını sürekli izler

2

Tetikleme Noktası: Token sayısı maxContextLength'i aştığında sıkıştırma tetiklenir

3

Mesaj Koruma: Son preserveLastN mesaj sıkıştırılmadan tutulur

4

İçerik Analizi: Eski mesajlar, seçilen stratejiye göre analiz edilir

5

Sıkıştırma: Mesajlar özetlere veya seçkilere dönüştürülür

6

Bağlam Güncelleme: Sıkıştırılmış bağlam, orijinal mesajların yerini alır

Neler Korunur

  • Sistem promptları: Her zaman korunur
  • Son mesajlar: preserveLastN'e göre son N mesaj
  • Önemli bağlam: Sıkıştırma stratejisi tarafından belirlenen kilit bilgiler
  • Sıkıştırılmış özetler: Eski konuşmaların kısaltılmış versiyonları

Örnek Sıkıştırma Akışı

// Before compression (1200 tokens)
[
  { role: 'user', content: 'Tell me about TypeScript' },
  { role: 'assistant', content: 'TypeScript is...' },
  { role: 'user', content: 'What about interfaces?' },
  { role: 'assistant', content: 'Interfaces in TypeScript...' },
  { role: 'user', content: 'Show me an example' },
  { role: 'assistant', content: 'Here\'s an example...' },
]

// After compression (400 tokens)
[
  { role: 'system', content: '[Compressed] User asked about TypeScript basics, interfaces, and examples. Assistant provided comprehensive explanations...' },
  { role: 'user', content: 'Show me an example' },
  { role: 'assistant', content: 'Here\'s an example...' },
]

İzleme ve Hata Ayıklama

Bağlam Penceresi Bilgisi

Mevcut bağlam durumu hakkında ayrıntılar alın:

const contextWindow = agent.getContextWindow();

console.log({
  messageCount: contextWindow.messages.length,
  totalTokens: contextWindow.totalTokens,
  maxTokens: contextWindow.maxTokens,
  utilization: `${contextWindow.utilizationPercentage.toFixed(1)}%`
});

// Check if compression occurred
const hasCompression = contextWindow.messages.some(
  msg => msg.metadata?.type === 'summary'
);
console.log('Context compressed:', hasCompression);

Bağlam Analizi

Optimizasyon fırsatları için bağlamı analiz edin:

const analysis = agent.analyzeContext();

console.log({
  compressionNeeded: analysis.compressionNeeded,
  averageTokensPerMessage: analysis.averageTokensPerMessage,
  suggestedCompressionRatio: analysis.suggestedCompressionRatio
});

Yanıt Tipleri

Bağlam yönetimi metodları, konuşma bağlamını izlemek ve kontrol etmek için ayrıntılı nesneler döndürür.

Bağlam Penceresi Yanıtı

Kullanım metrikleriyle mevcut bağlam penceresini alın:

const window = agent.getContextWindow();

// Response structure:
{
  messages: [
    {
      role: "user",
      content: "How do I use TypeScript?",
      timestamp: Date('2024-01-15T10:00:00Z'),
      tokens: 8
    },
    {
      role: "assistant",
      content: "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript...",
      timestamp: Date('2024-01-15T10:00:05Z'),
      tokens: 50
    }
    // ... more messages
  ],
  totalTokens: 3500,
  maxTokens: 8000,
  utilizationPercentage: 43.75
}

Bağlam Analizi Yanıtı

Mevcut bağlam kullanımını ve sıkıştırma ihtiyaçlarını analiz edin:

const analysis = agent.analyzeContext();

// Response structure:
{
  totalTokens: 6500,
  messageCount: 15,
  averageTokensPerMessage: 433,
  contextUtilization: 0.8125,              // 81.25% of max context used
  compressionNeeded: true,
  suggestedCompressionRatio: 0.5           // Suggest 50% compression
}

Sıkıştırma Sonucu Yanıtı

Bağlamı sıkıştırın ve ayrıntılı sıkıştırma metrikleri alın:

const compression = await agent.compressContext();

// Response structure:
{
  success: true,
  compressedMessages: [
    {
      role: "system",
      content: "Summary: User asked about TypeScript features. Discussed types, interfaces, and generics...",
      timestamp: Date('2024-01-15T10:05:00Z'),
      tokens: 35
    },
    {
      role: "user",
      content: "Can you explain decorators?",
      timestamp: Date('2024-01-15T10:10:00Z'),
      tokens: 8
    }
    // ... compressed messages (8 instead of 15)
  ],
  tokensReduced: 3250,                     // Tokens saved
  compressionRatio: 0.5,                   // 50% reduction achieved
  strategy: "summarize"                    // Strategy used
}

// On failure:
{
  success: false,
  compressedMessages: [],
  tokensReduced: 0,
  compressionRatio: 0,
  error: "Compression failed: Minimum context threshold not reached"
}

Bağlam Özeti Yanıtı

Konuşmanın AI destekli bir özetini oluşturun:

const summary = await agent.generateContextSummary();

// Response structure:
{
  mainTopics: [
    "TypeScript development",
    "API design patterns",
    "Testing strategies"
  ],
  keyEntities: [
    "Express.js",
    "Jest",
    "PostgreSQL",
    "Docker"
  ],
  conversationFlow: "Discussion started with TypeScript setup and configuration. Moved to API design patterns using Express.js. Covered database integration with PostgreSQL. Concluded with comprehensive testing strategies using Jest and continuous integration.",
  importantFacts: [
    "User prefers functional programming style",
    "Project deadline is March 15th, 2024",
    "Must support Node.js 18+",
    "Team size is 5 developers"
  ],
  actionItems: [
    "Set up Jest test framework with coverage reporting",
    "Create API documentation using OpenAPI/Swagger",
    "Configure Docker containers for development environment",
    "Implement CI/CD pipeline with GitHub Actions"
  ]
}

Bağlam Mesajlarını Alma Yanıtı

Tüm bağlam mesajlarını bir dizi olarak alın:

const messages = agent.getContext();
// OR
const messages = agent.getContextMessages();

// Response structure:
[
  {
    role: "user",
    content: "How do I use async/await?",
    timestamp: Date('2024-01-15T09:30:00Z'),
    tokens: 10
  },
  {
    role: "assistant",
    content: "Async/await is syntactic sugar for promises...",
    timestamp: Date('2024-01-15T09:30:15Z'),
    tokens: 85
  }
  // ... more messages
]

Bağlamı Dışa Aktarma Yanıtı

Bağlamı dışa aktarmak bir JSON string döndürür:

const exported = agent.exportContext();

// Response: JSON string
'{"messages":[{"role":"user","content":"...","timestamp":"2024-01-15T10:00:00.000Z","tokens":10},...],"metadata":{"exportedAt":"2024-01-15T11:00:00.000Z","totalTokens":3500}}'

İçe Aktarma/Temizleme Yanıtı

İçe aktarma ve temizleme işlemleri void döndürür:

// Import context
agent.importContext(jsonString);
// Returns: void

// Clear context
agent.clearContext();
// Returns: void

Son güncelleme: 6 Temmuz 2026