PDF hazırlanıyor...

Prompt Tabanlı Yazılım Geliştirme

Yazar: Engin Arslan
Tarih: 22 Temmuz 2025

Prompt Tabanlı Yazılım Geliştirme

Büyük dil modelleri (LLM), artık sadece metin üretmekle sınırlı olmayan, yazılım geliştirme ve test süreçlerinde aktif rol alabilen güçlü araçlardır. Ancak bu modeller, doğru yönlendirme olmadan potansiyellerini gösteremez. Etkili bir kullanım için modelin rolü, bağlamı ve görevi net tanımlanmalıdır. Aksi halde alınan çıktılar yüzeysel, hatalı veya eksik olabilir. Bu yazı, LLM kullanan geliştirici ve test uzmanlarına yönelik pratik ve uygulanabilir prompt oluşturma tekniklerini sunar. Amaç, daha güvenli, test edilebilir ve sürdürülebilir çıktılar elde etmektir.
 

📌 1. Rol, Bağlam, Görev: Etkili Promptların Temel Üçlüsü

🎯 Problem:

Basit, bağlamsız ve soyut promptlar modelin güçlü yanlarını bastırır. LLM’ler, bağlama duyarlı bir yapay zeka olduğundan, neyi nasıl yapacağını belirtmek gerekir.

✅ Çözüm:

Promptlarınıza şu yapıyı uygulayın:

  • Rol Ataması (Kim?): “10 yıllık tecrübeli bir yazılım testi uzmanı”

  • Bağlam (Nerede, neyle ilgili?): “B2B SaaS projesinde yazılan .NET kodu”

  • Görev Tanımı (Ne yapılacak?): “Kodun edge-case senaryolarını bul, test önerileri oluştur”

💡 Örnek:

Sen 10 yıllık tecrübeli bir yazılım test uzmanısın. Aşağıdaki .NET metodu için:
- Edge-case senaryoları listele
- Güvenlik açığı olasılıklarını değerlendir (input validation, overflow, injection)
- NUnit formatında test kodları yaz
- Her test için açıklama yap

Kod:
public int CalculateDiscount(int price, bool isMember) { ... }

🧠 Etki:

Bu şekilde bir prompt, modelin görevini netleştirir, bağlam verir ve doğru çıktıyı üretmesini sağlar. Model artık ne yaptığını “anlayan” bir danışmana dönüşür.

 

📌 2. Düşünce Zinciri (Chain-of-Thought): Modeli Mantıklı Düşünmeye Zorla

🎯 Problem:

LLM’ler genellikle doğrudan cevaba atlar. Ancak bu bazen yüzeysel veya eksik sonuçlara yol açar.

✅ Çözüm:

Modeli düşünmeye teşvik et. Aşamalandırılmış analiz talep et. “Adım adım çöz”, “önce alternatifleri sırala” gibi yapılandırmalar kullan.

💡 Örnek:

Aşağıdaki problemi çöz ama adım adım düşün:
1. Problemi analiz et
2. Olası alternatif yaklaşımları sırala
3. En uygun çözümü seç ve nedenlerini açıkla

Problem: 100 farklı müşteri yorumu var. B2B SaaS için hangi özelliklerin eksik olduğunu anlamak istiyorum.

🧠 Etki:

Model yalnızca sonuç üretmekle kalmaz, muhakeme zinciri kurarak daha isabetli ve açıklanabilir cevaplar üretir. Bu yöntem ayrıca test edilebilirlik ve debug sürecinde de yüksek fayda sağlar.

 

📌 3. Örneklerle Yönlendir: Few-Shot Learning

🎯 Problem:

Model bazen formatı ya da tonu anlamakta zorlanabilir.

✅ Çözüm:

Verilecek cevabın biçimini örneklerle tanımla. 1-2 tane örnek çıktı vererek, kalanını o formatta üretmesini iste.

💡 Örnek:

Aşağıdaki formatta güvenlik açığı analizi yap:

✅ Güçlü Yön: ...
❌ Zayıf Yön: ...
🔧 Öneri: ...

Kod:
public string GetData(string id) => db.Query($"SELECT * FROM users WHERE id = '{id}'");

🧠 Etki:

Modelin çıktısı daha öngörülebilir, tutarlı ve belge/rapor formatına uyumlu olur. Geliştirici döngüsü hızlanır.

 

📌 4. Verilerle Besle: Modelin Gözlerini Aç

🎯 Problem:

Model eğitim verisine dayanarak cevap verir, güncel ve proje özelinde veri içermez.

✅ Çözüm:

Modeli özel verilerle destekle. Kendi veri kümeni (yorumlar, log dosyaları, JSON çıktılar) prompt içinde paylaş.

💡 Örnek:

Aşağıda bir ürünün son 6 aydaki müşteri yorumları var. Bunlara göre:
- En sık gelen şikayet türlerini kategorilere ayır
- Geliştirme önerileri sun
- Sonuçları tablo ve grafikle özetle

Veri:
["Kargo çok geç geldi", "Ürün açıklaması yanıltıcı", ...]

🧠 Etki:

ChatGPT artık jenerik içerik üretmek yerine, senin spesifik projen için somut analizler üretir.

 

📌 5. Yaratıcılığı Katalizle: Fikir Ürettir, İçerik Değil

🎯 Problem:

LLM’ler bilgi odaklı çalışır ama yaratıcı düşünce sorularında zayıf kalabilir.

✅ Çözüm:

Ona yaratıcı senaryolar ver, sınırlı bağlamda çoklu çözüm yolları üretmesini iste.

💡 Örnek:

Kütüphane için 3 farklı etkinlik önerisi üret:
- Hedef kitle: Lise öğrencileri
- Zaman: Yaz tatili dönemi
- Kısıt: Etkinlik başına 500 TL bütçe

🧠 Etki:

Bu şekilde model, yaratıcı kısıtlamalar içinde özgün ve uygulanabilir öneriler üretmeye başlar.

 

📌 6. İteratif Geliştirme: Prompt ↔️ Çıktı Döngüsü Kur

🎯 Problem:

İlk çıktılar zayıf olabilir. Kullanıcılar da “bir kerede doğru cevap” bekler. Bu yanlış.

✅ Çözüm:

Promptu test et, eksikleri belirt, tekrar yönlendir. Her çıktıyı bir önceki üzerine inşa et.

💡 Süreç Önerisi:

  1. İlk promptu yaz, sonucu al

  2. Hataları veya eksikleri listele: “Test senaryoları edge-case içermiyor”

  3. İkinci promptta bu geri bildirimi dahil et

🧠 Etki:

LLM’yi verimli bir şekilde yönlendirmek bir konuşma gibidir. Yalnızca komut değil, diyalog kur.

 

📌 7. Doğrulama Talep Et: Hallüsinasyon Riskine Karşı Önlem Al

🎯 Problem:

LLM’ler bazen hatalı, uydurma (hallucinated) bilgi üretir. Bu, özellikle teknik içerikte kritiktir.

✅ Çözüm:

Modelden verdiği bilgiyi kaynakla doğrulamasını iste. Özellikle teknik veya akademik verilerde referans şart koş.

💡 Örnek:

Verdiğin her iddiayı en az 2 akademik kaynakla destekle. DOI numarası ya da URL belirt.

🧠 Etki:

Oluşan içerik daha güvenilir ve doğrulanabilir hale gelir. Teknik belgelerde, iş kararlarında ve güvenlik analizlerinde önemlidir.

 

📌 8. Yazılım Testi Örneği: ChatGPT ile Test Kodları Üretmek

🎯 Durum:

.NET tabanlı bir fonksiyonun test edilmesi gerekiyor. Zaman kısıtlı.

✅ Uygulamalı Prompt:

Sen 10 yıllık .NET test uzmanısın. Aşağıdaki metodu analiz et:
1. Hangi edge-case senaryolar test edilmeli?
2. Negatif testler ne olabilir?
3. NUnit ile örnek test kodları yaz
4. Güvenlik risklerini değerlendir (SQL injection, overflow...)

Kod:
public int CalculateDiscount(int price, bool isMember) { ... }

🧠 Ekstra:

5. Her testin amacı ve coverage alanı açıklansın
6. Test edilebilirlik açısından refactoring önerileri sun
7. Loglama ve exception handling açısından tavsiye ver

Bu yapıyla ChatGPT sadece test değil, kod kalitesi artırıcı öneriler de sunabilir.

 

📌 9. Güvenlik, Performans ve Sürdürülebilirlik Boyutu

🎯 Problem:

Kod analizleri çoğu zaman yalnızca fonksiyonel doğrulukla sınırlı. Ancak gerçek hayatta güvenlik, ölçeklenebilirlik ve bakımı da önemlidir.

✅ Çözüm:

Promptlarına şu boyutları dahil et:

  • Güvenlik: Input validation, injection riskleri, exception handling

  • Performans: Algoritmik karmaşıklık, gereksiz sorgular, CPU/memory tüketimi

  • Sürdürülebilirlik: Readability, maintainability, test coverage

💡 Örnek:

Kodun şu boyutlarda analizini yap:
1. Performans darboğazı var mı?
2. En yüksek veri hacminde nasıl davranır?
3. Olası güvenlik açıkları neler?
4. Test coverage nasıl artırılır?

 

📌 10. Entegre Prompt Mühendisliği Süreci

Son olarak tüm bu adımları bir araya getirerek profesyonel bir prompt geliştirme süreci tanımlayalım:

🔄 Süreç Akışı:

  1. Rol Belirle: “10 yıllık test mühendisi”

  2. Bağlam Ver: “.NET Core, Web API, e-ticaret uygulaması”

  3. Görev Tanımla: “Kodda input validation eksiklerini bul”

  4. Format İste: Tablo, kod bloğu, grafik, JSON, markdown…

  5. Chain-of-Thought Uygula: Aşamaları açıkla

  6. Veri Ekle: Log, input, dosya içeriği…

  7. Test Et ve İyileştir: Eksik kaldıysa promptu revize et

  8. Kaynak Talep Et: Referans ve link iste

 

🧭 Sonuç ve Tavsiyeler

Prompt mühendisliği, LLM’lerle çalışmanın belkemiğidir. Özellikle yazılım ve test dünyasında büyük fark yaratır. Geliştirme süresini azaltır, kod kalitesini artırır ve hataları erken safhada ortaya çıkarır.

🔐 Tavsiyeler:

  • Güvenliği Önceliklendir: Promptların kod zafiyetlerini incelemesini sağla.

  • Yinelenebilir Formatlar Kullan: JSON, tablo, markdown gibi biçimlerde çıktı talep et.

  • Test Edilebilirlik Sağla: Kodun edge-case ve hata senaryolarını dahil ettir.

  • Modelin “düşünmesini” sağla: Çözümleri direkt verme, analiz ettir.

  • Yanıtlarda neden-sonuç iste: Yalnızca öneri değil, gerekçesini de talep et. 

Etiketler

Prompt Mühendisliği LLM Kullanımı Performans Analizi