Khi triển khai AI vào production, chi phí API là yếu tố quyết định sự thành bại của dự án. Trong bài viết này, tôi sẽ chia sẻ cách xây dựng một hệ thống monitoring toàn diện với HolySheep AI — nền tảng API AI với tỷ giá ¥1 = $1, giúp tiết kiệm 85%+ chi phí so với các provider khác. Đăng ký tại đây để bắt đầu.
Tại Sao Cần Hệ Thống Giám Sát Chi Phí?
Qua 3 năm vận hành các hệ thống AI production, tôi đã chứng kiến nhiều team "ngỡ ngàng" khi nhận hóa đơn cuối tháng. Một chatbot đơn giản có thể tiêu tốn $2,000-5,000/tháng nếu không có kiểm soát. Hệ thống monitoring không chỉ giúp bạn tránh "bom" chi phí mà còn phát hiện sớm:
- Request loop vô tận do bug
- Prompt bị lặp không cần thiết
- Context window bị lạm dụng
- Token usage bất thường
Kiến Trúc Tổng Quan
Hệ thống giám sát của tôi gồm 4 thành phần chính:
┌─────────────────────────────────────────────────────────────┐
│ AI API Cost Monitoring │
├─────────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐│
│ │ Request │───▶│ Cost │───▶│ Alert │───▶│Dashboard│
│ │ Interceptor│ │ Calculator│ │ Engine │ │ ││
│ └──────────┘ └──────────┘ └──────────┘ └────────┘│
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ PostgreSQL + Redis Cache │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Triển Khai Chi Tiết
1. Request Interceptor với Cost Tracking
Đầu tiên, tôi tạo một wrapper xung quanh HolySheep AI API để tự động track mọi request. HolySheep cung cấp latency trung bình <50ms, rất lý tưởng cho monitoring real-time.
#!/usr/bin/env python3
"""
AI API Cost Monitor - Production Ready
Author: HolySheep AI Technical Blog
"""
import asyncio
import time
import hashlib
import json
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from typing import Optional, Dict, List, Callable
from collections import defaultdict
import httpx
HolySheep AI Configuration
HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1"
HolySheep AI Pricing 2026 (USD per 1M tokens)
HOLYSHEEP_PRICING = {
"gpt-4.1": {"input": 8.00, "output": 8.00},
"claude-sonnet-4.5": {"input": 15.00, "output": 15.00},
"gemini-2.5-flash": {"input": 2.50, "output": 2.50},
"deepseek-v3.2": {"input": 0.42, "output": 0.42}, # Best cost efficiency!
}
Default HolySheep API Key
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
@dataclass
class TokenUsage:
"""Track token consumption for a single request"""
prompt_tokens: int
completion_tokens: int
model: str
timestamp: datetime = field(default_factory=datetime.utcnow)
@property
def total_tokens(self) -> int:
return self.prompt_tokens + self.completion_tokens
def calculate_cost(self) -> float:
"""Calculate cost in USD based on HolySheep pricing"""
pricing = HOLYSHEEP_PRICING.get(self.model, {"input": 0, "output": 0})
input_cost = (self.prompt_tokens / 1_000_000) * pricing["input"]
output_cost = (self.completion_tokens / 1_000_000) * pricing["output"]
return round(input_cost + output_cost, 6)
@dataclass
class RequestMetrics:
"""Metrics for a single API request"""
request_id: str
model: str
latency_ms: float
tokens: TokenUsage
cost_usd: float
status: str
error_message: Optional[str] = None
class CostTracker:
"""
Production-grade cost tracker with real-time aggregation
"""
def __init__(self, api_key: str = HOLYSHEEP_API_KEY):
self.api_key = api_key
self._request_history: List[RequestMetrics] = []
self._daily_costs: Dict[str, float] = defaultdict(float)
self._hourly_costs: Dict[str, float] = defaultdict(float)
self._model_usage: Dict[str, Dict] = defaultdict(lambda: {
"requests": 0, "tokens": 0, "cost": 0.0
})
self._alerts: List[Dict] = []
def _generate_request_id(self, data: str) -> str:
"""Generate unique request ID"""
return hashlib.sha256(
f"{data}{time.time()}".encode()
).hexdigest()[:16]
async def call_holysheep(
self,
model: str,
messages: List[Dict],
max_tokens: int = 2048,
temperature: float = 0.7,
on_cost_alert: Optional[Callable] = None
) -> Dict:
"""
Call HolySheep AI API with automatic cost tracking
"""
request_id = self._generate_request_id(str(messages))
start_time = time.perf_counter()
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
payload = {
"model": model,
"messages": messages,
"max_tokens": max_tokens,
"temperature": temperature
}
try:
async with httpx.AsyncClient(timeout=30.0) as client:
response = await client.post(
f"{HOLYSHEEP_BASE_URL}/chat/completions",
headers=headers,
json=payload
)
latency_ms = (time.perf_counter() - start_time) * 1000
if response.status_code == 200:
data = response.json()
usage = data.get("usage", {})
token_usage = TokenUsage(
prompt_tokens=usage.get("prompt_tokens", 0),
completion_tokens=usage.get("completion_tokens", 0),
model=model
)
cost = token_usage.calculate_cost()
metrics = RequestMetrics(
request_id=request_id,
model=model,
latency_ms=round(latency_ms, 2),
tokens=token_usage,
cost_usd=cost,
status="success"
)
self._record_metrics(metrics)
# Check for cost alerts
if on_cost_alert:
await self._check_alerts(on_cost_alert)
return data
else:
return self._record_error(request_id, model, response.text)
except Exception as e:
latency_ms = (time.perf_counter() - start_time) * 1000
return self._record_error(request_id, model, str(e), latency_ms)
def _record_metrics(self, metrics: RequestMetrics):
"""Record metrics to internal state"""
self._request_history.append(metrics)
# Aggregate daily costs
date_key = metrics.tokens.timestamp.strftime("%Y-%m-%d")
self._daily_costs[date_key] += metrics.cost_usd
# Aggregate hourly costs
hour_key = metrics.tokens.timestamp.strftime("%Y-%m-%d %H:00")
self._hourly_costs[hour_key] += metrics.cost_usd
# Aggregate by model
self._model_usage[metrics.model]["requests"] += 1
self._model_usage[metrics.model]["tokens"] += metrics.tokens.total_tokens
self._model_usage[metrics.model]["cost"] += metrics.cost_usd
# Keep only last 10,000 requests in memory
if len(self._request_history) > 10000:
self._request_history = self._request_history[-5000:]
def _record_error(self, request_id: str, model: str, error: str, latency: float = 0) -> Dict:
"""Record error and return error response"""
metrics = RequestMetrics(
request_id=request_id,
model=model,
latency_ms=latency,
tokens=TokenUsage(0, 0, model),
cost_usd=0.0,
status="error",
error_message=error
)
self._request_history.append(metrics)
return {"error": error, "request_id": request_id}
async def _check_alerts(self, callback: Callable):
"""Check if any alert thresholds are exceeded"""
today = datetime.utcnow().strftime("%Y-%m-%d")
today_cost = self._daily_costs.get(today, 0)
# Check daily budget
if today_cost > 100: # $100/day threshold
await callback({
"type": "daily_budget",
"current_cost": today_cost,
"threshold": 100,
"timestamp": datetime.utcnow().isoformat()
})
def get_daily_cost(self, date: Optional[str] = None) -> float:
"""Get total cost for a specific date"""
if date is None:
date = datetime.utcnow().strftime("%Y-%m-%d")
return round(self._daily_costs.get(date, 0), 4)
def get_hourly_cost(self, hour: Optional[str] = None) -> float:
"""Get total cost for a specific hour"""
if hour is None:
hour = datetime.utcnow().strftime("%Y-%m-%d %H:00")
return round(self._hourly_costs.get(hour, 0), 4)
def get_model_breakdown(self) -> Dict:
"""Get cost breakdown by model"""
return dict(self._model_usage)
def get_cost_report(self) -> Dict:
"""Generate comprehensive cost report"""
today = datetime.utcnow().strftime("%Y-%m-%d")
this_month = datetime.utcnow().strftime("%Y-%m")
monthly_cost = sum(
cost for date, cost in self._daily_costs.items()
if date.startswith(this_month)
)
return {
"today_cost": self.get_daily_cost(today),
"this_month_cost": round(monthly_cost, 4),
"total_requests": len(self._request_history),
"model_breakdown": self.get_model_breakdown(),
"hourly_average": round(
monthly_cost / datetime.utcnow().day if monthly_cost > 0 else 0, 4
)
}
Usage Example
async def main():
tracker = CostTracker()
async def send_alert(alert: Dict):
print(f"🚨 ALERT: {alert}")
# Here you would integrate with Slack, PagerDuty, email, etc.
# Example call to HolySheep AI
response = await tracker.call_holysheep(
model="deepseek-v3.2", # Most cost-effective model!
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, explain token economics."}
],
on_cost_alert=send_alert
)
print("Response:", response)
print("Cost Report:", tracker.get_cost_report())
if __name__ == "__main__":
asyncio.run(main())
2. Alert Engine với Ngưỡng Linh Hoạt
Tôi đã triển khai hệ thống alert đa tầng với khả năng cấu hình linh hoạt:
#!/usr/bin/env python3
"""
Alert Engine for AI API Cost Monitoring
Supports multiple notification channels: Slack, Email, PagerDuty, Webhook
"""
import asyncio
import logging
from enum import Enum
from dataclasses import dataclass
from typing import List, Optional, Callable
from datetime import datetime, timedelta
import httpx
from abc import ABC, abstractmethod
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class AlertSeverity(Enum):
"""Alert severity levels"""
INFO = "info"
WARNING = "warning"
CRITICAL = "critical"
EMERGENCY = "emergency"
@dataclass
class AlertRule:
"""Define alert rule configuration"""
name: str
metric: str # "hourly_cost", "daily_cost", "request_count", "error_rate"
threshold: float
window_minutes: int
severity: AlertSeverity
enabled: bool = True
# Example presets
@staticmethod
def default_rules() -> List["AlertRule"]:
return [
AlertRule(
name="Hourly Budget Warning",
metric="hourly_cost",
threshold=10.0, # $10/hour
window_minutes=60,
severity=AlertSeverity.WARNING
),
AlertRule(
name="Hourly Budget Critical",
metric="hourly_cost",
threshold=25.0, # $25/hour
window_minutes=60,
severity=AlertSeverity.CRITICAL
),
AlertRule(
name="Daily Budget Warning",
metric="daily_cost",
threshold=100.0, # $100/day
window_minutes=1440,
severity=AlertSeverity.WARNING
),
AlertRule(
name="Daily Budget Emergency",
metric="daily_cost",
threshold=500.0, # $500/day - STOP EVERYTHING
window_minutes=1440,
severity=AlertSeverity.EMERGENCY
),
AlertRule(
name="Error Rate Spike",
metric="error_rate",
threshold=5.0, # 5% error rate
window_minutes=15,
severity=AlertSeverity.CRITICAL
),
AlertRule(
name="Latency Degradation",
metric="p99_latency",
threshold=2000.0, # 2000ms
window_minutes=5,
severity=AlertSeverity.WARNING
),
]
class AlertChannel(ABC):
"""Abstract base class for alert channels"""
@abstractmethod
async def send(self, alert: "Alert") -> bool:
pass
class SlackAlertChannel(AlertChannel):
"""Send alerts to Slack"""
def __init__(self, webhook_url: str, channel: str = "#ai-alerts"):
self.webhook_url = webhook_url
self.channel = channel
async def send(self, alert: "Alert") -> bool:
"""Send alert to Slack webhook"""
color_map = {
AlertSeverity.INFO: "#36a64f",
AlertSeverity.WARNING: "#ff9900",
AlertSeverity.CRITICAL: "#ff0000",
AlertSeverity.EMERGENCY: "#8b0000"
}
payload = {
"channel": self.channel,
"attachments": [{
"color": color_map.get(alert.severity, "#36a64f"),
"title": f"🚨 {alert.severity.value.upper()}: {alert.rule_name}",
"text": alert.message,
"fields": [
{"title": "Metric", "value": alert.metric, "short": True},
{"title": "Value", "value": f"${alert.value:.4f}", "short": True},
{"title": "Threshold", "value": f"${alert.threshold:.4f}", "short": True},
],
"footer": "HolySheep AI Cost Monitor",
"ts": alert.timestamp.timestamp()
}]
}
try:
async with httpx.AsyncClient() as client:
response = await client.post(self.webhook_url, json=payload)
return response.status_code == 200
except Exception as e:
logger.error(f"Failed to send Slack alert: {e}")
return False
class WebhookAlertChannel(AlertChannel):
"""Generic webhook channel for custom integrations"""
def __init__(self, url: str, headers: Optional[Dict] = None):
self.url = url
self.headers = headers or {"Content-Type": "application/json"}
async def send(self, alert: "Alert") -> bool:
"""Send alert to custom webhook"""
payload = {
"alert_id": alert.id,
"severity": alert.severity.value,
"rule_name": alert.rule_name,
"metric": alert.metric,
"value": alert.value,
"threshold": alert.threshold,
"message": alert.message,
"timestamp": alert.timestamp.isoformat(),
"recommendation": alert.recommendation
}
try:
async with httpx.AsyncClient() as client:
response = await client.post(
self.url,
json=payload,
headers=self.headers
)
return response.status_code in (200, 201, 202, 204)
except Exception as e:
logger.error(f"Failed to send webhook alert: {e}")
return False
@dataclass
class Alert:
"""Represents a triggered alert"""
id: str
rule_name: str
metric: str
value: float
threshold: float
severity: AlertSeverity
message: str
timestamp: datetime = None
recommendation: str = ""
def __post_init__(self):
if self.timestamp is None:
self.timestamp = datetime.utcnow()
if not self.recommendation:
self.recommendation = self._generate_recommendation()
def _generate_recommendation(self) -> str:
"""Generate actionable recommendation based on alert"""
recommendations = {
("hourly_cost", AlertSeverity.WARNING):
"Consider switching to DeepSeek V3.2 (only $0.42/M tokens) for non-critical tasks.",
("hourly_cost", AlertSeverity.CRITICAL):
"Immediately audit recent API calls. Check for infinite loops or oversized contexts.",
("hourly_cost", AlertSeverity.EMERGENCY):
"EMERGENCY: Budget exceeded. Consider temporarily disabling AI features.",
("daily_cost", AlertSeverity.WARNING):
"Projected to exceed monthly budget. Review usage patterns and optimize prompts.",
("error_rate", AlertSeverity.CRITICAL):
"High error rate detected. Check HolySheep API status and your request format.",
("p99_latency", AlertSeverity.WARNING):
"Latency increased. Consider using Gemini 2.5 Flash for faster responses.",
}
return recommendations.get((self.metric, self.severity), "Review and optimize AI usage.")
class AlertEngine:
"""
Production alert engine with intelligent throttling
"""
def __init__(self):
self.rules: List[AlertRule] = AlertRule.default_rules()
self.channels: List[AlertChannel] = []
self.alert_history: List[Alert] = []
self._cooldown: Dict[str, datetime] = {} # Prevent alert spam
def add_channel(self, channel: AlertChannel):
"""Add notification channel"""
self.channels.append(channel)
def add_rule(self, rule: AlertRule):
"""Add custom alert rule"""
self.rules.append(rule)
async def evaluate(
self,
metrics: Dict[str, float],
request_id: str
) -> List[Alert]:
"""
Evaluate metrics against all rules and trigger alerts
"""
triggered_alerts = []
now = datetime.utcnow()
for rule in self.rules:
if not rule.enabled:
continue
# Check cooldown
cooldown_key = f"{rule.name}"
if cooldown_key in self._cooldown:
last_alert = self._cooldown[cooldown_key]
if (now - last_alert).total_seconds() < rule.window_minutes * 60:
continue # Still in cooldown
# Evaluate rule
if rule.metric in metrics:
value = metrics[rule.metric]
if value >= rule.threshold:
alert = Alert(
id=f"{request_id}-{rule.name}",
rule_name=rule.name,
metric=rule.metric,
value=value,
threshold=rule.threshold,
severity=rule.severity,
message=self._format_message(rule, value)
)
triggered_alerts.append(alert)
self._cooldown[cooldown_key] = now
# Dispatch to all channels
await self._dispatch_alert(alert)
self.alert_history.extend(triggered_alerts)
# Keep last 1000 alerts
if len(self.alert_history) > 1000:
self.alert_history = self.alert_history[-500:]
return triggered_alerts
def _format_message(self, rule: AlertRule, value: float) -> str:
"""Format human-readable alert message"""
return (
f"Alert: {rule.name}\n"
f"Current value: ${value:.4f}\n"
f"Threshold: ${rule.threshold:.4f}\n"
f"Time window: {rule.window_minutes} minutes"
)
async def _dispatch_alert(self, alert: Alert):
"""Send alert to all configured channels"""
tasks = []
for channel in self.channels:
tasks.append(channel.send(alert))
results = await asyncio.gather(*tasks, return_exceptions=True)
success_count = sum(1 for r in results if r is True)
logger.info(
f"Alert '{alert.rule_name}' dispatched to {success_count}/{len(self.channels)} channels"
)
def get_active_alerts(self, minutes: int = 60) -> List[Alert]:
"""Get alerts triggered in the last N minutes"""
cutoff = datetime.utcnow() - timedelta(minutes=minutes)
return [a for a in self.alert_history if a.timestamp >= cutoff]
Example: Slack integration with HolySheep AI monitoring
async def example_slack_integration():
"""
Example: Set up Slack alerts for HolySheep AI cost monitoring
"""
engine = AlertEngine()
# Add Slack channel (replace with your webhook URL)
slack_channel = SlackAlertChannel(
webhook_url="https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
)
engine.add_channel(slack_channel)
# Add custom rule for DeepSeek V3.2 usage (cheapest model!)
engine.add_rule(AlertRule(
name="DeepSeek High Usage",
metric="deepseek_tokens",
threshold=10_000_000, # 10M tokens
window_minutes=1440, # Daily
severity=AlertSeverity.INFO
))
# Evaluate current metrics
current_metrics = {
"hourly_cost": 15.50,
"daily_cost": 125.00,
"error_rate": 2.5,
"p99_latency": 45.2, # ms - HolySheep is fast!
"deepseek_tokens": 2_500_000
}
alerts = await engine.evaluate(current_metrics, "req-001")
for alert in alerts:
print(f"🚨 {alert.severity.value.upper()}: {alert.message}")
print(f"💡 Recommendation: {alert.recommendation}")
if __name__ == "__main__":
asyncio.run(example_slack_integration())
So Sánh Chi Phí: HolySheep AI vs Providers Khác
Dựa trên benchmark thực tế của tôi, đây là bảng so sánh chi phí cho 1 triệu token đầu vào:
| Model | HolySheep AI | Provider Khác | Tiết Kiệm |
|---|---|---|---|
| GPT-4.1 | $8.00 | $30.00 | 73% |
| Claude Sonnet 4.5 | $15.00 | $45.00 | 67% |
| Gemini 2.5 Flash | $2.50 | $7.50 | 67% |
| DeepSeek V3.2 | $0.42 | $2.80 | 85% |
Với tỷ giá ¥1 = $1 của HolySheep AI, chi phí thực tế còn thấp hơn nhiều cho người dùng quốc tế. Thêm vào đó, HolySheep hỗ trợ WeChat Pay và Alipay — rất thuận tiện cho người dùng Trung Quốc.
Kiểm Soát Đồng Thời (Concurrency Control)
Một trong những nguyên nhân chính gây "bom" chi phí là concurrent request không kiểm soát. Tôi triển khai semaphore-based rate limiting:
#!/usr/bin/env python3
"""
Concurrency Control for AI API
Semaphore-based rate limiting with cost-aware scheduling
"""
import asyncio
import time
from dataclasses import dataclass, field
from typing import List, Dict, Optional
from datetime import datetime, timedelta
from collections import deque
@dataclass
class RateLimitConfig:
"""Configure rate limits per model"""
model: str
max_concurrent: int = 10
requests_per_minute: int = 60
tokens_per_minute: int = 100_000
cost_per_minute_limit: float = 10.0 # $10/minute budget
class ConcurrencyController:
"""
Control concurrent requests with cost awareness
Implements token bucket algorithm for rate limiting
"""
def __init__(self):
self._semaphores: Dict[str, asyncio.Semaphore] = {}
self._rate_limiters: Dict[str, "TokenBucket"] = {}
self._active_requests: Dict[str, int] = {}
self._request_timestamps: Dict[str, deque] = {}
def configure(self, config: RateLimitConfig):
"""Configure limits for a specific model"""
self._semaphores[config.model] = asyncio.Semaphore(config.max_concurrent)
self._rate_limiters[config.model] = TokenBucket(
capacity=config.tokens_per_minute,
refill_rate=config.tokens_per_minute / 60.0
)
self._active_requests[config.model] = 0
self._request_timestamps[config.model] = deque(maxlen=config.requests_per_minute)
async def acquire(self, model: str, estimated_tokens: int) -> "RequestToken":
"""
Acquire permission to make a request
Blocks if limits are exceeded
"""
if model not in self._semaphores:
# Default config
self.configure(RateLimitConfig(model=model))
# Wait for semaphore
await self._semaphores[model].acquire()
# Check rate limits
bucket = self._rate_limiters[model]
await bucket.consume(estimated_tokens)
# Track request timing
self._request_timestamps[model].append(time.time())
self._active_requests[model] += 1
return RequestToken(
model=model,
acquired_at=datetime.utcnow(),
release_callback=lambda: self._release(model)
)
def _release(self, model: str):
"""Release semaphore after request completes"""
self._semaphores[model].release()
self._active_requests[model] -= 1
def get_status(self, model: str) -> Dict:
"""Get current status of rate limiting for a model"""
timestamps = self._request_timestamps.get(model, deque())
now = time.time()
# Count requests in last minute
recent_requests = sum(
1 for t in timestamps
if now - t < 60
)
return {
"model": model,
"active_requests": self._active_requests.get(model, 0),
"requests_last_minute": recent_requests,
"available_tokens": self._rate_limiters.get(model, None) and
self._rate_limiters[model].available(),
"is_limited": recent_requests >= 60
}
class TokenBucket:
"""
Token bucket algorithm for rate limiting
Thread-safe implementation
"""
def __init__(self, capacity: float, refill_rate: float):
self.capacity = capacity
self.refill_rate = refill_rate
self._tokens = capacity
self._last_refill = time.time()
self._lock = asyncio.Lock()
async def consume(self, tokens: float) -> bool:
"""Consume tokens, waiting if necessary"""
async with self._lock:
self._refill()
if self._tokens >= tokens:
self._tokens -= tokens
return True
# Calculate wait time
needed = tokens - self._tokens
wait_time = needed / self._refill_rate
# Wait and refill
await asyncio.sleep(wait_time)
self._refill()
self._tokens -= tokens
return True
def _refill(self):
"""Refill tokens based on elapsed time"""
now = time.time()
elapsed = now - self._last_refill
refill = elapsed * self._refill_rate
self._tokens = min(self.capacity, self._tokens + refill)
self._last_refill = now
def available(self) -> float:
"""Get available tokens"""
self._refill()
return self._tokens
@dataclass
class RequestToken:
"""Token representing an acquired request slot"""
model: str
acquired_at: datetime
release_callback: callable = field(repr=False)
def release(self):
"""Release the request slot"""
self.release_callback()
def __enter__(self):
return self
def __exit__(self, *args):
self.release()
Usage Example
async def controlled_api_call(controller: ConcurrencyController):
"""
Example: Make a rate-limited API call
"""
model = "deepseek-v3.2" # Most cost-effective!
estimated_tokens = 500
async with await controller.acquire(model, estimated_tokens) as token:
# Your API call here
# This is guaranteed to respect rate limits
print(f"Request approved for {model} at {token.acquired_at}")
# Simulate API call
await asyncio.sleep(0.5)
return {"status": "success", "model": model}
async def example_concurrency_control():
"""Demonstrate concurrency control"""
controller = ConcurrencyController()
# Configure for different models
controller.configure(RateLimitConfig(
model="deepseek-v3.2",
max_concurrent=5,
requests_per_minute=30,
cost_per_minute_limit=5.0
))
controller.configure(RateLimitConfig(
model="gpt-4.1",
max_concurrent=2,
requests_per_minute=10,
cost_per_minute_limit=10.0
))
# Simulate multiple concurrent requests
tasks = [
controlled_api_call(controller)
for _ in range(10)
]
results = await asyncio.gather(*tasks)
# Check status
for model in ["deepseek-v3.2", "gpt-4.1"]:
status = controller.get_status(model)
print(f"{model}: {status}")
if __name__ == "__main__":
asyncio.run(example_concurrency_control())
Dashboard Giám Sát Real-Time
Tôi sử dụng dữ liệu từ tracker để tạo dashboard với các metrics quan trọng:
#!/usr/bin/env python3
"""
Real-time Dashboard Data Generator
Outputs JSON suitable for Grafana, Datadog, or custom dashboards
"""
import json
from datetime import datetime, timedelta
from typing import Dict, List, Optional
def generate_dashboard_data(cost_tracker: "CostTracker") -> Dict:
"""
Generate dashboard data from CostTracker instance
Returns JSON-ready structure
"""
report = cost_tracker.get_cost_report()
# Calculate projections
now = datetime.utcnow()
hours_today = now.hour + now.minute / 60
projected_daily = report["today_cost"] / hours_today if hours_today > 0 else 0
# Calculate cost per model
model_costs = report["model_breakdown"]
total_model_cost = sum(m["cost"] for m