Agentic Context Engineering (ACE) - Evolving contexts for self-improving language models
Project description
ACE Context Engineering
Self-improving AI agents through evolving playbooks. Wrap any LangChain agent with ACE to enable learning from experience without fine-tuning.
Based on research: Agentic Context Engineering (Stanford/SambaNova, 2025)
What is ACE?
ACE enables AI agents to learn and improve by accumulating strategies in a "playbook" - a knowledge base that grows smarter with each interaction.
Key Benefits
- +17% task performance improvement
- 82% faster adaptation to new domains
- 75% lower computational cost vs fine-tuning
- Zero model changes - works with any LLM
Installation
# Default (FAISS vector store)
pip install ace-context-engineering
# With ChromaDB support
pip install ace-context-engineering[chromadb]
Environment Setup:
# Copy example environment file
cp .env.example .env
# Add your API key
echo "OPENAI_API_KEY=your-key-here" >> .env
Quick Start
3-Step Integration
from ace import ACEConfig, ACEAgent, PlaybookManager
from langchain.chat_models import init_chat_model
# 1. Configure ACE
config = ACEConfig(
playbook_name="my_app",
vector_store="faiss",
top_k=10
)
playbook = PlaybookManager(
playbook_dir=config.get_storage_path(),
vector_store=config.vector_store,
embedding_model=config.embedding_model
)
# 2. Wrap your agent
base_agent = init_chat_model("openai:gpt-4o-mini")
agent = ACEAgent(
base_agent,
playbook,
config,
auto_inject=True # Automatic context injection
)
# 3. Use normally - ACE handles context automatically!
response = agent.invoke([
{"role": "user", "content": "Process payment for order #12345"}
])
Add Knowledge to Playbook
# Add strategies manually
playbook.add_bullet(
content="Always validate order exists before processing payment",
section="Payment Processing"
)
playbook.add_bullet(
content="Log all failed transactions with error codes",
section="Error Handling"
)
Learning from Feedback
from ace import Reflector, Curator
# Initialize learning components
reflector = Reflector(
model=config.chat_model,
storage_path=config.get_storage_path()
)
curator = Curator(
playbook_manager=playbook,
storage_path=config.get_storage_path()
)
# Provide feedback
feedback = {
"rating": "positive",
"comment": "Payment processed successfully"
}
# Analyze and learn
insight = reflector.analyze_feedback(chat_data, feedback)
delta = curator.process_insights(insight, feedback_id)
curator.merge_delta(delta)
# Playbook automatically improves!
Architecture
Your Agent ← Any LangChain agent
(Generator)
ACEAgent ← Automatic context injection
Wrapper
Playbook ← Semantic knowledge retrieval
Manager
Reflector ← Analyzes feedback
+ Curator ← Updates playbook
Components
| Component | Purpose | Uses LLM? |
|---|---|---|
| ACEAgent | Wraps your agent, injects context | No |
| PlaybookManager | Stores & retrieves knowledge | No (embeddings only) |
| Reflector | Analyzes feedback, extracts insights | Yes |
| Curator | Updates playbook deterministically | No |
Configuration
from ace import ACEConfig
config = ACEConfig(
playbook_name="my_app", # Unique name for your app
vector_store="faiss", # or "chromadb"
storage_path="./.ace/playbooks", # Default: current directory
chat_model="openai:gpt-4o-mini", # Any LangChain model
embedding_model="openai:text-embedding-3-small",
temperature=0.3,
top_k=10, # Number of bullets to retrieve
deduplication_threshold=0.9 # Similarity threshold
)
Storage Location
By default, ACE stores playbooks in ./.ace/playbooks/{playbook_name}/ (like .venv):
your-project/
.venv/ ← Virtual environment
.ace/ ← ACE storage
playbooks/
my_app/
faiss_index.bin
metadata.json
playbook.md
your_code.py
Examples
Check the examples/ directory for complete examples:
- agent_with_create_agent.py - Using create_agent (LangChain 1.0)
- basic_usage.py - Wrap an agent with ACE (start here!)
- with_feedback.py - Complete learning cycle
- chromadb_usage.py - Using ChromaDB backend
- custom_prompts.py - Customize Reflector prompts
- custom_top_k.py - Configure top_k retrieval
- env_setup.py - Environment configuration
- manual_control.py - Fine-grained control
Use Cases
1. Customer Support Agents
Learn optimal response patterns from customer feedback.
2. Code Generation
Accumulate best practices and common patterns.
3. Data Analysis
Build domain-specific analysis strategies.
4. Task Automation
Improve workflows based on execution results.
Testing
# Run all tests
uv run pytest tests/ -v
# Run specific test suite
uv run pytest tests/test_e2e_learning.py -v -s
# Run with coverage
uv run pytest tests/ --cov=ace --cov-report=html
All 31 tests passing
Performance
From the research paper (Stanford/SambaNova, 2025):
| Metric | Improvement |
|---|---|
| Task Performance | +17.0% |
| Domain Adaptation | +12.8% |
| Adaptation Speed | 82.3% faster |
| Computational Cost | 75.1% lower |
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Documentation
- Technical Documentation - Implementation details
- Paper Alignment - Research paper verification
- Implementation Summary - Complete technical summary
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Research Paper: Agentic Context Engineering by Zhang et al. (Stanford/SambaNova, 2025)
- Built with: LangChain, FAISS, ChromaDB
Contact
- Author: Prashant Malge
- Email: prashantmalge101@gmail.com
- GitHub: @SuyodhanJ6
- Issues: GitHub Issues
Star this repo if you find it useful!
Project details
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 ace_context_engineering-0.1.0.tar.gz.
File metadata
- Download URL: ace_context_engineering-0.1.0.tar.gz
- Upload date:
- Size: 54.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a463347246f2206b8a3f67dc0b76b701aa9eea5e28302a3318410d06aa643c9
|
|
| MD5 |
94cf9c4860a6a4b49f38133c4e559127
|
|
| BLAKE2b-256 |
bc2c23b54e0b98a465ef5028af25fc68013dff774d8010d1b311358baf77b265
|
File details
Details for the file ace_context_engineering-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ace_context_engineering-0.1.0-py3-none-any.whl
- Upload date:
- Size: 43.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc311fe1873ebff959bc0a8a4683849b3d80b00fb487310c27405d254b13aec9
|
|
| MD5 |
77dfb0c201bd376e02c95b5b690879dc
|
|
| BLAKE2b-256 |
8350c0a3ca1c4ae9280768f547c1d5098dc17d06f59c9c5df6627be8a7e64c43
|