Từ kinh nghiệm triển khai thực chiến với hơn 50 triệu request/tháng, đội ngũ HolySheep AI chia sẻ cách xây dựng health check endpoints đáng tin cậy và chiến lược di chuyển từ nhà cung cấp khác.

Tại Sao Cần Health Check Endpoints Cho AI Services?

Trong kiến trúc microservices hiện đại, AI services thường được gọi từ nhiều nguồn khác nhau: frontend applications, batch processing jobs, webhook handlers, và các services nội bộ. Khi một AI endpoint trở nên không khả dụng, toàn bộ chain xử lý có thể bị gián đoạn.

Đội ngũ của chúng tôi từng đối mặt với tình huống: API chính thức từ Mỹ có độ trễ 300-800ms do geographical distance, và việc không có proper health check khiến hệ thống tiếp tục gửi requests đến endpoint đang degraded. Kết quả? 15 phút downtime không phát hiện kịp thời, ảnh hưởng đến 2000+ người dùng.

Kiến Trúc Health Check Framework

1. Implement Health Check Endpoint

import httpx
import asyncio
from dataclasses import dataclass
from typing import Optional
from datetime import datetime, timedelta

@dataclass
class HealthStatus:
    """Trạng thái health check chi tiết cho AI service"""
    service_name: str
    is_healthy: bool
    latency_ms: float
    status_code: Optional[int]
    error_message: Optional[str] = None
    timestamp: datetime = None
    
    def __post_init__(self):
        if self.timestamp is None:
            self.timestamp = datetime.utcnow()

class AIHealthChecker:
    """
    Health checker cho HolySheep AI API
    base_url: https://api.holysheep.ai/v1
    """
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.timeout = 5.0
        self.threshold_latency_ms = 100.0  # Ngưỡng latency tối đa
    
    async def check_model_listing(self) -> HealthStatus:
        """
        Check endpoint lấy danh sách models
        Endpoint: GET /models
        """
        url = f"{self.base_url}/models"
        headers = {"Authorization": f"Bearer {self.api_key}"}
        
        try:
            async with httpx.AsyncClient() as client:
                start = datetime.utcnow()
                response = await client.get(
                    url, 
                    headers=headers, 
                    timeout=self.timeout
                )
                end = datetime.utcnow()
                
                latency_ms = (end - start).total_seconds() * 1000
                
                return HealthStatus(
                    service_name="holy_sheep_models",
                    is_healthy=(response.status_code == 200 and latency_ms < self.threshold_latency_ms),
                    latency_ms=round(latency_ms, 2),
                    status_code=response.status_code,
                    error_message=None if response.status_code == 200 else response.text
                )
        except httpx.TimeoutException:
            return HealthStatus(
                service_name="holy_sheep_models",
                is_healthy=False,
                latency_ms=self.timeout * 1000,
                status_code=None,
                error_message="Request timeout"
            )
        except Exception as e:
            return HealthStatus(
                service_name="holy_sheep_models",
                is_healthy=False,
                latency_ms=0,
                status_code=None,
                error_message=str(e)
            )
    
    async def check_chat_completion(self) -> HealthStatus:
        """
        Check endpoint chat completion với lightweight prompt
        Endpoint: POST /chat/completions
        """
        url = f"{self.base_url}/chat/completions"
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        payload = {
            "model": "gpt-4.1",
            "messages": [{"role": "user", "content": "ping"}],
            "max_tokens": 5,
            "temperature": 0
        }
        
        try:
            async with httpx.AsyncClient() as client:
                start = datetime.utcnow()
                response = await client.post(
                    url,
                    headers=headers,
                    json=payload,
                    timeout=self.timeout
                )
                end = datetime.utcnow()
                
                latency_ms = (end - start).total_seconds() * 1000
                
                return HealthStatus(
                    service_name="holy_sheep_chat",
                    is_healthy=(response.status_code == 200),
                    latency_ms=round(latency_ms, 2),
                    status_code=response.status_code,
                    error_message=None if response.status_code == 200 else response.text
                )
        except Exception as e:
            return HealthStatus(
                service_name="holy_sheep_chat",
                is_healthy=False,
                latency_ms=0,
                status_code=None,
                error_message=str(e)
            )

async def run_health_checks():
    """Chạy tất cả health checks và log kết quả"""
    checker = AIHealthChecker("YOUR_HOLYSHEEP_API_KEY")
    
    # Chạy song song tất cả checks
    results = await asyncio.gather(
        checker.check_model_listing(),
        checker.check_chat_completion()
    )
    
    for result in results:
        status_emoji = "✅" if result.is_healthy else "❌"
        print(f"{status_emoji} {result.service_name}: {result.latency_ms}ms")
        if not result.is_healthy:
            print(f"   Error: {result.error_message}")

if __name__ == "__main__":
    asyncio.run(run_health_checks())

2. Integration Với Kubernetes Probes

# kubernetes-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ai-service
  labels:
    app: ai-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ai-service
  template:
    metadata:
      labels:
        app: ai-service
    spec:
      containers:
      - name: ai-service
        image: my-ai-service:latest
        ports:
        - containerPort: 8080
        # Kubernetes Probes Configuration
        livenessProbe:
          httpGet:
            path: /health/live
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 15
          timeoutSeconds: 5
          failureThreshold: 3
        readinessProbe:
          httpGet:
            path: /health/ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 10
          timeoutSeconds: 3
          failureThreshold: 3
        startupProbe:
          httpGet:
            path: /health/startup
            port: 8080
          failureThreshold: 30
          periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: ai-service
spec:
  selector:
    app: ai-service
  ports:
  - port: 80
    targetPort: 8080

3. Circuit Breaker Pattern

// circuit-breaker.ts
enum CircuitState {
  CLOSED = 'CLOSED',     // Hoạt động bình thường
  OPEN = 'OPEN',         // Ngắt - không gọi API
  HALF_OPEN = 'HALF_OPEN'  // Thử nghiệm - cho phép 1 request
}

interface CircuitBreakerConfig {
  failureThreshold: number;      // Số lần fail để open circuit
  successThreshold: number;     // Số lần success để close circuit
  timeout: number;              // Thời gian open trước khi thử half-open (ms)
  halfOpenRequests: number;      // Số request cho phép trong half-open
}

class AICircuitBreaker {
  private state: CircuitState = CircuitState.CLOSED;
  private failureCount: number = 0;
  private successCount: number = 0;
  private nextAttempt: number = Date.now();
  private halfOpenCount: number = 0;
  
  private config: CircuitBreakerConfig = {
    failureThreshold: 5,
    successThreshold: 2,
    timeout: 30000,  // 30 giây
    halfOpenRequests: 1
  };
  
  async execute(
    operation: () => Promise,
    fallback: () => Promise
  ): Promise {
    // Kiểm tra circuit state
    if (this.state === CircuitState.OPEN) {
      if (Date.now() >= this.nextAttempt) {
        this.state = CircuitState.HALF_OPEN;
        this.halfOpenCount = 0;
        console.log('🔄 Circuit: OPEN → HALF_OPEN');
      } else {
        console.log('🚫 Circuit OPEN - sử dụng fallback');
        return fallback();
      }
    }
    
    // Trong half-open, chỉ cho phép số request giới hạn
    if (this.state === CircuitState.HALF_OPEN) {
      if (this.halfOpenCount >= this.config.halfOpenRequests) {
        console.log('⏳ Circuit HALF_OPEN - đã đạt giới hạn request');
        return fallback();
      }
      this.halfOpenCount++;
    }
    
    try {
      const result = await operation();
      this.onSuccess();
      return result;
    } catch (error) {
      this.onFailure();
      return fallback();
    }
  }
  
  private onSuccess(): void {
    this.failureCount = 0;
    
    if (this.state === CircuitState.HALF_OPEN) {
      this.successCount++;
      if (this.successCount >= this.config.successThreshold) {
        this.state = CircuitState.CLOSED;
        console.log('✅ Circuit: HALF_OPEN → CLOSED');
      }
    }
  }
  
  private onFailure(): void {
    this.failureCount++;
    this.successCount = 0;
    
    if (this.failureCount >= this.config.failureThreshold) {
      this.state = CircuitState.OPEN;
      this.nextAttempt = Date.now() + this.config.timeout;
      console.log('❌ Circuit: CLOSED → OPEN');
    }
  }
  
  getState(): CircuitState {
    return this.state;
  }
}

// Usage với HolySheep AI API
const holySheepCircuit = new AICircuitBreaker();

async function callHolySheepAPI(prompt: string): Promise {
  return holySheepCircuit.execute(
    async () => {
      const response = await fetch('https://api.holysheep.ai/v1/chat/completions', {
        method: 'POST',
        headers: {
          'Authorization': Bearer ${process.env.HOLYSHEEP_API_KEY},
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          model: 'gpt-4.1',
          messages: [{ role: 'user', content: prompt }],
          max_tokens: 100
        })
      });
      
      if (!response.ok) {
        throw new Error(API Error: ${response.status});
      }
      
      const data = await response.json();
      return data.choices[0].message.content;
    },
    async () => {
      // Fallback: Trả về cached response hoặc default message
      console.log('⚠️ Sử dụng fallback response');
      return 'Dịch vụ AI tạm thời không khả dụng. Vui lòng thử lại sau.';
    }
  );
}

Kế Hoạch Di Chuyển Từ Provider Khác

Bước 1: Đánh Giá Hiện Trạng

Trước khi di chuyển, đội ngũ cần thu thập metrics hiện tại:

Bư�2: Thiết Lập HolySheep AI

Đăng ký tài khoản HolySheep AI tại Đăng ký tại đây để nhận tín dụng miễn phí khi đăng ký. Với tỷ giá ¥1 = $1, bạn có thể thanh toán qua WeChat Pay hoặc Alipay - cực kỳ tiện lợi cho đội ngũ Trung Quốc hoặc làm việc với partners nội địa.

Bước 3: So Sánh Chi Phí

ModelProvider Khác ($/MTok)HolySheep ($/MTok)Tiết Kiệm
GPT-4.1$60$886.7%
Claude Sonnet 4.5$100$1585%
Gemini 2.5 Flash$15$2.5083.3%
DeepSeek V3.2$3$0.4286%

Với latency trung bình <50ms từ các datacenter Châu Á, HolySheep AI vượt trội so với providers có server đặt tại Mỹ (thường 200-500ms).

Triển Khai Rolling Migration

// migration-manager.ts
interface AIMigrationConfig {
  primaryProvider: 'holy_sheep';
  fallbackProvider: 'original';
  migrationRatio: number;  // 0.0 - 1.0
  healthCheckInterval: number;
}

class AIMigrationManager {
  private config: AIMigrationConfig;
  private healthChecker: AIHealthChecker;
  private currentPrimary: 'holy_sheep' | 'original' = 'original';
  
  constructor(config: AIMigrationConfig) {
    this.config = config;
    this.healthChecker = new AIHealthChecker(config.apiKey);
  }
  
  async processRequest(
    prompt: string, 
    model: string
  ): Promise {
    const shouldUseHolySheep = Math.random() < this.config.migrationRatio;
    
    // Kiểm tra health status trước
    const healthStatus = await this.healthChecker.checkChatCompletion();
    
    if (!healthStatus.is_healthy && this.currentPrimary === 'holy_sheep') {
      console.log('⚠️ HolySheep unhealthy - chuyển sang fallback');
      return this.callOriginalAPI(prompt, model);
    }
    
    if (shouldUseHolySheep) {
      return this.callHolySheepAPI(prompt, model);
    }
    
    return this.callOriginalAPI(prompt, model);
  }
  
  private async callHolySheepAPI(prompt: string, model: string): Promise {
    const startTime = Date.now();
    
    const response = await fetch('https://api.holysheep.ai/v1/chat/completions', {
      method: 'POST',
      headers: {
        'Authorization': Bearer ${process.env.HOLYSHEEP_API_KEY},
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        model: model,
        messages: [{ role: 'user', content: prompt }],
        max_tokens: 1000
      })
    });
    
    const latency = Date.now() - startTime;
    console.log(📊 HolySheep: ${latency}ms);
    
    return { data: await response.json(), provider: 'holy_sheep', latency };
  }
  
  private async callOriginalAPI(prompt: string, model: string): Promise {
    // Original API call - KHÔNG SỬ DỤNG api.openai.com hoặc api.anthropic.com
    // Thay thế bằng endpoint của provider hiện tại
    const response = await fetch('https://your-current-provider.com/v1/chat/completions', {
      method: 'POST',
      headers: {
        'Authorization': Bearer ${process.env.ORIGINAL_API_KEY},
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        model: model,
        messages: [{ role: 'user', content: prompt }],
        max_tokens: 1000
      })
    });
    
    return { data: await response.json(), provider: 'original' };
  }
  
  async increaseMigrationRatio(targetRatio: number): Promise {
    // Tăng tỷ lệ migration từ từ
    const steps = 10;
    const increment = (targetRatio - this.config.migrationRatio) / steps;
    
    for (let i = 0; i < steps; i++) {
      this.config.migrationRatio += increment;
      console.log(📈 Migration ratio: ${(this.config.migrationRatio * 100).toFixed(1)}%);
      await this.delay(60000); // Chờ 1 phút giữa mỗi bước
    }
    
    this.currentPrimary = 'holy_sheep';
  }
  
  private delay(ms: number): Promise {
    return new Promise(resolve => setTimeout(resolve, ms));
  }
}

// Phase-based migration execution
async function executeMigration() {
  const manager = new AIMigrationManager({
    primaryProvider: 'holy_sheep',
    fallbackProvider: 'original',
    migrationRatio: 0.1,  // Bắt đầu với 10%
    healthCheckInterval: 30000,
    apiKey: process.env.HOLYSHEEP_API_KEY!
  });
  
  // Phase 1: Shadow mode (10% traffic)
  console.log('🚀 Phase 1: Shadow mode - 10% traffic');
  await manager.increaseMigrationRatio(0.1);
  await manager.delay(3600000); // Theo dõi 1 giờ
  
  // Phase 2: Canary (30% traffic)
  console.log('🚀 Phase 2: Canary - 30% traffic');
  await manager.increaseMigrationRatio(0.3);
  await manager.delay(3600000); // Theo dõi 1 giờ
  
  // Phase 3: Majority (70% traffic)
  console.log('🚀 Phase 3: Majority - 70% traffic');
  await manager.increaseMigrationRatio(0.7);
  await manager.delay(3600000);
  
  // Phase 4: Full migration (100%)
  console.log('🚀 Phase 4: Full migration - 100%');
  await manager.increaseMigrationRatio(1.0);
  
  console.log('✅ Migration hoàn tất!');
}

Kế Hoạch Rollback

Một trong những bài học quan trọng nhất từ kinh nghiệm triển khai: luôn có kế hoạch rollback sẵn sàng. Chúng tôi từng gặp trường hợp một batch job xử lý 10,000 requests nhưng fail ở request thứ 5,000 - không có rollback mechanism khiến dữ liệu bị inconsistency nghiêm trọng.

// rollback-strategy.ts

interface RollbackConfig {
  triggerConditions: {
    errorRateThreshold: number;    // e.g., 0.05 = 5%
    latencyThreshold: number;      // ms
    monitoringWindow: number;      // seconds
  };
  rollbackSteps: RollbackStep[];
}

interface RollbackStep {
  order: number;
  action: 'decrease_ratio' | 'switch_provider' | 'alert_team';
  targetRatio?: number;
}

class RollbackManager {
  private metrics: MetricWindow[] = [];
  private config: RollbackConfig;
  
  constructor(config: RollbackConfig) {
    this.config = config;
  }
  
  recordMetric(endpoint: string, latency: number, success: boolean): void {
    this.metrics.push({
      endpoint,
      latency,
      success,
      timestamp: Date.now()
    });
    
    // Dọn metrics cũ
    this.cleanOldMetrics();
    
    // Kiểm tra trigger conditions
    this.checkRollbackConditions();
  }
  
  private cleanOldMetrics(): void {
    const windowMs = this.config.triggerConditions.monitoringWindow * 1000;
    const cutoff = Date.now() - windowMs;
    this.metrics = this.metrics.filter(m => m.timestamp > cutoff);
  }
  
  private checkRollbackConditions(): void {
    if (this.metrics.length === 0) return;
    
    // Tính error rate
    const errors = this.metrics.filter(m => !m.success).length;
    const errorRate = errors / this.metrics.length;
    
    // Tính latency trung bình
    const avgLatency = this.metrics.reduce((sum, m) => sum + m.latency, 0) / this.metrics.length;
    
    console.log(📊 Metrics: Error rate=${(errorRate * 100).toFixed(2)}%, Avg latency=${avgLatency.toFixed(0)}ms);
    
    // Kiểm tra trigger
    if (errorRate > this.config.triggerConditions.errorRateThreshold) {
      console.log('🚨 Alert: Error rate vượt ngưỡng!');
      this.executeRollback();
    }
    
    if (avgLatency > this.config.triggerConditions.latencyThreshold) {
      console.log('🚨 Alert: Latency vượt ngưỡng!');
      this.executeRollback();
    }
  }
  
  private async executeRollback(): Promise {
    for (const step of this.config.rollbackSteps.sort((a, b) => a.order - b.order)) {
      switch (step.action) {
        case 'decrease_ratio':
          console.log(📉 Giảm migration ratio xuống ${step.targetRatio});
          // Gọi API giảm ratio
          break;
        case 'switch_provider':
          console.log('🔄 Chuyển đổi provider về original');
          // Switch provider
          break;
        case 'alert_team':
          console.log('📢 Gửi alert cho đội ngũ');
          // Gửi notification
          break;
      }
      await this.delay(5000); // Chờ giữa các steps
    }
  }
  
  private delay(ms: number): Promise {
    return new Promise(resolve => setTimeout(resolve, ms));
  }
}

// Usage
const rollbackManager = new RollbackManager({
  triggerConditions: {
    errorRateThreshold: 0.05,      // 5% error rate
    latencyThreshold: 500,         // 500ms latency
    monitoringWindow: 60          // 60 giây
  },
  rollbackSteps: [
    { order: 1, action: 'decrease_ratio', targetRatio: 0.1 },
    { order: 2, action: 'switch_provider' },
    { order: 3, action: 'alert_team' }
  ]
});

Ước Tính ROI

Giả sử một startup xử lý 10 triệu tokens/tháng với cấu hình:

Tổng tiết kiệm: $540/tháng = $6,480/năm

Chưa kể việc giảm ~400ms latency trung bình cải thiện UX đáng kể cho end-users, dẫn đến tăng retention rate.

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ả lỗi: Khi gọi API nhận được response 401 với message "Invalid API key" hoặc "Authentication failed".

Nguyên nhân:

Mã khắc phục:

# Kiểm tra API key format
echo $HOLYSHEEP_API_KEY | head -c 10

Output phải là "hs-" prefix (HolySheep format)

Verify key với endpoint kiểm tra

curl -X GET "https://api.holysheep.ai/v1/models" \ -H "Authorization: Bearer $HOLYSHEEP_API_KEY" \ -H "Content-Type: application/json"

Response mong đợi:

{"object":"list","data":[...]}

Nếu nhận {"error":{"message":"Invalid API key"}} thì key không hợp lệ

Troubleshooting steps:

1. Kiểm tra .env file

cat .env | grep HOLYSHEEP

2. Reload environment

source .env

3. Verify lại

echo $HOLYSHEEP_API_KEY
# Python validation helper
import os
import httpx

def validate_holy_sheep_key(api_key: str) -> dict:
    """Validate HolySheep API key"""
    
    if not api_key:
        return {"valid": False, "error": "API key is empty"}
    
    # Remove whitespace
    api_key = api_key.strip()
    
    # Check length
    if len(api_key) < 20:
        return {"valid": False, "error": "API key too short"}
    
    # Test API call
    headers = {"Authorization": f"Bearer {api_key}"}
    
    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, "error": "API key không hợp lệ - vui lòng kiểm tra tại dashboard"}
        else:
            return {"valid": False, "error": f"Lỗi {response.status_code}: {response.text}"}
            
    except Exception as e:
        return {"valid": False, "error": f"Không thể kết nối: {str(e)}"}

Sử dụng

result = validate_holy_sheep_key(os.getenv("HOLYSHEEP_API_KEY")) print(result)

2. Lỗi 429 Rate Limit Exceeded

Mô tả lỗi: API trả về 429 Too Many Requests, thường kèm message "Rate limit exceeded" hoặc "Quota exceeded".

Nguyên nhân:

Mã khắc phục:

import time
import httpx
from typing import Optional

class RateLimitedClient:
    """Client với automatic rate limiting và retry"""
    
    def __init__(self, api_key: str, max_retries: int = 3):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.max_retries = max_retries
        self.request_count = 0
        self.window_start = time.time()
        self.requests_per_minute = 60  # Adjust theo plan
        
    def _check_rate_limit(self):
        """Kiểm tra và chờ nếu cần"""
        current_time = time.time()
        
        # Reset window sau 60 giây
        if current_time - self.window_start > 60:
            self.request_count = 0
            self.window_start = current_time
        
        # Nếu gần đạt limit, chờ
        if self.request_count >= self.requests_per_minute:
            wait_time = 60 - (current_time - self.window_start)
            print(f"⏳ Rate limit sắp đạt - chờ {wait_time:.1f}s")
            time.sleep(wait_time)
            self.request_count = 0
            self.window_start = time.time()
    
    def _handle_rate_limit_response(self, response: httpx.Response) -> Optional[int]:
        """Parse retry-after từ response headers"""
        if response.status_code == 429:
            retry_after = response.headers.get("Retry-After")
            if retry_after:
                return int(retry_after)
            return 60  # Default 60 giây
        return None
    
    async def chat_completion(self, messages: list, model: str = "gpt-4.1"):
        """Gọi chat completion với retry logic"""
        
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        payload = {
            "model": model,
            "messages": messages,
            "max_tokens": 1000
        }
        
        for attempt in range(self.max_retries):
            self._check_rate_limit()
            self.request_count += 1
            
            try:
                async with httpx.AsyncClient() as client:
                    response = await client.post(
                        f"{self.base_url}/chat/completions",
                        headers=headers,
                        json=payload,
                        timeout=30
                    )
                    
                    if response.status_code == 200:
                        return response.json()
                    
                    retry_after = self._handle_rate_limit_response(response)
                    if retry_after:
                        print(f"🔄 Rate limited - chờ {retry_after}s (attempt {attempt + 1}/{self.max_retries})")
                        time.sleep(retry_after)
                        continue
                    
                    # Lỗi khác
                    response.raise_for_status()
                    
            except httpx.HTTPStatusError as e:
                print(f"❌ HTTP Error: {e}")
                if attempt == self.max_retries - 1:
                    raise
        
        raise Exception("Max retries exceeded due to rate limiting")

Sử dụng

client = RateLimitedClient( api_key="YOUR_HOLYSHEEP_API_KEY", max_retries=5 ) async def main(): try: result = await client.chat_completion([ {"role": "user", "content": "Hello!"} ]) print(result) except Exception as e: print(f"Failed: {e}")

3. Lỗi 503 Service Unavailable - Model Không Khả Dụng

Mô tả lỗi: Request thành công nhưng response trả về lỗi với message như "Model not found" hoặc "Model temporarily unavailable".

Nguyên nhân:

Mã khắc phục:

import httpx

Mapping model names từ nhiều provider sang HolySheep format

MODEL_MAPPING = { # OpenAI compatible "gpt-4": "gpt-4.1", "gpt-4-turbo": "gpt-4.1", "gpt-4o": "gpt-4.1", "gpt-4o-mini": "gpt-4.1-mini", "gpt-3.5-turbo": "gpt-3.5-turbo", # Anthropic compatible "claude-3-opus": "claude-sonnet-4.5", "cl