65 puan yazan xguru 2024-08-06 | 7 yorum | WhatsApp'ta paylaş
  • Son 1 yılda her hafta birkaç saatimi büyük dil modelleriyle etkileşime girerek ve giderek daha zor görevleri çözerek geçirdim; bu modellerin yeteneklerinden sürekli etkilendim
    • Bunun sonucunda, araştırma projelerimde ve kişisel projelerimde kod yazma hızım en az %50 arttı
  • İnternette LLM'lerin yararlılığı hakkında konuşan insanlar çoğunlukla ya aşırı iyimser ya da aşırı kötümser
  • Geleceğe dair tartışmalardan ziyade, son 1 yılda LLM'leri araştırma yeteneğimi geliştirmek ve kodlama projelerime yardımcı olmak için nasıl kullandığıma dair 50 sohbet örneği sunmak istiyorum
  • LLM kullanım örneklerim
    • Daha önce hiç kullanmadığım bir teknolojiyle baştan sona bir web uygulaması geliştirmek
    • Çeşitli framework'lerin nasıl kullanılacağını, ilk kez deneme yapmadan öğrenmek
    • Düzinelerce programı C veya Rust'a çevirerek performansı 10 ila 100 kat artırmak
    • Büyük kod tabanlarını küçülterek projeleri ciddi biçimde basitleştirmek
    • Son 1 yıldaki neredeyse tüm araştırma makalelerimin ilk deney kodlarını yazmak
    • Neredeyse tüm sıkıcı işlerimi veya tek seferlik script'lerimi otomatikleştirmek
    • Yeni paketler ya da proje kurulumu ve yapılandırması için yaptığım web aramalarının neredeyse tamamen yerini almak
    • Hata mesajı debug etmek için yaptığım web aramalarının yaklaşık %50'sinin yerini almak
  • Bunu kategorilere ayırırsam 2 şey çıkıyor
    1. Öğrenme yardımı: Eskiden zor olacak şeyleri yapabilir hale geliyorum
    2. Sıkıcı işleri otomatikleştirme: En iyi yaptığım işe odaklanmamı ve zor problemleri çözmemi sağlıyor
  • En önemli nokta, bunların LLM'leri kullanarak gerçekten yardım aldığım örnekler olması
    • Etkileyici özellikler göstermek için değil, gerçek işleri halletme ihtiyacımdan doğdular

Nüans

  • İnternetin iyi yapamadığı şeylerden biri nüans. Bugünkü LLM'lerin dünyayı yöneteceğini iddia etmeyeceğim ya da gelecekteki modellerin neler yapabileceği hakkında konuşmayacağım
    • Sadece bugünkü modellerin bana yardımcı olup olmadığına odaklanacağım
  • Dil modellerinin yararlı olduğunu gerekçelendirmek için neden yazdığımı merak edebilirsiniz. Ama akademide, yazılım mühendisliğinde ve medyada, LLM'lerin hiçbir katkı sağlamadığını, bunun sadece yeni bir hype döngüsü olduğunu ve birkaç yıl sonra dünyaya hiçbir etkisi olmadan yok olup gideceğini açıkça söyleyen pek çok insan var gibi görünüyor
    • Ben de bunun yanlış olduğunu, çünkü bugünkü LLM'lerin zaten yararlı olduğunu savunacağım
  • Tersine, bugünkü modellerin tüm programcıların yerini alabileceğini ve insanların programlama öğrenmemesi gerektiğini savunanlar da var
    • Ben özellikle onların iddialarını çürütmeye çalışmıyorum
  • LLM'lerin çok sayıda zararlı etkisi olabileceğini tamamen anlıyorum. Dezenformasyon, istismar, gözetim, işlerin yerini alma ve daha fazlasını kastediyorum. Yakında LLM'lerin zararlı etkileri hakkındaki düşüncelerimi ele alan bir yazı yazmayı planlıyorum. Ancak bu, dil modellerinin yararlı olup olamayacağı meselesinden ayrı bir konu
  • Dil modellerinin halüsinasyon gördüğü, gerçekleri tekrarladığı ve yeterince sağlam olmadığı için başarısız olabileceği gerekçesiyle onları kullanmak istemeyebileceğinizi çok iyi anlıyorum. Ancak bu yazı bununla ilgili değil
    • Ben, bu başarısızlıklara rağmen modellerin yararlı olabileceğini düşünüyorum
  • Bu modelleri eğitmenin etik olup olmadığı şüpheli. İnsanların verilerinin izinleri olmadan kullanılmış olabileceğini ya da modelleri açıkça eğitmek için düşük ücret alan insanları düşünebilirsiniz. Bunun bir sorun olduğu konusunda hemfikirim
    • Ama bu yazı bununla ilgili değil
  • Defalarca söylediğim gibi, bu yazı yalnızca şu anda var olan modellerin yararlı olup olmadığı hakkında olacak

Benim geçmiş hikâyem

  • Ben genel olarak bir şeylere kolay inanan biri değilim. 10 yıl önce güvenlik topluluğunda kripto hype'ını yaşadım ama blockchain hakkında makale yazmaktan tamamen kaçındım. Hiç Bitcoin sahibi olmadım. Tüm iddialara şüpheyle yaklaşırım
  • Biri bana ilk kez bu yapay zeka teknolojisinin çok yararlı olacağını ve günlük çalışma biçimimi ciddi biçimde değiştireceğini söylediğinde, tepkim "Kendi gözlerimle görmeden inanmam" olmuştu
  • Ben bir güvenlik araştırmacısıyım. Son 10 yıldır, AI modellerinin eğitim almadıkları ortamlarla karşılaştıklarında ne kadar büyük ölçüde başarısız olabildiklerini göstermek günlük işimin bir parçasıydı. Makine öğrenimi modellerine verilen girdileri biraz bozarak çıktılarının ciddi şekilde yanlış olmasını sağlayabildiğimizi ya da çoğu makine öğrenimi modelinin eğitim veri setlerindeki belirli örnekleri ezberleyip kullanım sırasında tekrar ettiğini gösterdik. Bu sistemlerin sınırlarını tamamen anlıyorum
  • Buna rağmen, bugünkü büyük dil modellerinin internetin ortaya çıkışından bu yana üretkenlikteki en büyük artışı sağladığını söylüyorum. Bugün rastgele seçilmiş bir programlama görevi için internete erişim ya da güncel bir dil modeline erişim arasında seçim yapmak zorunda olsam, vakaların yarısından fazlasında dil modelini seçerdim

[ LLM'leri nasıl kullanıyorum ]

Benim için eksiksiz uygulamalar geliştirmesi

  • Geçen yıl, GPT-4'ün az sayıda örnekle görev çözme yeteneğini ne kadar iyi tahmin edebildiğini test eden bir quiz hazırladım. Bu quiz oldukça popüler oldu ve 10 milyondan fazla sayfa görüntülemesi aldı
  • GPT-4'ten bu uygulamanın ilk sürümünün büyük bölümünü yazmasını istedim. Bunu, uygulamanın temel yapısını istemekle başlayıp çeşitli özellikleri yavaş yavaş inşa ettiğim bir dizi soru üzerinden yaptım
  • Bu konuşma toplamda 30 bin kelimeye ulaşıyordu ve o dönemin en güncel GPT-4 modelinin yeteneklerini sonuna kadar kullandı
    • [gerçek prompt'ları ve yanıtları atlıyorum]
  • GPT-4 ile konuşurken isteklerimi çeşitli şekillerde ilettim
    • Ne istediğimi sözcüklerle açıklayıp modelden tüm implementasyonu istemekten, belirli değişiklikler talep ettiğim mesajlara kadar("Ortalama puanla karşılaştırmak yerine KDE kullanarak yüzdelik dilimi söyleyebilir misin?")
    • Hata mesajlarını kopyalayıp yapıştırdığım tamamen eksik sorular da vardı (ör. "Plotting: numpy.linalg.LinAlgError: singular matrix") ya da kısa, tek seferlik yanıtlar istediğim durumlar ("Bir string'den yüklenen içeriğe sahip bir iframe'i JavaScript ile sayfaya nasıl eklerim?")
  • Dil modellerinin neden etkili olduğu
    • Dil modelleri, insanların daha önce çözdüğü şeyleri çözmede iyi olduğu için bu yaklaşım işe yarıyor
    • Bu quiz'in %99'u, başka birinin de yazabileceği, Python web sunucusu backend'ine sahip temel HTML'den ibaretti
  • Bu quiz'in ilginç ve sevilen bir şey olmasının nedeni arkasındaki teknik değil, quiz'in içeriğiydi. Ve tüm sıkıcı kısımları otomatikleştirince bir quiz hazırlamak çok kolaylaşıyor
  • Dil modelinin yardımı olmasaydı muhtemelen bu quiz'i yapmazdım diye düşünüyorum
    • Çünkü sıfırdan tam bir web uygulaması yazmaya zaman ayırmakla ilgilenmiyordum
    • Ve bunu söyleyen biri programlama bilen biri!
  • Mevcut modellerin bile, çoğu insanın sadece çözüm istemek suretiyle daha önce asla çözemeyeceği kadar anlamlı işler yapabilmesine yetecek kadar güçlü olduğuna inanıyorum
  • İleride, modellerin benim için tüm uygulamayı yazdığı birkaç örnek daha paylaşacağım ve yayınlarken bunların dil modellerinin yardımıyla yapıldığını açıkça belirteceğim

Yeni teknolojiler için bir öğretmen olarak rolü

  • Eskiden yeni framework'leri yakalamaya çalışırdım, ancak bir kişinin ayırabileceği zaman sınırlıdır.
  • Mesleğim gereği zamanımın çoğunu en yeni araştırma gelişmelerini takip etmeye harcıyorum; en yeni JavaScript framework'lerindeki gelişmeleri takip etmiyorum.
  • Belirli bir araştırma alanının dışında yeni bir projeye başlarken genelde iki seçenek vardır.
    • İlki, bildiğin şeyi kullanmaktır,
    • İkincisi ise yeni, genelde daha iyi bir yöntemi öğrenmektir.
  • İşte burada dil modelleri yardımcı oluyor. Docker, Flexbox, React gibi yeni framework ya da araçların çoğu başkaları için yeni değil. Dünya genelinde bunları derinlemesine anlayan on binlerce, hatta yüz binlerce insan vardır. Bugünün dil modelleri de böyledir.
  • Belirli bir okuyucuyu hedefleyen ve belirli bir amaca ulaşmaya çalışan statik bir öğreticiyi okumak yerine, bir dil modeliyle etkileşime girip görevi çözmek için gerekenleri öğrenebilirsiniz.
  • Bu yılın başında bir LLM değerlendirme framework'ü kurarken, LLM tarafından üretilen kodu kısıtlı bir ortamda çalıştırmak istedim.
    • Docker bu iş için mükemmel bir araçtı ama daha önce hiç kullanmamıştım.
  • Docker kullanmak projenin amacı değildi; sadece hedefe ulaşmak için gereken bir araçtı.
    • Onu mümkün olan en temel şekilde güvenle kullandığımdan emin olmak için Docker'ın sadece %10'unu anlamak istiyordum.
  • 90'larda olsaydı, muhtemelen temel ilkelerden başlayarak Docker kullanımını anlatan bir kitap satın alır, ilk birkaç bölümü okur, sonra atlayarak istediğim şeyi nasıl yapacağımı bulmaya çalışırdım.
    • Son 10 yılda bu durum, Docker'ın nasıl kullanılacağını anlatan çevrimiçi öğreticileri arayıp izlemek ve sonra hata mesajlarını aratıp başkalarının da aynı sorunu yaşayıp yaşamadığını görmek şeklinde iyileşti.
  • Ama bugün dil modelinden size Docker'ı öğretmesini istemek yeterli.
    • Docker'ı kurup çalıştırdıktan sonra, Linux'ta çalıştırırken izin sorunları olduğunu fark ettim. Bunu çözmek istedim ve modelden yardım istedim.
    • Bu sayede Podman'ı öğrendim ve modelden Docker'a özel kodu eşdeğer bir Podman sürümüne yeniden yazmasını istedim.
    • Ayrıca Docker container içinde host'un GPU'sunu nasıl aktaracağımı öğrenmek istediğimde de ona sordum.

Yeni projeye başlamak

  • Küçükken ilk programlama dilim Java'ydı. Programlamayı gerçekten çok seviyordum ama yeni bir projenin boş ekranına bakmaktan gerçekten nefret ediyordum. Özellikle de Java'da!
    • Hello World programını derlemek bile zordu; çünkü public static void main string args ne işe yarıyor, parantezler nereye geliyor, hangi harf yine büyük yazılıyor, süslü ve köşeli parantezler neden her yerde, bunları çözmek gerekiyordu.
  • Bu yüzden her çocuğun yapacağı şeyi yaptım: babamdan benim yerime yapmasını istedim.
  • 20 yıl sonra bile, aşina olmadığım bir framework kullanarak yeni bir projeye başlamak hâlâ hoşuma gitmiyor.
    • Şablon kodu ortadan kaldırmak çok zaman alıyor ve ne yaptığımı tam olarak anlamıyorum.
  • Örneğin, yakın zamanda birinin verimli ve optimize edilmiş CPU implementasyonuyla karşılaştırmak için GPU'da bazı naif Greedy arama performansını benchmark etmek amacıyla CUDA kodu yazmayı denemek istedim.
  • Ama CUDA programı nasıl yazılır bilmiyorum.
    • C nasıl yazılır biliyorum; GPU'nun nasıl çalıştığını, kernel'ların nasıl işlediğini, bellek yerleşimini vb. anlıyorum.
    • Ama fiilen GPU'ya iş gönderen kodun nasıl yazılacağını bilmiyorum.
    • Bu yüzden modelden CUDA programının ilk taslağını yazmasını istedim.
    • Mükemmel mi? Kesinlikle hayır! Ama bir başlangıç. Ve benim istediğim de tam olarak bu.
  • Burada kodun epey hatalı olduğunu görebilirsiniz.
    • Aslında bu hiç sorun değil.
    • Çünkü kusursuz bir çözüm aramıyorum; bir başlangıç noktası arıyorum.
    • Modeller ileride daha iyi olursa bu harika olur.
    • Ama şu anda elimizde olan bile zaten çok büyük bir yardım.
  • Bundan tamamen ayrı olarak, evde üzerinde çalıştığım başka bir kişisel proje için Raspberry Pi Pico W kullanıyorum.
    • Bunu ilk kez kullanıyordum.
    • Özellikle ağ bağlantısıyla ilgili işler yapmasını istiyordum.
    • Elbette internette istediğim şeyi nasıl yapacağımı anlatan iyi bir öğretici bulabilirdim.
    • Ama son zamanlarda internette arama yaptığınızda, ilk 5 sonuç genelde 2008'den kalma hatalı kod içeren çöp içerik çiftlikleri oluyor; sadece SEO için güncellenmişler ve hâlâ çalışmıyorlar.
  • Bu yüzden onun yerine dil modelinden bana istediğim şeyi nasıl yapacağımı öğretmesini istedim.
    • Daha önce mikrodenetleyicilerle çalıştığım için kabaca nasıl çalıştıklarını biliyorum.
    • Ama Pico W ile daha önce hiç çalışmamıştım.
    • Tüm bağımlılıklarla birlikte başlamama yardımcı olacak bir şeye sahip olduğum sürece gerisini çözebilirdim.
  • Yeni bir mikrodenetleyici için her zaman yazdığım ilk "hello world" programı, LED'i yanıp söndürmektir.
    • Bu sayede cihaza kod derleyip yükleyebildiğimi, tüm pinlerin doğru ayarlandığını ve temel olarak ne yaptığımı test edebiliyorum.
    • O yüzden sadece bir blink programı istemek yeterli. (Yine de bu internette var mı? Neredeyse kesinlikle evet. Ama o zaman onu kendim bulmam gerekir.)
  • Bu kodu çalıştırdıktan sonra, bundan sonra ne yapmam gerektiğini anlıyorum.
    • Python'un nasıl çalıştığını biliyorum (inanın ya da inanmayın!).
    • Bu yüzden özel MicroPython işini halledip oradan doğrudan düzenlemeye devam edebiliyorum.
  • Ve özel işlem gerektiren başka bir sorunla karşılaştığımda modelden yardım istemem yeterli.
    • Örneğin burada, modelden WiFi'ye bağlanan bir script yazmasını istemekle devam ettim.
  • Sonra MQTT sunucusuna bağlanmak gerekmesi gibi yeniden takıldığım her noktada yine modelden yardım isteyebilirim.
  • Artık bunu sürekli yapıyorum. Bu bölümün en üstündeki örnek bile varsayımsal değil.
    • HTML yerleşimini öğrenmenin yeni yolu tablo yerine div kullanmak olduğu için Flexbox'ın nasıl kullanılacağını soruyorum.

Kodu basitleştirmek

  • Bir güvenlik araştırmacısı olarak, sık sık başka insanların binlerce satırlık araştırma projesi içeren yeni depolarını alıyorum ve nasıl çalıştığını anlayıp ona saldırmam gereken durumlarla karşılaşıyorum.
    • Herkes temiz kod yazsaydı bu o kadar zor olmazdı, ama yaşadığımız dünya öyle değil.
    • Araştırmacılar temiz kod yayımlamak için teşvik edilmiyor.
    • Bu yüzden insanlar sık sık çalışan ama berbat kod gönderiyor. (Ben de öyle yapıyorum.)
  • Burada araştırmayla ilgili paylaşabileceğim örnekler yok, ama üzerinde çalıştığım kişisel bir projeden örnek verebilirim.
    • Conway'in Yaşam Oyunu'na karşı sağlıksız bir takıntım var.
    • Yakın zamanda Python'da bazı yaşam desenlerini değerlendirmenin hızlı bir yolunu arıyordum.
    • Bunu yapan harika bir C++ aracı olan golly var, ama Python kodumu C++'a yeniden yazmak istemiyordum.
  • golly'nin istediğim işi yapan bir CLI aracı var.
    • Tek ihtiyacım onu doğru şekilde nasıl çağıracağımı bilmekti.
    • Bunun ilk adımı, yaklaşık 50 farklı komut satırı seçeneğini destekleyen C++ kodunu alıp onu yalnızca istediğim tek işi tam olarak yapacak hâle getirmekti.
    • Bu yüzden 500 satırlık C++ kodunun tamamını LLM'e döküp aynı işi yapan daha kısa bir dosya istedim.
  • Peki sonuç ne oldu? Kusursuz şekilde çalıştı.
    • Sonra da C++ kodunun etrafına bir Python wrapper istedim. O da gayet iyi çalıştı.
  • Bu, o kadar uğraştırıcı bir işti ki yazarın kendisi muhtemelen bunu asla yapmazdı.
    • Ama artık sadece istemek yeterli olduğu için, elimde özgün Python kodundan 100 kat daha hızlı bir şey olmuş oldu.
  • Bunu oldukça sık yapıyorum. Python'da tam olarak aynı şeyi yapan başka bir örnek daha var.
  • Bu işlerin hiçbiri zor değil.
    • Ama bunu her yaptığımda ciddi miktarda zaman tasarrufu sağlıyorum.
    • Ve bence bugün LLM'lerin etkileyici olmasının nedenlerinden biri tam da bu.
    • Gösterişli değil; "hayatımı kolaylaştırmak için LLM'leri kullandığım sıkıcı yollar" demek internette pek puan kazandırmıyor olabilir, ama olan biten gerçekten bu.

Tekdüze işleri otomatikleştirmek

  • Düşünmeyi gerektirmeyen, sıkıcı ama yapılması gereken çok iş var
  • Bir işi ertelemenin başlıca nedenlerinden biri, onu tamamlamanın sinir bozucu ve acı verici olacağını bilmek
    • LLM bu acıyı inanılmaz ölçüde azaltıyor ve yalnızca ilginç problemleri çözmem gerektiğini bildiğim için bir şeye başlamak çok daha kolay hale geliyor
    • Burada LLM'den isteyerek çözdürdüğüm tamamen gündelik problemlere bakacağım
  • Örneğin yakın zamanda Python 3.9 ile yazılmış bir Python programını disassemble etmem gerekti
    • Python disassembler'larının çoğu yalnızca Python 3.7 öncesi sürümlerde çalışıyordu ve 3.9 binary'lerinde çalışmıyordu
  • Disassemble etmek gerçekten zor bir iş değil. Büyük ölçüde goto'ları takip ederek kontrol akışını yeniden kurarken hata yapmamaktan ibaret
    • Yüzlerce satırlık kod için binlerce op-code'u elle dönüştürerek zaman harcamak yerine, bunu LLM'den yapmasını istedim
    • Ve gerçekten çok iyi yaptı! Mümkün olacağını düşündüğümden çok çok daha iyi yaptı
  • Bir başka örnek de yapılandırılmamış veriyi alıp yapılandırılmış bir biçime dönüştürmek gerektiğinde
    • Örneğin, bir proje üzerinde çalışırken yazar adlarıyla birlikte bir kitap başlıkları listesine ihtiyacım oldu
    • Bu yüzden veriyi çevrimiçi olarak yapılandırılmamış biçimde bulup LLM'den biçimlendirmesini istedim
  • Ya da yakın zamanda bir savunmayı nasıl aştığımla ilgili bir blog yazısı yazarken, değiştirmem gereken kodun tam diff'ini göstermek istedim
    • Bu yüzden (1) diff'i ve (2) diff'i HTML'leştirme yöntemine dair önceki bir örneği yapıştırıp LLM'den bu diff'i önceki formatta vermesini istedim
  • Bir başka örnek olarak, işimin bir parçası olarak sık sık kullandığım kaynaklar için alıntı üretmem gerekiyor
    • Google Scholar bunu makaleler için kolayca yapıyor ve alıntıyı sadece kopyalayıp yapıştırmak yetiyor
    • Ama web sayfalarını alıntılamak biraz zahmetli
    • Son zamanlarda alıntı üretmesini LLM'den istiyorum. (Açık olmak gerekirse, bunun doğruluğunu kontrol ediyorum!)
  • En az 100 tane daha böyle örnek verebilirim. Ama sanırım mesele anlaşıldı
  • Birinin bakıp "Hepsi bu mu??" diyebileceği türden işler olduğunu fazlasıyla anlıyorum
    • Ama 5 yıl önce bunların ancak tutarlı paragraflar kurabildiğini, tüm problemi çözemediğini hatırlayın

Tüm kullanıcıları "power user" haline getirmek

  • Sizden çok daha az yetkin birinin bir aracı kullandığını gördüyseniz, bu biraz acı verici olabilir
    • Bir tür makro ya da paralel uygulamayı zekice kullanarak otomatikleştirilebilecek işlere dakikalar, bazen saatler harcadıklarını görebilirsiniz
  • Ancak bunu yapmak için gereken büyüleri öğrenmek zaman alıyor ve zor
  • Örneğin yakın zamanda Apple Lisa klavyesinden gelen girdileri işleyen bir Python programı yazmaya çalışıyordum
    • Çevrimiçi olarak bunu C ile yapmış birini buldum ve #define KEYNAME key_code gibi çok sayıda satır vardı
    • Bunu, tamsayı kodlarını ilgili string'lere eşleyen bir Python dictionary'sine dönüştürmek istedim
  • Ben bir Emacs kullanıcısıyım. Emacs'ta bu problemi nasıl çözeceğimi biliyorum. O kadar da zor olmazdı. İşte bu etkiyi elde etmemi sağlayan, az önce kaydettiğim temel tuş dizisi:
    C-h C-s #def [enter] M-f [delete] C-d M-f C-[space] M-f C-w C-a C-y : " M-f ", C-g C-] } C-[ {
  • Bu benim için neredeyse doğal bir şey, ama bunun doğal hale gelmesi için hayatımın yarısından fazlasını Emacs'a yeterince alışarak geçirdim. Peki şimdi editöre bağlı bir LLM varken ne yazardım?
    C-h C-h rewrite these #defines to a dictionary of {keycode: string, ...}
  • Sonra bir anda metin gözlerimin önünde yeniden yazılıyor!
  • Bu gibi durumlarda LLM'nin potansiyel faydasının uzmanlardan çok uzman olmayanlar için daha yüksek olduğunu düşünüyorum
    • Model herkes için çıtayı yükseltiyor ve daha önce hiç yapamadığınız bir şeyi bir anda çok daha fazla yapabilir hale geliyorsunuz

API referansı olarak kullanmak

  • Gerçek programcılar, bir aracın nasıl çalıştığını öğrenmek istediklerinde referans kılavuzunu okur
    • Ama ben tembel bir programcıyım, o yüzden cevabın bana doğrudan verilmesini istiyorum
    • Bu yüzden artık dil modeline soruyorum
  • Bu tür örnekler gösterildiğinde bazı insanlar savunmacı tepki verip "LLM, zaten elinizde olan araçlarla yapamayacağınız hiçbir şey yapmadı!" diyor
    • Ve haklılar
    • Ama fiziksel bir kitapla yapamayacağınız, bir arama motoruyla yapabileceğiniz hiçbir şey yok; kaynak kodunu okuyarak yapamayacağınız, fiziksel bir kitapla yapabileceğiniz de hiçbir şey yok
  • Ancak bunların her biri sırayla bir öncekinden daha kolay hale geliyor
    • Ve bir şey kolaylaştığında, onu daha sık ve niteliksel olarak farklı biçimlerde yaparsınız
  • Prompt'ları da içeren örnekler
    • "Bash'te hangi $ tüm kalan argümanları verir" diye sorup cevabı alıyorum. (Hemen ardından "Bunu nasıl kullanırım" diye bir soru daha geliyor!)
    • Ya da LaTeX'te metni kırmızı yapmanın yolunu öğrenmek istediğimde artık arama yapmıyor ya da dokümantasyon okumuyor, modele soruyorum
    • Ve çeşitli GDB komutlarına karşılık gelen LLDB komutlarının ne olduğunu öğrenmek istediğimde de aynı şeyi yapıyorum
    • Ya da bazı find komutlarının nasıl çalıştığını öğrenmek istediğimde
    • lpr'yi nasıl kullanacağımı öğrenmek istediğimde de
    • LaTeX komutlarını nasıl yeniden bağlayacağımı öğrenmek istediğimde de
  • Aslında bu, LLM'yi en sık kullanma biçimlerimden biri
    • Buna benzer binlerce örneği daha peş peşe sıralayamamamın tek nedeni, hem Emacs hem de shell içinde LLM sorgulama araçlarının yerleşik olması
    • Bu yüzden vakaların %90'ında, bu tür şeylerden birini yapmak istediğimde editörden ayrılmam bile gerekmiyor

Bulması zor şeyleri aramak

  • İnternette içerik aramak eskiden zor öğrenilen bir beceriydi
    • Sorguya dahil etmek istediğiniz belirli kelimeler neler? Çoğul mu olmalı? Tekil mi? Geçmiş zaman mı?
    • Sayfada görünmesini istemediğiniz kelimeler neler? X AND Y mi istiyorsunuz, yoksa X OR Y mi?
  • Artık öyle değil
    • Google'da OR kullanan bir sorguyu en son ne zaman yazdığımı hatırlamıyorum
    • Sonuçların bir alt kümesini çıkarmak için eksi işaretini (-) en son ne zaman kullandığımı da hatırlamıyorum
    • Günümüzde çoğu durumda bulmak istediğiniz şeyi olduğu gibi yazarsınız ve arama motoru onu bulur.
  • Ancak arama motorları hâlâ %100 doğal dil sorguları değil
    • Hâlâ Reverse-Jeopardy oynuyormuşum gibi geliyor ve soruda değil cevapta kullanılacak anahtar kelimeleri kullanmaya çalışıyorum
    • Bu, neredeyse hepimizin öğrendiğini unuttuğu bir beceri
  • Dil modelleri bugün bazı basit işler için sadece daha iyi; zaman geçtikçe bu işlerin sayısı da artıyor
    • Sadece "tamam, demek ki + add'e karşılık geliyor, peki ~ nedir" diye yazıyorum ve bana cevabın inv olduğunu söylüyor
  • Bunu standart bir arama motoruyla aramak çok zor
    • Cevabı bulmanın bir yolu olduğunu biliyorum
    • Muhtemelen "python documentation metaclass add" yazıp sonra sayfada ~ işaretini arayarak cevabı bulabilirdim
    • Ama LLM'ye sahip olduğunuz soruyu doğrudan sormak da işe yarıyor
  • Bunu yapmak bir seferde yalnızca birkaç saniye kazandırıyor ama bir kodlama görevini çözmeye çalışırken zaten aynı anda milyon farklı şeyle uğraşıyorsanız, çözmeye çalıştığınız şeyi olduğu gibi döküp tutarlı bir cevap almak bile harika
  • Bu, bugün bu işte kusursuz oldukları anlamına gelmiyor
    • Dil modelleri yalnızca internetteki şeyler yeterince sık tekrarlandığında onları biliyor
    • "Yeterince sık" ifadesinin ne anlama geldiği modele göre değişiyor; bu yüzden modele mi yoksa internete mi sormam gerektiğini düşünmek için birkaç zihinsel döngü harcamam gerekiyor
    • Ama modeller gelişmeye devam edecek
  • Ya da rastgele bir çakışma yaşandığında gördüğüm şeyi modele döküp açıklamasını isteyeceğim
    • Burada "Remote wildcard transfer issue" yazdığımda yaptığım şey bu
  • Tamamen farklı bir örnek olarak, geçen yıl bir blog yazısı yazarken ilk kelimenin ilk harfini büyütmek ve metnin geri kalanını onun etrafına sarmak istemiştim
    • Buna drop cap deniyor. Ama ben bunu bilmiyordum
    • Sadece istediğim etkiyi biliyordum; bu yüzden dil modeline "metnin O harfinin etrafında, şık bir kitaptaki gibi akmasını istiyorum" diye sordum ve tam olarak istediğim şeyi verdi
    • Bu da yine "yalnızca LLM sayesinde yaptım" kategorisine giren bir iş
    • Bunu nasıl yapacağımı bulmak için çok zaman harcamaya değeceğini düşünmezdim
    • Ama modele sorabildiğim için yaptım ve bu da yazımı biraz daha güzel hale getirdi

Tek seferlik işleri çözmek

  • Programların iki türü var
    • Birincisi, düzgün yapmak istediğiniz programlar var. Bunlar bir süre var olacak ve yıllarca bakımı yapılacak, bu yüzden temiz olmaları önemli
    • İkincisi, 25 saniye yaşayacak programlar var. Bunlar bir görevi tamamlamaya yardımcı oluyor ve sonra hemen atılıyor
  • Kodun kalitesini hiç umursamadığım ve programın tamamen bağımsız olduğu böyle durumlarda artık neredeyse tamamen LLM kullanarak yazıyorum
  • Uyarı: Bunların çoğu da yine "hepsi bu mu?" dedirtecek şeyler
    • Ama daha önce söylediğim gibi, belirli bir projeye ayırabileceğiniz gün içi zaman sınırlı
    • Ve bir daha asla kullanmayacağım bir programı yazarken zamandan ve zihinsel enerjiden tasarruf edebiliyorsam, bunu yaparım
  • En yaygın örnek muhtemelen bir araştırma deneyi sonucunda ürettiğim verileri görselleştiren grafikler oluşturmaya yardım etmesi
    • Böyle onlarca örnek var. Muhtemelen 0'dan çok 100'e yakın. Hepsi temelde aynı göründüğü için burada sadece birini yazıyorum
  • Buna benzer başka bir örnek de bir formatta veriniz olduğunda ve bunu başka bir formattaki veriye dönüştürmek istediğiniz durumlar
    • Genelde bunu yalnızca bir kez yapmak gerekir ve bittiğinde ortaya çıkan script'i çöpe atarım
  • İstediğim script yeterince basitse, çoğu zaman LLM'den tamamını yazmasını istiyorum
    • Örneğin burada, aptalca dilbilgisi sorunları olmadığından emin olmak için LLM'den bana makaleyi sesli okuyacak bir script yazmasını istiyorum
  • Çoğu zaman ne istediğimi tam bilmediğimde, modelden başlangıç kodu istemekle başlayıp oradan yineleme yapıyorum
    • Örneğin burada, veriyi hızlıca işlemem gereken tek seferlik bir iş var
    • 2022'de bunu Python'la yazmak için 2 dakika harcar ve yalnızca bir kez çalışacağı için saatlerce çalışmasını beklerdim
    • Optimize etmek, Python programının çalışmasından daha uzun sürerdi
    • Peki şimdi? Veri işleme işimi yapacak Rust kodunu istemek için aynı 2 dakikayı harcayacağımdan eminim
  • Ya da modele veri kümesini indirip ilk işlemeyi yapmasını istediğim başka bir örnek var
    • Benim yapmam kolay mı? Muhtemelen evet
    • Ama bu benim düşünmek istediğim iş değil
    • Veri kümesi üzerinde yapacağım araştırmayı düşünmek istiyorum
    • Dikkat dağıtıcı şeyleri ortadan kaldırmak, tasarruf edilen birkaç dakikadan çok daha değerli
  • Başka bir sefer, küçük küplerle pikselleştirilmiş bir görüntüyü 3D yazdırabilmek için bir program yazıyordum
    • Bunun için PNG'yi STL dosyasına dönüştürmek istiyordum ama bu projenin asıl amacı değildi
    • Sadece arada olması gereken bir adımdı. Bu yüzden LLM'den bunu çözmesini istedim
  • Başka bir örnek olarak, yakın zamanda Docker Compose kullanarak yeni bir proje kurmak istedim
    • Bir sorun yaşıyordum ve ne olursa olsun sadece çalışmasını istiyordum; neyin yanlış olduğunu sonra anlayacaktım
    • Bu yüzden sonunda hata mesajlarını tek tek kopyalayarak birkaç kez gidip geldim ve sonunda çalışan bir çözüm elde ettim
  • Ayrıca birçok durumda, tam bir çözüm istemekle başlayıp sonra bunu nasıl değiştireceğime dair ipuçları istediğimi fark ediyorum
    • Buradaki bu konuşmada HTML ayrıştıran bir program istemekle başlıyor, ardından API referansı ya da nasıl geliştirileceğine dair ipuçları istiyorum
  • Başka bir sefer, bilgisayarın zaman içinde ne kadar bellek ve CPU kullandığını takip etmek istemiştim
    • Uygun komutları bulup istediğim işi yapan bir script haline getirmek için birkaç dakika harcayabilirdim ama onun yerine dil modelinden bunu yapmasını istedim
  • Yakın zamanda biraz elektronikle uğraşmaya çalışıyordum; Arduino'da çalışan bir C programım vardı ama bunu MicroPython kullanan Raspberry Pi Pico'da çalıştırmak istiyordum
    • Bu dönüştürme sürecinde ilginç hiçbir şey yok. Sadece tamamlanması gerekiyor
    • Bu yüzden kendim uğraşmak yerine dil modelinden bunu yapmasını istedim
  • Başka bir proje için, bazı görselleri etkileşimli bir döngüdeki şık bir ML modeli için sınıflandırmam gerekiyordu
    • Bunu kendim de yazabilirdim ama modelden benim yerime yapmasını da isteyebilirdim

Bana bir şeyi açıklaması

  • Son zamanlarda elektronik ürünlere ilgi duymaya başladım
    • Çocukken elektronikle uğraştım ve üniversitede bununla ilgili birkaç ders aldım
    • Ama şimdi gerçekten proje yapmaya kalkınca, bilmediğim binlerce küçük ayrıntı yüzünden bir şeyler yapmak zorlaşıyor
  • Pratik elektronik mühendisliği kitapları okuyabilirim; böylece konuyu gerçekten doğru dürüst anlayabilirim, ama zamanımı ders çalışıyormuş gibi geçirmek istemiyorum
    • Elektronikle uğraşmamın nedeninin yarısı, bütün gün makale okuyup yazmaktan biraz uzaklaşmak
  • LLM’lerin burada iyi olduğu nokta şu: Dünyadaki en bilgili insan kadar derin bilgiye sahip olmayabilirler, ama benim elektronikle ilgili sorabileceğim soruların cevabını bilen binlerce, milyonlarca insan var
    • Dolayısıyla dil modeli de muhtemelen bu cevapları biliyordur
    • Ve her soruya isteyerek cevap verdiği için ayrıntılarla boğuşmadan işin eğlenceli kısmını yaşamamı sağlıyor
    • İnternette arasam biraz daha uğraşarak cevabı bulabilirim elbette, ama bütün gün karmaşık araştırma kodlarıyla uğraştıktan sonra sadece modele sormanın rahatlığı gerçekten çok konforlu
  • Bu yüzden aşağıda, dil modeline elektroniğin nasıl çalıştığıyla ilgili temel sorular sorduğum bazı örnekler var
    • Bu cevaplar kusursuz mu? Kim bilir
    • Ama hiçbir şey bilmemekten daha iyi mi?
  • (Bu yazı epey uzuyor ve bu noktada okumak kadar yazmaktan da yoruldum. O yüzden bu örnekleri herhangi bir açıklama eklemeden bırakacağım.)
    • PCB tasarımı hakkında temel sorular
    • Lehimleme hakkında temel sorular
    • Kapasitörler hakkında temel sorular
    • LED’ler hakkında temel sorular
    • Disketler hakkında temel sorular
  • Devam edebilirim ama sanırım ana fikri anladınız

Bilinen çözümlerle işleri halletmek

  • Neredeyse her şeyi daha önce birisi yapmış oluyor
    • Yapmak istediğiniz şeylerin gerçekten yeni olduğu durumlar çok nadir
    • Ve dil modelleri, daha önce gördükleri şeylere çözüm üretmede çok iyiler
  • Yakın zamanda üzerinde çalıştığım bir projede bazı Python kodlarının performansını iyileştirmem gerekti
    • (1) LLM’den bunu C’ye yeniden yazmasını istedim, ardından
    • (2) Python’dan C kodunu çağırabilecek bir arayüz kurmasını istedim
  • Bunlar “zor” işler değil
    • Python’dan C’ye çevirme işini muhtemelen 1-2 saatte kendim yapabilirdim
    • Python->C API’sinin tam olarak nasıl çalıştığını bilmiyorum, ama dokümantasyonu okuyarak çözebilirdim
    • Ama bunları kendim yapmam gerekseydi büyük ihtimalle hiç yapmazdım
    • Çünkü bunlar kritik yolun bir parçası değil; sık çalıştırılması gerekmeyen şeyleri hızlandırmaya zaman harcamak yerine biraz bekleyip bilgisayarın işi çözmesine izin vermek daha iyi
  • Ama basit programlar için Python’dan C’ye dönüştürmek (çoğunlukla) mekanik bir süreç ve tek bir standart Python->C çağrı kuralı var
    • O yüzden bunu benim yerime LLM’ye yaptırıyorum.
  • O zamandan beri bunun yapabileceğim bir şey olduğunu varsayıyorum ve temelde ne zaman hızlı bir kod parçasına ihtiyaç duysam, ne istediğimi Python’la tarif edip optimize edilmiş C istiyorum
  • Bazen de aynı şeyi yapıyorum ama C çıktısıyla karşılaştırıldığında Rust çıktısının doğruluğunu değerlendirmek benim için daha kolaysa C yerine Rust çıktısı istiyorum
  • Başka bir örnek olarak, multiprocessing kütüphanesiyle Python fonksiyonlarını paralelleştirmek zor değil
    • Biraz boilerplate kod yazmanız gerekiyor ve temelde iş oluyor
    • Ama o kodu yazmak biraz can sıkıcı ve aslında yapmak istediğim işi bölüyor
    • Artık buna ihtiyaç duyduğumda bunu benim yerime LLM’ye yaptırıyorum
  • Ya da bazı API’leri test ederken çoğu zaman ilk etapta sadece bir curl isteği yazarak bir şeyleri çalışır hale getiriyorum
    • Sonra bu çalışınca ve işi programatik olarak tekrarlamak isteyince bunu Python’a dönüştürüyorum
    • Eskiden genelde gerçekten çirkin bir şey yapıp doğrudan os.popen() çağırır ve curl komutunu çalıştırırdım; bu iyi değil
    • Bunu Python requests kütüphanesine çevirmek daha iyi olurdu. Ama zaman aldığı için yapmıyordum
    • Artık ise bunu benim yerime LLM’ye yaptırıp daha temiz bir programı daha hızlı elde edebiliyorum
  • Muhtemelen ileride bahsedeceğim bir proje için, insanların basit bir kablosuz vericiyle ne tür şeyler kullandığını bilmem gerekiyordu
    • Çünkü gerçekten istediğim şey ortalama bir insan cevabı olduğu için LLM bunun için mükemmel bir seçenek!

Yaygın hataları düzeltmek

  • 2022’den önce, tanınmış bazı araçlarda veya kütüphanelerde bir hata mesajı aldığımda şu protokolü izliyordum:
    1. Hata mesajını kopyala
    2. Google’a yapıştır
    3. En üstteki Stack Overflow bağlantısına tıkla
    4. Sorunun benim sormak istediğim şey olup olmadığını kontrol et; değilse 2’ye dön
    5. En üstteki çözümü kendi işine uygula
    6. Çalışmazsa 2’ye dön, arama terimlerini değiştir, dua et falan
  • Dürüst olmak gerekirse, bozulan araçlar genelde nihayetinde çözmeye çalıştığım işten 5 adım kadar uzakta oluyor ve bunların gerçekten nasıl çalıştığını umursamıyorum; sadece çalışmaları gerekiyor
  • Peki 2024’te durum nasıl?
    1. Hata mesajını kopyala
    2. LLM’ye “Bu hatayı nasıl düzeltirim? [hata]” diye sor
    3. LLM’nin önerdiği adım adım çözümü uygula
    4. İşe yaramazsa “İşe yaramadı” de
  • Buna örnek gösterecek bir kayıt elimde yok. (Ya da 1 saat aramama rağmen bulamadım.) Ama bunun aslında iyi bir nedeni var: Bunu doğrudan iş akışıma yerleştirdim
    • Ben bir Emacs kullanıcısıyım
    • Programı çalıştırdığımda ve sıfır olmayan bir durum koduyla çıktığında (yani bir sorun olduğu anlamına geldiğinde), otomatik olarak mevcut en hızlı üst düzey LLM’yi çağırıp cevabı açıklamasını ve aynı anda koddaki hatayı düzeltmek için doğrudan uygulayabileceğim bir yama önermesini isteyen bir ortam kurdum
    • Günümüz modelleri henüz çoğu durumda bu işte yazarı geçecek kadar iyi değil, ama giderek yaklaşıyorlar
    • Ve bazen bir yerdeki yazım hatası yüzünden iz sürmesi kâbus olacak bir bug’ı LLM düzelttiğinde, insan hoş bir sürpriz yaşıyor

Özet

  • Yukarıda bağlantısını verdiğim tüm konuşmalar, geçen yıl LLM’lerle yaptığım toplam konuşmaların %2’sinden azını oluşturuyor
  • Diğer konuşmaları bağlamamamın nedeni, modelin başarısız olduğu örnekler olmaları değil (elbette böyle örnekler çok var)
    • (1) Zaten bağlantı verdiğim konuşmalarla aynı kalıpları tekrarlıyor olmaları ya da
    • (2) Neler olduğunu açıklamanın kolay olmaması ve neden yararlı olduklarının doğrudan görülmesinin zor olması
  • Gelecekte de bu modelleri kullanımımın artmaya devam etmesini bekliyorum
  • Karşılaştırma olsun diye: 2024’te web arayüzü üzerinden 2023’e kıyasla %30 daha fazla LLM sorgusu yaptım; API sorgularındaki artışı tam olarak ölçemiyorum ama en az 2-3 kat arttığını düşünüyorum

LLM'in yapamayacaklarını değil, "yapabildiklerini" değerlendirmek

  • Bir adayı mülakatta değerlendirirken, yapamadıklarından çok yapabildiklerine odaklanmak gerekir
  • LLM'e önemsiz sorular sorarsanız yetersiz görünebilir. Örneğin, 1 milyar kişinin kullandığı Çinceyle soru sorarsanız doğru düzgün cevap vermekte zorlanabilir
  • Bilgisayar mühendisliği içinde bile yalnızca SQL'in SELECT ifadesini bilmek gibi, bilmediği pek çok alan vardır
  • İnternette, LLM'in belirli bir task'ı yerine getirememesini abartı olarak nitelendirenleri anlamak zor
    • Bir cümledeki kelime sayısını sayamaz
    • Tüm kelimeleri 'a' harfiyle başlayan bir şiir yazamaz
    • İki basamaklı sayıları çarpamaz
    • Bir listeden rastgele bir öğe seçemez
  • Ancak bu tür işleri gerçekten yaparken LLM'in uygun araç olduğunu hiç düşünüp düşünmedikleri soru işareti
  • Nasıl ki 64 bit tamsayı bölmesini kafadan yapamıyor diye insanın işe yaramaz olduğunu söylemiyorsak, LLM'in çözemediği bir problem kurgulandı diye LLM'i küçümsemek de makul değil
  • Önemli olan, LLM'in değer sunabileceği task'ların olup olmadığı
  • Programcılar zaten amaca göre farklı dillerin işe yaradığını çok iyi biliyor
    • İşletim sistemi yazmak için C, Python'dan daha uygundur
    • Python'ın değişkenleri 32 bayt sınırına hizalayamadığını söylemeyiz; sadece soyutlama düzeyi farklıdır
  • LLM de aynı şekilde çok yüksek bir soyutlama seviyesinde çalışır
    • Basit bir programla da çözülebilecek işleri LLM'den beklemek zordur
    • Ancak başka tür görevleri çözmesini beklemek mümkündür

Sonuç

  • Bu yazıyı yazmaktaki iki motivasyon
    • LLM'in kişisel olarak bana şimdiden çok fazla değer sağladığını savunmak
    • LLM fikrini iyi bulup da bunun kendilerine nasıl yardımcı olacağını bilmeyen insanlara kullanım örnekleri göstermek
  • LLM'in değeri
    • LLM her şeyi yapamaz, ancak mevcut modeller bile şimdiden kayda değer bir değer sunuyor
    • Örneğin bir CUDA hatasını teşhis edip paketin nasıl yeniden kurulacağını anlatabilir, bir programı C ile yeniden yazabilir ya da belirli bir konuda eğitim verebilir
    • Bunlar bir üniversite öğrencisinin birkaç saat uğraşarak yapabileceği işlerdir, ama sorularınızı her zaman yanıtlayabilecek bir üniversite öğrencisi yoktur. Buna karşılık LLM bunu yapabilir
  • LLM'in gelişimi ve mevcut durum
    • Sadece 5 yıl önce LLM'in yapabildiği en iyi şey kulağa makul gelen İngilizce paragraflar yazmaktı ve pratikte hiçbir faydası yoktu
    • Ancak bugün LLM, programlama işlerinde üretkenliği en az %50 artırıyor ve sıkıcı işleri ortadan kaldırıyor
    • LLM'ler sayesinde normalde denemeyeceğim birkaç projeyi de tamamladım
  • LLM'lerin faydasına yönelik itirazlara yanıt
    • "LLM abartılıyor ve gerçek bir değeri yok" iddiasına katılmıyorum
    • Benim için LLM kişisel olarak büyük değer sağlıyor
    • 20 yıllık programlama deneyimim olmasına rağmen, LLM sayesinde üretkenliğim ciddi ölçüde arttı
    • Benim dışımda da LLM'lerden fayda görebilecek çok sayıda insan olduğunu düşünüyorum
  • Geleceğe bakış
    • Mevcut modeller bile şimdiden büyük değer sunuyor
    • Önümüzdeki 5 yılda LLM'lerin nasıl gelişeceğini hem merak ediyor hem de bundan biraz korkuyorum
    • Bir sonraki yazıda buna dair öngörülerimi ele alacağım

7 yorum

 
edunga1 2024-08-06

Katıldığım bir yazı. Yazar, okuyanın yorulacağı kadar iyi kullanıyor..;

Bunun gibi binlerce örneği daha bağlayamamamın tek nedeni, hem Emacs hem de shell içinde LLM sorgulama araçlarının gömülü olması

Ben de terminal penceresinden pek çıkmıyor gibiyim. Tembel geliştiricilerin hepsi herhalde böyle kullanıyordur.
Basit bir sorunsa copilot.vim kullanıp herhangi bir buffer açarak otomatik tamamlamayla yanıtı yönlendiriyorum.
Shell komutunu hatırlamıyorsam copilot-cli ?? komutu var, o yüzden arama yapmama gerek kalmıyor.
Kod tamamlama araçları, ben daha sormadan niyetimi anlayıp kodu üretiyor.

Metinde dendiği gibi, nasıl arama yapacağımı biliyorum ama LLM'e resmiyet gerekmeden rahatça soru sorabildiğim için daha çok hoşuma gidiyor.

 
galadbran 2024-08-06

Ben de copilot-vim kullanıyorum! copilot-cli derken hangisini kastettiğinizi sormak istiyorum.

 
edunga1 2024-08-06

https://www.npmjs.com/package/@githubnext/github-copilot-cli
bu!

https://docs.github.com/ko/copilot/…
Bir GitHub CLI eklenti sürümü de var, ancak kullanım şekli biraz farklı.

 
galadbran 2024-08-08

Komut satırında da Copilot yardımını almak güzel, teşekkürler!

 
wedding 2024-08-06

Nasıl yapılacağını biliyorum ama yazmakla uğraşmaya üşendiğimde ChatGPT’ye yaptırıyorum.
Ortaya çıkan sonucu değerlendirebilmeyi bilmek gerekiyor ki iyi kullanabilesin diye düşünüyorum.

 
xguru 2024-08-06

Yazarın vurguladığı LLM kullanım alanları 1. öğrenmeye yardımcı olması 2. sıkıcı işleri otomatikleştirmesi.
Bugünlerde bende de durum tam olarak böyle. Son zamanlarda yaptıklarımı düşününce:

  1. OpenSCAD koduyla masa oyunu organizer’ı tasarlamak
  • Fusion ile yapmaktan ziyade, OpenSCAD kodunu yazdırınca sonradan yeniden kullanmak daha kolay oluyor.
  • Parametre işlemesini istediğimde fonksiyonlaştırmayı da iyi yaptığı için farklı yerlerde kullanılabiliyor.
  1. Taranmış kartların bulunduğu PDF’den görselleri çıkarıp istediğim gibi düzenleyen otomasyon aracı için Python betiği yazmak
  • Korece sürümünün pek çıkmayacağı masa oyunlarını tarayıp Koreceleştirmek için çeşitli işlerde kullanıyorum.
  1. Alışveriş sitesi sepetini kopyalayan JavaScript yazmak
  • Çeşitli yurt dışı masa oyunu mağazalarından aldıklarımı yönlendirme deposu tarafına girmeyi otomatikleştiriyorum.

Elbette bunlar LLM olmadan da yapılabilecek işler, ama sadece yaptırmak daha hızlı olduğu için life hacking amacıyla biçilmiş kaftan.

 
helloppfm 2024-08-06

Katılacak çok şey var.
AI kullanırken hissettiklerime benziyor.