Test dataset'i üretmek
Generating test datasets
Bu modül için tahmini süre: 5 dakika
Genel bakış
Custom bir prompt evaluation workflow’u kurmak, sağlam bir prompt yazıp ne kadar iyi performans gösterdiğini görmek için test verisi üretmekle başlar. Kullanıcıların AWS’ye özgü kod yazmasına yardımcı olan bir prompt için evaluation sistemi kurma sürecinde ilerleyelim.
Hedefi belirlemek
Prompt’umuzun kullanıcılara AWS use case’leri için üç spesifik tipte output yazmada yardımcı olması gerekiyor:
- Python kodu
- JSON konfigürasyon dosyaları
- Regular expression’lar (regex)
Temel gereksinim: bir kullanıcı bir task için yardım istediğinde, herhangi bir ekstra açıklama, header veya footer olmadan bu formatlardan birinde temiz output döndürmemiz.

Başlangıç prompt’umuz (versiyon 1):
prompt = f"""
Please provide a solution to the following task:
{task}
"""
Evaluation dataset’i oluşturmak
Bir evaluation dataset, prompt’umuza feed edeceğimiz input’ları içerir. Her prompt + input kombinasyonu için prompt’u çalıştırıp sonuçları analiz edeceğiz.
Dataset’imiz, her objenin Claude’tan ne yapmasını istediğimizi tanımlayan bir “task” property’si içerdiği bir JSON object array’i olacak. Bu dataset’i elle de oluşturabilir, Claude kullanarak otomatik de üretebiliriz.

Test verisi ürettiğimiz için, tam Claude modeli yerine Haiku gibi daha hızlı bir modeli kullanmak için mükemmel bir fırsat bu.
Test verisini kodla üretmek
Test dataset’imizi otomatik olarak üreten bir fonksiyon oluşturalım. Önce Claude ile çalışmak için helper fonksiyonlarımız gerek:
def add_user_message(messages, text):
user_message = {"role": "user", "content": text}
messages.append(user_message)
def add_assistant_message(messages, text):
assistant_message = {"role": "assistant", "content": text}
messages.append(assistant_message)
def chat(messages, system=None, temperature=1.0, stop_sequences=[]):
params = {
"model": model,
"max_tokens": 1000,
"messages": messages,
"temperature": temperature
}
if system:
params["system"] = system
if stop_sequences:
params["stop_sequences"] = stop_sequences
response = client.messages.create(**params)
return response.content[0].text
Şimdi dataset üretme fonksiyonumuzu oluşturalım:
def generate_dataset():
prompt = """
Generate an evaluation dataset for a prompt evaluation. The dataset will be used to evaluate prompts that generate Python, JSON, or Regex specifically for AWS-related tasks. Generate an array of JSON objects, each representing task that requires Python, JSON, or a Regex to complete.
Example output:
```json
[
{
"task": "Description of task",
},
...additional
]
- Focus on tasks that can be solved by writing a single Python function, a single JSON object, or a single regex
- Focus on tasks that do not require writing much code
Please generate 3 objects. """
JSON response'unu düzgün parse etmek için prefilling ve stop sequences kullanırız:
```python
messages = []
add_user_message(messages, prompt)
add_assistant_message(messages, "```json")
text = chat(messages, stop_sequences=["```"])
return json.loads(text)
Dataset üretimini test etmek
Fonksiyonumuzu çalıştırıp nasıl test case’ler aldığımıza bakalım:
dataset = generate_dataset()
print(dataset)
Bu, hedef çıktılarımızı (AWS’ye özgü görevler için Python fonksiyonları, JSON konfigürasyonları ve regex’ler) kapsayan üç farklı test case döndürmeli.
Dataset’i kaydetmek
Dataset’imiz hazır olduğunda, evaluation sırasında kolayca yükleyebilmek için bir dosyaya kaydediyoruz:
with open('dataset.json', 'w') as f:
json.dump(dataset, f, indent=2)
Bu, notebook’unuz ile aynı dizinde, prompt evaluation için hazır task listenizi içeren bir dataset.json dosyası oluşturur.
Bu temel ile artık prompt’larınızın farklı türde AWS ile ilgili coding task’larında ne kadar iyi performans gösterdiğini değerlendirmek için sistematik bir test verisi üretme yönteminiz var.
Temel çıkarımlar
- Eval dataset’i elle yazılabilir ama hızlı başlangıç için Claude (özellikle Haiku) ile otomatik üretmek pratiktir
- Dataset’i JSON object listesi olarak yapılandırın; her object input için ihtiyacınız olan tüm alanları taşısın
- JSON çıktısını kararlı almak için
prefill (\“json) + stop_sequences (```)` pattern’i bu modüldeki gibi kritik - Üretilen dataset’i bir kez dosyaya yazıp (örn.
dataset.json) sonraki çalışmalarda yeniden kullanın — her seferinde yeniden üretmek hem yavaş hem maliyetli - Üretim modeli olarak Haiku, sadece test verisi ürettiğimiz için maliyet ve hız açısından akıllı bir tercih