Capabilities¶
The recommended way to add context management to a Pydantic AI agent is via capabilities. No middleware wrappers needed.
Why Capabilities?¶
| Feature | Capabilities | Processor API |
|---|---|---|
| Native pydantic-ai | Yes | Yes |
| Tool output truncation | ContextManagerCapability |
No |
| Auto-detect max_tokens | ContextManagerCapability |
No |
compact() outside run |
ContextManagerCapability |
No |
| Agent-triggered compaction | ContextManagerCapability (with include_compact_tool=True) |
No |
| AgentSpec YAML | Yes | No |
Available Capabilities¶
ContextManagerCapability¶
Full context management — token tracking, auto-compression, tool output truncation:
Python
from pydantic_ai_summarization import ContextManagerCapability
cap = ContextManagerCapability(
max_tokens=100_000, # Auto-detected if None
compress_threshold=0.9, # Compress at 90% usage
max_tool_output_tokens=5000, # Truncate large tool outputs
include_compact_tool=True, # Add compact_conversation tool
)
When include_compact_tool=True, the agent gets a compact_conversation(focus?) tool
that triggers compression on the next model request. The optional focus parameter
guides the summary to prioritize specific topics.
SummarizationCapability¶
LLM-based history compression:
Python
from pydantic_ai_summarization import SummarizationCapability
cap = SummarizationCapability(
trigger=("messages", 50),
keep=("messages", 10),
)
SlidingWindowCapability¶
Zero-cost message trimming:
Python
from pydantic_ai_summarization import SlidingWindowCapability
cap = SlidingWindowCapability(
trigger=("messages", 100),
keep=("messages", 50),
)
LimitWarnerCapability¶
Warn the agent before limits hit:
Python
from pydantic_ai_summarization import LimitWarnerCapability
cap = LimitWarnerCapability(
max_iterations=40,
max_context_tokens=100_000,
max_total_tokens=200_000,
)