Güvenli yapay zeka kodlama yardımı için kurallar
Yapay zekayı kodlamada kullanmanın en iyi yolu, tahmin yürütmenin tehlikeli olduğu tam anlarda onu yavaşlatmaktır. Yapay zeka tanımadığın kodu açıklayabilir, hataları hipoteze dönüştürebilir, test taslakları çıkarabilir, diff'leri inceleyebilir ve yeniden düzenleme önerebilir. Aynı zamanda var olmayan API'ler uydurabilir, gizli bağımlılıkları kaçırabilir, yapıştırdığın parçaya aşırı uyum sağlayabilir veya temiz görünürken korumak istediğin davranışı değiştiren bir yama üretebilir.
Şu kuralı benimse: yapay zeka önerir, kararı repon verir. Doğruluğun kaynağı kod tabanı, başarısız yeniden üretim, test paketi, çalışma zamanı logları, ürün gereksinimleri ve insan incelemesidir. İyi bir yapay zeka çift programlama ortağı bu kaynakların yerini almaz, onlardan akıl yürütmene yardım eder.
| Kural | Neden önemli | Modelden ne istemeli |
|---|---|---|
| Önce yeniden üret | Rastgele yamaları önler | "Kod önermeden önce başarısız davranışı ve kanıtı yeniden ifade et." |
| Kapsamı küçük tut | Regresyon riskini azaltır | "En küçük güvenli değişikliği öner ve dokunulan dosyaları listele." |
| Davranışı koru | Kullanıcıları ve sözleşmeleri korur | "Bu değişikliğin bozmaması gereken değişmezleri adlandır." |
| Test şart koş | Yanıtı doğrulanabilir kılar | "Düzeltmeden önce başarısız olan, sonra geçen testler yaz." |
| Birleştirmeden önce incele | Kendinden emin hataları yakalar | "Bu diff'i doğruluk, güvenlik ve atlanan uç durumlar açısından incele." |
Bu, hangi modeli kullandığından bağımsız geçerlidir. OpenAI, Anthropic ve diğer sağlayıcılar farklı yetenekleri, bağlam pencerelerini ve araç kullanım kalıplarını anlatan model belgeleri yayımlıyor. Bu yetenekler işe yarar, ama disiplinli bir iş akışının yerini tutmaz. Mühendislik işinde modelleri bir takım arkadaşını değerlendirdiğin ölçütle değerlendir: eksik bağlamı soruyorlar mı, belirsizliği azaltıyorlar mı, kısıtlara saygı gösteriyorlar mı ve doğrulayabileceğin bir iz bırakıyorlar mı?
Hata ayıklama iş akışı
Güvenilir bir yapay zeka hata ayıklama iş akışının beş aşaması vardır: yeniden üret, izole et, hipotez kur, yama uygula ve doğrula. "Şunu düzelt" diye başlama. Kanıtla başla. Modele başarısız komutu, tam hata metnini, beklenen davranışı, gözlenen davranışı, ilgili kodu, ortam bilgilerini ve soruna yol açmış olabilecek son değişikliği ver.
Aşama 1: yeniden üretimi kayda geçir. Backend kodunda isteği, yanıtı, durum kodunu, logları ve başarısız testi ekle. Frontend kodunda rotayı, kullanıcı eylemini, tarayıcı konsolu hatasını, ağ yanıtını, bileşen durumunu ve gerekiyorsa ekran görüntüsünün tarifini ekle. Derleme sorunlarında komutu, paket yöneticisini, Node sürümünü ve ilk hatanın çevresindeki tam çıktıyı ekle.
Aşama 2: koddan önce hipotez iste. Dikkatli bir model olası nedenleri sıraya koymalı ve her birini hangi kanıtın desteklediğini söylemelidir. Nedenleri birbirinden ayıramıyorsa, en küçük teşhis adımını iste. Bu bir log satırı, odaklı bir test, bir tip kontrolü veya bir dosya daha okumak olabilir.
Aşama 3: en küçük yamayı iste. Modele, gerekçesini gösteremediği sürece değişken adlarını değiştirmemesini, çevredeki kodu yeniden yazmamasını, yeni bağımlılık eklememesini ve açık davranışı değiştirmemesini söyle. Kök nedeni, yama taslağını, dokunulan dosyaları, testleri ve riski döndürmesini iste.
Aşama 4: testleri yerelde çalıştır. Yapay zekanın çıktısı bir doğrulama adımı değildir. Doğrulama adımı, davranışı kanıtlayan komut veya kullanıcı yoludur. Otomatik test yoksa, modelden önce bir regresyon testi oluşturmasını, sonra düzeltmeyi uygulamasını iste.
Hata ayıklama promptu:
Dikkatli bir hata ayıklama ortağı gibi davran. Henüz kod yazma. Önce yeniden üretimi, beklenen davranışı, gözlenen davranışı ve en olası üç kök nedeni yeniden ifade et. Her nedeni kanıta göre sıraya koy. Sonra en küçük teşhis adımını öner. Hata: [açıkla]. Komut veya kullanıcı eylemi: [yapıştır]. Hata metni/loglar: [yapıştır]. İlgili kod: [yapıştır]. Kısıtlar: [teknoloji yığını, dokunulmayacak dosyalar, korunacak davranış].
Düzeltme promptu:
Doğrulanmış kök nedeni kullanarak en küçük güvenli düzeltmeyi öner. Şunları döndür: kök neden, değişecek dosyalar/fonksiyonlar, yama taslağı, düzeltmeden önce başarısız olup sonra geçen testler, uç durumlar ve geri alma riski. İlgisiz kodu yeniden düzenleme. Bağlam: [yapıştır].
Kod inceleme iş akışı
Yapay zeka çoğu zaman ilk yazar olmaktansa inceleyici olarak daha iyidir. Bir diff'i incelemesini istediğinde atlanmış uç durumları, güvenlik sorunlarını, eskimiş varsayımları, test boşluklarını ve davranış değişikliklerini arayabilir. İşin püf noktası incelemeyi belirli kılmaktır. "Bu iyi görünüyor mu?" diye sorarsan kibar bir onay alırsın. Doğruluk riskini sorarsan işine yarayan itirazlar alma ihtimalin yükselir.
Modele diff'i, amaçlanan davranışı, ilgili testleri ve varsa kısıtları ver. Bakımı zorlaştırmadığı sürece küçük stil ayrıntılarını yok saymasını iste. İncelemenin gösterişli kılı kırk yarmalara değil, hatalara öncelik vermesini istersin.
| İnceleme alanı | Yapay zekanın yanıtlaması gereken sorular |
|---|---|
| Doğruluk | Diff gerçekten gereksinimi karşılıyor mu? |
| Regresyon riski | Hangi mevcut davranış kazara değişebilir? |
| Güvenlik | Girdiler, kimlik doğrulama, sırlar, izinler ve enjeksiyon riskleri ele alınmış mı? |
| Hata yönetimi | Null değerlerde, zaman aşımlarında, yeniden denemelerde, bozuk yanıtlarda veya yarım kalmış durumda ne oluyor? |
| Testler | Hangi davranış iddiaları test kapsamı dışında kalıyor? |
| Bakım kolaylığı | Bu değişiklik mevcut kalıpları izliyor ve anlaşılır kalıyor mu? |
Kod inceleme promptu:
Bu diff'i katı ama pratik bir bakımcı gibi incele. Doğruluğa, regresyon riskine, güvenliğe, uç durumlara ve eksik testlere odaklan. Gerçek bir bakım riski yaratmadığı sürece küçük stil ayrıntılarını yok say. Sorun, öncelik, diff'ten kanıt, önerilen düzeltme ve gereken testi içeren bir tablo döndür. Amaçlanan davranış: [yapıştır]. Diff: [yapıştır]. Mevcut testler: [yapıştır].
Yüksek riskli değişikliklerde Whizi'de model düzeltmelerini karşılaştırma iş akışını kullan. Aynı inceleme promptunu iki ya da üç modelde yürüt. Bir model olası bir sorun bulursa körü körüne kabul etme; sorunun kod tabanında gerçekten var olup olmadığını kontrol et. Amaç daha fazla görüş toplamak değil. Amaç, birleştirmeden önce inceleme yüzeyini genişletmek.
Yeniden düzenleme ve test iş akışı
Yapay zekayla yeniden düzenleme risklidir, çünkü çoğu yeniden düzenleme neyin değişmediğine bakılarak değerlendirilir. Model kodu daha derli toplu gösterirken davranışı, hata yönetimini, zamanlamayı veya açık sözleşmeleri sinsice değiştirebilir. Daha güvenli bir yeniden düzenleme iş akışı, uygulamaya dokunmadan önce değişmezleri tanımlamakla başlar.
Adım 1: yeniden düzenleme hedefini tarif et. Örnekler: tekrarı azaltmak, büyük bir bileşeni bölmek, veri erişimini izole etmek, dallanmayı sadeleştirmek, bir API sarmalayıcısını taşımak veya test edilebilirliği artırmak. Sonra neyin aynı kalması gerektiğini yaz: açık fonksiyon imzaları, rota davranışı, olay adları, yanıt şekilleri, analitik, izinler, erişilebilirlik davranışı ve performans beklentileri.
Adım 2: aşamalı bir plan iste. İşe yarar bir yapay zeka yeniden düzenleme planı geri alınabilir olmalıdır. Her aşama küçük bir alana dokunmalı, test içermeli ve çalışan bir ara durum üretmelidir. Kod çok küçük ve iyi test edilmiş değilse tek seferde yeniden yazımdan kaçın.
Adım 3: karakterizasyon testleri yaz. Kodu değiştirmeden önce yapay zekadan mevcut davranışı belirlemesini ve önemli durumları sabitleyen testler taslağı çıkarmasını iste. Bu testler, özellikle amacın belirsiz olduğu eski kodda işe yarar. Normal girdileri, sınır girdilerini, hata yollarını ve yeniden düzenlemenin nedenine bağlı bir regresyon durumunu içermelidir.
Adım 4: her seferinde tek bir aşamayı uygula. Her aşamadan sonra testleri çalıştır ve odaklı bir inceleme iste. Model geniş bir soyutlama önerirse, bu soyutlamanın gerçek bir tekrarı veya riski ortadan kaldırdığını kanıtlamasını iste. Aksi halde kodu sıkıcı ve yerel tut.
Yeniden düzenleme planlama promptu:
Aşamalı bir yeniden düzenleme planı oluştur. Hedef: [hedef]. Mevcut kod: [yapıştır]. Kısıtlar: açık davranışı koru, değişim miktarını en aza indir, mevcut kalıpları izle, yeni bağımlılıktan kaçın, her aşamayı test edilebilir tut. Şunları döndür: değişmezler, bağımlılık haritası, aşamalar, dokunulan dosyalar, aşama başına testler, geri alma riski ve inceleme kontrol listesi.
Birim test promptu:
Uygulama değişikliklerinden önce testleri yaz. Burada gösterilen mevcut test stilini kullan: [yapıştır]. Korunacak davranış: [yapıştır]. Test edilecek kod: [yapıştır]. Test adlarını, hazırlığı, girdiyi, beklenen sonucu ve her testin neden önemli olduğunu döndür. Mutlu yolu, sınır durumunu, hata durumunu ve regresyon durumunu ekle.
Prompt şablonları
Güçlü kodlama promptları süslü oldukları için uzun değildir. Belirsizliği ortadan kaldıracak kadar uzundur. Modelin role, göreve, bağlama, kısıtlara, çıktı biçimine ve doğrulama ölçütlerine ihtiyacı vardır. İşe yarayan promptları kaydet ki yapay zeka tek seferlik bir sohbet yerine tekrarlanabilir bir mühendislik iş akışına dönüşsün.
Kod açıklama promptu:
Bu kodu projeye yeni katılan bir geliştirici için açıkla. Amacı, girdileri, çıktıları, veri akışını, bağımlılıkları, hata modlarını ve güveni artıracak testleri anlat. Kodda görünen olguları varsayımlardan ayır. Kod: [yapıştır].
Güvenli kodlama promptu:
Bu kodu güvenlik riskleri açısından incele. Kimlik doğrulama, izinler, enjeksiyon, sırlar, doğrulama, güvensiz yönlendirmeler, dosya işleme, bağımlılık riski ve hassas veri sızıntısına odaklan. Yalnızca kanıtı, etkisi, önerilen düzeltmesi ve testi ya da manuel kontrolü olan sorunları döndür. Kod/diff: [yapıştır].
Model düzeltmelerini karşılaştırma promptu:
Bir kodlama görevi için yapay zeka modellerini karşılaştırıyorum. Yalnızca verilen bağlamı kullan. Kök nedeni, en küçük güvenli düzeltmeyi, testleri, riskleri, varsayımları ve soruları döndür. Güvenini 1 ile 5 arasında derecelendir ve hangi kanıtın yanıtını değiştireceğini yaz. Görev: [yapıştır]. Bağlam: [yapıştır].
Yapay zekanın ürettiği kodu kabul etmeden önce kalite kontrol listesi:
- Model görevi doğru şekilde yeniden ifade etti.
- Yama sorundan küçük, daha büyük değil.
- Açık davranış ve sözleşmeler adlandırıldı.
- Testler hatayı veya yeniden düzenleme hedefini doğrudan kapsıyor.
- Uç durumlar ve hata yolları sıralandı.
- Güvenlik açısından hassas girdiler incelendi.
- Diff mevcut proje kalıplarını izliyor.
- İlgili testi, lint'i, derlemeyi veya manuel yeniden üretimi çalıştırdın.
- Son diff'i bir insan inceledi.
Whizi, görevi değiştirmeden düzeltmeleri karşılaştırmak istediğinde işe yarar. Aynı hata ayıklama veya inceleme promptunu birden fazla modele yapıştır, sonra çıktıları kanıta, kapsama, testlere ve riske göre puanla. Model seçimi rehberi istiyorsan kodlama için ChatGPT alternatifleri ile başla, planları fiyatlandırma sayfasında karşılaştır veya iş akışını kendi kodunda yürütmek için hesap oluştur.
- Belirsiz bir hata tarifiyle değil, gerçek bir yeniden üretimle başla.
- Kod istemeden önce hipotez ve kanıt iste.
- En küçük güvenli düzeltmeyi ve dokunulan dosyaların listesini iste.
- Yeniden düzenlemeden önce değişmemesi gereken davranışı tanımla.
- Yamaya güvenmeden önce testleri yaz veya güncelle.
- Yapay zekanın ürettiği diff'leri doğruluk, güvenlik ve uç durumlar açısından incele.
- Aynı riskli promptu farklı modellerde yürüt ve düzeltmeleri Whizi'de karşılaştır.
- Yapay zeka destekli kodu birleştirmeden önce insan incelemesinden geçir.
Sık sorulan sorular
Yapay zeka ile kod yazmayı nasıl güvenli hale getiririm?
Yapay zekayı seçenekler, testler ve incelemeler öneren bir çift programlama ortağı gibi kullan. Bir yeniden üretimle başla, küçük bir yama iste, testleri çalıştır ve birleştirmeden önce diff'i incele. Üretilen kodu otomatik olarak doğru sayma.
Yapay zeka kod hatalarını ayıklamaya yardım eder mi?
Evet. Yapay zeka; hataları, logları ve kodu olası kök nedenlere dönüştürmekte işe yarar. En güvenli hata ayıklama akışı önce hipotez, sonra bir teşhis adımı, ardından en küçük düzeltme ve regresyon testleri istemektir.
Yapay zeka birim test yazabilir mi?
Yapay zeka birim test taslağı çıkarabilir, ama net bir davranış kapsamı şart koşmalısın. Mutlu yol, sınır, hata ve regresyon durumlarını iste, sonra testlerin düzeltmeden önce başarısız olup sonra geçtiğini kontrol et.
Kodlama için en iyi yapay zeka modeli hangisi?
En iyi model göreve ve kod tabanına bağlıdır. Hata ayıklama, inceleme ve yeniden düzenleme için aynı promptu farklı modellerde yürüt, sonra kanıtı en net, kapsamı en dar ve testleri en güçlü olan yanıtı seç.