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 contextGö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 compressedOtomatik 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
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
autoContextCompression | boolean | false | Otomatik bağlam sıkıştırmayı etkinleştirir |
maxContextLength | number | 8000 | Sıkıştırmanın tetiklendiği token limiti |
preserveLastN | number | 3 | Sıkıştırılmadan tutulacak son mesaj sayısı |
compressionRatio | number | 0.3 | Hedef sıkıştırma oranı (0.1 = %90 azaltma) |
compressionStrategy | string | '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:
Ö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:
compressionRatio = 0.3 ile:
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
Token İzleme: Ajan, konuşmadaki toplam token sayısını sürekli izler
Tetikleme Noktası: Token sayısı maxContextLength'i aştığında sıkıştırma tetiklenir
Mesaj Koruma: Son preserveLastN mesaj sıkıştırılmadan tutulur
İçerik Analizi: Eski mesajlar, seçilen stratejiye göre analiz edilir
Sıkıştırma: Mesajlar özetlere veya seçkilere dönüştürülür
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: voidSon güncelleme: 6 Temmuz 2026
Bu bölümde
Giriş
Gerçek dünya görevlerini etkili biçimde çözen otonom sistemler kurmak için açık kaynaklı AI ajan framework'ü.
Kurulum
Astreus'u npm, yarn veya pnpm ile kurun, gerekli Node.js sürümünü doğrulayın ve framework ile AI ajanları oluşturmak için yerel bir proje hazırlayın.
Hızlı Başlangıç
2 dakikadan kısa sürede Astreus ile ilk AI ajanınızı oluşturun Güvenilir Astreus agent sistemleri oluşturmak için gereken kurulum kalıplarını, API'leri ve...
Ajan
Modüler yetenekler ve decorator tabanlı kompozisyona sahip temel AI varlığı Güvenilir Astreus agent sistemleri oluşturmak için gereken kurulum kalıplarını,...