Là một kỹ sư backend làm việc với các dịch vụ AI API suốt 3 năm qua, tôi đã chứng kiến vô số trường hợp chi phí API tăng đột biến mà không ai hay biết. Một lần, một bug nhỏ trong code đã khiến công ty tôi mất gần $200 chỉ trong 2 giờ vì gọi API liên tục trong vòng lặp. Bài viết này sẽ hướng dẫn bạn xây dựng hệ thống phát hiện bất thường và cảnh báo sử dụng API một cách chuyên nghiệp.

Tại sao cần theo dõi usage API?

Trước khi đi vào chi tiết kỹ thuật, hãy cùng tôi xem bảng so sánh chi phí và tính năng giữa các nhà cung cấp API AI hàng đầu hiện nay:

Nhà cung cấp Giá GPT-4.1 ($/MTok) Giá Claude 4.5 ($/MTok) Độ trễ trung bình Hỗ trợ thanh toán Tiết kiệm
OpenAI chính thức $60 - 150-300ms Visa/MasterCard -
Anthropic chính thức - $75 200-400ms Visa/MasterCard -
Relay services khác $45-55 $55-65 100-200ms Thẻ quốc tế 10-25%
HolySheep AI $8 $15 <50ms WeChat/Alipay/VNPay 85%+

Kinh nghiệm thực chiến: Với HolySheep AI, tôi đã tiết kiệm được khoảng $1,200/tháng cho dự án chatbot của công ty. Độ trễ dưới 50ms giúp ứng dụng phản hồi nhanh hơn rất nhiều so với việc dùng API chính thức. Bạn có thể Đăng ký tại đây để nhận tín dụng miễn phí khi bắt đầu.

Kiến trúc hệ thống phát hiện bất thường

Một hệ thống monitoring API usage hiệu quả cần có các thành phần sau:

Triển khai với Python - Code thực chiến

Dưới đây là code hoàn chỉnh để xây dựng hệ thống monitoring API usage với HolySheep AI. Tôi đã test code này trong production và nó chạy ổn định.

1. Setup môi trường và cài đặt dependencies

pip install requests pandas numpy prometheus-client python-dotenv schedule scipy

2. API Usage Tracker - Core Module

import requests
import time
import json
from datetime import datetime, timedelta
from collections import defaultdict
import threading
from typing import Dict, List, Optional

class APIUsageTracker:
    """
    Theo dõi usage API với HolySheep AI
    Author: HolySheep AI Team
    """
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.usage_data = defaultdict(lambda: {
            'requests': 0,
            'tokens_input': 0,
            'tokens_output': 0,
            'cost': 0.0,
            'latency_ms': [],
            'errors': 0,
            'last_request': None
        })
        self.lock = threading.Lock()
        
        # Pricing HolySheep 2026 (USD per 1M tokens)
        self.pricing = {
            'gpt-4.1': {'input': 8.0, 'output': 8.0},
            'claude-sonnet-4.5': {'input': 15.0, 'output': 15.0},
            'gemini-2.5-flash': {'input': 2.50, 'output': 2.50},
            'deepseek-v3.2': {'input': 0.42, 'output': 0.42}
        }
    
    def call_api(self, model: str, prompt: str, 
                 temperature: float = 0.7, 
                 max_tokens: int = 1000) -> Dict:
        """
        Gọi API với tracking chi phí
        """
        headers = {
            'Authorization': f'Bearer {self.api_key}',
            'Content-Type': 'application/json'
        }
        
        payload = {
            'model': model,
            'messages': [{'role': 'user', 'content': prompt}],
            'temperature': temperature,
            'max_tokens': max_tokens
        }
        
        start_time = time.time()
        
        try:
            response = requests.post(
                f"{self.base_url}/chat/completions",
                headers=headers,
                json=payload,
                timeout=30
            )
            
            latency = (time.time() - start_time) * 1000  # ms
            
            if response.status_code == 200:
                result = response.json()
                usage = result.get('usage', {})
                
                input_tokens = usage.get('prompt_tokens', 0)
                output_tokens = usage.get('completion_tokens', 0)
                
                # Tính chi phí
                model_pricing = self.pricing.get(model, self.pricing['deepseek-v3.2'])
                cost = (input_tokens * model_pricing['input'] + 
                        output_tokens * model_pricing['output']) / 1_000_000
                
                with self.lock:
                    self.usage_data[model]['requests'] += 1
                    self.usage_data[model]['tokens_input'] += input_tokens
                    self.usage_data[model]['tokens_output'] += output_tokens
                    self.usage_data[model]['cost'] += cost
                    self.usage_data[model]['latency_ms'].append(latency)
                    self.usage_data[model]['last_request'] = datetime.now()
                
                return {
                    'success': True,
                    'response': result,
                    'latency_ms': round(latency, 2),
                    'cost': round(cost, 4),
                    'total_tokens': input_tokens + output_tokens
                }
            else:
                with self.lock:
                    self.usage_data[model]['errors'] += 1
                return {
                    'success': False,
                    'error': response.text,
                    'status_code': response.status_code
                }
                
        except Exception as e:
            with self.lock:
                self.usage_data[model]['errors'] += 1
            return {'success': False, 'error': str(e)}
    
    def get_usage_summary(self, model: Optional[str] = None) -> Dict:
        """
        Lấy tổng hợp usage
        """
        with self.lock:
            if model:
                return dict(self.usage_data.get(model, {}))
            
            summary = {}
            for m, data in self.usage_data.items():
                avg_latency = (sum(data['latency_ms']) / len(data['latency_ms']) 
                              if data['latency_ms'] else 0)
                summary[m] = {
                    **data,
                    'avg_latency_ms': round(avg_latency, 2)
                }
            return summary

Sử dụng

tracker = APIUsageTracker(api_key="YOUR_HOLYSHEEP_API_KEY") result = tracker.call_api("deepseek-v3.2", "Xin chào, bạn khỏe không?") print(f"Latency: {result.get('latency_ms')}ms") print(f"Chi phí: ${result.get('cost')}")

3. Anomaly Detection Engine - Phát hiện bất thường

import numpy as np
from scipy import stats
from typing import Tuple, List, Dict
from dataclasses import dataclass
from datetime import datetime, timedelta

@dataclass
class AnomalyAlert:
    model: str
    metric: str
    current_value: float
    threshold: float
    severity: str  # 'warning', 'critical'
    message: str
    timestamp: datetime

class AnomalyDetector:
    """
    Phát hiện bất thường trong usage API
    Sử dụng statistical methods và Z-score
    """
    
    def __init__(self, window_hours: int = 24, z_threshold: float = 2.5):
        self.window_hours = window_hours
        self.z_threshold = z_threshold
        self.history: Dict[str, List[Dict]] = defaultdict(list)
        
    def record_usage(self, model: str, usage_data: Dict):
        """Ghi nhận usage data vào history"""
        record = {
            'timestamp': datetime.now(),
            **usage_data
        }
        self.history[model].append(record)
        
        # Giữ chỉ data trong window
        cutoff = datetime.now() - timedelta(hours=self.window_hours)
        self.history[model] = [
            r for r in self.history[model] 
            if r['timestamp'] > cutoff
        ]
    
    def calculate_baseline(self, model: str, metric: str) -> Tuple[float, float]:
        """
        Tính baseline (mean, std) cho metric
        """
        values = [
            r.get(metric, 0) 
            for r in self.history[model]
            if metric in r
        ]
        
        if len(values) < 5:
            return 0, float('inf')  # Chưa đủ data
        
        return np.mean(values), np.std(values)
    
    def detect_rate_anomaly(self, model: str, 
                            current_requests: int) -> Optional[AnomalyAlert]:
        """
        Phát hiện bất thường về tốc độ request
        """
        baseline_mean, baseline_std = self.calculate_baseline(model, 'requests')
        
        if baseline_std == 0:
            return None
            
        z_score = abs(current_requests - baseline_mean) / baseline_std
        
        if z_score > self.z_threshold:
            direction = "tăng" if current_requests > baseline_mean else "giảm"
            return AnomalyAlert(
                model=model,
                metric='requests_rate',
                current_value=current_requests,
                threshold=baseline_mean + self.z_threshold * baseline_std,
                severity='critical' if z_score > 3 else 'warning',
                message=f"Tốc độ request {direction} bất thường: {current_requests} req/h "
                       f"(baseline: {baseline_mean:.0f}, z-score: {z_score:.2f})",
                timestamp=datetime.now()
            )
        return None
    
    def detect_cost_anomaly(self, model: str, 
                            current_cost: float,
                            hourly_budget: float = 100.0) -> Optional[AnomalyAlert]:
        """
        Phát hiện chi phí vượt ngân sách
        """
        if current_cost > hourly_budget:
            return AnomalyAlert(
                model=model,
                metric='hourly_cost',
                current_value=current_cost,
                threshold=hourly_budget,
                severity='critical' if current_cost > hourly_budget * 2 else 'warning',
                message=f"Chi phí vượt ngân sách: ${current_cost:.2f}/giờ "
                       f"(ngân sách: ${hourly_budget})",
                timestamp=datetime.now()
            )
        return None
    
    def detect_latency_anomaly(self, model: str, 
                               current_latency: float,
                               p95_threshold_ms: float = 500.0) -> Optional[AnomalyAlert]:
        """
        Phát hiện latency cao bất thường
        """
        if current_latency > p95_threshold_ms:
            return AnomalyAlert(
                model=model,
                metric='latency',
                current_value=current_latency,
                threshold=p95_threshold_ms,
                severity='warning' if current_latency < 1000 else 'critical',
                message=f"Latency cao: {current_latency}ms (threshold: {p95_threshold_ms}ms)",
                timestamp=datetime.now()
            )
        return None
    
    def detect_error_rate_anomaly(self, model: str,
                                  total_requests: int,
                                  total_errors: int,
                                  error_threshold: float = 0.05) -> Optional[AnomalyAlert]:
        """
        Phát hiện tỷ lệ lỗi cao
        """
        if total_requests == 0:
            return None
            
        error_rate = total_errors / total_requests
        
        if error_rate > error_threshold:
            return AnomalyAlert(
                model=model,
                metric='error_rate',
                current_value=error_rate,
                threshold=error_threshold,
                severity='critical' if error_rate > 0.1 else 'warning',
                message=f"Tỷ lệ lỗi cao: {error_rate*100:.1f}% "
                       f"(threshold: {error_threshold*100}%)",
                timestamp=datetime.now()
            )
        return None

Sử dụng

detector = AnomalyDetector(window_hours=24, z_threshold=2.5)

Ghi nhận usage

detector.record_usage('deepseek-v3.2', { 'requests': 150, 'cost': 0.45, 'latency': 42.5, 'errors': 1 })

Kiểm tra anomalies

alert = detector.detect_cost_anomaly('deepseek-v3.2', current_cost=150.0, hourly_budget=100.0) if alert: print(f"[{alert.severity.upper()}] {alert.message}")

4. Alert Manager - Gửi cảnh báo đa kênh

import smtplib
import httpx
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from typing import List, Optional
import json
from dataclasses import asdict

class AlertManager:
    """
    Quản lý cảnh báo qua nhiều kênh: Email, Slack, Webhook, Discord
    """
    
    def __init__(self):
        self.channels = []
    
    def add_slack_channel(self, webhook_url: str, channel_name: str = "#alerts"):
        """Thêm kênh Slack"""
        self.channels.append({
            'type': 'slack',
            'webhook_url': webhook_url,
            'channel': channel_name
        })
    
    def add_email_channel(self, smtp_server: str, smtp_port: int,
                          sender_email: str, sender_password: str,
                          recipient_list: List[str]):
        """Thêm kênh Email"""
        self.channels.append({
            'type': 'email',
            'smtp_server': smtp_server,
            'smtp_port': smtp_port,
            'sender': sender_email,
            'password': sender_password,
            'recipients': recipient_list
        })
    
    def add_discord_webhook(self, webhook_url: str):
        """Thêm kênh Discord"""
        self.channels.append({
            'type': 'discord',
            'webhook_url': webhook_url
        })
    
    def _send_slack(self, alert: Dict):
        """Gửi cảnh báo qua Slack"""
        color_map = {
            'critical': '#ff0000',
            'warning': '#ffa500',
            'info': '#00ff00'
        }
        
        payload = {
            'attachments': [{
                'color': color_map.get(alert.get('severity', 'info'), '#00ff00'),
                'title': f"🚨 API Alert: {alert['severity'].upper()}",
                'text': alert['message'],
                'fields': [
                    {'title': 'Model', 'value': alert.get('model', 'N/A'), 'short': True},
                    {'title': 'Metric', 'value': alert.get('metric', 'N/A'), 'short': True},
                    {'title': 'Value', 'value': str(alert.get('current_value', 'N/A')), 'short': True},
                    {'title': 'Time', 'value': alert.get('timestamp', 'N/A'), 'short': True}
                ],
                'footer': 'HolySheep AI Monitor',
                'ts': 1234567890
            }]
        }
        
        for channel in self.channels:
            if channel['type'] == 'slack':
                try:
                    response = httpx.post(
                        channel['webhook_url'],
                        json=payload,
                        timeout=10
                    )
                    response.raise_for_status()
                except Exception as e:
                    print(f"Slack notification failed: {e}")
    
    def _send_email(self, alert: Dict):
        """Gửi cảnh báo qua Email"""
        for channel in self.channels:
            if channel['type'] != 'email':
                continue
                
            try:
                msg = MIMEMultipart()
                msg['From'] = channel['sender']
                msg['To'] = ', '.join(channel['recipients'])
                msg['Subject'] = f"[{alert['severity'].upper()}] HolySheep API Alert"
                
                body = f"""
API Usage Alert Detected!

Severity: {alert['severity'].upper()}
Model: {alert.get('model', 'N/A')}
Metric: {alert.get('metric', 'N/A')}
Current Value: {alert.get('current_value', 'N/A')}
Threshold: {alert.get('threshold', 'N/A')}

Message: {alert['message']}
Time: {alert.get('timestamp', 'N/A')}

---
Auto-generated by HolySheep AI Monitor
                """
                
                msg.attach(MIMEText(body, 'plain'))
                
                with smtplib.SMTP(channel['smtp_server'], channel['smtp_port']) as server:
                    server.starttls()
                    server.login(channel['sender'], channel['password'])
                    server.send_message(msg)
                    
            except Exception as e:
                print(f"Email notification failed: {e}")
    
    def _send_discord(self, alert: Dict):
        """Gửi cảnh báo qua Discord"""
        emoji_map = {
            'critical': '🔴',
            'warning': '🟠',
            'info': '🟢'
        }
        
        embed = {
            'title': f"{emoji_map.get(alert.get('severity', 'info'), '📢')} API Alert",
            'description': alert['message'],
            'color': {
                'critical': 15158332,
                'warning': 15105570,
                'info': 3066993
            }.get(alert.get('severity', 'info'), 0),
            'fields': [
                {'name': 'Model', 'value': alert.get('model', 'N/A'), 'inline': True},
                {'name': 'Metric', 'value': alert.get('metric', 'N/A'), 'inline': True},
                {'name': 'Current', 'value': str(alert.get('current_value', 'N/A')), 'inline': True}
            ]
        }
        
        for channel in self.channels:
            if channel['type'] == 'discord':
                try:
                    response = httpx.post(
                        channel['webhook_url'],
                        json={'embeds': [embed]},
                        timeout=10
                    )
                    response.raise_for_status()
                except Exception as e:
                    print(f"Discord notification failed: {e}")
    
    def send_alert(self, alert):
        """Gửi alert đến tất cả các kênh"""
        alert_dict = asdict(alert) if hasattr(alert, '__dataclass_fields__') else alert
        
        self._send_slack(alert_dict)
        self._send_email(alert_dict)
        self._send_discord(alert_dict)
        
        print(f"Alert sent: [{alert_dict.get('severity', 'N/A').upper()}] {alert_dict.get('message', '')}")

Sử dụng

alert_manager = AlertManager() alert_manager.add_slack_channel("https://hooks.slack.com/services/YOUR/WEBHOOK/URL") alert_manager.add_email_channel( smtp_server="smtp.gmail.com", smtp_port=587, sender_email="[email protected]", sender_password="your-app-password", recipient_list=["[email protected]", "[email protected]"] ) alert_manager.add_discord_webhook("https://discord.com/api/webhooks/YOUR/WEBHOOK")

Gửi test alert

test_alert = AnomalyAlert( model="deepseek-v3.2", metric="hourly_cost", current_value=150.0, threshold=100.0, severity="critical", message="Chi phí API vượt ngân sách 50%!", timestamp=datetime.now() ) alert_manager.send_alert(test_alert)

Tích hợp Prometheus và Grafana Dashboard

Để trực quan hóa dữ liệu usage, bạn có thể expose metrics qua Prometheus format và import dashboard vào Grafana:

from prometheus_client import Counter, Histogram, Gauge, generate_latest, CONTENT_TYPE_LATEST
from flask import Flask, Response

app = Flask(__name__)

Define Prometheus metrics

REQUEST_COUNT = Counter( 'api_requests_total', 'Total API requests', ['model', 'status'] ) TOKEN_USAGE = Counter( 'api_tokens_total', 'Total tokens used', ['model', 'type'] # type: input/output ) REQUEST_LATENCY = Histogram( 'api_request_duration_seconds', 'API request latency', ['model'], buckets=[0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0] ) CURRENT_COST = Gauge( 'api_current_cost_dollars', 'Current accumulated cost', ['model'] ) ERROR_RATE = Gauge( 'api_error_rate', 'Current error rate', ['model'] ) @app.route('/metrics') def metrics(): """Prometheus metrics endpoint""" # Update metrics from tracker usage_summary = tracker.get_usage_summary() for model, data in usage_summary.items(): REQUEST_COUNT.labels(model=model, status='success').inc(data['requests'] - data['errors']) REQUEST_COUNT.labels(model=model, status='error').inc(data['errors']) TOKEN_USAGE.labels(model=model, type='input').inc(data['tokens_input']) TOKEN_USAGE.labels(model=model, type='output').inc(data['tokens_output']) CURRENT_COST.labels(model=model).set(data['cost']) if data['requests'] > 0: ERROR_RATE.labels(model=model).set(data['errors'] / data['requests']) return Response(generate_latest(), mimetype=CONTENT_TYPE_LATEST) @app.route('/health') def health(): return {'status': 'healthy', 'timestamp': datetime.now().isoformat()} if __name__ == '__main__': app.run(host='0.0.0.0', port=9090)

Script Auto-dumping khi phát hiện bất thường

Đây là script hoàn chỉnh kết hợp tất cả các thành phần trên, chạy như một service độc lập:

#!/usr/bin/env python3
"""
API Usage Monitor Service
Tự động phát hiện bất thường và gửi cảnh báo
Chạy: python monitor_service.py
"""

import schedule
import time
import logging
from datetime import datetime

Setup logging

logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('api_monitor.log'), logging.StreamHandler() ] ) logger = logging.getLogger(__name__)

Khởi tạo các thành phần

API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Thay bằng key thực tế tracker = APIUsageTracker(API_KEY) detector = AnomalyDetector(window_hours=24, z_threshold=2.5) alert_manager = AlertManager()

Cấu hình alert channels

alert_manager.add_slack_channel("https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK") alert_manager.add_discord_webhook("https://discord.com/api/webhooks/YOUR/DISCORD/WEBHOOK")

Ngưỡng cảnh báo

HOURLY_BUDGET = 50.0 # $50/giờ DAILY_BUDGET = 500.0 # $500/ngày LATENCY_THRESHOLD_MS = 100.0 ERROR_RATE_THRESHOLD = 0.05

Models cần theo dõi

MONITORED_MODELS = [ 'deepseek-v3.2', 'gpt-4.1', 'claude-sonnet-4.5', 'gemini-2.5-flash' ] def monitor_job(): """ Job chạy định kỳ để check usage và phát hiện anomalies """ logger.info("=== Running monitoring check ===") summary = tracker.get_usage_summary() total_hourly_cost = 0 alerts_triggered = 0 for model in MONITORED_MODELS: if model not in summary: continue data = summary[model] # Ghi nhận vào history cho anomaly detection detector.record_usage(model, { 'requests': data['requests'], 'cost': data['cost'], 'latency': data.get('avg_latency_ms', 0), 'errors': data['errors'] }) # Kiểm tra các loại anomaly # 1. Cost anomaly cost_alert = detector.detect_cost_anomaly( model, data['cost'], HOURLY_BUDGET ) if cost_alert: alert_manager.send_alert(cost_alert) alerts_triggered += 1 logger.warning(f"Cost alert: {model} - ${data['cost']:.2f}") # 2. Latency anomaly avg_latency = data.get('avg_latency_ms', 0) if avg_latency > LATENCY_THRESHOLD_MS: latency_alert = detector.detect_latency_anomaly( model, avg_latency, LATENCY_THRESHOLD_MS ) if latency_alert: alert_manager.send_alert(latency_alert) alerts_triggered += 1 logger.warning(f"Latency alert: {model} - {avg_latency}ms") # 3. Error rate anomaly if data['requests'] > 0: error_alert = detector.detect_error_rate_anomaly( model, data['requests'], data['errors'], ERROR_RATE_THRESHOLD ) if error_alert: alert_manager.send_alert(error_alert) alerts_triggered += 1 logger.warning(f"Error rate alert: {model} - {data['errors']}/{data['requests']}") total_hourly_cost += data['cost'] # Log usage info logger.info(f"{model}: {data['requests']} requests, " f"{data['tokens_input']+data['tokens_output']} tokens, " f"${data['cost']:.4f}, " f"avg latency: {avg_latency}ms") # Kiểm tra total budget if total_hourly_cost > DAILY_BUDGET / 24: logger.critical(f"Daily budget warning: ${total_hourly_cost:.2f}/hour") logger.info(f"=== Check complete: {alerts_triggered} alerts triggered, " f"total cost: ${total_hourly_cost:.4f} ===\n") def daily_report(): """Gửi báo cáo ngày qua email""" summary = tracker.get_usage_summary() report = "📊 DAILY API USAGE REPORT\n" report += f"Date: {datetime.now().strftime('%Y-%m-%d')}\n" report += "=" * 50 + "\n\n" total_cost = 0 total_tokens = 0 for model, data in summary.items(): report += f"Model: {model}\n" report += f" - Requests: {data['requests']}\n" report += f" - Input Tokens: {data['tokens_input']:,}\n" report += f" - Output Tokens: {data['tokens_output']:,}\n" report += f" - Total Cost: ${data['cost']:.4f}\n" report += f" - Error Rate: {data['errors']/max(data['requests'],1)*100:.2f}%\n\n" total_cost += data['cost'] total_tokens += data['tokens_input'] + data['tokens_output'] report += "=" * 50 + "\n" report += f"TOTAL COST: ${total_cost:.4f}\n" report += f"TOTAL TOKENS: {total_tokens:,}\n" logger.info(report) print(report)

Schedule jobs

schedule.every(5).minutes.do(monitor_job) # Check mỗi 5 phút schedule.every().day.at("09:00").do(daily_report) # Báo cáo ngày lúc 9AM if __name__ == '__main__': logger.info("🚀 API Usage Monitor Service started") logger.info(f"Monitoring models: {MONITORED_MODELS}") logger.info(f"Hourly budget: ${HOURLY_BUDGET}") logger.info(f"Daily budget: ${DAILY_BUDGET}") # Chạy initial check monitor_job() # Main loop while True: schedule.run_pending() time.sleep(60)

Lỗi thường gặp và cách khắc phục

1. Lỗi "401 Unauthorized" - API Key không hợp lệ

Mô tả: Khi gọi API, nhận được response {"error": {"message": "Invalid API key", "type": "invalid_request_error"}}

Nguyên nhân:

Cách khắc phục:

# Kiểm tra và validate API key
import httpx

def validate_holysheep_key(api_key: str) -> dict:
    """
    Validate HolySheep API key bằng cách gọi endpoint /models
    """
    headers = {
        'Authorization': f'Bearer {api_key.strip()}',
        'Content-Type': 'application/json'
    }
    
    try:
        response = httpx.get(
            'https://api.holysheep.ai/v1/models',
            headers=headers,
            timeout=10
        )
        
        if response.status_code == 200:
            return {'valid': True, 'message': 'API key hợp lệ'}
        elif response.status_code == 401:
            return {'valid': False, 'message': 'API key không hợp lệ hoặc đã hết hạn'}
        elif response.status_code == 429:
            return {'valid': True, 'message': 'API key hợp lệ nhưng rate limited'}