الفصل 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