10 puan yazan GN⁺ 2025-03-04 | 1 yorum | WhatsApp'ta paylaş
  • Birçok geliştirici, kod yazmak için LLM kullanmaya çalışırken halüsinasyonlarla karşılaşıyor ve güvenini kaybediyor
    • LLM’in var olmayan metotlar veya kütüphaneler uydurması sık görülen bir durum
    • Ancak koddaki halüsinasyonlar, halüsinasyonların en az tehlikeli türü
  • En tehlikeli durum, LLM’in hata üretmesine rağmen bunun derleyici veya yorumlayıcı tarafından hemen tespit edilmemesi
    • Uydurulmuş metotlar çalıştırıldığı anda hata verdiği için kolayca fark edilebilir
    • Hata mesajını tekrar LLM’e vererek otomatik olarak düzelttirmek de mümkün olabilir
  • Genel metin halüsinasyonlarının aksine, kod çalıştırılarak doğrulanabilir
  • Otomatik hata düzeltme özelliğine sahip LLM’ler
    • ChatGPT Code Interpreter, Claude Code gibi araçlar, LLM’in yazdığı kodu çalıştırır, hataları tespit eder ve kendi kendine düzeltir
    • LLM’in yazdığı kodu hiç çalıştırmadan değerlendirmek verimsizdir
  • Bazı geliştiriciler, LLM’in uydurma metotlar üretmesini gerekçe göstererek teknolojinin tamamını reddetmeye çalışıyor
    • Ancak etkili kullanım için öğrenme ve deney yapmak şart
    • Yazar, 2 yıldan uzun süredir yapay zeka tabanlı kod yazımı üzerine çalışıyor ve hâlâ yeni teknikler öğreniyor
  • Kodun manuel olarak test edilmesi zorunludur
    • Kodun sorunsuz çalışması, beklenen şekilde davrandığını garanti etmez
    • Ne kod incelemesi ne de otomatik testler, kodun doğruluğunu tamamen kanıtlayabilir
    • Doğrudan çalıştırma ve doğrulama süreci vazgeçilmezdir
    • LLM’in ürettiği kod çok okunaklı olduğu için rehavete kapılma riski vardır
    • İnsanların yazdığı kod da aynı şekilde, bizzat çalıştırılmadan güvenilmemelidir
  • Halüsinasyonları azaltma yöntemleri
    • Başka modeller kullanmak: Belirli bir platforma dair eğitim verisi daha güçlü olan modelleri seçin
      • Örnek: Claude 3.7 Sonnet (thinking mode etkin), OpenAI o3-mini-high, GPT-4o (Python Code Interpreter dahil)
    • Bağlamdan yararlanmak: LLM belirli bir kütüphaneyi bilmese bile örnek kod verilirse kalıbı öğrenebilir
    • İstikrarlı teknolojiler seçmek: Daha eski kütüphaneler seçildiğinde LLM’in bunlarla daha iyi çalışması olasıdır
  • Kod incelemesinin önemi
    • "LLM’in yazdığı tüm kodu inceleyeceksem kendim yazmam daha hızlı olur" iddiasına karşı çıkılıyor
    • Bu, kod inceleme becerisindeki eksikliği ortaya koyan bir söz de olabilir
    • LLM’in ürettiği kodu incelemek, becerileri geliştirmek için iyi bir fırsat olabilir
  • Bonus: Claude 3.7 Sonnet’ten geri bildirim
    • Yazar, blog taslağını Claude 3.7 Sonnet’in "extended thinking mode" özelliğinde inceletti
    • "Bu yazının mantığı ikna edici mi, geliştirilebilecek noktalar var mı, eksik kalan bir şey bulunuyor mu, gözden geçir" diye istedi
    • Claude, taslağın tonunu daha yumuşak hâle getirmeye yardımcı oldu
    • Claude geri bildirim konuşması bağlantısı

1 yorum

 
GN⁺ 2025-03-04
Hacker News görüşü
  • Yorumcu, önceki yazıda yazara katılmış olsa da bu yazıda katılmıyor

    • "LLM'in yazdığı tüm kodu gözden geçirmek gerekiyorsa, onu kendim yazmam daha hızlı olur" görüşüne karşı çıkıyor
    • Başkalarının kodunu okuyup anlama ve gözden geçirme becerisine yeterince yatırım yapılmadığı iddiasına katılmıyor
    • İncelemenin, yazanın uzmanlığına ve güvenilirliğine göre değiştiğini; anonim katkıları incelemenin farklı olduğunu söylüyor
    • Kodun niyetini ve yaklaşımını çıkarıp karşılaştırmanın önemli olduğunu, LLM'lerde ise bu alanın sınırlı kaldığını belirtiyor
    • Motivasyonun önemli olduğunu, her geliştiricinin kod incelemeyi sevmediğini söylüyor
    • LLM kodunun sosyal bir boyutu olmadığını ve değişikliklerin yine başka biri tarafından incelenmesi gerektiğini ifade ediyor
  • LLM'in ürettiği kod iyi çalışsa bile, yazarı değilseniz hataları veya mantıksal kusurları bulmak zor olabilir

    • Kodlamayı iyi tasarlanmış bir planı hayata geçirmekten çok parçaları birleştirmek olarak görüyorsanız, bir algoritmanın parçaları tahmin ederek bir araya getirmesi endişe vericidir
    • LLM, insanın alabileceği türden riskleri almaz ve belirli bir bağlamda bir kod bloğunun ne anlama geldiğini anlamayabilir
  • LLM tarafından üretilen kod temiz görünür, ancak QA ve toparlama işlerine daha fazla zaman harcatır

    • Kodun iyi çalışması ve hata vermemesi, doğru işi yaptığı anlamına gelmez
    • Kodu çalıştırıp test etmek tek başına doğruluğunu kanıtlamaz; mantıksal akıl yürütme gerekir
  • The Primeagen ve Casey Muratori, en yeni LLM kod üreticilerinin çıktısını inceliyor

    • Geliştirmenin kolay olması için LLM'in eğitim verisinde iyi temsil edilen görevler verilmesi gerekir
    • Gerçekte ise yinelemeli geliştirme işe yaramaz koda yakınsıyor ve LLM giderek ilerleme kaydedemez hale geliyor
  • Simon'ın gözden kaçırdığı bir başka hata kategorisi de modelin işlevleri unutmasına dayanan halüsinasyonlar

    • Kodun derlenebilmesi gibi olumlu tarafa kıyasla, çekirdek işlevlerin unutulması şeklindeki olumsuz tarafla baş etmek daha zordur
    • İşlev, konuşma/bağlam penceresinin dışında kalacağı varsayılan koda bağlı olarak hafifçe değişebilir
  • Uydurulmuş metodlar küçük bir engeldir; insanlar bundan şikayet ettiğinde, sistemin nasıl etkili kullanılacağını öğrenmek için asgari düzeyde zaman harcadıkları varsayılıyor

    • Bu çok yanlış bir varsayımdır; insanlar halüsinasyonları görüp "En kolay şeyi bile tutarlı biçimde doğru yapamıyorsa, daha zor şeylerde ona güvenemem" diye düşünüyor
  • Halüsinasyonun kendisi, LLM'lerin yarattığı en büyük risk değil

    • Daha büyük risk, chatbot'un bir insanı kendine zarar vermeye ikna edebilmesi
    • Bunun yaşandığı örnekler zaten var ve daha tehlikeli olabilecek şeyler hakkında fikir paylaşmak istemiyor
  • Yalnızca derleme hatalarının sınırlı bağlamında daha az tehlikelidir

    • Bir programcı, gerçek çözümü bulmak için çaba harcamamak adına baştan sona bir kütüphane uydurmuş olsaydı, buna daha çok öfkelenirdi
    • Halüsinasyonu sadece bir yavaşlatıcı olarak görmek, LLM'in aslında yapması gerekeni küçümsemektir
  • LLM'den iyi sonuç almak için çok fazla çaba gerekiyor

    • Bu, abartının içini görmeyi sağlıyor
    • LLM'in neye yaradığına ve güvenilemez sonuçlar almak için yıllarca öğrenmek gerekiyorsa ondan ne beklenebileceğine dair soru işaretleri var
  • Bir tıp merkezinde hastanın 'ana' kliniğini bulacak kodu yazma deneyimi

    • Yalnızca klinik randevular dikkate alınarak en son randevunun bulunması gerekiyordu
    • Klinik randevu yoksa, her türden en son randevunun bulunması gerekiyordu
    • Veriyi sıralayarak kodu yazdı, ancak ChatGPT bunu dokümante ederken sıralamayı ters anladı
    • Bu, "kod çalışmıyor" durumundan çok daha kötü bir hatadır