Managing and Reducing Costs › Measuring Cost Optimization Impact
Michael BrenndoerferAugust 26, 20252 min read
AI Agent HandbookAll chapters Part 15 of 15Performance and Cost Optimization - Doing More with Less
Managing and Reducing Costs › Measuring Cost Optimization ImpactOne section · Sections in this chapter11 / 15 ↓
Sections in this chapter15
As you apply these strategies, track the results. Here's a comprehensive cost analysis tool:
In[12]:
Codeimport os
from anthropic import Anthropic
from datetime import datetime
import statistics
class CostAnalyzer:
"""Analyze and compare costs across different optimization strategies."""
def __init__(self):
self.client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
self.baseline_costs = []
self.optimized_costs = []
def _calculate_cost(self, usage):
"""Calculate cost from token usage."""
input_cost = (usage.input_tokens / 1_000_000) * 3.00
output_cost = (usage.output_tokens / 1_000_000) * 15.00
return input_cost + output_cost
def run_baseline(self, queries):
"""Run queries without optimization."""
print("Running baseline (no optimization)...")
for query in queries:
response = self.client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024, # No limits
messages=[{"role": "user", "content": query}]
)
cost = self._calculate_cost(response.usage)
self.baseline_costs.append(cost)
def run_optimized(self, queries):
"""Run queries with optimization."""
print("Running optimized version...")
system_prompt = """You are a helpful assistant. Provide concise, direct answers.
Use 1-2 sentences for simple questions."""
for query in queries:
response = self.client.messages.create(
model="claude-sonnet-4-5",
max_tokens=200, # Limited
system=system_prompt,
messages=[{"role": "user", "content": query}]
)
cost = self._calculate_cost(response.usage)
self.optimized_costs.append(cost)
def generate_report(self):
"""Generate cost comparison report."""
baseline_total = sum(self.baseline_costs)
optimized_total = sum(self.optimized_costs)
savings = baseline_total - optimized_total
savings_percent = (savings / baseline_total) * 100
baseline_avg = statistics.mean(self.baseline_costs)
optimized_avg = statistics.mean(self.optimized_costs)
report = f"""
=== Cost Optimization Report ===
Baseline (No Optimization):
Total cost: ${baseline_total:.4f}
Average per query: ${baseline_avg:.6f}
Number of queries: {len(self.baseline_costs)}
Optimized:
Total cost: ${optimized_total:.4f}
Average per query: ${optimized_avg:.6f}
Number of queries: {len(self.optimized_costs)}
Savings:
Total saved: ${savings:.4f}
Percentage saved: {savings_percent:.1f}%
Projected Monthly Savings (at 10,000 queries/month):
${savings * (10000 / len(self.baseline_costs)):.2f}
"""
return report
## Run the analysis
analyzer = CostAnalyzer()
test_queries = [
"What is Python?",
"What is JavaScript?",
"What is machine learning?",
"What are neural networks?",
"What is deep learning?",
"What is natural language processing?",
"What are transformers?",
"What is computer vision?",
"What is reinforcement learning?",
"What is data science?"
]
analyzer.run_baseline(test_queries)
analyzer.run_optimized(test_queries)
print(analyzer.generate_report())Out[12]:
ConsoleRunning baseline (no optimization)...
Running optimized version...
=== Cost Optimization Report === Baseline (No Optimization): Total cost: $0.0424 Average per query: $0.004239 Number of queries: 10 Optimized: Total cost: $0.0092 Average per query: $0.000919 Number of queries: 10 Savings: Total saved: $0.0332 Percentage saved: 78.3% Projected Monthly Savings (at 10,000 queries/month): $33.20
This gives you concrete numbers showing the impact of your optimizations. You might find that simple changes save 40-60% on costs.