System prompt ve custom instructions
System prompt and custom instructions
Bu derste neler öğreneceksin
- System prompt ile custom instructions arasındaki ilişkiyi tanımlamak
- Repo seviyesi ve kullanıcı seviyesi custom instructions'ı yapılandırmak
- Etkili custom instructions örüntülerini öğrenmek
- Custom instructions'ın context window'daki önceliğini anlamak
System prompt nedir?
LLM dünyasında system prompt, modele “sen bu şekilde davran” diyen kalıcı talimat kümesidir. Kullanıcı mesajlarından önce gelir ve her yanıtta geçerlidir.
Copilot’ta system prompt şu kaynaklardan oluşur:
- GitHub’ın temel model talimatları (değiştirilemez)
- Custom instructions (geliştirici/admin tarafından eklenir)
Custom instructions nerede tanımlanır?
| Seviye | Dosya / Konum | Kapsam |
|---|---|---|
| Repo | .github/copilot-instructions.md | Bu repo’nun tüm kullanıcıları |
| Kullanıcı | IDE → Copilot Settings → Custom instructions | Tek kullanıcı, tüm repolar |
| Organizasyon | GitHub Admin → Copilot → Custom instructions (Enterprise) | Tüm org üyeleri |
Etkili custom instructions örüntüleri
# .github/copilot-instructions.md
## Dil ve stil
- TypeScript strict mode kullan — `any` tipi yasak
- Async işlemlerde async/await, Promise.then değil
- Fonksiyon ve değişken adları camelCase, interface'ler PascalCase
## Test
- Jest kullan, her fonksiyon için en az bir test yaz
- Test dosyası: `src/**/__tests__/*.test.ts`
## Hata yönetimi
- Tüm async fonksiyonlarda try/catch zorunlu
- Hataları `AppError` sınıfıyla wrap et (`src/errors/AppError.ts`)
## Yasaklar
- `console.log` yerine logger kullan (`src/utils/logger.ts`)
- process.env değerlerine doğrudan erişme — config modülünden oku
Bu talimatlar her Copilot önerisini şekillendirir.
Anti-pattern: fazla uzun instructions
Custom instructions 8.000 karakter sınırına sahiptir. Çok uzun talimatlar:
- Context window’dan pay yer
- Çelişkili kurallar oluşturabilir
- Bakımı zorlaşır
İyi pratik: Kuralları kategori bazlı grupla, tekrarlardan kaçın, “zorunlu” ile “tercihli” kuralları ayır.
Sınavda beklenen bilgi
Sınav şu soruları sorar:
- “Tüm geliştiricilere aynı naming convention zorlamak istiyorsun. Nereye tanımlarsın?” → Repo-level
copilot-instructions.md - “Bir geliştirici kendi stilini korumak istiyor ve repo kurallarını geçersiz kılmak istiyor. Mümkün mü?” → Hayır, repo öncelik alır
- “Organization-wide custom instructions hangi planda kullanılabilir?” → Enterprise
Sırada ne var?
Bir sonraki derste zero-shot vs few-shot — örneksiz vs örnekli prompt stratejileri ve Copilot’ta hangisinin ne zaman daha iyi çalıştığı.