0Pricing
AI Prompt Engineering · Ders

İstemleri Derleme ve İyileştirme

BootstrapFewShot, MIPRO ve diğer DSPy iyileştiricilerinin uygulamadaki kullanımı.

İstemleri Derleme ve İyileştirme, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

DSPy'de İyileştirme Ne Anlama Gelir

DSPy iyileştirmesi (derleme olarak adlandırılır), bir eğitim kümesi ve ölçüt verildiğinde programınız için en iyi istem yapılandırmasını bulur. İyileştirici, olası az örnekli örnekleri, yönergeleri ve akıl yürütme gösterimlerini tarar.

Derlemeyi bir kez çalıştırır, sonucu kaydeder ve iyileştirilmiş programı dağıtıma alırsınız. Çıkarım sırasında yalnızca hızlı LLM çağrıları yapılır; artık iyileştirme ek yükü yoktur.

Ölçüt İşlevi Tanımlama

Her DSPy iyileştiricisi, beklenen çıktıyı verilen bir tahmini puanlayan bir ölçüt işlevine ihtiyaç duyar. Bir sayı veya boole değeri döndürür; daha yüksek değer daha iyidir.

Ölçüt, iyileştiricinin bir istem yapılandırmasının iyi olup olmadığına karar vermek için kullandığı göstergedir.

# Metric: exact match on answer field
def exact_match_metric(example, prediction, trace=None):
    """
    example: a training example with .answer
    prediction: the module's output with .answer
    Returns 1.0 if correct, 0.0 otherwise
    """
    expected = example.answer.strip().lower()
    predicted = prediction.answer.strip().lower()
    return float(expected == predicted)

# Metric: F1 score for token overlap (common in QA)
def token_f1_metric(example, prediction, trace=None):
    gold_tokens = set(example.answer.lower().split())
    pred_tokens = set(prediction.answer.lower().split())
    if not pred_tokens:
        return 0.0
    precision = len(gold_tokens & pred_tokens) / len(pred_tokens)
    recall = len(gold_tokens & pred_tokens) / len(gold_tokens)
    if precision + recall == 0:
        return 0.0
    return 2 * precision * recall / (precision + recall)

Eğitim Kümesi Hazırlama

DSPy, dspy.Example nesnelerinden oluşan bir eğitim kümesine ihtiyaç duyar. Her örnek, girdileri ve beklenen çıktıyı belirtir. BootstrapFewShot için çoğu zaman 20-50 örnek yeterlidir.

import dspy

# Build training examples
trainset = [
    dspy.Example(
        question='What is the capital of Germany?',
        answer='Berlin'
    ).with_inputs('question'),

    dspy.Example(
        question='Who wrote Romeo and Juliet?',
        answer='William Shakespeare'
    ).with_inputs('question'),

    dspy.Example(
        question='What year did World War II end?',
        answer='1945'
    ).with_inputs('question'),
    # ... add more examples
]

print(f'Training set size: {len(trainset)} examples')
print(trainset[0].question, '->', trainset[0].answer)

BootstrapFewShot İyileştiricisi

BootstrapFewShot, en yaygın DSPy iyileştiricisidir. Programınızı eğitim kümesi üzerinde çalıştırır, başarılı izleri (ölçütün başarılı olduğu girdi-çıktı çiftlerini) toplar ve bu izleri derlenmiş istemde az örnekli gösterimler olarak kullanır.

import dspy
from dspy.teleprompt import BootstrapFewShot

# Define your program
class QA(dspy.Signature):
    """Answer factual questions."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

program = dspy.ChainOfThought(QA)

# Set up the optimizer
optimizer = BootstrapFewShot(
    metric=exact_match_metric,
    max_bootstrapped_demos=4,   # Up to 4 few-shot examples per predictor
    max_labeled_demos=4,        # Use labeled examples directly if available
)

# Compile!
compiled_program = optimizer.compile(program, trainset=trainset)
print('Compilation complete')

MIPRO İyileştiricisi

MIPRO (Çoklu İstem Yönergesi Önerme ve İyileştirme), daha güçlü bir iyileştiricidir. Yalnızca az örnekli örnekleri seçmekle kalmaz, isteme eklenecek daha iyi yönerge metnini de arar.

MIPRO, derleme sırasında daha fazla LLM çağrısı gerektirir; ancak çoğu zaman çok daha yüksek doğruluk sağlar.

import dspy
from dspy.teleprompt import MIPROv2

class QA(dspy.Signature):
    """Answer factual questions."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

program = dspy.ChainOfThought(QA)

# MIPRO: optimizes both instructions AND few-shot examples
optimizer = MIPROv2(
    metric=exact_match_metric,
    auto='medium',      # 'light' / 'medium' / 'heavy' for optimization budget
    num_threads=4,      # Parallel evaluation threads
)

compiled_program = optimizer.compile(
    program,
    trainset=trainset,
    num_trials=20,       # Number of candidate prompts to evaluate
)
print('MIPRO compilation complete')

Derlenmiş İstem Nasıl Görünür

Derlemeden sonra DSPy, iyileştirilmiş az örnekli gösterimleri isteme yerleştirir. Bunu, derlenmiş programın tahmin bileşenlerini inceleyerek görebilirsiniz.

import dspy

# After compiling, inspect the optimized state
compiled_program = dspy.ChainOfThought('question -> answer')
# (Assume this was returned by optimizer.compile(...))

# Inspect the demos that were found
for demo in compiled_program.demos:
    print('Input:', demo.question)
    print('Reasoning:', demo.get('reasoning', 'N/A'))
    print('Answer:', demo.answer)
    print('---')

# Save the compiled state
compiled_program.save('compiled_qa_program.json')
print('Saved compiled program')

teleprompter.compile() Arayüzü

Tüm DSPy iyileştiricileri aynı compile() arayüzünü paylaşır. Bu tutarlılık, program kodunuzu değiştirmeden iyileştiricileri birbirinin yerine kullanabileceğiniz anlamına gelir.

from dspy.teleprompt import BootstrapFewShot, MIPROv2, COPRO

# All optimizers use the same interface:
# compiled = optimizer.compile(program, trainset=trainset)

# BootstrapFewShot: fast, uses successful traces as demos
opt1 = BootstrapFewShot(metric=exact_match_metric)

# MIPRO: slower, optimizes instructions too
opt2 = MIPROv2(metric=exact_match_metric, auto='light')

# COPRO: coordinate descent over instruction proposals
opt3 = COPRO(metric=exact_match_metric, depth=3)

# Swap between them with one line change:
compiled = opt1.compile(program, trainset=trainset)
# or: compiled = opt2.compile(program, trainset=trainset)

BootstrapFewShotWithRandomSearch

BootstrapFewShotWithRandomSearch, çok sayıda aday gösterim kümesi oluşturarak ve doğrulama kümesinde en iyi performansı göstereni seçerek BootstrapFewShot'u genişletir.

BootstrapFewShot'un basitliği ile MIPRO'nun gücü arasında iyi bir orta noktadır.

from dspy.teleprompt import BootstrapFewShotWithRandomSearch

# Split data into train and validation
trainset = examples[:40]
devset = examples[40:60]

optimizer = BootstrapFewShotWithRandomSearch(
    metric=exact_match_metric,
    max_bootstrapped_demos=4,
    num_candidate_programs=8,  # Try 8 different demo sets
    num_threads=4,
)

compiled_program = optimizer.compile(
    program,
    trainset=trainset,
    valset=devset,  # Picks the best program based on validation
)
print('Best program selected from 8 candidates')

Derleme Maliyetiyle İlgili Hususlar

Derleme, aday istemleri oluşturmak ve değerlendirmek için ek LLM çağrıları yapar. Bütçenizi buna göre ayarlayın:

  • BootstrapFewShot: eğitim kümesi boyutunun yaklaşık 1-2 katı LLM çağrısı
  • RandomSearch with 8 candidates: yaklaşık 8-10 katı
  • MIPRO medium: yaklaşık 30-50 katı

Derlemeyi çevrimdışı çalıştırın, sonucu kaydedin ve kaydedilmiş programı dağıtıma alın. Üretimdeki çıkarım maliyetiniz değişmez.

Derlenmiş Programı Doğrulama

Derlemeden sonra, iyileştirilmiş programın gerçekten genelleştiğini doğrulamak için her zaman ayrılmış bir sınama kümesi üzerinde değerlendirme yapın. Yalnızca eğitim kümesi performansını kontrol etmeyin.

import dspy

# Evaluate on test set
evaluate = dspy.Evaluate(
    devset=testset,
    metric=exact_match_metric,
    num_threads=4,
    display_progress=True,
)

# Compare uncompiled vs compiled
uncompiled_score = evaluate(uncompiled_program)
compiled_score = evaluate(compiled_program)

print(f'Uncompiled accuracy: {uncompiled_score:.1%}')
print(f'Compiled accuracy:   {compiled_score:.1%}')
print(f'Improvement: +{compiled_score - uncompiled_score:.1%}')

Her Şeyi Bir Araya Getirme

Eksiksiz bir DSPy iyileştirme iş akışı şöyledir: signature tanımla → modül oluştur → eğitim verilerini hazırla → iyileştiriciyi seç → derle → değerlendir → save. Bu, fikirden üretime hazır iyileştirilmiş istem işlem hattına uzanan tam döngüdür.

import dspy
from dspy.teleprompt import BootstrapFewShot

# 1. Configure LM
dspy.configure(lm=dspy.LM('openai/gpt-4o-mini', api_key='sk-...'))

# 2. Define signature and module
class QA(dspy.Signature):
    """Answer questions accurately."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

program = dspy.ChainOfThought(QA)

# 3. Compile
optimizer = BootstrapFewShot(metric=exact_match_metric)
compiled = optimizer.compile(program, trainset=trainset)

# 4. Save
compiled.save('production_qa.json')
print('Production program ready')

Bilgi Kontrolü: BootstrapFewShot

BootstrapFewShot, derlenmiş istemi iyileştirmek için eğitim kümenizden ne kullanır?

Özet: Derleme ve İyileştirme

DSPy iyileştirmesi, bir ölçüt işlevi ve bir eğitim kümesi kullanarak en iyi istem yapılandırmasını arar. BootstrapFewShot, başarılı izlerden iyi az örnekli gösterimler bulur. MIPROv2 ayrıca daha iyi yönerge metni arar. Tüm iyileştiriciler compile(program, trainset=...) arayüzünü paylaşır. Derleme, bir kez yapılan çevrimdışı bir maliyettir; sonucu program.save() ile kaydedin ve çıkarım sırasında ücretsiz olarak iyileştirilmiş programı dağıtıma alın.

Sıkça Sorulan Sorular

“İstemleri Derleme ve İyileştirme” dersi ücretsiz mi?

Evet — “İstemleri Derleme ve İyileştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

“İstemleri Derleme ve İyileştirme” dersinde ne öğreneceğim?

BootstrapFewShot, MIPRO ve diğer DSPy iyileştiricilerinin uygulamadaki kullanımı. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“İstemleri Derleme ve İyileştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DSPy Çerçevesine Giriş
  2. İmzaları ve Modülleri Tanımlama
  3. İstemleri Derleme ve İyileştirme
  4. DSPy İş Akışlarını Değerlendirme
← AI Prompt Engineering Sayfasına Dön