LLM Tabanlı Sistemlerde Operasyonel İzleme: Loglama, Performans ve Hata Yönetimi
08.06.2025 10:50
Bir yapay zekâ uygulamasını üretime aldığınızda iş sadece modeli çalıştırmakla bitmez. Sistemin sürekliliğini ve güvenilirliğini sağlamak için operasyonel izleme araçları hayati öneme sahiptir. Bu yazıda, LLM tabanlı sistemlerde nasıl etkili loglama yapılacağı, performans takibinin nasıl sağlanacağı ve hataların nasıl yönetileceği konularını ele alıyoruz.
1. Loglama: Temel Taş
logging
modülü, Python tabanlı projelerde ilk tercih edilen çözümdür:
import logging
logging.basicConfig(
filename='llm_system.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logging.info("Embedding başlatıldı.")
logging.error("Pinecone bağlantı hatası.")
Öneri: Önemli olayları (embedding, sorgu, hata, zaman aşımı) ayrı logger
’larla izleyin.
2. Hata Geri Bildirimi (Error Tracking)
Üretim ortamlarında meydana gelen hataları e-posta, Slack veya hata izleme sistemleri ile yöneticilere bildirmek kritik önem taşır. En yaygın çözüm: Sentry
import sentry_sdk
sentry_sdk.init(dsn="SENTRY_DSN_KEY")
try:
result = model.generate(query)
except Exception as e:
sentry_sdk.capture_exception(e)
📬 Alternatifler: Airbrake, Rollbar, LogRocket
3. Performans İzleme
Sorgu süreleri, yanıt kalitesi ve embedding hızları gibi metrikleri takip edebilmek için zaman ölçümü uygulamak gerekir:
import time
start = time.time()
response = model.generate(query)
duration = time.time() - start
logging.info(f"Sorgu süresi: {duration:.2f} saniye")
Grafana + Prometheus entegrasyonu ile görsel performans dashboard'ları oluşturabilirsiniz.
4. API Trafik Takibi
FastAPI kullanıyorsanız, gelen her isteği özel olarak loglayabilir veya izleyebilirsiniz:
from fastapi import Request
@app.middleware("http")
async def log_requests(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
duration = time.time() - start_time
logging.info(f"{request.method} {request.url} - {duration:.2f}s")
return response
5. Kritik Olaylar İçin Bildirim
Belirli olaylar (örneğin embedding servisinin çökmesi) Slack’e bildirilerek hızlı müdahale sağlanabilir.
import requests
def notify_slack(msg):
url = "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
requests.post(url, json={"text": msg})
notify_slack("Embedding servisi yanıt vermiyor!")
6. Log Rollover / Temizleme
Log dosyaları zamanla büyür. RotatingFileHandler
gibi çözümlerle log boyutunu sınırlayabilirsiniz:
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler("system.log", maxBytes=1000000, backupCount=5)
logger = logging.getLogger()
logger.addHandler(handler)
Sonuç
LLM tabanlı sistemlerde sadece model performansı değil, sistemin genel sağlığı da izlenmelidir. Loglama, hata bildirimi ve performans analizi; kesintisiz ve kaliteli hizmet için zorunludur.
🔗 Devamı Gelecek
Bir sonraki yazımızda, kurumsal ortamda çok kullanıcılı bir LLM sisteminin kullanıcı yetkilendirme, veri güvenliği ve erişim kontrolü gibi güvenlik bileşenlerini nasıl yöneteceğimizi inceleyeceğiz.