إنتقل إلى المحتوى الرئيسي

الفصل 3: إدارة التكلفة

استراتيجيات التخزين المؤقت​

import hashlib
from functools import lru_cache
import redis

class LLMCache:
def __init__(self):
self.redis = redis.Redis()
self.ttl = 3600 # 1 hour

def _hash_request(self, prompt: str, params: dict) -> str:
key = f"{prompt}:{json.dumps(params, sort_keys=True)}"
return hashlib.sha256(key.encode()).hexdigest()

def get(self, prompt: str, params: dict) -> str | None:
key = self._hash_request(prompt, params)
cached = self.redis.get(key)
return cached.decode() if cached else None

def set(self, prompt: str, params: dict, response: str):
key = self._hash_request(prompt, params)
self.redis.setex(key, self.ttl, response)

# Usage
cache = LLMCache()

def generate_with_cache(prompt: str, params: dict):
cached = cache.get(prompt, params)
if cached:
return cached # Cache hit - free!

response = llm.generate(prompt, **params)
cache.set(prompt, params, response)
return response

اختيار النموذج بناءً على التكلفة​

class CostAwareRouter:
def __init__(self):
self.models = {
"simple": {"model": "gpt-3.5-turbo", "cost_per_1k": 0.002},
"complex": {"model": "gpt-4", "cost_per_1k": 0.06}
}

def classify_complexity(self, prompt: str) -> str:
# Simple heuristics
if len(prompt) < 100 and "?" in prompt:
return "simple"
return "complex"

def route(self, prompt: str) -> str:
complexity = self.classify_complexity(prompt)
return self.models[complexity]["model"]

التالي: اختبار الوحدة 11