Her harika prompt ortak yapısal elemanları paylaşır. Bu bileşenleri anlamak, deneme yanılma yerine sistematik olarak prompt oluşturmanızı sağlar.

<Callout type="tip" title="Yapı Taşları">
Bu bileşenleri LEGO tuğlaları gibi düşünün. Her prompt için hepsine ihtiyacınız yok, ama nelerin mevcut olduğunu bilmek tam olarak ihtiyacınız olanı oluşturmanıza yardımcı olur.
</Callout>

## Temel Bileşenler

Etkili bir prompt genellikle bu elemanların bir kısmını veya tamamını içerir:

<PromptBreakdown parts={[
  { label: "Bağlam", text: "Bir React uygulaması üzerinde çalışan" },
  { label: "Rol", text: "kıdemli bir yazılım mühendisisin." },
  { label: "Görev", text: "Bu kodu hatalara karşı incele" },
  { label: "Kısıtlamalar", text: "ve sadece güvenlik sorunlarına odaklan." },
  { label: "Format", text: "Bulguları numaralı liste olarak döndür." },
  { label: "Örnek", text: "Örnek: 1. 42. satırda SQL enjeksiyon riski" }
]} />

Her bir bileşeni detaylı olarak inceleyelim.

## 1. Rol / Persona

Bir rol belirlemek, modelin yanıtlarını belirli bir uzmanlık veya bakış açısı merceğinden odaklar.

<Compare 
  before={{ label: "Rolsüz", content: "Kuantum hesaplamayı açıkla." }}
  after={{ label: "Rolle", content: "Sen karmaşık konuları yeni başlayanlar için erişilebilir hale getirmede uzmanlaşmış bir fizik profesörüsün. Kuantum hesaplamayı açıkla." }}
/>

Rol, modeli şunları yapmaya hazırlar:
- Uygun kelime dağarcığı kullanma
- İlgili uzmanlığı uygulama
- Tutarlı bir bakış açısı sürdürme
- Hedef kitleyi uygun şekilde değerlendirme

### Etkili Rol Kalıpları

```
"Sen [meslek] alanında [X yıl] deneyime sahip [uzmanlık] konusunda uzman birisin"
"[karakteristik] olan bir [rol] gibi davran"
"Sen [kitle türü]ne yardım eden uzman bir [alan] profesyonelisin"
```

## 2. Bağlam / Arka Plan

Bağlam, modelin durumunuzu anlaması için gereken bilgiyi sağlar. Unutmayın: siz söylemedikçe model sizin, projenizin veya hedeflerinizin hakkında hiçbir şey bilmez.

<Compare 
  before={{ label: "Zayıf Bağlam", content: "Kodumdaki bu hatayı düzelt." }}
  after={{ label: "Güçlü Bağlam", content: "Express.js kullanarak Node.js REST API'si oluşturuyorum. API, JWT token'larıyla kullanıcı kimlik doğrulaması yapıyor. Bir kullanıcı korunan bir rotaya erişmeye çalıştığında, geçerli token'la bile 403 hatası alıyor. İşte ilgili kod: [kod]" }}
/>

### Bağlama Ne Eklenmeli

- **Proje detayları** — Teknoloji yığını, mimari, kısıtlamalar
- **Mevcut durum** — Ne denediniz, ne çalışıyor, ne çalışmıyor
- **Hedefler** — Nihayetinde neyi başarmaya çalışıyorsunuz
- **Kısıtlamalar** — Zaman sınırları, teknik gereksinimler, stil kılavuzları

## 3. Görev / Talimat

Görev, promptunuzun kalbidir—modelin ne yapmasını istiyorsunuz. Spesifik ve belirsiz olmayın.

### Özgüllük Spektrumu

<SpecificitySpectrum levels={[
  { level: "Belirsiz", text: "Bu makaleyle bana yardım et" },
  { level: "Daha İyi", text: "Bu makaleyi düzenle" },
  { level: "İyi", text: "Bu makaleyi dilbilgisi ve netlik açısından düzenle" },
  { level: "En İyi", text: "Bu makaleyi dilbilgisi ve netlik açısından düzenle, orijinal tonu koru ama fazlalıkları %20 azalt" }
]} />

### İyi Çalışan Eylem Fiilleri

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Oluşturma</span>
    <span className="text-muted-foreground">Yaz, Oluştur, Üret, Bestel, Tasarla</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Analiz</span>
    <span className="text-muted-foreground">Analiz et, Değerlendir, Karşılaştır, Ölç, İncele</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Dönüştürme</span>
    <span className="text-muted-foreground">Dönüştür, Çevir, Yeniden Formatla, Özetle, Genişlet</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Açıklama</span>
    <span className="text-muted-foreground">Açıkla, Tanımla, Netleştir, Tanımı ver, Örnekle</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Problem Çözme</span>
    <span className="text-muted-foreground">Çöz, Hata Ayıkla, Düzelt, Optimize Et, İyileştir</span>
  </div>
</div>

## 4. Kısıtlamalar / Kurallar

Kısıtlamalar, modelin çıktısını sınırlar. Yaygın sorunları önler ve ilgililiği sağlar.

### Kısıtlama Türleri

**Uzunluk kısıtlamaları:**
```
"Yanıtını 200 kelimenin altında tut"
"Tam olarak 5 öneri ver"
"3-4 paragraf yaz"
```

**İçerik kısıtlamaları:**
```
"Hiçbir kod örneği ekleme"
"Sadece teknik yönlere odaklan"
"Pazarlama dilinden kaçın"
```

**Stil kısıtlamaları:**
```
"Resmi, akademik bir ton kullan"
"10 yaşında birine konuşur gibi yaz"
"Doğrudan ol ve belirsiz dilden kaçın"
```

**Kapsam kısıtlamaları:**
```
"Sadece Python 3.10+'da mevcut seçenekleri düşün"
"Önerileri ücretsiz araçlarla sınırla"
"Ek bağımlılık gerektirmeyen çözümlere odaklan"
```

## 5. Çıktı Formatı

Çıktı formatını belirlemek, kullanılabilir bir yapıda yanıtlar almanızı sağlar.

### Yaygın Formatlar

**Listeler:**
```
"Madde işaretli liste olarak döndür"
"Numaralı adımlar listesi ver"
```

**Yapılandırılmış veri:**
```
"JSON olarak döndür: başlık, açıklama, öncelik anahtarlarıyla"
"Markdown tablosu olarak formatla: Özellik, Artıları, Eksileri sütunlarıyla"
```

**Özel yapılar:**
```
"Yanıtını şöyle yapılandır:
 ## Özet
 ## Ana Noktalar
 ## Öneriler"
```

### JSON Çıktı Örneği

```
Bu müşteri yorumunu analiz et ve JSON döndür:
{
  "duygu": "pozitif" | "negatif" | "nötr",
  "konular": ["ana konuların dizisi"],
  "puan_tahmini": 1-5,
  "anahtar_ifadeler": ["dikkat çekici ifadeler"]
}

Yorum: "Ürün hızlı geldi ve harika çalışıyor, ama 
talimatlar kafa karıştırıcıydı."
```

## 6. Örnekler (Az Örnekli Öğrenme)

Örnekler, modele tam olarak ne istediğinizi göstermenin en güçlü yoludur.

### Tek Örnek

```
Bu cümleleri geçmiş zamana çevir.

Örnek:
Girdi: "Mağazaya yürüyor"
Çıktı: "Mağazaya yürüdü"

Şimdi çevir:
Girdi: "Her sabah koşuyorlar"
```

### Birkaç Örnek

```
Bu destek biletlerini aciliyete göre sınıflandır.

Örnekler:
"Hesabım hacklendi" → Kritik
"Şifremi nasıl değiştiririm?" → Düşük
"Ödeme başarısız oldu ama ücret alındı" → Yüksek

Sınıflandır: "Ayarları açtığımda uygulama çöküyor"
```

## Hepsini Bir Araya Getirmek

İşte tüm bileşenleri kullanan tam bir prompt:

<TryIt 
  title="Tam Prompt Örneği"
  description="Bu prompt, altı bileşenin birlikte çalıştığını gösterir. Yapılandırılmış promptların nasıl profesyonel sonuçlar ürettiğini görmek için deneyin."
  prompt={`# Rol
Sen 10 yıllık deneyime sahip, geliştirici dokümantasyonu oluşturan kıdemli bir teknik yazarsın.

# Bağlam
Bir ödeme işleme hizmeti için REST API'sini belgeliyorum. Hedef kitle, API'mizi uygulamalarına entegre eden geliştiriciler. Orta düzey programlama bilgisine sahipler ama ödeme işleme kavramlarında yeni olabilirler.

# Görev
Yeni bir ödeme niyeti oluşturan aşağıdaki API endpoint'i için dokümantasyon yaz.

# Kısıtlamalar
- Net, öz dil kullan
- Yaygın hata senaryolarını ekle
- Backend'imiz hakkında uygulama detaylarını ekleme
- Okuyucuların HTTP ve JSON temellerini anladığını varsay

# Çıktı Formatı
Dokümantasyonu şöyle yapılandır:
1. Endpoint'e Genel Bakış (2-3 cümle)
2. İstek (metod, URL, başlıklar, örnekli gövde)
3. Yanıt (başarı ve hata örnekleri)
4. Kod Örneği (JavaScript/Node.js'te)

# Endpoint Detayları
POST /v1/payments/intents
Gövde: { "amount": 1000, "currency": "try", "description": "Sipariş #1234" }`}
/>

## Minimal Etkili Prompt

Her prompt'un tüm bileşenlere ihtiyacı yoktur. Basit görevler için net bir talimat yeterli olabilir:

```
"Merhaba, nasılsınız?"ı İngilizce'ye çevir.
```

Ek bileşenleri şu durumlarda kullanın:
- Görev karmaşık veya belirsiz
- Belirli formatlama gerekiyor
- Sonuçlar beklentilerle eşleşmiyor
- Birden fazla sorguda tutarlılık önemli

## Yaygın Prompt Kalıpları

Bu çerçeveler, prompt yazarken takip edebileceğiniz basit bir kontrol listesi verir. Her adımda bir örnek görmek için tıklayın.

<CRISPEFramework />

<RTFFramework />

## Özet

Etkili promptlar inşa edilir, keşfedilmez. Bu yapısal bileşenleri anlayarak ve uygulayarak:

- İlk denemede daha iyi sonuçlar alabilirsiniz
- Çalışmayan promptları hata ayıklayabilirsiniz
- Yeniden kullanılabilir prompt şablonları oluşturabilirsiniz
- Niyetlerinizi net bir şekilde iletebilirsiniz

<Quiz 
  question="Hangi bileşen yanıt kalitesi üzerinde en büyük etkiye sahiptir?"
  options={[
    "Her zaman rol/persona",
    "Her zaman çıktı formatı",
    "Göreve bağlıdır",
    "Promptun uzunluğu"
  ]}
  correctIndex={2}
  explanation="Farklı görevler farklı bileşenlerden faydalanır. Basit bir çeviri minimal yapı gerektirir, karmaşık bir analiz ise detaylı rol, bağlam ve format belirtimlerinden faydalanır."
/>

<TryIt 
  prompt={`Sen SaaS ürünlerinde 10 yıllık deneyime sahip kıdemli bir ürün yöneticisisin.

Bağlam: Uzaktan çalışan ekipler için bir görev yönetimi uygulaması yapıyorum. Sınırlı mühendislik kaynaklarına sahip küçük bir startup'ız.

Görev: MVP'miz için önceliklendirmemiz gereken 3 özellik öner.

Kısıtlamalar:
- Özellikler 2 geliştirici tarafından 4 haftada uygulanabilir olmalı
- Bizi Trello ve Asana'dan ayıran şeylere odaklan

Format: Her özellik için şunları sağla:
1. Özellik adı
2. Tek cümlelik açıklama  
3. Uzaktan ekipler için neden önemli`}
  description="Bu prompt altı bileşenin tümünü kullanır. Deneyin ve yapılandırılmış yaklaşımın nasıl odaklanmış, uygulanabilir sonuçlar ürettiğini görün."
/>

## Kendi Promptunuzu Oluşturun

Şimdi sıra sizde! Öğrendiğiniz bileşenleri kullanarak kendi promptunuzu oluşturmak için bu interaktif prompt oluşturucuyu kullanın:

<PromptBuilder 
  title="İnteraktif Prompt Oluşturucu"
  description="Tam, iyi yapılandırılmış bir prompt oluşturmak için her bölümü doldurun"
/>

<PromptChallenge
  title="Bölüm Meydan Okuması: Kod İnceleme Promptu Oluşturun"
  task="Bir yapay zekadan güvenlik açıklarına karşı kod incelemesini isteyen bir prompt yazın. Promptunuz uygulanabilir geri bildirim almak için yeterince spesifik olmalı."
  criteria={[
    "Net bir rol veya uzmanlık seviyesi içerir",
    "Ne tür kod incelemesi olduğunu belirtir (güvenlik odaklı)",
    "Beklenen çıktı formatını tanımlar",
    "Uygun kısıtlamalar veya kapsam belirler"
  ]}
  hints={[
    "Bir kod inceleyicisinin hangi uzmanlığa sahip olması gerektiğini düşünün",
    "Hangi güvenlik sorunlarının aranacağı konusunda spesifik olun",
    "Yapılandırılmış bir yanıt formatı istemeyi düşünün"
  ]}
  exampleSolution={`Sen web uygulaması güvenliği ve OWASP Top 10 açıklarında uzman kıdemli bir güvenlik mühendisisin.

Görev: Aşağıdaki kodu güvenlik açıklarına karşı incele.

Odaklan:
- SQL enjeksiyon riskleri
- XSS açıkları  
- Kimlik doğrulama/yetkilendirme sorunları
- Girdi doğrulama eksiklikleri

Çıktı formatı:
Bulunan her sorun için:
1. Satır numarası/numaraları
2. Açık türü
3. Risk seviyesi (Yüksek/Orta/Düşük)
4. Önerilen düzeltme

[İNCELENECEK KOD]`}
  difficulty="intermediate"
/>

Bir sonraki bölümde, prompt oluşturma kararlarına rehberlik eden temel prensipleri keşfedeceğiz.
