Budget limits and cost guardrails for AI agent frameworks (CrewAI, AutoGen, LangGraph)
Project description
agent-cost-guardrails
Budget limits and cost guardrails for AI agent frameworks. Prevents runaway API spend with hard budget enforcement, circuit breakers, and per-agent cost tracking.
Zero infrastructure required -- no gateway, no proxy, no external service. Pure Python middleware that hooks into your framework at the process level.
Features
- Hard budget limits with
BudgetExceededErroron overspend - Per-call token limits and tokens-per-minute rate limiting
- Circuit breaker that trips after N consecutive violations
- Alert callbacks at configurable thresholds (50%, 80%, 100%)
- Cost breakdown by model and agent
- Thread-safe for multi-agent parallel runs
- Bundled pricing for 30+ models (OpenAI, Anthropic, Google, Mistral, DeepSeek, Meta)
- Custom pricing overrides for any model
Supported Frameworks
| Framework | Integration | Hook Mechanism |
|---|---|---|
| CrewAI | CrewAIGuardrails |
@before_llm_call / @after_llm_call |
| AutoGen/AG2 | AutoGenGuardrails |
safeguard_llm_inputs / safeguard_llm_outputs |
| LangGraph | LangGraphGuardrails |
BaseCallbackHandler |
Installation
pip install agent-cost-guardrails
Install with framework-specific extras:
pip install agent-cost-guardrails[crewai] # CrewAI integration
pip install agent-cost-guardrails[autogen] # AutoGen/AG2 integration
pip install agent-cost-guardrails[langgraph] # LangGraph/LangChain integration
pip install agent-cost-guardrails[all] # All frameworks
Quick Start
Context Manager
from agent_cost_guardrails import BudgetGuard
with BudgetGuard(max_usd=5.00) as guard:
# Before each LLM call
guard.pre_call_check(estimated_tokens=2000)
# After each LLM call - record actual usage
guard.post_call_record("gpt-4o", input_tokens=1500, output_tokens=800)
print(guard.cost_report())
Decorator
from agent_cost_guardrails import budget_limit
@budget_limit(max_usd=5.00)
def run_my_agents(guard=None):
guard.pre_call_check()
guard.post_call_record("gpt-4o", input_tokens=1000, output_tokens=500)
return guard.cost_report()
result = run_my_agents()
CrewAI
from agent_cost_guardrails.integrations import CrewAIGuardrails
guards = CrewAIGuardrails(max_usd=5.00, max_tokens_per_call=4096)
guards.install() # Registers hooks globally
crew.kickoff()
print(guards.cost_report())
AutoGen / AG2
from agent_cost_guardrails.integrations import AutoGenGuardrails
guards = AutoGenGuardrails(max_usd=10.00)
guards.wrap_agent(assistant_agent)
guards.wrap_agent(user_proxy_agent)
# Run your chat - budget enforced automatically
print(guards.cost_report())
LangGraph / LangChain
from agent_cost_guardrails.integrations import LangGraphGuardrails
guards = LangGraphGuardrails(max_usd=2.00)
result = graph.invoke(
state,
config={"callbacks": [guards.callback_handler]}
)
print(guards.cost_report())
Alert Callbacks
def my_alert(threshold, current_cost, max_budget):
print(f"ALERT: {threshold*100}% budget used (${current_cost:.2f}/${max_budget:.2f})")
guard = BudgetGuard(
max_usd=10.00,
alert_thresholds=[0.5, 0.8, 1.0],
on_alert=my_alert,
)
Custom Pricing
from agent_cost_guardrails import set_custom_pricing
set_custom_pricing({
"my-fine-tuned-model": {
"input_per_mtok": 5.0, # $5.00 per 1M input tokens
"output_per_mtok": 15.0, # $15.00 per 1M output tokens
}
})
Cost Report
report = guard.cost_report()
# {
# "total_cost_usd": 0.0325,
# "total_input_tokens": 5000,
# "total_output_tokens": 2000,
# "total_calls": 3,
# "budget_usd": 10.0,
# "remaining_usd": 9.9675,
# "cost_by_model": {"gpt-4o": 0.0325},
# "cost_by_agent": {"researcher": 0.02, "writer": 0.0125},
# "tokens_by_model": {"gpt-4o": {"input": 5000, "output": 2000}}
# }
License
MIT -- see LICENSE for details.
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 agent_cost_guardrails-0.1.0.tar.gz.
File metadata
- Download URL: agent_cost_guardrails-0.1.0.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc96a60f1b189eab27f15de26a58a7e577e7848bb92fd2841dcd80561816d2eb
|
|
| MD5 |
7d9e6cbfb92257ea6854e6d57bf6db97
|
|
| BLAKE2b-256 |
14dd989751ed89a0138d5dd3e497b4fba944465a5669d762b2ddbb787a8eaa6a
|
File details
Details for the file agent_cost_guardrails-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agent_cost_guardrails-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0c9e85f6008c3a7dfed1bcc955e322aa9e3ebdcb5a3beec960a005dd54c4c16
|
|
| MD5 |
099b50b8c89df12fb46cbaaf7d658360
|
|
| BLAKE2b-256 |
5043947da316c68a9081c6548c19ad886e5b6648152c232946b63b4f3cdc0f18
|