NLP Kullanarak Bir Buçuk Yıllık Mobil Geliştirme: Sonuçlar

Globus'ta iOS Team Lead olan Dmitry Lemaikin, Tinkoff Mobile Meetup'ta sinir ağlarını iş süreçlerinde kullanma deneyimini paylaştı. Ekibimiz bir buçuk yıldır ChatGPT–CoPilot kombinasyonunu denemektedir. Bu makalede, sinir ağlarının gerçekten yardımcı olabileceği görevleri ve belirsiz sonuçlar üretebileceği durumları ele alacağız.

NLP (Doğal Dil İşleme), neredeyse her alanda kullanılan ve ustalaşmayı gerektiren bağımsız bir geliştirici aracı haline gelmiştir. Profesyoneller için rutin görevleri üstlenerek işi kolaylaştırır. Ancak amatörler için yanlış yönlendirmeler nedeniyle işi daha da zorlaştırabilir. Bu nedenle, doğal dilde modele iletilen bir istek olan prompt'u doğru oluşturabilmek büyük önem taşır.


Globus ekibi, sinir ağlarıyla çalışmak için ChatGPT–CoPilot kombinasyonunu seçti. Bu iki sistem, mobil uygulama geliştirmede kod yazma sürecini büyük ölçüde kolaylaştırır ve birbirini mükemmel biçimde tamamlar.

ChatGPT, geniş kapsamlı genel prompt'lar için kullanılır; bağlamı iyi kavrar ve fikir üretmeye yardımcı olur. CoPilot ise Xcode gibi IDE'lere (Entegre Geliştirme Ortamı) entegre olur ve mevcut projenizin kod tabanına dayalı kod tamamlama önerileri sunar.


ChatGPT–CoPilot kombinasyonuyla bir buçuk yıldır çalışıyoruz ve üç tür durumla karşılaştık:

• Başarılı durumlar: NLP kullanımının işi kolaylaştırdığı ve zaman kazandırdığı vakalar.

• Orta düzey durumlar: Sinir ağının yardımcı olabildiği, ancak daha fazla zaman harcamayı gerektiren ve bazen yanıltıcı sonuçlar doğurabilen vakalar.

• Olumsuz durumlar: Sinir ağlarının kullanımının zarar bile verebileceği vakalar.

POSITIVE

Önce başarılı durumlardan konuşalım

  1. Eski kodu yeniden yazma
  2. ChatGPT, örneğin Objective-C'den Swift'e kod tabanı taşıma gibi kodu yeniden yazma konusunda son derece başarılıdır. Bu, Globus ekibinin sinir ağlarını kullandığı ilk vakalardan biriydi. iOS Team Lead Dmitry Lemaikin, yeniden yazılan kodun doğruluğunu doğrulamak için her satırı elle kontrol etti: 'Başlangıçta bunun mümkün olacağına ve kodun hatasız çıkacağına inanmıyorduk. Ama sonuçların doğru olduğuna ikna olunca ChatGPT'ye daha fazla güvenmeye başladık.'

İpucu: ChatGPT, kodun hangi dilde yazıldığını ve nasıl biçimlendirildiğini umursamaz; her koşulda kodu başarıyla Swift'e dönüştürür.


  1. Kodu bir platformdan diğerine taşıma
  2. Globus, iOS ve Android için native uygulamalar geliştirdiğinden Swift ve Kotlin sürekli iç içedir. Mantığın bir platformdan diğerine aktarılması sık karşılaşılan bir görevdir. ChatGPT ile kodu bir platformdan diğerine taşıyarak önemli ölçüde zaman ve kaynak tasarrufu sağlayabilirsiniz. İki dil de sözdizimi ve yapı açısından oldukça benzer; bu da bir makine için bu dönüşümü kolaylaştırır.

İpucu: Modelleri ve hatta kullanıcı arayüzü bileşenlerini de taşıyabilirsiniz. Karmaşıklık veya uyumluluk açısından istisnalar olabilir.


  1. Yapılandırılmamış veriyi yapılandırma
  2. Veriler veya metinler size uygun olmayan bir formatta gönderildiğinde, onu ayrıştırmak için zaman harcamak yerine bir yapılandırma prompt'u oluşturun ve metni ChatGPT'ye gönderin — istediğiniz formatta geri alırsınız.

İpucu: Metin her türde olabilir: JSON, XML, edebi bir metin parçası ya da farklı format ve içeriklerdeki metinlerin karışımı.


  1. Tamamlanmış kodun veya metnin stilini değiştirme
  2. Bir linter kullanamıyorsanız ChatGPT yine imdadınıza yetişir. Prompt'ta metnin stilini ve formatını değiştirme ya da başka bir dile çevirme gibi gereksinimlerinizi yazabilirsiniz. Bu sayede ek bir içerik elde edebilirsiniz.

İpucu: Mektup oluştururken ve kodu biçimlendirirken kullanabilirsiniz.


  1. Talimatlar yazma
  2. Örneğin uygulamayı mağazaya ekleme talimatlarını yazmak için zaman harcamamak adına hazır bir makale alabilir, ChatGPT'ye göndererek güncelliğini kontrol ettirebilir ve eksiksiz talimatlar elde edebilirsiniz. Sonucu müşteriye göndermeden önce doğrulamayı unutmayın — bunun için talimatların yazıldığı alanda uzman olmanız gerekir.

İpucu: Sonucu yine de doğrulamanız gerekecek, ancak sıfırdan yazmaktan daha kolaydır.


  1. Birim test yazma
  2. ChatGPT ve Gemini gibi diğer sinir ağları birim testlerini iyi yönetir. NLP ile bu süreci otomatikleştirerek faydalı veriler üretebilirsiniz.

İpucu: ChatGPT'deki 'Yeniden Oluştur' düğmesine istediğiniz kadar basabilir ve sonunda yapılandırılıp kullanılabilecek büyük miktarda veri elde edebilirsiniz.


  1. Test için sahte veri oluşturma
  2. ChatGPT'deki 'Yeniden Oluştur' düğmesine istediğiniz kadar basın; sonunda yapılandırılıp kullanılabilecek büyük miktarda veri alırsınız.

İpucu: Açıklamalar, fiyatlar, yorumlar ve diğer alanlarla birlikte 1000 ürün oluşturmanız gerekiyorsa bu yöntemi kullanın.


  1. Düzenli ifadeler yazma
  2. ChatGPT rutin görevleri kolaylaştırır. E-posta doğrulamak için bir düzenli ifade yazabilir ve hemen ardından ChatGPT'den bu ifade için yüz birim testi yazmasını isteyebilirsiniz.
HARD TO SAY

Sıra ikinci vaka sınıfına geldi. Burada sinir ağı kullanımının faydalı olup olmadığını kesin olarak söylemenin mümkün olmadığı durumları ele alacağız

  1. Belirsiz sorgular
  2. Prompt yanlış yazılmışsa ChatGPT hızla bir seçenek önerebilir; ancak bu seçenek derin bir yeniden çalışma gerektirebilir. Böylece yeniden yapma için harcanan süre, baştan kendiniz yazmanızdakinden daha fazla olabilir. Bu nedenle, prompt ne kadar spesifik olursa o kadar iyi sonuç verdiğini unutmamak önemlidir.
  3. Mutlak doğruluk gerektiğinde
  4. Hatırlanması gereken bir diğer kural: sinir ağları hata yapar ve hatalar her sinir ağının ayrılmaz bir parçasıdır. Sonuçları kontrol etmek çok fazla kaynak gerektirebilir ve bunu kendiniz yapmanız daha kolay olabilir. Dolayısıyla mutlak doğruluk arıyorsanız başka yöntemlere başvurmanız daha iyi olur.
  5. Sınırlı eğitim veri tabanı
  6. ChatGPT'nin bilgisi şu anda Eylül 2023 itibarıyla mevcut verilerle sınırlıdır. Sinir ağı, bu tarihten sonra olanları dikkate alamayacağından büyük olasılıkla güncel olmayan bilgilerle yanıt verecektir. Bu sorun kısmen eklentilerle çözülebilir: örneğin Globus ekibi, web sayfalarını ayrıştırmak için bir eklenti kullanmaktadır.
  7. Stajyer eğitimi
  8. Eğitimde ChatGPT kullanırken stajyerin deneyimini veya deneyimsizliğini göz önünde bulundurmak gerekir. Stajyerin deneyimi varsa sinir ağlarının kullanımı öğrenmeye yardımcı olabilir. Ancak stajyerin deneyimi yoksa onu yanlış yöne sürükleyebilir ya da konuyu öğrenmesini engelleyebilir.
  9. Boş sayfa korkusunu aşmak
  10. Projelere sıfırdan başlamakta zorlanıyorsanız ChatGPT size ileri adım atma ve bir şeyler yapma ilhamı verebilir. Ama madalyonun öte yüzünde, sinir ağının sizi yanlış yönde ilerletebileceği de var. Sohbet botları başlangıçta kullanıcıları muhataplarının gerçek bir insan olduğuna inandırmak amacıyla tasarlanmıştı. Bu nedenle sonuçları her durumda kendiniz kontrol etmeniz gerekecektir.
NEVER TRY

ChatGPT'yi kullanmamanız gereken durumlar

  1. Soru sorduğunuz alanda uzman değilseniz
  2. Bu alandaki uzmanlığınız düşükse sinir ağının yanıtının doğruluğunu değerlendirmekte zorlanırsınız. Bu durum ciddi hatalara yol açabilir ve iyi bir sonuç alma ihtimaliniz düşer.
  3. Görevler çok büyük olduğunda
  4. ChatGPT'ye büyük görevler vermeyin; bunları parçalara bölüp küçük kod parçalarıyla çalışmak daha iyidir. Bu yaklaşım sonuçları kontrol etmenizi kolaylaştırır ve sinir ağının yanıtları daha doğru olur.
  5. Özelleşmemiş NLP araçları kullanmak
  6. Günümüzde son derece özelleşmiş olanlar dahil çok sayıda NLP aracı mevcuttur. Daha iyi sonuçlar almak istiyorsanız göreve uygun sinir ağını seçmek daha doğrudur.
  7. ChatGPT şiir yazamaz
  8. Metinle çalışmak için tasarlanmış olsa ve bunu iyi yapsa da şiir yazma gibi yaratıcı görevler onun için zordur.
  9. Bir sinir ağının sonuçlarını diğerine aktarmak
  10. Bu durumda kesin bir sonuçtan söz etmek mümkün değildir. Birinci sinir ağı hatalı bir sonuç üretebilir; bu hata ikincisine aktarıldığında kartopu gibi büyüyebilir. Bunu önlemek için, geri dönüşü olmayan deneyler için önemli zaman harcamanız gerekebilir.
  11. Özel görsel bileşenler oluşturmak
  12. En doğru prompt ile bile ChatGPT her zaman istediğiniz görseli oluşturamaz.
LET'S CHECK IT

Globus ekibinin henüz kesin bir görüşün oluşmadığı deneysel vakaları da oldu

  1. Proje değerlendirmesi
  2. Proje belgelerini sinir ağına yükleyip paragraflara ayırmasını isteyebilirsiniz. ChatGPT her zaman tüm maddeleri dikkate almaz ve bazı bilgileri atlar; dolayısıyla bazı eklemeler yapmanız gerekebilir. Artı tarafta: saatler cinsinden proje tahmini sunabilir, ancak doğrulama gerekir.
  3. Koddan bellek sızıntısı bulma
  4. Bu durumda ChatGPT yalnızca genel öneriler verebilir; çünkü sinir ağının tam verisi yoktur ve sorunu anlamak için durumu ve kodun kendisini iyi kavramak gerekir. Belki ChatGPT 5 veya diğer sürümlerle durum iyileşir.
  5. Kağıt üzerinde elle çizilmiş ekran düzenine veya tasarıma dayalı kod ekranları yazma
  6. ChatGPT reklamı bunu mümkün olarak sunar: Bir kişi uygulama ekranını bir peçeteye çizer, botu chatbot'a yükler ve sonuç olarak bir kod alır. Ancak pratikte, iyi kaliteli düzenlerle bile bunu kullanmak zor olduğu ortaya çıktı.
Gizlilik Politikası
Kişisel verilerin işlenmesine ilişkin onay
Tanıtım postaları almaya onay
Fiyatlandırma Politikası
Ofis 1
603001, Nizhnevolzhskaya Naberezhnaya, 17/2, floor 3, Nizhny Novgorod, Russia
Ofis 2
603024, Kazanskaya Naberezhnaya, 5, Nizhny Novgorod, Russia
NLP deneyimimden yola çıkarak şu önerileri paylaşmak isterim:
• Belirli bir sinir ağı ve belirli bir görev için prompt oluşturmayı pratik yapın.
• Başarılı prompt'ları ayrı bir dosyaya kaydedin: bu, kendi yaklaşımınızı analiz etmenize ve bulmanıza yardımcı olacaktır.
• Geliştirme ortamınız için yeni istemci ajan uygulamalarını deneyin.
• Mevcut görev için NLP kullanmanın artılarını ve eksilerini değerlendirin.

Sonuç olarak şunu söylemek isteriz: LLM'lere rağmen insanı iş süreçlerinden tamamen dışlamak hâlâ mümkün değildir. Sinir ağları programcıların yerini almayacaktır; ancak kod yazma sürecini insanlar için kesinlikle daha keyifli hale getirebilir. Ve sinir ağları için yeni kullanım alanları ile yeni yaklaşımlar bulmak hâlâ önümüzde duran bir görevdir.

Dmitry Lemaikin
iOS Team Lead, Globus