Kodlamada Yapay Zekâyı Güvenli ve Etkili Kullanma Rehberi

Yapay zekâyı bir ekip arkadaşınız gibi yönlendirin, ardından bir denetçi gibi kontrol edin. Hata ayıklama, kod üretimi, testler ve kritik kontroller.

5 dk okumaGüncellendi

Glass blocks connected by glowing lines with small gears

Yapay zeka sohbetleri programlama için son derece kullanışlıdır: bilmediğiniz kodları açıklar, bir hatanın nedenini bulur, şablon kodlar yazar, test taslakları hazırlar ve size yeni bir dil veya kütüphane öğretir. Ancak çoğu zaman da kendinden çok emin bir şekilde yanılır; bu yüzden her cevaba hızlı ama dikkatsiz bir çalışma arkadaşınızdan gelen bir pull request gibi yaklaşmalısınız. Bu rehber, doğru soruları nasıl soracağınızı ve aldığınız yanıtları nasıl denetleyeceğinizi gösterir.

Yapay zeka sohbetinin kodlamada iyi olduğu alanlar

  • Kod açıklama: "bu fonksiyonu satır satır anlat".
  • Hata ayıklama (debugging): hata mesajını ve stack trace'i okuyup olası nedenleri önerme.
  • Küçük, sınırları net fonksiyonlar: tarih ayrıştırma, girdi doğrulama, veri dönüştürme.
  • Şablon (boilerplate) kodlar: yapılandırma dosyaları, komut satırı bağımsız değişkenlerini ayrıştırma, temel API işleyicileri.
  • Testler: gözden kaçırdığınız uç durumlar (edge cases) dahil birim testleri hazırlama.
  • Regex, SQL ve tek satırlık kabuk komutları; her bir parçanın açıklamasıyla birlikte.
  • Öğrenme: "Python biliyorum; bunun Go dilinde nasıl göründüğünü göster ve farkları açıkla".
  • Kod incelemesi: okunabilirlik sorunlarını, eksik hata yakalamalarını ve belirgin güvenlik açıklarını tespit etme.

Tüm kod tabanınıza bağlı büyük mimari kararlarda, henüz bilmeyebileceği çok yeni kütüphane sürümlerinde ve göremediği şeylerde ise zayıftır. ChatG gibi bir sohbette yapay zeka yalnızca yapıştırdığınız içeriği görür. Dosyalarınızı açamaz veya kodunuzu çalıştıramaz.

Hata düzeltmesi nasıl istenir?

Yetersiz kodlama yanıtlarının çoğu eksik bağlamdan kaynaklanır. İyi bir hata ayıklama prompt'u beş unsur içerir: kullanılan dil ve sürümler, ilgili kod, tam hata mesajı, beklenen ile gerçekleşen durum ve zaten denediğiniz adımlar.

Zayıf:
Kodum çalışmıyor, düzelt.
[200 satır yapıştırıldı]
Güçlü:
Python 3.12, pandas 2.x. Bu fonksiyonun müşteri başına ortalama sipariş
değerini döndürmesi gerekiyor ancak KeyError: 'customer_id' hatası veriyor.

Kod:
[yalnızca fonksiyonu ve verinin 5 satırlık bir örneğini yapıştırın]

Tam hata dökümü (traceback):
[yapıştırın]

CSV'de customer_id sütununun bulunduğunu kontrol ettim. Olası nedenler
nelerdir? Düzeltilmiş kodu göstermeden önce çözümü açıklayın.

Kodunuzu, sorunu göstermeye devam eden en küçük parçaya kadar kısaltın. Bu işlem genellikle hatayı kendiliğinden ortaya çıkarır ve önemli satırların odakta kalmasını sağlar. Sohbette bir hata ayıklama prompt'u açabilir ve boşlukları doldurabilirsiniz.

Yeni kod nasıl istenir?

Küçük bir şartname yazın. Girdileri, çıktıları ve uç durumları ne kadar net tanımlarsanız, sonradan o kadar az düzeltme yaparsınız.

TypeScript ile slugify(title: string): string fonksiyonu yazın.
- Küçük harf, yalnızca ASCII; yaygın aksanlı harfleri dönüştürün
  (örneğin, é harfi e olsun).
- Alfanümerik olmayan karakter dizilerini tek bir tire ile değiştirin.
- Baştaki ve sondaki tireleri kaldırın; maksimum uzunluk 60, asla kelime
  ortasından kesmeyin.
- Harici kütüphane kullanmayın.
Ardından Vitest ile boş dize ve emoji içeren girdileri de kapsayan
8 birim testi yazın.

Testleri kodla birlikte isteyin. Yapay zekanın testleri ile kodu birbiriyle çelişiyorsa, sorun canlıya geçmeden önce yakalamışsınız demektir.

Neyi istemediğinizi açıkça belirtin: "yeni bağımlılık olmasın", "mevcut fonksiyon imzasını koru", "yalnızca standart kütüphane", "bu fonksiyonun dışındaki hiçbir şeyi değiştirme". Sınır çizilmediğinde yapay zeka istediğinizden fazlasını yeniden yazma eğilimindedir.

Yayınlamadan önce her şeyi doğrulayın

Yapay zeka tarafından üretilen kod temiz görünebilir ama yine de hatalı olabilir. Şu kontrolleri rutininize ekleyin:

  1. Çalıştırın. Kodu ve testlerini çalıştırmadan kesinlikle bir projeye eklemeyin.
  2. Her fonksiyonun ve seçeneğin var olduğunu kontrol edin. Yapay zeka bazen metotlar, parametreler veya yapılandırma anahtarları uydurur ya da eski bir sürümden kalma olanları kullanır. Bunları kullandığınız sürümün resmi belgelerinden kontrol edin.
  3. Yüklemeden önce her paket adını kontrol edin. Güvenlik araştırmacıları, yapay zeka asistanlarının var olmayan paketleri önerdiğini ve saldırganların bu isimleri zararlı kodlarla tescil edebildiğini belgelemiştir ("slopsquatting"). Bir paketi yüklemeden önce resmi paket yöneticisinde gerçekten var olan ve bakımı yapılan bir paket olduğunu doğrulayın.
  4. Güvenlik incelemesi yapın. Dize birleştirme ile oluşturulan SQL sorgularını, eksik girdi doğrulamalarını, devre dışı bırakılmış sertifika kontrollerini, koddaki gizli anahtarları ve gereksiz geniş izinleri kontrol edin. Yapay zekaya doğrudan sorun: "Tüm girdilerin kötü niyetli olduğunu varsayarak bu kodu güvenlik açıkları açısından incele."
  5. Anlayana kadar okuyun. Bir bloğun ne yaptığını açıklayamıyorsanız sorun veya kod tabanınıza dahil etmeyin. Kodun bakımını üstlenecek kişi sizsiniz.

Gizli bilgileri ve özel kodları sohbetten uzak tutun

API anahtarlarını, parolaları, belirteçleri (token), özel anahtarları veya bağlantı dizelerini hiçbir zaman yapay zeka sohbetine yapıştırmayın. Bunların yerine YOUR_API_KEY gibi yer tutucular kullanın. Kendi sistemleriniz dışında yanlışlıkla gerçek bir gizli bilgi paylaşırsanız derhal yenileyin.

Bir işveren veya müşteri için kod yazıyorsanız, kodlarını harici bir yapay zeka servisine yapıştırmadan önce şirket politikasını kontrol edin. Çoğu şirket, tescilli kodlar için yalnızca onaylı araçlara izin verir. Tereddüt ederseniz, sorunu projeye dair hiçbir ipucu vermeyen genel bir örneğe indirgeyin. Yapay zeka gizlilik ve güvenlik rehberimiz bu konuyu daha detaylı ele almaktadır.

Geliştiriciler için faydalı prompt'lar

Bu kodu [dil] bilen ancak bu kütüphaneyi bilmeyen bir geliştiriciye
açıklar gibi anlat. Blok blok ilerle, ardından riskli veya güncelliğini
yitirmiş görünen noktaları listele.
[kodu yapıştırın]
Bu farkı (diff) kıdemli bir mühendis gibi incele. Yorumlarını hatalar,
güvenlik, performans ve okunabilirlik başlıkları altında topla. Somut ol
ve kastettiğin satırları alıntıla.
[diff'i yapıştırın]
[Açıklama] ile eşleşen bir düzenli ifade (regex) yaz. Her bölümü açıkla,
ardından eşleşmesi gereken 5 ve eşleşmemesi gereken 5 örnek dize ver.
Python'ı iyi biliyorum ve Rust öğreniyorum. Rust ile [görev] işlemini
nasıl yapacağımı göster ve sahiplik (ownership) ile ödünç alma (borrowing)
kavramlarını daha önce hiç görmemişim gibi açıkla.

Daha fazlası kodlama prompt'ları koleksiyonunda yer almaktadır. Hızlı ve tek seferlik işler için kod asistanı aracı bir açıklamayı veya kod parçacığını alıp açıklamalı kod sunar; yerleşik kodlama asistanı ise tüm sohbet boyunca geliştirici odaklı bir üslup kullanır.

Sık yapılan hatalar

  • Tüm projeyi yapıştırmak. Çok uzun metinler önemli kısmı gölgeler ve yapay zekanın tek seferde işleyebileceği boyutu aşabilir. Yalnızca ilgili dosyaları veya fonksiyonları gönderin.
  • Belirtiyi gizleyen bir "düzeltmeyi" kabul etmek. Her şeyi bir try/except bloğu içine almak hatayı değil, sadece hata mesajını ortadan kaldırır. Hatanın neden meydana geldiğini sorun.
  • Aynı kısır döngüde dönüp durmak. İki veya üç deneme başarısız olduysa durun ve yaklaşımı değiştirin: daha fazla bağlam sunun, daha küçük bir örnek verin ya da sorunun net bir özetiyle yeni bir sohbet başlatın.
  • Sürümleri belirtmemek. Çatıların (framework) API'leri ana sürümler arasında değişir; bu yüzden hangisini kullandığınızı belirtin.
  • Lisansları göz ardı etmek. Yapay zeka başka birine ait tanınabilir bir kod parçası üretirse, kullanmadan önce lisansını kontrol edin.

Ayrıca bkz. Geliştiriciler ChatG'yi nasıl kullanıyor? ve genel prompt yazma rehberi.

Kontrolü elinizde tutan bir iş akışı

  1. Önce hedefi kod olmadan açıklayın. Kod yazılmadan önce iki veya üç olası yaklaşım ve bunların artı-eksi yönlerini isteyin.
  2. Bir yaklaşım seçin ve küçük bir ilk adım talep edin. Bütün bir özelliği tek seferde istemek yerine adım adım tek bir fonksiyonu veya dosyayı incelemek çok daha kolaydır.
  3. Çalıştırın ve sonucu paylaşın. "Çalışmıyor" demek yerine gerçek çıktıyı veya hata mesajını yapıştırın.
  4. Test isteyin, ardından inceleme yaptırın. "Bu kod hangi uç durumları gözden kaçırıyor?" sorusu genellikle bir sonraki hatayı hemen bulur.
  5. Commit mesajını kendiniz yazın. Neyin ve neden değiştiğini özetleyemiyorsanız, değişikliği henüz yeterince anlamamışsınız demektir.

SSS

Yapay zeka kod yazmayı öğrenmenin yerini alabilir mi?

Hayır. Kodu okuyabilen ve değerlendirebilen kişileri hızlandırır. Bir cevabın doğru olup olmadığını anlayamıyorsanız, onu güvenle kullanamazsınız. Yapay zekayı daha hızlı öğrenmek için kullanın: yalnızca ne olduğunu değil, nedenini de sorun.

Hangi programlama dillerini destekliyor?

Yapay zeka sohbetleri genellikle Python, JavaScript, TypeScript, Java, C#, C++, Go, PHP, SQL ve kabuk betikleri gibi yaygın kullanılan dillerde son derece başarılıdır; nadir kullanılan dillerde ise güvenilirliği azalır. Kalite ayrıca çok yeni kütüphaneler ve sürümler için de düşüş gösterebilir.

ChatG kodumu çalıştırabilir veya depomu (repository) görebilir mi?

Hayır. ChatG bir sohbet arayüzüdür: yalnızca yapıştırdığınız içeriği görür ve kod çalıştırmaz. Her şeyi kendi ortamınızda çalıştırıp test etmelisiniz.

Yapay zeka ile üretilen kodu ticari olarak kullanmak güvenli mi?

Dışarıdan gelen herhangi bir kaynak kod gibi yaklaşın: inceleyin, test edin, bağımlılıkların ve kopyalanmış görünen kodların lisanslarını kontrol edin ve işvereninizin politikalarına uyun. Bu metin genel bilgilendirme amaçlıdır, hukuki tavsiye niteliği taşımaz.

Siz hazırsanız başlayalım

Sohbeti açın ve ilk sorunuzu sorun. Tamamen ücretsizdir ve yükleme gerektirmez.

Sohbete başlayın