Adaptive Context Protocol - Multi-resolution data serialization for token-efficient LLM communication
Project description
Adaptive Context Resolution
Multi-resolution data serialization for token-efficient LLM communication.
Overview
Adaptive Context Resolution enables data sources to serve information at multiple resolution levels, dramatically reducing token consumption when communicating with LLMs.
| Level | Name | Description | Typical Tokens |
|---|---|---|---|
| L0 | Existence | Boolean presence check | 1-3 |
| L1 | Summary | Natural language one-liner | 10-30 |
| L2 | Key Facts | Structured essential fields | 50-150 |
| L3 | Full Detail | Complete data | Unbounded |
Results: 88-96% token reduction vs JSON for typical workloads.
Installation
pip install adaptive-context-resolution
With optional dependencies:
pip install adaptive-context-resolution[tiktoken] # Accurate token counting
pip install adaptive-context-resolution[llm] # LLM-assisted summaries
Quick Start
from acp import ACPDocument, ResolutionLevel
# Your data
user = {
"id": "user-123",
"name": "Alice Chen",
"email": "alice@example.com",
"role": "Senior Engineer",
"department": "Platform",
"status": "active",
"skills": ["Python", "Go", "Kubernetes"],
"preferences": {"theme": "dark", "notifications": True}
}
# Create ACP document (auto-generates all levels)
doc = ACPDocument.from_dict(user, entity="user", id="user-123")
# Get data at different resolutions
doc.get(level=ResolutionLevel.L0_EXISTENCE) # "exists"
doc.get(level=ResolutionLevel.L1_SUMMARY) # "Alice Chen, Senior Engineer, Platform, active"
doc.get(level=ResolutionLevel.L2_KEY_FACTS) # {"name": "Alice Chen", "role": "Senior Engineer", ...}
doc.get(level=ResolutionLevel.L3_FULL) # Full data
# Or specify a token budget
doc.get(token_budget=50) # Returns highest level that fits
Token Counts
print(doc.token_counts)
# {'L0': 1, 'L1': 12, 'L2': 45, 'L3': 180}
Custom Level Generation
# Specify which fields matter for L2
doc = ACPDocument.from_dict(
data=user,
entity="user",
id="user-123",
key_fields=["name", "role", "email"],
summary_template="{name} <{email}>"
)
MCP Integration
from acp.mcp import ACPServer, acp_resource
server = ACPServer()
@server.resource("user", key_fields=["name", "role"])
def get_user(user_id: str) -> dict:
return database.get_user(user_id)
# Handle requests with resolution control
result = server.handle_request(
"user",
{"user_id": "123"},
level=ResolutionLevel.L2_KEY_FACTS
)
ACP Format Output
print(doc.to_acp_format())
@acp 1.0
@entity: user
@id: user-123
L0: exists
L1: "Alice Chen, Senior Engineer, Platform, active"
L2:
name: Alice Chen
role: Senior Engineer
department: Platform
status: active
L3:
{"id": "user-123", "name": "Alice Chen", ...}
@meta:
tokens: {L0: 1, L1: 12, L2: 45, L3: 180}
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! Please read our contributing guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file adaptive_context_resolution-0.1.1.tar.gz.
File metadata
- Download URL: adaptive_context_resolution-0.1.1.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d2798998c14ef52441d04ec7f3d62b20d07bccec932f65a97e3219d0e44ea17
|
|
| MD5 |
82410728697ffa5753f4a9e9025b8b60
|
|
| BLAKE2b-256 |
59c676e202e03c1e3dec2062e148257519c12d266782b512b79e14badd16501f
|
Provenance
The following attestation bundles were made for adaptive_context_resolution-0.1.1.tar.gz:
Publisher:
publish.yml on bhansa/adaptive-context-resolution
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adaptive_context_resolution-0.1.1.tar.gz -
Subject digest:
3d2798998c14ef52441d04ec7f3d62b20d07bccec932f65a97e3219d0e44ea17 - Sigstore transparency entry: 925539089
- Sigstore integration time:
-
Permalink:
bhansa/adaptive-context-resolution@4607f93b5fb538ee4910f7f563d2da4a3001a42a -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/bhansa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4607f93b5fb538ee4910f7f563d2da4a3001a42a -
Trigger Event:
release
-
Statement type:
File details
Details for the file adaptive_context_resolution-0.1.1-py3-none-any.whl.
File metadata
- Download URL: adaptive_context_resolution-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22880b140a3c73a9da71665c503e24241655a7037c98eacd2a4f7962714dafcd
|
|
| MD5 |
6ac5e688b4b70cfa572a80326710539c
|
|
| BLAKE2b-256 |
eac0c1644543ffaaf21b3d6304b6dedb3ab8319c613caf1137e969993f4467a3
|
Provenance
The following attestation bundles were made for adaptive_context_resolution-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on bhansa/adaptive-context-resolution
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adaptive_context_resolution-0.1.1-py3-none-any.whl -
Subject digest:
22880b140a3c73a9da71665c503e24241655a7037c98eacd2a4f7962714dafcd - Sigstore transparency entry: 925539090
- Sigstore integration time:
-
Permalink:
bhansa/adaptive-context-resolution@4607f93b5fb538ee4910f7f563d2da4a3001a42a -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/bhansa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4607f93b5fb538ee4910f7f563d2da4a3001a42a -
Trigger Event:
release
-
Statement type: