Geleneksel pazarlama ve ürün yönetimi süreçlerinde sıklıkla başvurulan klasik A/B testleri (frequentist t-test/z-test), test süresince tüm varyasyonlara eşit trafik (örneğin statik olarak %50-%50 veya %25-%25-%25-%25) dağıtır. Bu statik yaklaşım, test süresi boyunca düşük performans gösteren varyasyonlara sürekli trafik göndererek yüksek fırsat maliyeti, yani "regret" (pişmanlık/kayıp) yaratır. Özellikle Büyük Dil Modelleri (LLM) kullanarak saniyeler içinde onlarca alternatif başlık ve içerik varyasyonu ürettiğimiz modern senaryolarda, klasik yöntemlerle test yapmak örneklem büyüklüğü gereksinimini ve test süresini sürdürülemez seviyelere çıkarır.
Bu sorunu çözmek için mühendislik ve veri bilimi ekipleri Çok Kollu Haydut (Multi-Armed Bandit - MAB) algoritmalarına yönelmektedir. MAB algoritmaları, keşif (exploration) ve sömürü (exploitation) dengesini dinamik olarak yönetir. En iyi performans gösteren varyasyonun başarı olasılığı arttıkça, trafik otomatik olarak bu varyasyona kaydırılır. Stitch Fix tarafından paylaşılan verilere göre, Thompson Sampling ve MAB algoritmaları, klasik A/B testlerine kıyasla optimizasyon sürecinde kümülatif fırsat maliyetinde (regret) %20 ila %40 daha düşük regret (tasarruf) sağlamaktadır. Bu makalede, LLM tarafından üretilen içerik varyasyonlarını dinamik bir MAB altyapısıyla canlı trafikte nasıl optimize edeceğinizi adım adım teknik bir çerçeveyle ele alacağız.
Adım 1: LLM ile Yapılandırılmış İçerik Varyasyonlarının Üretimi
Dinamik bir optimizasyon sisteminin ilk adımı, girdi kalitesini ve yapısını kontrol altında tutmaktır. LLM'lerin yaratıcı gücünü kullanırken rastgele çıktılar yerine deterministik ve sistemimizin kolayca ayrıştırabileceği (parse edebileceği) JSON şemaları kullanmalıyız.
Burada kritik mühendislik parametresi temperature (sıcaklık) ayarıdır. Başlık varyasyonlarında yaratıcılık ve semantik çeşitlilik istiyorsak bu değeri 0.7 ile 0.9 arasında tutmalıyız. Çıktıyı doğrudan veritabanımıza yazabilmek için OpenAI API'nin Structured Outputs özelliğini veya JSON Schema modunu aktif etmeliyiz.
Gerçek Bir Python ve OpenAI API Örneği:
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "system",
"content": "Sen bir dönüşüm oranı optimizasyonu (CRO) uzmanısın. Kullanıcıya sadece belirtilen JSON şemasında çıktı ver."
},
{
"role": "user",
"content": "SaaS ürünümüzün analitik paneli için 5 adet alternatif tıklama odaklı başlık üret. Anahtar kelime: 'Gerçek Zamanlı Analiz'"
}
],
temperature=0.8,
response_format={
"type": "json_schema",
"json_schema": {
"name": "headline_variations",
"schema": {
"type": "object",
"properties": {
"variations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {"type": "string"},
"text": {"type": "string"}
},
"required": ["id", "text"]
}
}
},
"required": ["variations"]
}
}
}
)
print(response.choices[0].message.content)
Bu kod bloğu, sistemimize entegre edebileceğimiz benzersiz ID'lere sahip temiz bir JSON çıktısı üretir.
Adım 2: Thompson Sampling Matematiksel Altyapısı
Ürettiğimiz varyasyonları kullanıcıya gösterirken hangi varyasyonun ne kadar trafik alacağını belirlemek için Thompson Sampling (Thompson Örneklemesi) algoritmasını kullanırız. Matematiksel arka planda bu yöntem, Beta-Binomial Conjugate Prior (Beta-Binom Eşlenik Önsel) yapısına dayanır.
Her varyasyonun dönüşüm (tıklama) oranı bir Beta(α, β) dağılımı ile modellenir:
- α (Alpha): Başarı (tıklama/dönüşüm) sayısı + 1
- β (Beta): Başarısızlık (tıklamama/görüntülenip tıklanmama) sayısı + 1
Sistem her kullanıcı isteğinde, her varyasyonun güncel Beta dağılımından rastgele bir örnek (sample) çeker. En yüksek rastgele değeri alan varyasyon o kullanıcıya gösterilir. Kullanıcı etkileşime girdiğinde (tıkladığında veya tıklamadan sayfayı terk ettiğinde) parametreler gerçek zamanlı olarak güncellenir:
- Tıklama gerçekleşirse: $\alpha_{yeni} = \alpha_{eski} + 1$
- Tıklama gerçekleşmezse: $\beta_{yeni} = \beta_{eski} + 1$
Bu sayede iyi performans gösteren varyasyonların Beta dağılımları sağa (1'e doğru) daralırken, kötü performans gösterenlerin dağılımları sola (0'a doğru) kayar ve daha az trafik almaya başlar.
Adım 3: Gerçek Zamanlı Trafik Yönlendirme ve Geri Bildirim Döngüsü Mimarisi
Sistemin üretim ortamında (production) çalışabilmesi için düşük gecikmeli (low-latency) bir veri akışına ihtiyaç vardır. Netflix ve Stitch Fix gibi lider teknoloji şirketleri, benzer dinamik optimizasyon süreçlerini uç sunucularda (Edge computing) ve hızlı bellek içi (in-memory) veritabanlarında yönetmektedir.
Önerilen Teknik Mimari:
- İçerik Dağıtım Ağı (CDN) / Edge Worker: Kullanıcı istek attığında, istek Cloudflare Workers veya AWS CloudFront Functions üzerinde karşılanır.
- Bellek İçi Durum Yönetimi (Redis): Her varyasyonun $\alpha$ ve $\beta$ değerleri Redis üzerinde tutulur. Edge Worker, Redis'ten bu değerleri okur ve Thompson Sampling algoritmasını çalıştırarak saniyeler içinde hangi başlığın gösterileceğine karar verir.
- Asenkron Geri Bildirim Döngüsü (Feedback Loop): Kullanıcı etkileşimleri (impression ve click) asenkron olarak bir mesaj kuyruğuna (örn. Apache Kafka veya AWS Kinesis) gönderilir. Bir tüketici (consumer) servis, bu kuyruğu dinleyerek Redis üzerindeki ilgili varyasyonun $\alpha$ veya $\beta$ değerini anlık olarak günceller.
Adım 4: Başarı Metrikleri ve Regret (Kayıp) Analizi Hesaplama Yöntemi
Bir MAB sisteminin başarısını ölçmek için kullanılan en temel metrik Regret (Kayıp) analizidir. Regret, teorik olarak her zaman en iyi varyasyon gösterilseydi elde edilecek toplam dönüşüm ile fiilen elde edilen dönüşüm arasındaki farktır.
$$\text{Regret} = T \cdot p^* - \sum_{t=1}^{T} p_t$$
Burada $T$ toplam gösterim sayısını, $p^*$ en iyi varyasyonun gerçek dönüşüm oranını, $p_t$ ise $t$. adımda seçilen varyasyonun gerçek dönüşüm oranını temsil eder. Thompson Sampling algoritması, bu kaybı zamanla logaritmik olarak sönümler.
Ancak bu noktada önemli bir riski göz önünde bulundurmak gerekir: MAB algoritmaları toplam dönüşüm kaybını minimize etmede mükemmel olsa da, klasik A/B testleri gibi kesin bir istatistiksel anlamlılık (p-değeri) ve güven aralığı sunmaz. Eğer amacınız akademik düzeyde hipotez testi yapmak veya kesin varyans analizleri çıkarmak ise, MAB yerine klasik A/B testlerini tercih etmelisiniz.
Uygulama Kontrol Listesi (Checklist)
Projenizi hayata geçirirken aşağıdaki adımları sırasıyla tamamladığınızdan emin olun: