Bugün sizlere hayalini kurduğum kendi kendine geliştirme yapan veya sözlü ve zihinsel komutlarla programlar geliştiren yapay zekalı sistemlere bir adım daha yaklaştığımızı hissettiren GitHub Copilot’tan bahsetmek istiyorum.
Henüz resmi sürümü çıkmayan GitHub Copilot için geçen sene ‘technical preview’ için bekleme listesi kaydımı yaptırmıştım. 2021 Kasım ayında technical preview yayınlandı ve ön başvurusu olan kişilere review için GitHub Copilot kullanımı açıldı. Kasım ayından beri ara ara kullandığım Github Copilot’tan sizlere kısaca bahsetmek istedim. Nedir bu Copilot, yapay zeka bizi ele mi geçiriyor yoksa yeni bir iş gücü mü elde ediyoruz, beraber inceleyip bakalım. 🙂
GitHub Copilot Nedir
GitHub, Copilot’u “Your AI pair programmer” sloganı ile duyurdu. Bu sloganla Copilot için “sizinle birlikte geliştirme yapmanıza yardımıcı olan, daha hızlı çıktı üretmenizi sağlayan yapay zeka tabanlı kişisel programcınız” diyebiliriz.
Copilot, GPT-3 teknolojisini kullanan ve OpenAI Codex tarafından geliştirilen yeni bir AI sistemi ile desteklenmektedir. OpenAI şirketi yapay zeka modelinin eğitilmesi için GitHub’ın sağladığı milyarlarca satır public kodun kullanıldığını ifade etmektedir.
GPT-3 ile ilgili detaylı bilgi için Barış Özcan’ın kısa videosunu izleyebilirsiniz.
GitHub Copilot Nasıl Çalışır
Geliştirme yaparken kullandığımız birçok eklenti bulunmaktadır. Özellikle autocomplete ve intelisense eklentileri hem kod standartlarında yardımcı olurken hem de size ulaşmak istediğiniz foksiyonlara kolayca ulaşmanızı sağlar.
Fakat GitHub Copilot bunlardan tamamen farklı bir şekilde çalışmaktadır. Yukarıda bahsettiğim eklentiler genellikle sadece kolaylık sağlarken Copilot sizin için doğrudan geliştirme yapmaktadır. Aşağıda sizlere sağladığı temel özelliklerini paylaşmak istiyorum.
1. Nasıl kodladığınızı analiz edebilir.
2. Yazdığınız kod satırını tamamlayabilir veya tüm metodu sizin için oluşturabilir.
3. Yazdığınız comment’leri yorumlayarak size ilgili metodu oluşturabilir.
4. Sadece fonksiyon adını alarak yazmak istediğiniz kodu tahmin eder ve önerir.
5. Birden fazla alternatif sunarak bunu kodunuza aktarmanıza ve üzerinde düzenleme yapmanıza olanak sağlar.
6. Benzer kod bloklarını otomatik oluşturur.
7. Metotlarınız için unit test’ler oluşturabilir.
Yukarıdaki diagramda gördüğünüz gibi editör üzerine yüklediğiniz Copilot extension’ı editörde yazmış olduğunuz comment ve kod parçalarını kendi servisleri üzerinden OpenAI Codex’e gönderir. Ardından OpenAI Codex daha önce incelediği GitHub Public Code bloklarından öğrendiği ve bu sayede elde ettiği kod geliştirme yeteneği ile sizin için kod blokları sentezler.
Ardından sentezlenmiş bu kodlar Copilot servisleri üzerinden size ulaşarak alternatif çözümleri size bildirir.
Aşağıda Copilot’u tanımak için GitHub tarafından atılmış bir tweet ile yukarıda anlattıklarımı biraz daha somutlaştırabilirsiniz.
Konuyu daha da uzatmadan yukarıda bahsettiğim özellikleri bazı örneklerle sizinle paylaşmak istiyorum. Şu an için bildiğim kadarıyla sadece VS Code üzerinde Copilot desteği bulunuyor. Ama ilerleyen günlerde başta Visual Studio olmak üzere pek çok editör için destek verilecek.
Copilot Java, C, C++, C#, JavaScript, Python gibi birçok programlama dili için destek vermektedir. Şu ana kadar python, c# ve react için denemeler gayet başarılı gerçekleşti.
Aşağıdaki örnek için sadece metodun ne iş yapacağını ve parametreleri aşağıdaki şekilde commet olarak yazdım.
// fibonacci method with parameter n and return type int
Ardından GitHub Copilot çalıştı ve bizim için seçtiği en iyi metodu class içerisine ekledi. Ayrıca birden fazla alternatif sunarak seçim yapmamıza imkan vermekte.
Diğer örneğimizde metodun isminden ne iş yapacağını yorumlayarak bir kod bloğu oluşturmasını sağlayalım. Bunun için aşağıdaki ‘method sign’ı oluşturup Copilot’un yorumlamasını beklememiz yeterli olucaktır.
public static string ConvertImagToBase64(Image image)
Diğer örneklere olduğu gibi yazdığımız metotlar için unit testler oluşturabiliriz veya Copilot’u daha fazla zorlayarak bazı design pattern’leri kullanarak bir cache instance mekanizması yazmasını isteyebiliriz.
GitHub Copilot’u aşağıdaki bağlantıya tıklayarak daha detaylı inceleyebilir ve ve waitlist’e girmek için kayıt yaptırabilirsiniz.
Umarım faydalı olmuştur. Bir sonraki yazımızda görüşmek üzere 😊