Büyük Dil Modellerini (LLM) üretim ortamına dağıtmak artık yalnızca doğruluk ölçütleriyle ilgili değil; zaman içinde tutarlı davranışı sürdürmekle ilgilidir. Geleneksel yazılımda kod değişiklikleri deterministikken, LLM çıktıları model güncellemeleri, prompt mühendisliğindeki küçük farklılıklar veya altta yatan altyapı değişiklikleri nedeniyle sapabilir. Bu deterministik olmayan doğa, geri dönüş testlerini kritik hale getirir. Bu kılavuzda, Braintrust'u CI/CD hattınıza entegre ederek LLM geri dönüş testlerini nasıl otomatikleştirebileceğinizi ve her dağıtımda yapay zeka uygulamanızın güvenilir kalmasını nasıl sağlayabileceğinizi inceliyoruz.
Neden Geleneksel Testler LLM'ler İçin İşe Yaramaz?
Geleneksel yazılım geliştirmede, birim testleri belirli beklenen çıktıları doğrular. LLM'ler için bu yaklaşım kırılgandır çünkü ifade biçimindeki küçük farklılıklar mutlaka bir hatayı göstermez. Bunun yerine, değerlendirmeye dayalı testlere ihtiyacımız var. Braintrust, paradigmayı ikili geçme/kalma kontrollerinden puan tabanlı değerlendirmelere kaydırır. Özel değerlendirme işlevlerini (LLM-as-a-judge veya anlamsal benzerlik puanları gibi) kullanarak, zararsız sözdizimsel farklılıklara takılmadan kalitedeki ince bozulmaları tespit edebiliriz.
Braintrust Değerlendirme Setini Kurma
Öncelikle, test setinizi tanımlamanız gerekir. Braintrust'ta bir set, bir değerlendirme işleviyle birlikte giriş/çıkış çiftlerinin bir koleksiyonudur. Testleriniz için bir dizin oluşturun ve bir Braintrust deneyi başlatın.
import braintrust
from openai import OpenAI
# LLM istemcinizi başlatın
client = OpenAI(api_key="YOUR_API_KEY")
# Değerlendirme işlevini tanımlayın
def evaluate(input, output, expected_output):
# Örnek: Basit anahtar kelime kontrolü veya LLM-as-a-judge mantığı
if expected_output.lower() in output.lower():
return {"score": 1.0}
return {"score": 0.0}
# Braintrust'u başlatın
braintrust.init("my-llm-suite")
# Test verilerini yükleyin (örn., JSON'dan veya bir veritabanından)
test_cases = [
{"input": "Summarize this text", "expected_output": "summary"},
{"input": "Translate to French", "expected_output": "traduction"}
]
# Değerlendirmeyi çalıştırın
braintrust.run(
name="baseline-v1",
data=test_cases,
task=lambda x: client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": x["input"]}]
).choices[0].message.content,
evaluate=evaluate
)
GitHub Actions'a Entegrasyon
Otomasyonun çekirdeği, bu testleri her çekme isteğinde (pull request) tetiklemektir. Braintrust CLI'ını çalıştırmak ve ortalama puan tanımlanan eşiğin altına düşerse derlemeyi başarısız saymak için GitHub Actions kullanabiliriz.
name: LLM Regression Test
on:
pull_request:
branches: [ main ]
jobs:
braintrust-test:
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 braintrust openai
- name: Run Braintrust Evaluation
env:
BRAINTRUST_API_KEY: ${{ secrets.BRAINTRUST_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
braintrust eval my-llm-suite --threshold 0.85
- name: Check for Regression
if: ${{ failure() }}
run: |
echo "LLM Regression Detected: Score dropped below threshold. Please review the logs in Braintrust."
Üretim Ortamında Sapmayı İzleme
Sonuç
Braintrust ile LLM geri dönüş testlerini otomatikleştirmek, geleneksel CI/CD hatlarının eksik bıraktığı bir güvenlik ağı sağlar. LLM çıktılarını olasılıksal sonuçlar olarak ele alarak ve puan tabanlı değerlendirmeler kullanarak özgüvenle ilerleyebilirsiniz. İster promptları ince ayarlayın ister model sağlayıcılarını değiştirin, bu entegrasyon kalitenin gözden kaçmasını önler. Bir taban seti oluşturarak başlayın, bunu iş akışınıza entegre edin ve yapay zeka geliştirme sürecinizi veriyle yönlendirin.