kertenkerem_
· LLM Tools · 4 dk okuma

DSPy ile Prompt Mühendisliğine Veda: Algoritmik Prompt Optimizasyonu

Son dönemde yapay zekada herkesin dilinde bir kelime var: prompt mühendisliği. Ama dürüst olalım, saatlerce “Sen bir dünya klası yazarsın…” diye başlayan, sonu gelmeyen talimatlar yazmaktan ve o sihirli kelimeleri ararken kaybolmaktan yorulmadık mı? Stanford Üniversitesi’nin geliştirdiği DSPy tam bu noktada devreye giriyor. Elle yazılan, en ufak model güncellemesinde çöken kırılgan promptlar yerine programatik ve kendini güncelleyen bir prompt optimizasyonu sürecine geçiyoruz. Bu yazıda DSPy ile klasik prompt mühendisliğini karşılaştırıp DSPy’ın arkasındaki mantığı pratik örneklerle inceleyeceğiz.

Prompt mühendisliği neden tıkandı?

Mevcut yapay zeka geliştirme süreçlerinde büyük bir yapısal sorun var: kırılganlık. Bugün GPT-4 için yazdığınız ve iyi çalışan 500 kelimelik detaylı bir prompt, yarın model güncellendiğinde ya da daha ucuz olan Llama-3 modeline geçmek istediğinizde tamamen çöpe gidebiliyor. Prompt yazmak mühendislikten çok modern simyacılığa benziyor. Neyi değiştirdiğinizde neden çalıştığını tam olarak bilemiyorsunuz.

LLM’leri (Büyük Dil Modelleri) metinsel şablonlarla yönlendirmeye çalışıyoruz, oysa onları birer yazılım bileşeni olarak görmeliyiz. DSPy (Declarative Self-improving Language Programs, pythonic tarzda beyan edilen ve kendini geliştiren dil programları), LLM entegrasyonlarını “metin manipülasyonu” olmaktan çıkarıp “programlama” haline getiriyor. PyTorch yapay sinir ağlarındaki ağırlıkları nasıl otomatik optimize ediyorsa DSPy de LLM’lere giden promptları öyle optimize ediyor.

DSPy nedir? Temel kavramlar

DSPy’ı anlamak için geleneksel yaklaşımları bir kenara bırakıp üç temel kavrama odaklanmamız gerekiyor:

  • Signatures (İmzalar): Prompt yazmak yerine sistemin ne yapacağını deklaratif olarak tanımlarsınız. Örneğin: "doküman -> özet" veya "soru, bağlam -> cevap" gibi. Promptun nasıl görüneceğini DSPy halleder.
  • Modules (Modüller): LLM çağrılarını gerçekleştiren şablonlardır. Klasik bir LLM çağrısı (Predict), adım adım düşünme (ChainOfThought) veya araç kullanımını yöneten (ReAct) modüller hazır olarak sunulur.
  • Optimizers / Teleprompters (Optimizasyon Araçları): İşin asıl ilginç kısmı burası. Elinizdeki birkaç örnek veriyi kullanarak hedeflediğiniz imza için en uygun promptu ve “few-shot” örnekleri otomatik olarak seçip oluşturan algoritmalardır.

Uygulamalı test: Klasik prompt ve DSPy

Teoriyi pratiğe dökelim. Basit bir duygu analizi ve sınıflandırma senaryosunu ele alalım. Önce kütüphanemizi kuralım:

pip install dspy-ai

Ardından DSPy ile bir model tanımlayıp basit bir sınıflandırıcı oluşturalım. Bu testte yerel olarak çalıştırabileceğimiz ücretsiz bir model olan Ollama (Llama-3) ya da OpenAI API kullanabiliriz.

import dspy

# LLM Konfigürasyonu (Yerel Ollama veya OpenAI kullanabilirsiniz)
# Biz burada kolaylık olsun diye OpenAI kullanıyoruz ancak ücretsiz alternatifleri de mevcut.
lm = dspy.OpenAI(model='gpt-3.5-turbo', api_key="YOUR_API_KEY")
dspy.settings.configure(lm=lm)

# 1. Signature (İmza) Tanımlama
class DuyguAnalizi(dspy.Signature):
    """Metnin duygu durumunu analiz et ve sadece POZİTİF, NEGATİF veya NÖTR olarak etiketle."""
    metin = dspy.InputField(desc="Analiz edilecek kullanıcı yorumu")
    duygu = dspy.OutputField(desc="Duygu kategorisi")

# 2. Modül Kullanımı (Chain of Thought - Düşünce Zinciri ile)
siniflandirici = dspy.ChainOfThought(DuyguAnalizi)

# 3. Çalıştırma
sonuc = siniflandirici(metin="Kertenkerem blogundaki yeni yazılım rehberleri gerçekten çok akıcı ve bilgilendirici.")
print("Düşünce Süreci:", sonuc.rationale)
print("Sonuç:", sonuc.duygu)

Bu kodda hiçbir “prompt” yazmadık. Modelin nasıl davranacağını ve hangi formatta çıktı vereceğini DuyguAnalizi sınıfıyla (Signature) belirledik. DSPy, kullandığımız modele göre arka planda en uygun prompt şablonunu kendisi oluşturdu. Yarın gpt-3.5-turbo yerine Llama-3 kullanırsak tek yapmamız gereken en üstteki konfigürasyon satırını değiştirmek. Kodun geri kalanı aynen çalışmaya devam eder.

Karşılaştırma tablosu: DSPy ve prompt mühendisliği

İki yaklaşımı doğrudan karşılaştıralım:

Özellik Geleneksel Prompt Mühendisliği DSPy ile Programlama
Model Değişikliği Tüm promptların baştan yazılması ve test edilmesi gerekir. Sadece model tanımı değiştirilir, kod yapısı korunur.
Optimizasyon Tamamen manuel, deneme-yanılma ve tahmin odaklıdır. Algoritmik ve veri setine dayalı otomatik optimizasyon.
Kırılganlık Çok yüksek. Çıktı formatı sıklıkla bozulabilir. Çok düşük. Tip güvenliği ve yapılandırılmış çıktılar.
Geliştirme Hızı Başlangıçta hızlı, ölçeklendikçe aşırı yavaş ve hantal. Başlangıçta öğrenme eğrisi var, ölçeklendikçe çok hızlı.

Maliyetler ve ücretsiz alternatifler

DSPy açık kaynak kodlu ve kullanımı tamamen ücretsiz bir kütüphanedir. Ancak arka planda çalışan LLM’lerin bir maliyeti olabilir. Ticari kapalı kaynaklı API’lar (OpenAI, Anthropic, Cohere) kullanırsanız, Teleprompter çalışırken birden fazla deneme yapacağı için optimizasyon süreçleri API kullanım faturanızı bir miktar artırabilir.

Hiç para harcamadan test etmek isterseniz:
Ollama aracılığıyla bilgisayarınıza indireceğiniz yerel modelleri (Llama-3, Mistral, Phi-3) DSPy ile tamamen ücretsiz olarak entegre edebilirsiniz. Google AI Studio üzerinden alacağınız ücretsiz Gemini API anahtarı da testleriniz için iyi bir alternatif olacaktır.

Artıları ve eksileri ile DSPy

Güçlü yönleri

  • Sistemik Yaklaşım: Promptları birer kod satırı gibi derleyip optimize eder.
  • Geleceğe Yatırım: Yarın yeni bir LLM çıktığında projenizi 5 dakikada yeni modele göç ettirebilirsiniz.
  • Daha Az Kod, Daha Çok İş: Karmaşık mantıksal zincirleri (RAG sistemleri, ajanlar) yönetmek çok daha kolay hale gelir.

Zayıf yönleri

  • Öğrenme Eğrisi: Python sınıflarına, nesne yönelimli programlamaya uzak olanlar için başlangıçta kafa karıştırıcı olabilir.
  • Veri İhtiyacı: Optimizasyon araçlarının gerçek performansını göstermesi için en az 10-20 adet örnek veri setine (input-output çifti) ihtiyacınız vardır.

Son söz: Simyadan kimyaya geçiş

DSPy, yapay zeka kodlama süreçlerini bir sanat dalı olmaktan çıkarıp gerçek bir mühendislik disiplinine dönüştürüyor. Basit bir metin özeti almak istiyorsanız ChatGPT arayüzüne prompt yazmaya devam edebilirsiniz. Ama bir yazılımın içine entegre olacak, binlerce kez çalışacak ve farklı modellerle uyumlu olması gereken kararlı sistemler kuruyorsanız DSPy kaçınılmaz bir durak olacaktır.

Kollarınızı sıvayıp kendi yerel modelinizle ilk DSPy optimizasyonunuzu denemenin tam zamanı. Bir sonraki LLM Tools incelememizde görüşmek üzere!