Yapay Zekaya Etkili Prompt Nasıl Yazılır: Başlangıç Rehberi
Bir sistem yöneticisi olarak yapay zeka araçlarını ilk kullanmaya başladığımda, “bu araç işe yaramıyor” diye düşünmüştüm. ChatGPT’ye “bash scripti yaz” diyordum, çıkan şey hiçbir işime yaramıyordu. Sonra bir meslektaşım bana şunu söyledi: “Kardeşim, bu araç senin kadar iyi olabilir sadece. Ona ne verirsen, onu alırsın.” O günden sonra her şey değişti. Şu an günde onlarca kez yapay zeka araçları kullanıyorum ve bu araçlar olmadan iş hayatımı düşünemiyorum bile. Ama bunu mümkün kılan şey, prompt yazmayı öğrenmek oldu.
Prompt Nedir ve Neden Bu Kadar Önemli?
Prompt, yapay zekaya verdiğiniz talimattır. Basit bir tanım gibi görünüyor ama içinde çok şey barındırıyor. Bir yapay zeka modelini, dünyanın her konusunda bilgisi olan ama sizin bağlamınızdan, ortamınızdan ve beklentilerinizden tamamen habersiz bir mühendis gibi düşünebilirsiniz. Bu mühendise “şu scripti yaz” dediğinizde, hangi işletim sistemi, hangi versiyon, hangi use case, ne tür hata yönetimi istediğinizi bilmediği için size en genel, en jenerik cevabı verecek.
Ama aynı mühendise şunu söyleseniz: “Ubuntu 22.04 üzerinde çalışan bir web sunucusunda, Apache loglarını her gece gzip ile sıkıştırıp 30 gün saklamasını, eski olanları silmesini isteyen ve cron ile çalışacak bir bash scripti lazım” derseniz, tamamen farklı bir sonuç alırsınız.
Sysadmin dünyasında bu fark hayati önem taşıyor. Yanlış bir script production’a gittiğinde, yetersiz hata yönetimi olan bir otomasyon aracı çalıştığında, sonuçlar ciddi olabiliyor. Bu yüzden yapay zekaya ne istediğinizi tam olarak anlatabilmek, bu araçları gerçekten kullanışlı kılıyor.
Temel Prompt Yapısı: Dört Bileşen
İyi bir prompt, dört temel bileşenden oluşur. Bunları tek tek ele alalım.
1. Rol Tanımı
Yapay zekaya hangi perspektiften yanıt vermesi gerektiğini söyleyin. Bu basit ama etkili bir teknik. “Sen deneyimli bir Linux sistem yöneticisisin” demek, yapay zekanın daha teknik, daha derinlemesine cevaplar üretmesini sağlıyor.
# Kötü prompt:
"bash scripti yaz"
# İyi prompt:
"Sen 10 yıllık deneyime sahip bir Linux sistem yöneticisisin.
Ubuntu 22.04 için production ortamında kullanılacak..."
Rol tanımı sadece “sistem yöneticisi” olmak zorunda değil. “Senior DevOps mühendisi”, “güvenlik uzmanı”, “network yöneticisi” gibi roller de kullanabilirsiniz. Hatta bazen çoklu rol da işe yarıyor: “Hem güvenlik uzmanı hem de sistem yöneticisi perspektifinden…”
2. Bağlam Bilgisi
Bu en çok ihmal edilen kısım. Yapay zeka sizin altyapınızı, ortamınızı, kısıtlamalarınızı bilmiyor. Bağlamı ne kadar detaylı verirseniz, o kadar isabetli cevap alırsınız.
Bağlam bilgisi şunları içerebilir:
- İşletim sistemi ve versiyonu: Ubuntu 22.04, CentOS 7, RHEL 9, Windows Server 2022
- Mevcut altyapı: Bare metal mi, VM mi, container mı, cloud mu?
- Kullanılan araçlar: Ansible, Terraform, Docker, Kubernetes, Puppet
- Kısıtlamalar: İnternet erişimi yok, sudo yetkisi sınırlı, eski kernel versiyonu
- Ölçek: Kaç sunucu, ne kadar trafik, ne kadar veri
# Yetersiz bağlam:
"Disk kullanımını izleyen script yaz"
# Yeterli bağlam:
"50 sunuculu bir ortamda çalışıyorum. Sunucular RHEL 8 tabanlı.
Monitoring için zaten Prometheus var ama bazı legacy sistemlerde
node_exporter yok. Bu sistemler için disk kullanımı %80'i geçince
email atan, bash ile yazılmış, external dependency olmayan bir
script lazım. Sendmail kurulu ama postfix yok."
3. Açık ve Spesifik Talimat
“İyi bir script yaz” demek yapay zekaya hiçbir şey söylemiyor. Ne istediğinizi, ne istemediğinizi, nasıl bir format beklediğinizi açıkça belirtin.
Spesifik talimat öğeleri:
- Ne yapması gerekiyor: Adım adım işlevler
- Ne yapmaması gerekiyor: Negatif kısıtlamalar
- Format: Script mi, tek liner mı, fonksiyon mu?
- Hata yönetimi: Set -e kullanılsın mı, log tutulsun mu?
- Yorumlar: Kodun açıklamalı olmasını istiyor musunuz?
4. Çıktı Formatı
Yapay zekaya ne tür bir çıktı beklediğinizi söyleyin. Sadece kod mu, kod ve açıklama mı, adım adım rehber mi, tek liner bir komut mu?
# Format belirtmeden:
"Apache yapılandırmasını optimize et"
# Format belirterek:
"Apache yapılandırmasını optimize et. Çıktı formatı şu olsun:
1. Önce mevcut yapılandırmanın sorunlarını listele
2. Her değişiklik için neden yapıldığını açıkla
3. Değiştirilecek konfigürasyon bloklarını göster
4. Değişikliği test etmek için komutları ver"
Gerçek Dünya Senaryoları: Sysadmin Kullanım Örnekleri
Teoriden ziyade, günlük işlerinizde karşılaşacağınız gerçek senaryolar üzerinden gidelim.
Senaryo 1: Log Analizi
Production’da gece bir hata oldu, sabah logları incelemeniz gerekiyor. Yapay zekadan yardım isteyeceksiniz.
# Zayıf prompt:
"Apache log analizi yap"
# Güçlü prompt:
"Sen deneyimli bir Linux sysadmin'sin. Sana aşağıda bir Apache
access.log örneği vereceğim. Bu logdan şunları çıkarmanı istiyorum:
1. En fazla istek yapan 10 IP adresi
2. 5xx hata döndüren endpoint'ler ve kaç kez hata verdikleri
3. Gece 02:00-04:00 arası anormal trafik artışı var mı?
4. Bot trafiği şüphesi uyandıran User-Agent'lar
Sonuçları bullet point olarak ver, her madde için ilgili
grep/awk komutunu da ekle.
Log örneği:
[buraya log satırlarını yapıştırıyorsunuz]"
Bu prompt ile hem analizi hem de analizi kendiniz yapabileceğiniz komutları alıyorsunuz. Böylece bir sonraki sefer bağımsız olarak da yapabilirsiniz.
Senaryo 2: Otomasyon Scripti Yazımı
# Zayıf prompt:
"Sunucu backup scripti yaz"
# Güçlü prompt:
"Sen senior bir Linux sistem yöneticisisin. Aşağıdaki gereksinimlere
göre bir backup scripti yaz:
ORTAM:
- Ubuntu 22.04 LTS
- rsync kurulu, tar kurulu
- Yedeklenecek dizin: /var/www ve /etc
- Hedef: /backup/$(hostname)/$(date)
GEREKSİNİMLER:
- Script başında ve bitişinde log dosyasına timestamp yaz
- Her adımda hata kontrolü yap, hata varsa log'a yaz ve çık
- Başarılı tamamlanınca email gönder (mail komutu mevcut)
- 30 günden eski backupları sil
- Disk alanı %90 üzerindeyse backup alma, uyarı ver
FORMAT GEREKSİNİMLERİ:
- Bash strict mode kullan (set -euo pipefail)
- Her önemli adım için echo ile bilgi ver
- Değişkenler script başında tanımlansın
- Yorumlar Türkçe olsun"
Senaryo 3: Güvenlik Denetimi
# Zayıf prompt:
"Sunucu güvenliğini kontrol et"
# Güçlü prompt:
"Sen bir Linux güvenlik uzmanısın. Yeni devreye aldığımız Ubuntu 22.04
sunucu için bir güvenlik denetim checklist'i ve her maddeyi kontrol
edecek komutları oluştur.
Kapsam:
- SSH yapılandırması (root login, key-only auth, port)
- Açık portlar ve dinleyen servisler
- SUID/SGID dosyalar
- Boş parolalı kullanıcılar
- Son 24 saatte başarısız login denemeleri
- Cron job'ları ve zamanlanmış görevler
- Dünya tarafından yazılabilir dizinler
Her kontrol için:
1. Ne kontrol edildiğini bir cümleyle açıkla
2. Komutu ver
3. 'Güvenli' çıktının nasıl görünmesi gerektiğini belirt
4. Sorun varsa ne yapılması gerektiğini söyle"
İleri Seviye Teknikler
Chain of Thought: Adım Adım Düşündürme
Karmaşık sorunlarda yapay zekadan adım adım düşünmesini isteyebilirsiniz. Bu özellikle troubleshooting senaryolarında çok işe yarıyor.
# Normal yaklaşım:
"Neden MySQL bağlantısı zaman zaman timeout oluyor?"
# Chain of thought yaklaşımı:
"MySQL bağlantı timeout sorununu adım adım analiz et.
Önce olası nedenleri kategorize et (network, MySQL config,
uygulama kodu, OS limitleri), sonra her kategori için tanı
komutlarını ver, en son bu komutların çıktılarına göre nasıl
yorumlama yapılacağını açıkla."
Bu yaklaşım ile yapay zekanın size sadece cevap vermesini değil, düşünce sürecini de paylaşmasını sağlıyorsunuz. Bu sayede hem sorununuzu çözüyorsunuz hem de öğreniyorsunuz.
Few-Shot Örnekleme: Örnek Göstererek Yönlendirme
Çıktı formatı konusunda net olmak istediğinizde, örnek vermek son derece etkili.
# Örnek vererek:
"Aşağıdaki formatta bir Ansible playbook yaz.
Örnek formatı gösteriyorum:
---
- name: Görev açıklaması buraya
hosts: web_servers
become: yes
vars:
degisken_adi: deger
tasks:
- name: Açıklayıcı görev adı
module_adi:
parametre: deger
when: kosul
register: sonuc
Bu formata uygun olarak Nginx'i kuran, başlatan ve
firewall kurallarını düzenleyen bir playbook yaz."
Negatif Kısıtlamalar Kullanımı
Yapay zekaya ne istemediğinizi de söylemek, istenmeyen sonuçları önlüyor.
# Negatif kısıtlamalar ekleyerek:
"PostgreSQL performans optimizasyon rehberi yaz.
YAPMA:
- Çok genel tavsiyeler verme
- 'Her ortam farklıdır' gibi sorumluluktan kaçan ifadeler kullanma
- Ticari araç önerme
- postgresql.conf'un tamamını değiştirmeyi önerme
YAP:
- Sadece okuma ağırlıklı workload için optimize et
- Her değişiklik için performans etkisini sayısal olarak belirt
- Değişiklikten önce mevcut değeri nasıl ölçeceğimizi göster"
Iterasyon: Cevabı Geliştirme
İlk cevap mükemmel olmayabilir. Prompt mühendisliğinin önemli bir parçası, cevabı iterate ederek geliştirmek.
# İlk prompt - genel bir istek
"Kubernetes pod restart sorununu debug etmek için komutlar ver"
# Cevap geldi, yetersiz bulundu, iteration:
"Verdiğin komutlar iyi ama şunu ekle: Her komutun çıktısında
neye bakacağımı söyle. Örneğin kubectl describe pod çıktısında
'CrashLoopBackOff' görürsek ne anlama geliyor, sonraki adım ne olmalı?"
# Daha da spesifik hale getirme:
"Harika. Şimdi bunu bir decision tree haline getir.
Restart reason X ise -> şu komutu çalıştır -> çıktıda şunu gör ->
sonraki adım şu şekline dönüştür"
Sysadmin’in Prompt Kütüphanesi
Sık kullanacağınız prompt şablonlarını bir yerde tutmak çok büyük zaman tasarrufu sağlıyor. Ben bunları bir text dosyasında veya Obsidian notlarımda tutuyorum. İşte en sık kullandıklarım:
Script Yazma Şablonu
"Sen 10 yıllık deneyimli bir Linux sistem yöneticisisin.
GÖREV: [NE YAPILACAK]
ORTAM:
- OS: [İŞLETİM SİSTEMİ VE VERSİYON]
- Mevcut araçlar: [KURULU ARAÇLAR]
- Kısıtlamalar: [VARSA]
FONKSİYONEL GEREKSİNİMLER:
- [GEREKSİNİM 1]
- [GEREKSİNİM 2]
- [GEREKSİNİM 3]
TEKNİK GEREKSİNİMLER:
- Bash strict mode kullan
- Hata yönetimi ekle
- Log dosyasına yaz
- Yorumlar Türkçe olsun
YAPMA:
- [İSTENMEYEN ŞEY 1]
- [İSTENMEYEN ŞEY 2]"
Troubleshooting Şablonu
"Sen bir Linux/[TEKNOLOJI] uzmanısın.
SORUN: [SORUN TANIMI]
BULGULAR:
- [HATA MESAJI VEYA LOG]
- [ÇEVRE BİLGİSİ]
- [NE DENENDİ]
Şunları istiyorum:
1. Olası nedenler (en muhtemel önce)
2. Her neden için tanı komutu
3. Her sorun için çözüm adımları
4. Sorunu tekrar oluşmasını önlemek için ne yapılmalı"
Güvenlik Denetim Şablonu
"Sen bir Linux güvenlik uzmanısın.
ORTAM: [ORTAM BİLGİSİ]
AMAÇ: [DENETIM AMACI]
Her kontrol için:
- Kontrol edilen risk
- Çalıştırılacak komut
- Güvenli/güvensiz çıktı örneği
- Remediation adımları
Önceliklendirme: Kritik > Yüksek > Orta > Düşük şeklinde sırala"
Dikkat Edilmesi Gereken Hatalar
Birkaç yıldır sysadminlerin yapay zeka araçlarını kullanırken yaptığı hataları gözlemliyorum. En sık yapılanlar şunlar:
Doğrulama Yapmamak
Yapay zekanın verdiği komutları doğrulamadan production’da çalıştırmak ciddi bir hata. Özellikle şu durumlara dikkat edin:
- Dosya silme komutları:
rm -rfiçeren her komut dikkatle incelenmeli - Sistem yapılandırma değişiklikleri:
/etcaltındaki dosyalara dokunmadan önce backup alın - Servis yeniden başlatmaları: Production servisini etkileyen her şey önce test ortamında denenebilir
# Her yapay zeka çıktısı için kendinize şu soruları sorun:
# 1. Bu komut ne yapıyor? Anlıyor muyum?
# 2. Geri alınabilir mi? Değilse, backup aldım mı?
# 3. Test ortamında denedim mi?
# 4. Daha küçük bir ortamda pilot yaptım mı?
Hassas Bilgi Paylaşımı
Promptunuza kesinlikle şunları koymayın:
- Gerçek IP adresleri
- Şifreler ve API anahtarları
- Müşteri verileri
- Lisans anahtarları
- Internal domain isimleri
Bunların yerine placeholder kullanın: [DB_PASSWORD], 192.168.x.x, company.internal gibi.
Çok Geniş Kapsamlı Sorular
“Kubernetes mimarimi optimize et” gibi sorular çok fazla kapsam içeriyor. Bunu alt parçalara bölerek sorun:
# Yerine getirmesi zor, geniş soru:
"Tüm Kubernetes cluster'ımı optimize et"
# Daha iyi: Parçalara bölerek sor
"Kubernetes'te yüksek bellek tüketimini debug etmek için
adım adım yaklaşım nedir? Sadece pod seviyesinden başla,
node ve cluster seviyesine geçme."
Araç Bazlı Prompt Stratejileri
Farklı yapay zeka araçları için farklı stratejiler işe yarıyor.
ChatGPT ve GPT-4 İçin
Uzun ve detaylı context iyi çalışıyor. System prompt kısmını kullanabiliyorsanız, rol tanımınızı oraya koyun. “Custom Instructions” özelliğini aktif kullanın. Sysadmin bağlamınızı bir kez tanımlayın, her sohbette tekrar yazmak zorunda kalmayın.
# Custom Instructions için örnek:
"Ben bir Linux sistem yöneticisiyim. Ortamım:
- Çoğunlukla RHEL ve Ubuntu sunucular
- On-premise ve AWS hybrid altyapı
- Ansible ve Terraform kullanıyoruz
- Cevaplar Türkçe olsun
- Kod örnekleri her zaman tam ve çalışır halde olsun
- Güvenlik kısıtlamalarını hep belirt"
Claude İçin
Claude daha uzun bağlamlarda iyi performans gösteriyor. Gerçek log dosyaları, konfigürasyon dosyaları veya uzun hata mesajları yapıştırmak için uygun. Konuşmanın başında tüm bağlamı vermek daha iyi sonuç üretiyor.
Yerel Modeller (Ollama, LM Studio) İçin
Yerel modeller genellikle daha küçük ve daha az kapasiteli. Bu modeller için:
- Daha kısa, odaklı promptlar yazın
- Bir seferde bir şey isteyin
- Çok karmaşık reasoning gerektiren şeylerden kaçının
- Kod üretimi ve komut önerisi için gayet iyi çalışıyorlar
# Yerel model için optimize edilmiş prompt:
"Bash scripti: /var/log altındaki .log dosyalarını, 7 günden
eskiyse gzip ile sıkıştır. Hata varsa /tmp/compress_err.log'a yaz."
# Yerel model için çok karmaşık:
"Linux güvenlik mimarisini detaylı analiz et, her katmanın
birbirleriyle etkileşimini açıkla ve risk modellemesi yap"
Prompt Geliştirme: Pratik Alıştırma Yöntemi
Prompt yazmayı öğrenmenin en iyi yolu, sistematik olarak denemeler yapmak. Şu yöntemi öneriyorum:
İlk aşamada, bir hafta boyunca her prompt’unuzu kaydedin. Ne sordunuz, ne aldınız, memnun kaldınız mı?
İkinci aşamada, memnun olmadığınız cevaplara bakın. Prompt’ta ne eksikti? Bağlam mı yoktu, format mı belirsizdi, kapsam çok mu genişti?
Üçüncü aşamada, o promptları yeniden yazın ve karşılaştırın.
# Prompt geliştirme günlüğü tutmak için basit bir format:
# Tarih: 2024-01-15
# İlk prompt: "nginx config yaz"
# Sonuç: Çok generik, production'a uygun değil
# Geliştirilmiş prompt: [detaylı versiyon]
# Sonuç: Production'a alınabilir, sadece SSL kısmını düzenledim
# Öğrenilen: Ortam ve use case mutlaka belirtilmeli
Bu günlüğü bir süre tuttuktan sonra, kendi prompt pattern’larınızı keşfedeceksiniz.
Gerçek Bir Troubleshooting Örneği
Geçen ay production’da bir MySQL performance sorunu yaşadım. Yapay zekayı nasıl kullandığımı adım adım göstereyim.
# İlk prompt - sorun tanımı:
"Sen MySQL DBA ve Linux sistem yöneticisi deneyimine sahip bir
uzmansın.
SORUN: MySQL 8.0 üzerinde çalışan bir e-ticaret DB'sinde,
iş yüksek olduğu saatlerde (10:00-18:00) query response time
normalin 5-6 katına çıkıyor. Gece sakin dönemde sorun yok.
ORTAM:
- Ubuntu 22.04, MySQL 8.0.35
- 32GB RAM, 8 core CPU, NVMe SSD
- InnoDB buffer pool: 8GB (mevcut config)
- Yaklaşık 200 concurrent connection peak saatlerde
- Çoğunlukla read-heavy workload (%80 okuma)
YAPILAN KONTROLLER:
- show processlist ile baktım, lock wait var
- slow query log açık, 2 saniyenin üzeri loglanıyor
- iostat çıktısında disk I/O normal görünüyor
Olası nedenleri önceliklendirerek listele ve her biri için
tanı sorgusunu/komutunu ver."
Bu prompt ile hem hızlı hem de actionable bir cevap aldım. Yapay zeka lock contention’u birinci sıraya koydu ve SHOW ENGINE INNODB STATUS ile birlikte spesifik sorguları önerdi.
# İkinci prompt - daha derin analiz:
"SHOW ENGINE INNODB STATUS çıktısının ilgili kısmını paylaşıyorum:
[çıktı buraya]
Bu çıktıya göre hangi tablolar/sorgular lock contention'a yol açıyor?
Sorunu çözmek için index optimizasyonu mu, query rewrite mi,
yoksa transaction isolation level değişikliği mi önerirsin?
Her opsiyon için risk/fayda analizi yap."
Sonunda problemi çözdüm. Yapay zeka olmadan bu analizi yapmak çok daha uzun sürerdi. Ama kritik nokta şu: Yapay zekanın önerdiği her şeyi doğruladım, önce staging’de test ettim.
Prompt Güvenliği: Kurumsal Ortamda Dikkat Edilmesi Gerekenler
Kurumsal ortamda yapay zeka araçları kullanıyorsanız, bunları göz önünde bulundurun:
- Veri gizliliği: Bulut tabanlı yapay zeka araçlarına gönderdiğiniz her şey o şirketin sunucularına gidiyor. Şirket politikasını kontrol edin.
- KVKK ve GDPR uyumu: Kişisel veri içeren log’ları paylaşmayın.
- Kurumsal kullanım politikası: Bazı şirketlerde ChatGPT gibi araçların kullanımı kısıtlı veya yasak olabilir.
- Yerel alternatifler: Sensitive ortamlar için Ollama veya LM Studio ile yerel modeller kullanın.
# Anonymize etme örneği - gerçek veri yerine:
# 192.168.1.50 [email protected]
# Şu şekilde paylaşın:
# 192.168.x.x [email protected]
# Yapay zeka analiz için gerçek değerlere ihtiyaç duymaz
Sonuç
Yapay zeka araçları, sysadmin ve DevOps işlerinde gerçekten dönüştürücü bir etkiye sahip. Ama bu araçların değeri, büyük ölçüde onlara nasıl yaklaştığınıza bağlı. İyi bir prompt yazmak, esasen iyi iletişim kurmakla aynı şey: Ne istediğinizi, neden istediğinizi, bağlamın ne olduğunu ve nasıl bir çıktı beklediğinizi net olarak ifade etmek.
Temel kuralları bir kez daha özetleyeyim:
- Rol tanımı ekle: Kimin perspektifinden cevap vermesini istediğini söyle
- Bağlamı detaylandır: OS versiyonu, mevcut altyapı, kısıtlamalar
- Spesifik ol: Ne istediğini ve ne istemediğini açıkça belirt
- Format belirt: Nasıl bir çıktı beklediğini söyle
- İterate et: İlk cevap yetersizse geliştir, bölümlere ayır
- Doğrula: Hiçbir zaman doğrulamadan production’da çalıştırma
- Güvenliğe dikkat et: Hassas bilgileri paylaşma
Bu rehberi okumak bir başlangıç. Asıl gelişim, her gün kullanarak, hataları fark ederek ve iterasyon yaparak geliyor. Bir ay boyunca bilinçli olarak prompt’larınızı geliştirmeye çalışın. Farkı kendiniz göreceksiniz.
Son olarak şunu söyleyeyim: Yapay zeka araçları sizi işinizden etmeyecek. Ama bu araçları iyi kullanan sistem yöneticileri, kullanmayanların iki-üç katı iş çıkarabiliyor. Bu seçim sizin.
