Mobil Geliştirmede NLP Kullanımı: 1,5 Yıllık Deneyimin Sonuçları
Tinkoff Mobile Meetup'ta Globus IT'den iOS Ekip Lideri Dmitry Lemaykin, NLP'nin işlerinde nasıl kullanıldığını paylaştı. Ekibimiz, ChatGPT-CoPilot ikilisini bir buçuk yıldır deniyor. Bu makalede, sinir ağlarının hangi görevlerde gerçekten yardımcı olabileceğini ve hangi durumlarda kullanımlarının belirsiz sonuçlara yol açabileceğini ele alacağız.
NLP (Natural Language Processing - Doğal Dil İşleme) artık hemen hemen her alanda kullanılan ve geliştiriciler tarafından hakim olması gereken bağımsız bir araç haline geldi. Rutin görevleri üstlenerek profesyonellerin hayatını kolaylaştırabilir. Ancak, amatörler için kafa karıştırıcı ve karmaşık olabilir. Bu nedenle, modele doğal ve canlı bir dilde bir istem (promt) oluşturmayı bilmek önemlidir.

Globus ekibi, ChatGPT ve CoPilot'u birlikte kullanarak sinir ağlarıyla çalışmayı seçti. Bu sistemler, mobil uygulama geliştirmede kod yazma sürecini önemli ölçüde basitleştirir ve birbirini mükemmel şekilde tamamlar.
ChatGPT, büyük genel istemler (promtlar) için kullanılır, bağlamı iyi anlar ve fikir üretmeye yardımcı olur. CoPilot ise Xcode gibi bir IDE'ye (Integrated Development Environment - Entegre Geliştirme Ortamı) entegre olur ve mevcut projenizin kod tabanına dayalı olarak kod otomatik tamamlama önerileri sunar.

ChatGPT ve CoPilot'u birlikte kullanarak bir buçuk yıllık çalışmamız sonucunda üç tür vaka (case) elde ettik:
  • Başarılı onlanlar: NLP'nin kullanımı işi kolaylaştırır ve zamandan tasarruf sağlar.
  • Orta düzeyedkiler: Sinir ağlarının kullanımı yardımcı olabilir, ancak daha fazla zaman harcamanız gerekebilir ve bazen sinir ağlarının yanıtları sizi yanlış yöne yönlendirebilir.
  • Kötü olanlar: Sinir ağlarının kullanımı zararlı olabilir.
POSITIVE
Başarılı vakalardan (case’lerden) bahsederek başlayalım:
1. Eski Kodun Yeniden Yazılması:
ChatGPT, kod tabanını Objective-C'den Swift'e çevirme gibi eski kodları yeniden yazmada oldukça başarılıdır. Bu, Globus IT ekibinin sinir ağları ile ilk deneyimlerinden biriydi. iOS Ekip Lideri Dmitry Lemaykin, yeniden yazılan kodun doğruluğunu doğrulamak için her satırı manuel olarak kontrol etti: "Başlangıçta bunun mümkün olduğuna ve kodda hata olmayacağına inanmadık. Ancak sonucun doğruluğundan emin olduktan sonra ChatGPT'ye daha fazla güvenmeye başladık."

İpucu: ChatGPT, kodun hangi dilde yazıldığına veya nasıl biçimlendirildiğine bakılmaksızın onu başarıyla Swift'e dönüştürebilir.

2. Koddaki Platformlar Arası Geçiş:
Globus IT, hem iOS hem de Android için yerel uygulamalar geliştirdiği için Swift ve Kotlin birlikte kullanılmaktadır. Bu nedenle, mantığı bir platformdan diğerine aktarma ihtiyacı sıklıkla ortaya çıkar. ChatGPT, kodun bir platformdan diğerine taşınması için kullanılabilir, bu da zamandan ve kaynaklardan önemli ölçüde tasarruf sağlar. Her iki dil de sözdizimi ve yapısı bakımından oldukça benzerdir, bu da bu tür dönüşümü makine için nispeten basit hale getirir.

İpucu: Modeller ve hatta kullanıcı arayüzü bileşenleri bile taşınabilir. Karmaşıklık veya uyumluluk nedeniyle bazı istisnalar olabilir.

3. Yapısal Olmayan Verilerin Yapılandırılması:
Veriler veya metin size uygun olmayan bir formatta gelirse, ayrıştırmaya zaman harcamak yerine, ChatGPT'ye bir yapılandırma istemi oluşturabilir ve ona yapısal olmayan metni verebilirsiniz. ChatGPT, metni istediğiniz formatta size geri verecektir.

İpucu: Metin, JSON, XML, edebi bir metin parçası, farklı formatlarda ve anlamlarda metinlerin karışımı gibi herhangi bir şey olabilir.

4. Hazır Kod veya Metnin Stillerini Değiştirme:
Eğer bir linter kullanamıyorsanız, ChatGPT yine imdadınıza yetişecektir. İsteminizde (promt’te) metne ilişkin gereksinimlerinizi belirtebilirsiniz: stili, formatı değiştirmek veya başka bir dile çevirmek. Bu sayede içeriğinizin bir başka versiyonunu elde edebilirsiniz.

İpucu: Mektup yazarken veya kod formatlarken kullanılabilir.

5. Talimat Yazma:
Örneğin, bir uygulamayı mağazaya ekleme talimatları gibi talimatlar yazmak için zaman harcamak yerine, mevcut bir makaleyi ChatGPT'den geçirerek geçerliliğini kontrol edebilir ve kapsamlı bir talimat elde edebilirsiniz. Göndermeden önce sonucu doğruladığınızdan emin olun - bunun için talimatın yazıldığı konuda uzman olmanız gerekir.

İpucu: Doğrulama yine de gereklidir, ancak sıfırdan yazmaktan daha kolaydır.

6. Ünite Testleri Yazma:
ChatGPT ve Gemini gibi diğer sinir ağları, ünite testlerinde oldukça iyidir. NLP ile bu süreci otomatikleştirebilir, uygulamanızın kalitesini yükseltebilir ve güvenilir çalışmasını sağlayabilirsiniz.

İpucu: Tek bir istemde (promt’te), tokenlerin izin verdiği ölçüde birden fazla sınıf ekleyebilirsiniz.

7. Stub Verileri Oluşturma:
Kullanıcıların, ürünlerin vb. açıklamalarıyla veritabanını doldurmanız gerektiğinde çok kullanışlı bir işlevdir. ChatGPT'deki Regenerate (Yeniden Oluştur) düğmesine istediğiniz kadar basabilirsiniz, bu da size büyük miktarda veri sağlayacaktır. Bu verileri daha sonra yapılandırabilir ve kullanabilirsiniz.

İpucu: 1000 ürünün açıklamalarını, fiyatlarını, yorumlarını ve diğer alanlarını oluşturmanız gerektiğinde kullanın.

8. Düzenli İfadeler Yazma:
ChatGPT, rutin görevleri basitleştirir. Bir e-posta adresini doğrulamak için bir düzenli ifade yazabilir ve ardından ChatGPT'den bunun için yüzlerce ünite testi yazmasını isteyebilirsiniz.
HARD TO SAY
Şimdi ikinci sınıf vakalara (caselere) geçme zamanı. Burada, bir sinir ağının kullanımının yararlı olup olmadığını kesin olarak söylemenin imkansız olduğu durumlardan bahsedeceğiz.
1. Belirsiz İstemler:
Eğer istem belirsiz bir şekilde yazılmışsa, ChatGPT elbette hızlı bir şekilde bir seçenek sunabilir, ancak bu seçeneğin büyük ölçüde revize edilmesi gerekecektir. Bu nedenle, yeniden çalışma için harcanan zaman, sıfırdan kendi başınıza yazmaktan daha fazla olabilir. Bu nedenle, ne kadar spesifik olursanız o kadar iyi olduğunu unutmayın.

2. Mutlak Doğruluk Gerektiğinde:
Unutulmaması gereken bir diğer kural ise, sinir ağlarının hata yapabileceğidir ve hata, her sinir ağının ayrılmaz bir parçasıdır.
Sonuçların doğrulanması çok fazla kaynak gerektirebilir ve bunu kendiniz yapmanın daha kolay olması mümkündür.
Dolayısıyla, kesinlikle doğru bir seçeneğe ihtiyacınız varsa, başka yöntemlere yönelmek daha iyidir.

3. Eğitim Veri Tabanın Sınırlı Olması:
Şu anda ChatGPT'deki bilgiler Eylül 2023 ile sınırlıdır. Sinir ağı bundan sonraki hiçbir şeyi hesaba katamaz, bu da muhtemelen sorgunuza güncel olmayan bilgiler sağlayacağı anlamına gelir. Bu sorun kısmen eklentilerle çözülebilir: örneğin, Globus IT ekibi web sayfalarını ayrıştırmak (parsing) için bir eklenti kullanır.

4. Stajyer Eğitimi:
ChatGPT'yi eğitimde kullanırken stajyerin deneyim seviyesini göz önünde bulundurmak gerekir.
Eğer deneyim varsa, sinir ağlarının kullanımı eğitime yardımcı olabilir. Ancak deneyim yoksa, bu stajyeri yanlış yöne yönlendirebilir veya materyalleri özümsemesine engel olabilir.

5. ‘Beyaz Sayfa’ Korkusunu Yenmek:
Eğer projelere sıfırdan başlamakta zorlanıyorsanız, ChatGPT size bir başlangıç noktası ve ilham verebilir. Madalyonun öteki yüzü ise, sinir ağının sizi yanlış yöne yönlendirebilmesi ve yanıltabileceğidir.
Sohbet robotları başlangıçta kullanıcıyı muhataplarının gerçek bir insan olduğuna ikna etmek için tasarlanmıştır. Bu nedenle, sinir ağının çıktısını her zaman kendiniz kontrol etmeniz gerekecektir.
NEVER TRY
ChatGPT Kullanılmaması Gereken Durumlar:
1. Uzmanlık Alanınızın Dışında Sorular Sorduğunuzda:
Eğer bir konu hakkında derinlemesine bilgi sahibi değilseniz, sinir ağının verdiği cevabın doğruluğunu değerlendirmeniz zor olacaktır. Bu, önemli hatalara yol açabilir ve istediğiniz sonucu elde etmenizi engelleyebilir.

2. Çok Kapsamlı Görevlerde:
ChatGPT'ye çok kapsamlı görevler vermeyin, bunun yerine bunları daha küçük parçalara ayırın ve her parçayı ayrı ayrı ele alın. Bu sayede hem sonuçları daha kolay kontrol edebilir hem de sinir ağından daha doğru yanıtlar alabilirsiniz.

3. Uzmanlaşmamış NLP Modelleri Kullanıldığında:
Günümüzde, belirli alanlara odaklanan birçok farklı NLP modeli mevcuttur. Daha kaliteli sonuçlar elde etmek için, görevinize en uygun olanı seçmeniz önemlidir.

4. ChatGPT şiir yazamaz:
ChatGPT, metin işleme konusunda oldukça başarılı olsa da, şiir yazmak gibi yaratıcı görevlerde zorlanmaktadır.

5. Farklı Sinir Ağları Arasında Çıktı Aktarma:
Bu durumda, kesin bir sonuçtan bahsetmek mümkün değildir. İlk sinir ağı hatalı sonuç üretebilir ve bu hata diğerine aktarılırsa, hatalar çığ gibi büyüyebilir. Bu sorunu çözmek için, muhtemelen geri dönüşü olmayan önemli miktarda zaman ve deney harcamanız gerekir.

6. Özel Görsel Bileşenler Oluşturma:
ChatGPT’ye, ne kadar detaylı bir istem (promt) yazarsanız yazın, istediğiniz görseli her zaman oluşturamayabilir.
LET'S CHECK IT
Globus IT ekibinin ayrıca henüz üzerinde görüş birliğine varılmamış pilot vakaları da bulunmaktadır:
1. Proje Değerlendirmesi:
Proje dokümantasyonunu sinir ağına yükleyebilir ve onu madde madde sıralamanızı isteyebilirsiniz.
Ancak, ChatGPT her zaman tüm maddeleri kapsamaz ve bilgileri atlayabilir. Bu nedenle, bunları kendiniz tamamlamanız gerekir.
Artıları: Projeyi saat cinsinden değerlendirebilir, ancak bu da doğrulanması gerekir.

2. Kodda Hafıza Sızıntılarını Bulma:
Bu durumda, ChatGPT yalnızca genel öneriler sunabilir, çünkü sinir ağı tam bilgilere sahip değildir ve sorunu anlamak için durumun ve kodun kendisinin iyi anlaşılması gerekir.
Belki de bu durum ChatGPT 5 veya diğer sürümlerde iyileştirilecektir.

3. Kağıt üzerinde elle çizilmiş bir ekran düzeninden veya tasarımdan Ekran Kodu Yazma:
ChatGPT tanıtımında, bir kişinin uygulama ekranını bir peçeteye çizip bunu sohbet botuna yüklediği ve ardından kodun çıktısını aldığı gösteriliyor. Ancak pratikte, bu yöntemin iyi kalitede maketlerle bile kullanımı zor olduğu ortaya çıktı.
Dmitry Lemaykin'in NLP kullanımıyla ilgili deneyimlerinden edindiği tavsiyeler:
“1. Belirli bir sinir ağı ve görev için istem (promt) oluşturma konusunda pratik yapın.
2. Başarılı istemleri ayrı bir dosyada saklayın: Bu, analiz yapmanıza ve sinir ağına yaklaşımınızı geliştirmenize yardımcı olacaktır.
3. Geliştirme ortamınız için yeni istemci uygulama aracılarını deneyin.
4. Mevcut göreve NLP uygulamanın artılarını ve eksilerini tartın.”


Sonuç olarak, LLM'lere (Large Language Model - Büyük Dil Modelleri) rağmen, insanları iş sürecinden tamamen çıkarmak hala mümkün değildir. Sinir ağlarının programcıların yerini alması pek mümkün değil, ancak kod yazma sürecini insanlar için daha keyifli hale getirebilecekler. Ayrıca, sinir ağlarını kullanmanın ve onlarla etkileşime girmenin yeni yollarını bulmaya devam etmemiz gerekiyor.

Dmitry Lemaikin
iOS Team Lead at Globus IT
+371 64 415 295
Latvia, Riga
Gustava Zemgala gatve, No. 74, lv-1039
Türkiye, Istanbul
Yeşilce Neighborhood. Yunus Emre Street. No: 8/1
Kağıthane
+90 532 307 88 88
© 2023
contact@globus-it.com