kertenkerem_
· LLM Tools · 4 dk okuma

LLM Yanıtlarını Şansa Bırakmayın: Promptfoo ile Prompt Test Otomasyonu ve Güvenlik Analizi

Yapay zeka modelleriyle çalışan hemen herkes şu senaryoyu yaşamıştır: Promptunuza küçük bir kelime eklersiniz, her şey iyi çalışır. Ertesi gün başka bir kelimeyi değiştirirsiniz ve tüm sistem çorbaya döner. Bu kaosu önlemek, sistemli bir prompt testi yapmak ve yapay zeka güvenliğini sağlamak için bugün açık kaynaklı bir araca bakıyoruz: Promptfoo. LLM çıktılarını şansa bırakmadan, bilimsel bir LLM değerlendirme (llm evaluation) süreci işletmek için aracı ayrıntılarıyla inceliyoruz.

“Vibe-driven development” devri kapandı: neden Promptfoo?

Yazılımda uzun yıllardır “Test Driven Development” (Test Odaklı Geliştirme) dediğimiz, kodun doğruluğunu otomatik testlerle ölçtüğümüz bir standart var. Yapay zeka tarafında ise işler hâlâ biraz “hislere” göre yürüyor. Promptu değiştir, ChatGPT’ye üç kez sor, “Tamam, güzel cevap veriyor” de ve yayına al. Sektörde buna espriyle “Vibe-driven development” (Hislere göre geliştirme) diyoruz.

Kullanıcı binlerce farklı girdi gönderdiğinde ne olacak? Promptunuzun halüsinasyon görmeyeceğini, hassas verileri sızdırmayacağını ya da rakiplerinizi övmeyeceğini nasıl garanti edebilirsiniz? Promptfoo tam bu boşluğu dolduruyor. Promptlarınızı, modellerinizi ve parametrelerinizi tıpkı bir birim testi (unit test) yazar gibi otomatik olarak test etmenizi sağlıyor.

Promptfoo nasıl çalışır? Pratik bir senaryo

Promptfoo’nun mantığı basit: Prompt şablonlarınızı, test etmek istediğiniz değişkenleri (inputs) ve testin başarılı sayılması için gereken kriterleri (asserts) bir YAML dosyasında tanımlarsınız. Gerisini Promptfoo halleder.

Teknik jargona boğulmadan basit bir müşteri destek botu senaryosu üzerinden gidelim. Amacımız, botun rakip firmaların isimlerini asla telaffuz etmemesini sağlamak.

1. Kurulum

Promptfoo, Node.js ortamında çalışan bir CLI (komut satırı) aracıdır. Terminali açıp şu komutla hızlıca kurabilirsiniz:

npm install -g promptfoo

2. Test yapılandırması (promptfooconfig.yaml)

Ardından projenizin kök dizininde bir yapılandırma dosyası oluşturuyoruz. Bu dosyada hangi modeli kullanacağımızı, promptumuzu ve test senaryolarımızı belirtiyoruz:

prompts:
  - "Sen bir müşteri destek asistanısın. Müşterinin sorusu: {{soru}}. Cevap verirken asla rakiplerimiz olan 'X-Kargo' veya 'Y-Lojistik' firmalarından bahsetme."

providers:
  - openai:gpt-4o-mini

tests:
  - vars:
      soru: "Kargom ne zaman ulaşır? X-Kargo sizden daha mı hızlı?"
    assert:
      - type: not-contains
        value: "X-Kargo"
      - type: contains
        value: "Kargo"

  - vars:
      soru: "Fiyat listeniz nedir?"
    assert:
      - type: llm-rubric
        value: "Cevap kurumsal ve nazik bir tonda olmalı."

3. Testi çalıştırma

Yapılandırma dosyası hazır olduğuna göre tek yapmamız gereken terminale şu komutu yazmak:

promptfoo eval

Promptfoo belirlediğiniz LLM’e (örneğimizde GPT-4o-mini) istekleri gönderir, gelen yanıtları yazdığınız kurallarla (not-contains, llm-rubric vb.) karşılaştırır ve ayrıntılı bir rapor sunar. Sonuçları tarayıcıda görsel olarak incelemek isterseniz promptfoo view komutuyla web arayüzüne erişebilirsiniz.

Yapay zeka güvenliği (red teaming) ve otomatik açık tarama

Promptfoo’yu basit bir “girdi-çıktı kontrolcüsü” olarak görmek ona haksızlık olur. Aracın en güçlü yanlarından biri, yerleşik gelen yapay zeka güvenliği ve “red teaming” (siber güvenlik saldırı simülasyonu) araçlarıdır.

Sistemlerinize yapılabilecek prompt injection (prompt sızması) saldırılarını, zararlı içerik üretme potansiyellerini veya sisteme hassas veri söyletme (PII leakage) çabalarını Promptfoo ile otomatik olarak simüle edebilirsiniz. Araç, içinde barındırdığı hazır saldırı vektörlerini sisteminize göndererek promptunuzun bu saldırılara karşı ne kadar dirençli olduğunu raporlar.

Promptfoo’nun artıları ve eksileri

Piyasada birçok llm evaluation aracı var. Promptfoo’yu kendi testlerimizde deneyimledikten sonra çıkardığımız artı ve eksi tablosu şöyle:

Özellik Artıları (+) Eksileri (-)
Kurulum ve Kullanım YAML tabanlı, kod yazmadan test senaryoları oluşturulabiliyor. Çok hızlı. Node.js bağımlılığı var; saf Python geliştiricileri için ilk başta yabancı gelebilir.
Model Desteği OpenAI, Anthropic, Ollama, HuggingFace ve yerel API’lerin neredeyse tümünü destekliyor. Bazı yerel modellerde entegrasyon ayarları karmaşıklaşabiliyor.
Güvenlik Analizi Gelişmiş “red teaming” yetenekleri ücretsiz ve yerleşik olarak sunuluyor. Güvenlik testleri çok fazla token tükettiği için API maliyetlerini artırabiliyor.
Arayüz Yerel web arayüzü (CLI üzerinden açılan) oldukça başarılı ve anlaşılır. Çok büyük test setlerinde tarayıcı arayüzü bazen yavaşlayabiliyor.

Fiyatlandırma ve ücretsiz alternatifler

Promptfoo açık kaynak kodlu (open-source) ve ücretsiz bir araçtır. Kendi bilgisayarınızda veya kendi sunucunuzda (self-hosted) ücretsiz çalıştırabilirsiniz. Bu, özellikle veri gizliliğine önem veren kurumsal projeler için büyük bir avantaj.

Kurumsal ekipler için iş birliği özelliklerinin ve gelişmiş analizlerin yer aldığı, bulut tabanlı ücretli bir “Promptfoo Enterprise” sürümü de var.

Popüler ücretsiz ve açık kaynaklı alternatifler

  • DeepEval: Özellikle Python ekosisteminde çalışan geliştiriciler için iyi bir alternatif. Birim testlerinizi popüler test kütüphanesi Pytest ile yazmanıza olanak tanıyor.
  • Ragas: RAG (Retrieval-Augmented Generation, yani bilgi geri getirme tabanlı) sistemleri optimize etmek ve test etmek için özelleşmiş bir kütüphane.
  • LangSmith: LangChain ekosisteminin bir parçası. Gelişmiş izleme (tracing) ve test özellikleri sunuyor. Belirli bir kota limitine kadar ücretsiz paketi (freemium) var, sonrasında ücretlendiriliyor.

Son söz: promptlarınızı şansa bırakmayın

Yapay zeka entegrasyonlu bir uygulama geliştiriyorsanız, kullanıcılarınıza sunacağınız deneyimin kalitesi doğrudan promptlarınızın kararlılığına bağlıdır. Promptfoo bu kararlılığı ölçülebilir rakamlara döküyor, geliştirme sürecinizi hızlandırıyor ve sizi beklenmedik LLM sürprizlerinden koruyor.

“Vibe-driven” yöntemlerden sıkıldıysanız ve projelerinize gerçek bir prompt testi disiplini getirmek istiyorsanız, Promptfoo’ya bir şans verin.