Devin ile Geçen Bir Ay Üzerine Düşünceler
(answer.ai)Devin nedir?
- Mart 2024’te Founders Fund, Collison kardeşler, Elad Gil ve teknoloji sektöründen çeşitli liderlerin desteğiyle toplam 21 milyon dolarlık Series A yatırımı alan yeni bir yapay zeka şirketi ortaya çıktı.
- Şirketin ekibi, karmaşık programlama problemlerini kendi başına çözebilecek yetkinliğe sahip olduklarını söyleyen IOI altın madalyalılarından oluşuyordu.
- Şirket, ürünleri Devin’in bir insan ekip arkadaşı gibi konuşabildiğini; yeni teknolojiler öğrenme, mevcut kodu debug etme, tüm uygulamayı deploy etme ve yapay zeka modeli eğitme gibi yazılım mühendisliği sürecinin tamamını otonom biçimde yürütebildiğini iddia etti.
- Yayımlanan demo videosunda Devin, Upwork ödüllü bir görevi kendi başına çözdü ve PyTorch projesini kurup çalıştırdı[1].
- Şirket, SWE-bench ölçütüne göre gerçek GitHub issue’larının yaklaşık %13,86’sını tamamen çözdüğünü; bunun önceki sistemlere kıyasla yaklaşık 3 kat daha iyi performans olduğunu vurguladı.
- İlk dönemde erişim yalnızca seçilmiş kullanıcılara açıktı ve yazılım geliştirmeyi dönüştüreceğine dair beklenti sosyal medyada hızla yayıldı.
- Answer.AI ekibi, yapay zeka geliştirme araçlarını sık sık deniyor ve Devin’in mevcut araçlardan farklı bir şey gösterebileceğine dair bir sezgi taşıyordu.
- Ekip, Devin’i doğrudan gerçek iş ortamında kullanıp çeşitli görevlerde deneyerek bu kullanım notlarını derledi.
İlk başarı örnekleri
- İlk denenen iş, Notion veritabanındaki bilgileri Google Sheets’e aktarmaktı.
- Devin, Notion ve Google API dokümantasyonunu inceledi ve Google Cloud Console’da gerekli kimlik bilgilerini ayarlamak için adım adım yönlendirme yaptı.
- Yalnızca API kullanımını söylemekle kalmadı; gerçek menüleri ve hangi düğmelere tıklanacağını da göstererek zahmetli işleri ciddi ölçüde kısalttı.
- Devin’in yazdığı kod biraz gereksiz derecede uzundu ama düzgün çalıştı.
- Bu deneyim, “glue code” işlerini üstlenebilecek bir yapay zekanın potansiyelini gösterdi.
- Başka bir ekip üyesi de yalnızca telefonuyla Devin’le etkileşime girerek Jüpiter ve Satürn’ün geçmiş konumlarını izleyen bir uygulama yapabildi.
Testlerin genişletilmesi
- İlk başarıların cesaretiyle, Devin’e dokümantasyon yazdırmak ya da ekip tasarım işiyle meşgulken debug yaptırmak gibi eşzamansız kullanım senaryoları denendi.
- Ancak zamanla, Devin’in basit görünen işlerde bile teknik çıkmazlara girdiği ya da işe yaramayan derecede karmaşık kod ürettiği ortaya çıktı.
- Özellikle gerçekte mümkün olmayan görevlerde de (örneğin Railway üzerinde tek bir deploy içinde birden fazla uygulamayı aynı anda çalıştırmak) körü körüne ilerleyip işlev “halüsinasyonu” yaptığı durumlarla sık karşılaşıldı.
- Sorun yalnızca başarısızlık değildi; imkansız çözümleri denemeye çalışırken zaman da boşa gidiyordu.
Sorunlara dair daha derin gözlemler
- Devin’in bazı işlerde oldukça yetkin görünürken başka işlerde neden başarısız olduğu merak edildi.
- Bir aylık kullanım boyunca şu üç kategoriye ayrılmış toplam 20 görev denendi:
- (1) Yeni proje oluşturma
- (2) Araştırma işleri
- (3) Mevcut projeleri analiz etme ve değiştirme
- Sonuçta 20 görevin 14’ü başarısız oldu, 3’ü başarılıydı (ilk başarı örnekleri dahil), 3’ü ise belirsizdi (Inconclusive).
- Başarı ya da başarısızlığı öngörmeyi sağlayan belirgin bir örüntü yoktu; benzer görünen görevler bile beklenmedik şekillerde başarısız olabiliyordu.
- Ayrıntılı örnekler metnin sonundaki ekte toplandı.
1. Yeni proje oluşturma
- Şirketin demo videolarına ve ilk başarı örneklerine bakınca, Devin’in sıfırdan yeni proje üretme konusunda iyi olması bekleniyordu.
- Ama pratikte aşırı karmaşık kod yapıları kurduğu ya da basit web scraping işlerini bile çözemediği birçok durum görüldü.
- Örneğin Braintrust’a sentetik veri yükleme görevi, Devin’in kodunun aşırı karmaşık olması ve hatalardan çıkamaması nedeniyle başarısız oldu.
- Spiral.computer ile yapay zeka not tutma aracı Circleback’i entegre etme girişimi de spagetti gibi karmaşık kod ürettiği için yarıda bırakıldı.
- Google Scholar’dan belirli bir yazarın son 25 makalesini çekme görevi ise HTML parsing aşamasında takılıp kaldı.
2. Araştırma işleri
- Basit doküman taraması gibi temel araştırma görevlerini bir ölçüde yapabildi.
- Ancak doğru timestamp’leri koruyarak transcript özetleme gibi daha karmaşık sorunlarda, ilgili içeriği doğru anlayamadı ve yalnızca alakasız örnekler sıraladı.
- DaisyUI için minimal bir tema oluşturma isteğinde de gerçekte yalnızca varsayılan tema renklerini kullandı; sonuç fiilen işe yaramadı.
3. Mevcut kodu analiz etme ve değiştirme
- Mevcut kodu ve bağlamı anlayıp bakım yapma işlerinde Devin’in sınırları daha belirgin hale geldi.
- nbdev projesiyle çalışırken, yalnızca notebook düzenlemek yeterliyken gereksiz yere Python script’leri eklemek gibi verimsiz yaklaşımlar denedi.
- Güvenlik incelemesinde de var olmayan açıkları işaret etti ya da asıl sorunları doğru tespit edemedi.
- SSH key forwarding hatasını teşhis etmeye çalışırken yalnızca script’in kendisine odaklandı ve problemin başka bir yerde olabileceğini hiç hesaba katmadı.
- Kullanıcı girdisi ile veritabanı arasındaki çakışmaları kontrol eden bir özellik ekleme işinde de, Devin’in ürettiği kodu düzeltmeye harcanan süreden sonra bunu doğrudan 90 dakikada yazmak daha hızlı oldu.
Ekibin değerlendirmesi
- Bir aylık yoğun testten sonra ekip içinde Devin hakkında şu değerlendirmeler yapıldı:
- “Küçük ve iyi tanımlanmış işleri doğrudan kendin yapmak daha hızlı; büyük işlerde ise Devin’in başarısız olma olasılığı yüksek olduğu için pek faydası kalmıyor.” (Johno Whitaker)
- “Başta küçük düzeltmelerle çalışır hale gelir sandım ama sonunda çok daha fazla yere müdahale etmek gerekti; en baştan kendim yapmam daha iyi olurdu.” (Isaac Flath)
- “AnswerAI’nin dahili araçlarıyla iyi entegre olamıyor; sağlanan doküman ve örnekleri de iyi kullanamıyor, yani uyumluluk sorunları var. Buna karşılık Cursor gibi araçlarla küçük adımlarla sürekli geri bildirim alışverişi yapılabildiği için Devin’den daha iyiydi.” (Hamel Husain)
- Devin’in ayırt edici özelliği büyük adımları otonom biçimde ilerletmesi, ancak bunun bedeli olarak insanın yanlış yönü düzeltmek için ciddi emek harcaması gerekmesi oldu.
- Buna karşılık geliştiricinin yön verdiği, yapay zekanın ise yardımcı olduğu iş akışlarının (Circleback, Cursor vb.) çok daha istikrarlı olduğu sonucuna varıldı.
Sonuç
- Devin’le çalışma deneyimi, otonom yapay zeka geliştirme araçlarının hedeflediği gelecek vizyonunu kısmen göstermiş oldu.
- Özellikle Slack tabanlı konuşmalı arayüzü ve Docker container içinde ortamı otomatik kurabilmesi, kullanıcı deneyimi açısından etkileyiciydi.
- Ancak gerçekten sorunsuz çalışan örnek sayısı 20 işin yalnızca 3’üydü ve özellikle benzer görünen görevlerde bile karmaşık başarısızlıklar sık yaşandı.
- “Otonom” olma özelliği nedeniyle, işler ters gittiğinde yanlış yönde uzun süre koşmaya devam etmesi ayrı bir sorun yarattı.
- Şimdiye kadarki deneyim, sosyal medyadaki heyecanın ya da yüksek şirket değerlemesinin gerçek üretkenlik ve ürün olgunluğuna her zaman karşılık gelmediğini gösteriyor.
- Answer.AI ekibi, bundan sonra da yapay zekanın geliştirme sürecine yardımcı olduğu yaklaşımın en pratik yol olduğu görüşünü korumayı planlıyor.
Ek: Devin ile yapılan görevlerin listesi
- Aşağıda Devin’e verilen projeler ve sonuçları kısaca özetlenmiştir.
- Dört kategoriye ayrılmıştır:
- (1) Yeni proje oluşturma
- (2) Araştırma
- (3) Mevcut kodu analiz etme
- (4) Mevcut projeyi değiştirme
1. Yeni proje oluşturma
-
Planet Tracker
- Status: Success
- Description: Jüpiter ve Satürn’ün geçmiş konumları hakkındaki iddiaları doğrulamaya yönelik uygulama
- Reflection: Devin’le yalnızca mobil üzerinden Slack aracılığıyla konuşuldu ve Devin işin çoğunu otonom olarak tamamlayarak başarıya ulaştı.
-
Migrating data from Notion into Google Sheets
- Status: Success
- Description: Notion belgelerini otomatik olarak Google Sheets’e aktarma
- Reflection: Devin’in Google Cloud Console ayarlarına kadar adım adım yönlendirmesi, ilk kez “tamamen yeni bir deneyim” hissi verdi.
-
Multi-app deploys on Railway
- Status: Inconclusive
- Description: Tek bir Railway deploy içinde birden fazla uygulamayı çalıştırıp aynı veritabanını paylaşma girişimi
- Reflection: Aslında Railway bunu desteklemediği için görev fiilen imkansızdı. Devin ise denemeye devam edip halüsinasyon içeren yaklaşımlar üretmeyi sürdürdü.
-
Generate synthetic data and upload it to Braintrust
- Status: Failure
- Description: Braintrust platformuna yüklenecek sentetik veri üretme denemesi
- Reflection: Kod aşırı karmaşıktı ve hataları çözemedi; bu yüzden Cursor ile adım adım ilerlemek gerekti.
-
Create an integration between Circleback and Spiral.computer
- Status: Failure
- Description: Her iki tarafın dokümanları sağlanmasına rağmen Devin çok karmaşık, spagetti tarzı kod ürettiği için vazgeçildi.
-
Web scraping Papers by Following Google Scholar Links
- Status: Failure
- Description: Belirli bir yazarın son 25 makalesini çekmek ve ücretli makaleleri atlamak
- Reflection: HTML parsing aşamasında sonsuz döngüye girerek görev durdu.
-
Create minimal HTMX bulk upload example app
- Status: Failure
- Description: HTMX örneğini FastHTML için basitçe yeniden kurma denemesi
- Reflection: Örnek kod çalışmadı ve gereksiz parçalar eklenerek daha da kafa karıştırıcı hale geldi.
-
Create a DaisyUI Themes to match FrankenUI Theming
- Status: Failure
- Description: DaisyUI ve FrankenUI temalarını uyumlu hale getirip birlikte kullanma isteği
- Reflection: Eşleme doğru yapılmadı ve çok büyük miktarda kod eklendiği için pratikte kullanımı zorlaştı.
2. Perform Research
-
Research How to make a discord bot
- Status: Success
- Description: Python ile mesajları özetleyip e-posta gönderen bir Discord botunun nasıl yapılacağını araştırma
- Reflection: Devin süreç içinde planı bir Markdown dosyasında özetledi; son kod kusursuz değildi ama kavramsal anlayış açısından faydalı oldu.
-
Research on Transcript Summarization With Accurate Timestamps
- Status: Failure
- Description: Timestamp bilgilerini koruyarak nasıl özet üretilebileceğini bulma
- Reflection: Devin ilgili başlıkları kabaca sıraladı ama gerçek çözüm yönü sunamadı.
-
Create a minimal DaisyUI theme as an example
- Status: Failure
- Description: DaisyUI teması için minimal bir örnek istenmesi
- Reflection: Gerçek tema uygulanmadı; varsayılan tema renkleri aynen kullanıldı.
3. Analyze Existing Code
-
Performing a security review of a code base
- Status: Inconclusive
- Description: 700 satırdan kısa bir GitHub reposunun güvenlik açıkları açısından incelenmesi
- Reflection: Kısmen doğru noktalara değinse de gerçekte var olmayan açıklara işaret ederek güvenlik sorunlarını abarttı.
-
Review blog posts and make a pull request with improvements
- Status: Failure
- Description: Blog yazılarını inceleyip Quarto tabanlı kaynağa uygun bir PR oluşturma isteği
- Reflection: Quarto yapısını öğrenemediği için metadata ve front matter işlemleri karıştı ve görev başarısız oldu.
-
Review an application and identify potential areas of improvement
- Status: Failure
- Description: Daha önce yapılmış bir timekeeping uygulaması için kapsamlı iyileştirme önerileri isteme
- Reflection: Önerilerin çoğu pratikte işe yaramadı.
-
Debug why ssh key forwarding is not working in a setup script
- Status: Inconclusive
- Description: Script ile sunucu kurulurken SSH key forwarding’in çalışmaması sorunu
- Reflection: Devin ısrarla yalnızca script’i inceledi ve sorunun başka bir yerde olabileceğini fark etmedi.
4. Modify An Existing Project
-
Making changes to a nbdev project
- Status: Failure
- Description: FastHTML + nbdev ile yapılmış zaman takip uygulamasına Apple Shortcuts için API ekleme
- Reflection: Devin doğrudan notebook’u düzenlemek yerine Python script’iyle notebook’u değiştirmeye çalışarak gereksiz karmaşıklık yarattı.
-
Migration of Python Project To nbdev
- Status: Failure
- Description: Mevcut bir Python projesini nbdev’e taşıma girişimi
- Reflection: Temel nbdev kurulumunu bile doğru yapamadığı için proje yapısı bozuldu.
-
Integrate Styling Package Into FastHTML
- Status: Failure
- Description: MonsterUI’yi nbdev tabanlı projeye entegre etme
- Reflection: Devin nbdev repo yapısını doğru anlayamadığı için başarısız oldu.
-
Add feature to check for conflicts between user input and database
- Status: Failure
- Description: Mevcut uygulamada kullanıcı girdisi ile veritabanı değeri çakıştığında bunu bildiren bir UI ekleme
- Reflection: Devin’in denemelerini sonuna kadar düzeltmeye harcanan zaman çok uzadı; bunu doğrudan 90 dakikada yapmak çok daha hızlıydı.
-
Generate LLMs context file with the contents of every fasthtml gallery example
- Status: Failure
- Description: Tüm fasthtml galeri örneklerini LLMs metin dosyası olarak üretme isteği
- Reflection: Devin’in her örneği ayrı bir Markdown dosyası yapması ilginçti ama gerçek yazım biçimi dokümantasyonla uyumlu değildi ve gereksiz bağımlılıklar ekledi.
1 yorum
Hacker News görüşleri
OpenHands'in yaratıcısı, yapay zekanın henüz yazılım mühendislerinin yerini alacak seviyeye gelmediğini vurguluyor. Yapay zekanın yazdığı kod, junior bir mühendisin kodu gibi titiz bir inceleme gerektiriyor. Ancak yapay zeka iyi kullanıldığında üretkenliği büyük ölçüde artırıyor. OpenHands kod tabanının yaklaşık %20'si yapay zeka tarafından yazılmış veya birlikte yazılmış durumda. Yapay zeka, merge conflict çözme ya da linter hatalarını düzeltme gibi basit işlerde faydalı. Ayrıca yapay zekanın her hafta geliştiğini ve rekabetin çok yoğun olduğunu belirtiyor
Her gün yapay zeka kodlama araçları kullanan bir kullanıcı, Devin gibi ajan yaklaşımının gereğinden fazla iş yapmaya çalıştığını düşünüyor. Yapay zeka kodlama araçları, geliştiricilerin yerini almaktan ziyade geliştiriciler için araç olarak konumlanmalı. GitHub Copilot, tekrarlayan kodları tamamlama konusunda faydalı; Aider ise daha üst düzey düzenleme işleri yapabiliyor. Ancak bunlar hâlâ kusursuz değil ve problem çözerken gereksiz değişiklikler yapabiliyor
Devin gibi yapay zeka ajanlarının sorunu, zekâlarının belli bir seviyede takılı kalması. Bazen orta veya kıdemli bir mühendisin saatler sürecek işini dakikalar içinde çözüyorlar, ama basit hatalar da yapabiliyorlar. Junior mühendislerin önemli bir niteliği yönlendirilebilir olmaları; yapay zeka ajanlarının ise yönlendirilememesi önemli bir sınırlama
Yapay zekanın insan mühendislerin yerini alabileceği iddiasına şüpheyle yaklaşılıyor. Yapay zeka küçük ve tekrarlayan işler için uygun, ancak altyapı yönetimi ya da uygulama dağıtımı gibi karmaşık görevler için uygun değil. Yapay zekanın insanın yerini alabileceğine dair iddialara, bunu pratikte gerçekten görene kadar inanmayacağını söylüyor
Yapay zeka ajanları gerektiğinde insan girdisi isteyebilmeli, ancak Devin bunu "soft stop" durumlarında iyi yapamıyor. Bir insan geliştirici birkaç saat sonra yardım isterdi, ama yapay zeka sonsuz döngüye girebiliyor
Yapay zeka görüntü üretiminde olduğu gibi, yapay zeka kodlama araçları da ilk başta şaşırtıcı sonuçlar gösteriyor ama hâlâ çok sayıda hata barındırıyor. Yine de birkaç yıl içinde etkileyici ilerlemeler olacağı öngörülüyor. Midjourney gibi araçlar beklentiden farklı sonuçlar verebiliyor ve kullanıcıların hızlı iterasyon yapabilmesini sağlayan özelliklere ihtiyaç duyulacağı belirtiliyor
Devin kullanım deneyimlerine bakıldığında, ajanın beklentileri karşılamadığı değerlendiriliyor. Ajanları uygulamak kolay, ama onları gerçekten faydalı şekilde uygulamak zor. Devin'in sınırları, ajan sistemlerinin gelişimi konusunda endişe yaratıyor
Devin çok fazla şeyi denedi ve sınırlı kapasite içinde kod artifact'leri üretmenin değerli olduğu belirtiliyor. Geliştirme döngüsünün belirli unsurlarına odaklanmak önemli. Factory AI gibi şirketler bu yaklaşımı benimsiyor ve ürünleri ilgi görüyor
Devin, kod biçimini ve yerel test kurulumunu anladığında etkileyici olabiliyor, ancak gereksiz değişiklikler ekleyip başka şeyleri bozabiliyor. Bu değişiklikleri geri alamadığı için ek temizlik gerekiyor. Devin, ajan iş akışlarının potansiyelini göstermiş olsa da zaman kazandırmadığı için tavsiye edilmiyor
Cursor'u yoğun kullanan bir kullanıcı, sistemi belli bir yöne zorlamak gerektiğini düşünüyor. LLM bazen faydalı kod parçacıkları sunuyor, ancak yanlış yöne giderse önerileri durdurup başka bir yöne yönlendirmek gerekiyor. Cursor özellikle refactoring'de çok faydalı ve ciddi miktarda yazma işi ile zamandan tasarruf sağlıyor.