AI Agent Context Management: Keeping Important Information
AI Agent Context Management: Keeping Important Information
💡 What You Will Learn
AI Agent Context Management: Keeping Important Information
|:----------|:----------|:--------|:------| | 4K tokens | 0.8s | $0.01 | 96% | | 32K tokens | 2.5s | $0.08 | 89% | | 128K tokens | 8s | $0.32 | 72% |
class SlidingWindowMemory:
"""NConversation"""
def __init__(self, max_rounds=10, max_tokens=4000):
self.max_rounds = max_rounds
self.max_tokens = max_tokens
self.history = []
def add(self, role, content):
self.history.append({"role": role, "content": content})
#
if len(self.history) > self.max_rounds * 2:
self.history = self.history[-(self.max_rounds * 2):]
# Token
while self.count_tokens() > self.max_tokens:
self.history.pop(0)
def get_context(self):
return self.history
def count_tokens(self):
return sum(len(m["content"]) * 1.3 for m in self.history) # 1.3token/
# Conversation
#
#
class SummaryCompressionMemory:
"""Conversation"""
def __init__(self, llm_client, compress_every=5):
self.llm = llm_client
self.compress_every = compress_every
self.summary = ""
self.recent_history = []
def add(self, role, content):
self.recent_history.append({"role": role, "content": content})
if len(self.recent_history) >= self.compress_every:
self._compress()
def _compress(self):
recent_text = "\n".join([f"{m['role']}: {m['content']}" for m in self.recent_history])
prompt = f"1-2\n{recent_text}"
new_summary = self.llm.chat(prompt)
self.summary = f"{self.summary} -> {new_summary}"
self.recent_history = []
def get_context(self):
return [
{"role": "system", "content": f"Conversation{self.summary}"},
*self.recent_history[-3:] # Keep last 3 raw messages
]
#
# 100Conversation5000 tokens -> 200 tokens
# 96%85%
class KeyInfoMemory:
""""""
def __init__(self, key_fields=None):
self.key_fields = key_fields or ["user_name", "role", "preferences", "project"]
self.info_store = {}
self.recent_messages = []
def update_info(self, message):
"""LLM"""
prompt = f"{message}\n{', '.join(self.key_fields)}\nJSON"
extracted = json.loads(self.llm.extract(prompt))
for k, v in extracted.items():
if v: #
self.info_store[k] = v
def get_context(self):
return {
"user_info": self.info_store, # 0 tokens
"recent_history": self.recent_messages[-5:] # 5
}
# 100Conversation -> user_info(~200 tokens) + 5(~500 tokens) = 700 tokens
# 100(~5000 tokens)86% tokens95%+
|:----|:--------|:-------------|
Related Articles
2026-07-26
AI for Business Analysts 2026
2026-07-19
n8n AI Workflow: 5 Real-World Examples
2026-07-22
LangChain vs LangGraph vs CrewAI 2026
Written by our editorial team; tools listed here are tested or verified against public sources. Links point to official sites or GitHub repos for reference only โ no paid placements.
