mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
3e03a305f6
* Implement annotation-based context compaction Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Handle missing compaction attributes in BaseChatClient Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix CI typing and bandit issues Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Optimize incremental compaction annotation pass Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * refinement * Python: add ToolResultCompactionStrategy and CompactionProvider Add ToolResultCompactionStrategy that collapses older tool-call groups into short summary messages (e.g. [Tool calls: get_weather]) while keeping the most recent groups verbatim. This mirrors the .NET ToolResultCompactionStrategy from PR #4533. Add CompactionProvider as a context-provider that auto-applies compaction before each agent turn and stores compacted history in session state after each turn. Includes tests and samples for both features. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * refinement and alignment with dotnet PR * updated tool result compaction * updated tool result compaction * Python: add ToolResultCompactionStrategy, CompactionProvider, and skip_excluded - ToolResultCompactionStrategy collapses older tool-call groups into [Tool results: func_name: result] summaries with bidirectional tracing (same pattern as SummarizationStrategy). - CompactionProvider as BaseContextProvider with separate before_strategy and after_strategy parameters. before_strategy compacts loaded context; after_strategy compacts stored history via history_source_id. - InMemoryHistoryProvider gains skip_excluded flag to filter out messages marked as excluded by compaction strategies. - Tests, samples, and exports updated. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fixed checks * fix mypy * Fix: ensure summary messages from both strategies get full compaction annotations SummarizationStrategy was not calling annotate_message_groups after inserting its summary message, so the summary lacked core group annotations (id, kind, index, has_reasoning, _excluded). Added the missing call. ToolResultCompactionStrategy already had it. Added tests verifying both strategies produce fully annotated summaries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * updated propagation * fix mypy --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
24 lines
1.1 KiB
Markdown
24 lines
1.1 KiB
Markdown
# Context Compaction Samples
|
|
|
|
This folder demonstrates context compaction patterns introduced by ADR-0019.
|
|
|
|
## Files
|
|
|
|
- `basics.py` — builds a local message list and applies each built-in strategy one at a time.
|
|
- `advanced.py` — composes multiple strategies with `TokenBudgetComposedStrategy`.
|
|
- `agent_client_overrides.py` — shows client defaults, agent-level overrides, and per-run compaction overrides.
|
|
- `custom.py` — defines a custom strategy implementing the `CompactionStrategy` protocol.
|
|
- `tiktoken_tokenizer.py` — shows a `TokenizerProtocol` implementation backed by `tiktoken`.
|
|
- `compaction_provider.py` — uses `CompactionProvider` with an agent and `InMemoryHistoryProvider`.
|
|
|
|
Run samples with:
|
|
|
|
```bash
|
|
uv run samples/02-agents/compaction/basics.py
|
|
uv run samples/02-agents/compaction/advanced.py
|
|
uv run samples/02-agents/compaction/agent_client_overrides.py
|
|
uv run samples/02-agents/compaction/custom.py
|
|
uv run samples/02-agents/compaction/tiktoken_tokenizer.py
|
|
uv run samples/02-agents/compaction/compaction_provider.py # requires OPENAI_API_KEY
|
|
```
|