Kurs
Kod yazmak, şablon kodlar veya küçük sözdizimi ayrıntılarına takıldığınızda yorucu olabilir. Yeni yapay zekâ modelleriyle denemeler yaparken ve sadece geliştirmeye odaklanmak istediğinizde bu sürtünme daha da artar. Tabnine, editörünüz içinde yapay zekâ destekli kod tamamlama ile bu yavaşlamayı aşmanıza yardımcı olur.
Bu yazıda, Visual Studio Code (VS Code) içinde Tabnine kullanarak Google'ın en yeni görüntü oluşturma modeli Nano Banana ile bir yapay zekâ görüntü düzenleyiciyi adım adım nasıl oluşturacağımı açıklayacağım. Yazının sonunda, kullanıcıların istemlerle görüntü üretip düzenleyebildiği çalışan bir Python uygulamamız olacak.
En güncel Google görüntü oluşturma modellerini takip etmek isteyenler için, Nano Banana 2 rehberimizi okumanızı öneririm.


Tabnine Nedir?
Tabnine, GitHub Copilot ve Cursor gibi yapay zekâ destekli bir kodlama asistanıdır. VS Code, PyCharm, Jupyter ve daha birçok popüler editörde çalışır.
Tabnine’in öne çıkan bazı özellikleri şunlardır:
- Jira entegrasyonu: Tabnine, yazılım projelerinin yönetiminde yaygın olarak kullanılan Jira ile bağlantı kurabilir. Bu, işleri yönetmeyi kolaylaştırır ve Tabnine’in süreçteki görevleri takip etmesini sağlar.
- Özel komutlar: Tabnine, "Kodu açıkla" veya "Kodu düzelt" gibi çeşitli komutlarla gelir. Ayrıca, kullanıcıların istem tabanlı özel komutlar tanımlamasına olanak tanır.
- Özelleştirilebilir davranış: Tabnine, yapay zekâ modellerinin yanıt verme biçimini yönlendiren bir istemi yapılandırmanıza olanak tanır. Örneğin, iyi tanımlanmış kodlama yönergeleriniz varsa, bunları sağlayarak üretilen kodun bu yönergelere uygun olmasını sağlayabilirsiniz.
- Akıllı otomatik tamamlama: Sadece değişken adlarını değil, tam satırları veya kod bloklarını önerir.
- Bağlama duyarlı: Tabnine, proje yapınıza ve kodlama stilinize uyum sağlar.
- Birden çok yapay zekâ modeli desteği: Tabnine, en popüler yapay zekâ modellerini destekler ve hangisini kullanacağınızı seçmeyi kolaylaştırır.
- Takım öğrenmesi: Kurumsal planlarda, ekibinizin özel kod tabanından öğrenerek şirketinizin kalıplarına uygun önerilerde bulunabilir.
Tabnine Kurulumu
Başlamak için bir Tabnine hesabı oluşturup abone olmamız gerekiyor. 14 günlük bir deneme sunuyorlar; böylece ücretsiz deneyebilirsiniz. Deneme süresinden sonra Tabnine aylık 9 $’dır.
Tabnine hesabınızı oluşturduktan sonra VS Code’u açın. VS Code yüklü değilse buradan kurun. Uzantılar sekmesini açın ve resmi uzantıyı bulmak için "tabnine" yazın.

Uzantı yüklendikten sonra oturum açmamız istenir. Ardından Tabnine’e sol menü çubuğundan erişebiliriz (bu ekran görüntüsünde son seçenek).

Tabnine'in Arayüzünü Keşfetmek
Yapay zekâ görüntü düzenleyicimizi oluşturmaya başlamadan önce, Tabnine’in temel öğelerine hızlıca bakalım.
Tabnine’i açtığımızda bir yapay zekâ sohbet arayüzü ile karşılaşıyoruz:

Üstte bir model seçici var. Buradan hangi modeli kullanacağımızı seçebiliriz. Bu derste varsayılan model olan Gemini 2.5 Pro ile devam edeceğim.

Altta bağlamı tanımlayabiliriz. Bu, yanıt verirken yapay zekâ modelinin neyi görmesini istediğimizi belirler.

Varsayılan olarak bağlam, geçerli dosyayı ve çalışma alanını (projeyi) içerir. Terminal gibi başka şeyler de ekleyebiliriz; bu, hatalarla karşılaştığımızda modeli haberdar etmek için çok yararlıdır. Ayrıca "@" karakterini kullanıp bağlama eklemek istediğimiz fonksiyonun adını yazarak belirli bir kod parçası da verebiliriz.
Hamburger menüsünden Tabnine’i yapılandırabiliriz:

Dikkate değer iki ayar, özel davranış ve özel komutlardır. Özel davranış bölümünde, modelin kod üretirken izlemesini istediğimiz bir istem ayarlayabiliriz. Bu, kodun belirli yönergelere uymasını istediğimiz durumlarda kullanışlıdır.

Komutlar bölümü, sohbet arayüzünde /<command-name> kullanılarak çalıştırılabilecek özel komutlar tanımlamaya izin verir. Bir komut, özünde belirli işlemler için bir istemdir. Bu, zaman kazanmanın ve aynı istemi tekrar tekrar yazmaktan kaçınmanın iyi bir yoludur.

Tabnine ile Vibe-coding: Bir Yapay Zekâ Görüntü Düzenleyici
Bu bölümde, Google'ın en yeni görüntü oluşturma modeli Nano Banana’yı kullanarak görüntüleri düzenleyen bir Python uygulamasını nasıl oluşturacağınızı göstereceğim. Kullanıcı, bir istemle görüntü üretebilir veya mevcut görüntüleri istemle birleştirip düzenleyebilir.
Amacım, bu uygulamayı tamamen sıfırdan istemlerle, yani vibe-code ederek inşa etmenin mümkün olup olmadığını görmekti.
Bu derste üretilen tüm kodları bu GitHub deposunda bulabilirsiniz.
Temel arayüzü oluşturma
Başlamak için, kullanıcıların bilgisayarlarından görseller seçebileceği ve bir istem yazabileceği temel arayüzü oluşturmak istedim. Yeni bir klasör oluşturdum ve o klasörde VS Code’u açtım. Hiç dosya oluşturmadım. İlk istemim şuydu:

Sonradan fark ettim ki bir Python uygulaması geliştirdiğimi belirtmeyi unutmuşum. Şanslıymışım ki yapay zekâ modeli de bunu istediğimi varsaydı. İsteme, çalıştıracağı komutları ve yazacağı kodu açıklayarak yanıt verdi.
Değişiklikleri uygulamak için ya tek tek uygulamamız ya da ekranın altındaki "Tümünü Uygula" düğmesine tıklamamız gerekiyor. Bazı değişikliklerin komut çalıştırmayı içerdiğini unutmayın. Bu durumlarda komutlar, gerekli Python paketlerini kurar ve kodu saklamak için dosya ve klasörleri oluşturur.
Oluşturulan betiği çalıştırdığımda arayüz şöyle görünüyordu:

Üstte, seçilen tüm görsellerin listesi ve bir dosya seçici açan bir düğme var. Kullanıcı bir veya birden fazla dosya seçebiliyor ve seçilen dosyalar listeleniyor. Ancak yeni dosyalar seçildiğinde eski liste üzerine yazılıyordu; bu yüzden yeni dosyaların listeye eklenmesini, eskilerin silinmemesini istedim.

Sonraki adımda, yollar yerine küçük görsellerin (thumbnail) gösterilmesi için arayüzü iyileştirmek istedim:

Sonuç şu şekilde oldu:

Bir diğer önemli özellik de görselleri kolayca kaldırma imkânıydı:

Bu istemle, küçük görsele sağ tıkladığımızda silmeyi sağlayan bir açılır menü belirerek kodu değiştirdi. Ben de böyle çalışmasını istediğim için bu değişikliği talep ettim:

Bu değişiklikten sonra uygulamayı denediğimde, görsel silme artık çalışmıyordu. Bunun Mac kullandığım için olabileceğinden şüphelendim ama söylemedim. Kendi kendine anlayıp anlayamayacağını görmek istedim.

Gayet iyi çalıştı ve bir görseli silmek için sağ tıklayabildim:

Temel arayüzdeki son adım, istem için bir metin kutusu eklemekti.

Bununla birlikte, temel arayüz hazırdı. Görselleri seçip bir istem yazabiliyoruz. Ancak henüz görüntü üretemiyoruz. Bunu bir sonraki bölümde uygulayacağız.

Nano Banana'yı Entegre Etmek
Kodu düzenli tutmak için, Google’ın en yeni görüntü modelini kullanarak görseller üreten bir fonksiyon içeren yeni bir Python betiği oluşturmasını istedim.

Yeni betiği ve .env dosyasını oluşturdu. Bu dosya, Google API’sine bağlanmak için gereken API anahtarını saklamak amacıyla kullanılıyor. Siz de adımları izliyorsanız, buradan bir API anahtarı oluşturmanız ve bunu .env dosyasına koymanız gerekir.
Ardından, görüntü üreten fonksiyonu çağırmak için arayüze yeni bir düğme eklemesini istedim. Düğmeyi ekledi, ancak tıkladığımda bir hata aldım. Bu yüzden hatayı düzeltmesini istemeden önce terminali bağlama eklediğimden emin oldum.


Dosyalarda bazı güncellemeler yaptı ancak hata devam etti. Düzeltmesini denedim ama işe yaramadı. Yapay zekâ modelinin mevcut olmadığını söylemeye başladı ve kodu doğru olmadığını bildiğim bir yöne çevirmek istedi.
Bunu aşmak için kodu elle düzeltmem gerekti. Gemini’nin resmi web sitesine gidip oradaki örnek kodu kopyalayıp uyarladım.
Bu, vibe coding yaparken bile temel kodlama bilgisine sahip olmanın neden önemli olduğuna dair bir örnek. Sıklıkla, yapay zekâ modelinin çözemediği bir şeye takılıyoruz ve programlamayı bilmek; modelin söylediğinin doğru olmadığını anlayıp düzeltebilmemiz için önemli. Bu tür araçlar, süreci hızlandırmak için kullanılmalı; bütünüyle ikamenin yerine geçmemelidir.
Yine de, bu kodu elle yazmam gerektiğinde bile Tabnine otomatik tamamlama yetenekleri sayesinde yardımcı oldu. Örneğin, seçilen görsel yollarını modele verebilmek için görsellere dönüştürmek istediğimde, sadece ne yapmak istediğimi yazmaya başladım ve doğru kodu aldım:

Ayrıca, fonksiyon adının üzerinde Tabnine’in fonksiyonu düzenleme, test etme, düzeltme, açıklama ve belgeleme araçları sunduğunu görüyoruz. Örneğin, kodu belgelemesi için belgeleme işlevini kullandım ve yapacağı değişiklikleri gösteren bir karşılaştırma (diff) sundu; ben de bunları kabul edebildim veya reddedebildim:

Nihai sonuç
Uygulama artık işlevseldi ve kullanıma hazırdı. Diğer görsellerden alınan aksesuarlarla belirli bir kişi için bir aksiyon figürü oluşturmaya çalışalım:

Sonuç şöyle:

Tabnine ile Test Yazma
Bir projede çalışırken otomatik testler yazmak çok önemlidir. Tabnine’in özelliklerinden biri de bu testleri yazmamıza yardımcı olmasıdır.
Bu özellik, "Test" sekmesinde veya bir fonksiyon tanımının üzerindeki "Test" seçeneğine tıklanarak kullanılabilir. Böyle yaptığımızda, Tabnine o fonksiyon için bir test planı oluşturur.

Bir test planı, fonksiyonun beklenen davranışlarını içeren senaryolardan oluşur. İşte Tabnine’in fonksiyonumuz için belirlediği bazı senaryolar:

Belirli bir senaryo için test üretmek üzere, senaryoya tıklamamız yeterlidir. İlgili senaryo için test fonksiyonunu oluşturur; biz de bunu test paketimize entegre edebiliriz.

Bu değişiklikleri uyguladığımda, test dosyası sadece test fonksiyonunu içeriyordu. İçe aktarmalar ve etrafındaki test sınıfı eksikti. Testin uygulamasını tamamlaması için "Sohbet" sekmesine geri dönmem gerekti. Sonrasında, oluşturduğu dosyanın adı hatalı olduğu için bir hatayla karşılaştım. Önceki gibi, bir hata olduğunu söyledim ve düzeltti. Artık test başarıyla çalışıyor.
Bundan sonra diğer testleri eklediğimde her şey sorunsuz çalıştı.

Sonuç
Tabnine, popüler kod editörleriyle kolayca entegre olarak hızlı geliştirme için güçlü bir araç olma potansiyelini gösteriyor. Yapay zekâ destekli kodlama yetenekleri süreci hızlandırıyor ve geliştiricilerin rutin işlerden ziyade yeniliğe odaklanmasına olanak tanıyor.
Bununla birlikte, uygulamayı tamamen vibe-coding ile kurma girişimim, sağlam bir kodlama temeline sahip olmanın önemini vurguladı. Uygunluğunu doğrulamadan yapay zekâ tarafından üretilen koda körü körüne güvenmek, geliştiricileri tam olarak anlayamayabilecekleri hatalara karşı savunmasız bırakabilir.
Tabnine çoğu zaman verimli çalıştı; ancak sıklıkla, alttaki yapay zekâ modelinin, GitHub Copilot gibi diğer araçlara benzer şekilde, asıl işi yapan unsur olduğu hissini verdi. Tabnine gerçekten faydalı bir araç olsa da bu deneyim, karmaşık yazılım uygulamalarının etkili ve sürdürülebilir geliştirilmesini sağlamak için geleneksel kodlama bilgisinin vazgeçilmez değerini vurguluyor.

