AI Observability

Prompt Sapmasını Yakalama: CI/CD'de Braintrust ile LLM Geri Dönüş Testlerini Otomatikleştirme

Büyük Dil Modellerini (LLM) üretim uygulamalarına entegre etmek benzersiz bir zorluk getirir: model deterministik değildir. Geleneksel yazılımda bir test, katı mantığa dayalı olarak geçer veya başarısız olurken, LLM çıktıları her çalıştırmada hafifçe değişebilir ve yine de "doğru" olabilir veya küçük prompt ayarlamaları nedeniyle kalite açısından ince bir şekilde düşüş gösterebilir. Kapsamlı testler olmadan, bu ince kaymalar—genellikle prompt sapması olarak adlandırılır—sessiz hatalara, azalan kullanıcı güvenine ve artan operasyonel maliyetlere yol açabilir.

Bu makalede, LLM promptları için sağlam bir geri dönüş testi iş akışını, LLM gözlemlenebilirliği ve değerlendirme için özel olarak tasarlanmış Braintrust platformunu kullanarak nasıl uygulayacağımızı inceleyeceğiz. Bu süreci doğrudan CI/CD hattınıza entegre ederek, dağıtım öncesinde her prompt değişikliğinin standart bir referans noktasına karşı doğrulanmasını nasıl sağlayacağımızı göstereceğiz.

Neden Geleneksel Birim Testleri LLM'ler İçin İşe Yaramaz?

Geleneksel birim testler tam eşleşmeye dayanır. Bir LLM için, çıktının "Hava güneşli." ifadesine eşit olup olmadığını kontrol etmek kırılgandır. "Güneşli bir gün." şeklinde yapılan küçük bir yeniden ifade geçmeli, ancak geleneksel bir test bunu başarısız olarak işaretler. Ayrıca, LLM'ler bağlama, sıcaklık ayarlarına ve hatta altta yatan modelin belirli sürümüne karşı hassastır. Temel modelinizi GPT-4'ten daha yeni bir sürüme günceller veya açıklık için sistem promptunuzu ayarlarsanız, önceki testlerin kapsamadığı sınır durumlarını bozma riskiyle karşı karşıya kalırsınız.

LLM bağlamında geri dönüş testi, değerlendirmeye dayalı test gerektirir. Tam dizgeleri kontrol etmek yerine, yanıtın anlamsal doğruluğunu, güvenliğini ve biçimini değerlendiren puanlama işlevleri kullanırız. Braintrust, bu değerlendiricileri bir kez tanımlamanıza ve prompt değiştiğinde tüm veri setinize karşı yeniden çalıştırmanıza olanak tanır.

Braintrust Değerlendirme İş Akışını Kurma

Öncelikle, değerlendirme mantığınızı tanımlamanız gerekir. Braintrust, bunu kolaylaştıran bir Python SDK'sı sağlar. Temel kavram, giriş promptlarını model yanıtlarına eşleyip bir puanlama işlevi uygulayan bir Task (Görev) oluşturmaktır.

Aşağıda, bir özetleme prompt'unu test eden pratik bir değerlendirme scripti örneği olan evals.py yer almaktadır. İki metriği kontrol eder: Doğruluk (anahtar olguları içeriyor mu?) ve Üslup (profesyonel mi?)

import braintrust
from braintrust import Task, Eval
from my_app.llm import generate_summary

# Puanlama işlevini tanımla
def score(output, input, metadata):
    # Çıktıyı puanlamak için bir yargıç LLM veya sezgisel yöntem kullan
    accuracy = check_factuality(output, input['expected_facts'])
    tone = check_tone(output)
    
    return {
        "accuracy": accuracy,
        "tone": tone,
        "pass": accuracy > 0.8 and tone > 0.7
    }

# Braintrust projesini başlat
project = braintrust.Project("summarizer-eval")

# Mevcut prompt sürümüyle görevi oluştur
task = Task(
    name="v2.1_prompt_update",
    evals=[
        Eval(
            name="summarization_test",
            data=[
                {"input": "Long text here...", "expected_facts": ["fact1", "fact2"]},
                # ... CSV/JSON'dan tam veri setini yükle
            ],
            query=generate_summary,
            score=score
        )
    ]
)

# Değerlendirmeyi çalıştır
result = project.create(task=task)
print(f"Evaluation ID: {result.id}")

CI/CD ile Entegrasyon: Kapı Bekçisi Adımı

Bu iş akışının gerçek gücü otomatik kapı bekçiliğidir. GitHub Actions veya GitLab CI yapılandırmanızda, prompts/ dizinini veya LLM çağrı kodunu değiştiren her pull request'te bu değerlendirme scriptini çalıştırabilirsiniz.

Ortalama puan, tanımlanan bir eşiğin altına düşerse (ör. %90 geçme oranı), CI işi başarısız olur ve birleştirme engellenir. Bu, bir kapı bekçisi gibi davranarak, hiçbir prompt geri dönüşünün üretime ulaşmasını engeller.

# .github/workflows/llm-regression.yml
name: LLM Regression Tests

on: [pull_request]

jobs:
  llm-eval:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          pip install braintrust
      
      - name: Set Braintrust Token
        run: |
          echo "BRAINTRUST_TOKEN=${{ secrets.BRAINTRUST_TOKEN }}" >> $GITHUB_ENV
      
      - name: Run Evaluation
        run: |
          python evals.py
      
      - name: Check Pass Rate
        run: |
          # Braintrust API'den sonuçları almak ve %90'dan düşükse başarısız saymak için script
          python check_threshold.py --min-pass-rate 0.90

Üretim Performansını İzleme

CI/CD, dağıtım öncesinde geri dönüşleri önlerken, kullanıcı veri dağılımındaki değişiklikler nedeniyle prompt sapması üretimde de oluşabilir. Braintrust'un gözlemlenebilirlik özellikleri, üretim izlerini değerlendirme verilerinizle birlikte kaydetmenize olanak tanır. Çevrimdışı değerlendirmelerinizin puanlarını canlı üretim trafiğinin puanlarıyla karşılaştırarak, modelin test veri setinizde olmayan yeni tür girişlerle başa çıkmakta zorlanmaya başladığını tespit edebilirsiniz.

Bu kapalı döngü yaklaşımı, test veri setlerinizin güncel kalmasını sağlar. Üretim puanları düştüğünde, bu belirli hata durumlarını belirleyebilir, onları geri dönüş test suite'inize ekleyebilir ve bir sonraki model veya prompt güncellemesinin bunları doğru şekilde ele almasını sağlamak için CI hattını yeniden çalıştırabilirsiniz.

Sonuç

LLM promptları için geri dönüş testlerini otomatikleştirmek artık isteğe bağlı değildir—güvenilir yapay zeka mühendisliğinin kritik bir bileşenidir. Braintrust gibi araçlardan yararlanarak, geliştiriciler kırılgan dizgi eşleştirme testlerinden güçlü, anlamsal değerlendirmelere geçiş yapabilir. Bu süreci CI/CD hattınıza entegre etmek, prompt sapmasını erken yakalayan, hata ayıklama süresini azaltan ve nihayetinde daha tutarlı ve güvenilir bir kullanıcı deneyimi sunan bir güvenlik ağı oluşturur. LLM uygulamaları ölçeklendikçe, bu gözlemlenebilirlik ve test altyapısını ilk günden itibaren kurmak, kararlı bir ürün ile kaotik bir dağıtım deneyimi arasındaki fark olacaktır.

Share: