1 phaseActive
LLM ajanlarını RL ödülleri ve GRPO puanlaması kullanarak Yirmi Soru oyununda değerlendirin
Bu kıyaslama, LLM'nizin klasik Yirmi Soru oyununu ne kadar iyi oynayabildiğini ölçer. Modeliniz soru soran oyuncu rolünü üstlenir; soruları "Evet"/"Hayır" ile yanıtlayan cevaplayıcı ise deterministik bir sistem yanıtlayıcısıdır (LLM kullanmaz). Amaç: gizli kelimeyi 20 soru veya daha azında tahmin etmek.
Modeliniz yalnızca soru sorar. Cevaplayıcı (
SystemAnswerer) kural tabanlı örüntü eşleme ile çalışır — tüm katılımcılar tam olarak aynı koşullarla değerlendirilir.
model.py şablonunu indirin — Dosyalar sekmesinden solution/ klasöründe bulabilirsinizmodel.py içindeki api_url, api_key ve model_name alanlarını düzenleyinGönderiminiz şunları içermelidir:
submission.zip
├── model.py # TwentyQuestionsModel sınıfınız (zorunlu)
└── requirements.txt # Python bağımlılıkları (isteğe bağlı)Modelinizin uygulaması gereken arayüz çok basittir — tek bir metot:
class TwentyQuestionsModel:
def __init__(self):
"""LLM API ayarlarınızı burada yapılandırın."""
self.api_url = "https://your-api-url/v1/chat/completions"
self.api_key = "YOUR_API_KEY"
self.model_name = "your-model-name"
def call_llm(self, prompt: str) -> str:
"""
Metin istemi alır, metin yanıtı döndürür.
Kıyaslama bu metodu oyuncu rolünde çağırır:
- "Soru sor veya tahmin yap" gibi bir istem alırsınız
- Cevaplayıcı rolünü SystemAnswerer (deterministik) üstlenir,
modeliniz bu rolde kullanılmaz
Args:
prompt: LLM'inize gönderilecek metin istemi
Returns:
LLM'inizden dönen metin yanıtı
"""
# LLM API çağrınızı burada yapın
...Önemli: Siz yalnızca
call_llm()metodunu yazarsınız. Soru stratejisi, tahmin formatı, istem oluşturma ve oyun döngüsü gibi her şeyi kıyaslamanın besleme programı (ingestion.py) otomatik olarak yönetir.
Besleme programı modelinizi aşağıdaki şekilde kullanır:
| Rol | Ne yapar | Modelinizin görevi |
|---|---|---|
Oyuncu (PlayerStrategy) | Konuşma geçmişinden istem oluşturur, call_llm() çağırır, çıktıyı soru veya tahmine dönüştürür | call_llm(istem) → metin döndür |
Cevaplayıcı (SystemAnswerer) | Deterministik örüntü eşleme ile "Evet"/"Hayır" yanıtı verir (LLM kullanmaz) | — (modeliniz bu rolde kullanılmaz) |
Her oyun turunda konuşma geçmişi şu formatta büyür:
[
{"role": "player", "content": "Canlı bir varlık mı?"},
{"role": "answerer", "content": "Evet"},
{"role": "player", "content": "Hayvan mı?"},
{"role": "answerer", "content": "Hayır"},
{"role": "player", "content": "Tahmin: elma"},
]Tahmin yapmak için yanıtınızda şu formatı kullanın:
Tahmin: kelimeÖrnek: Tahmin: elma, Tahmin: bilgisayar
Sistem
Tahmin:önekini regex ile tanır.Tahmin:olmayan yanıtlar normal soru olarak işlenir.
zip -r submission.zip model.py requirements.txtGönderiminiz değerlendirildikten sonra puanınız lider tablosunda aşağıdaki metriklerle görünür:
| Metrik | Açıklama |
|---|---|
| Genel Puan | Bileşik puan (0–100) — kazanma oranı ve verimlilik toplamı |
| Kazanma Oranı (%) | Doğru tahmin yapılan oyunların yüzdesi |
| Ort. Soru Sayısı | Oyun başına ortalama tur |
| Kazanma / Verimlilik Puanı | Puanın iki bileşeni ayrı ayrı |
| GRPO Puanı | Grup göreli avantaj |
| Süre (sn) | Toplam yürütme süresi |
Sonuçlar sayfasından indirilebilen scores.html dosyası, modelinizin performansını derinlemesine analiz eder:
Her metrik etiketinin yanındaki ? simgesine gelerek kısa açıklamalar görebilirsiniz.
Puanlama formülü ve detaylar için Puanlama Sistemi sayfasına bakın.
model.py şablonu çalışan bir OpenAI uyumlu API örneği içerir — sadece API bilgilerinizi girinİyi şanslar! 🎮