Bugünlerde yazılım geliştirme yaparken en sık karşılaştığım şeylerden biri, IDE’mdeki kod tamamlama önerilerinin genellikle bulut tabanlı bir yapay zeka tarafından sağlanması. Bu durum, hem kod gizliliği hem de bazen gecikme süreleri açısından beni düşündürüyor. Yerel bir LLM (Large Language Model) ile kod tamamlama, bu sorunlara zarif bir çözüm sunuyor ve Ollama bu çözümü hayata geçirmek için oldukça pratik bir araç.
Bu yazıda, Ollama’yı kullanarak kendi makinenizde AI destekli kod tamamlama ortamını nasıl kuracağınızı adım adım anlatacağım. Amacım, bulut servislerine bağımlılığı azaltıp, daha hızlı ve güvenli bir geliştirme deneyimi elde etmenizi sağlamak. Beş basit adımla, kendi yerel kod asistanınızı çalıştırmaya başlayacağız.
Yerel LLM’ler Neden Önemli Hale Geldi?
Son zamanlarda, birçok geliştirici bulut tabanlı AI araçlarının sunduğu kolaylıklarla kod yazıyor. Ancak, geliştirdiğim bazı projelerde, özellikle müşteri verisi veya hassas iş mantığı içeren üretim ERP sistemlerinde çalışırken, yazdığım kodun bir dış servise gönderilmesi beni her zaman tedirgin ediyor. Gizlilik ve veri güvenliği endişeleri, yerel LLM çözümlerine olan ilgimi artırdı.
Yerel LLM’ler, kodunuzun şirket ağından veya kişisel bilgisayarınızdan dışarı çıkmasını engeller. Bu, özellikle NDA’ya tabi projelerde veya hassas algoritmalar geliştirirken büyük bir avantaj. Ayrıca, internet bağlantısı olmadan da kod tamamlama ve diğer AI özelliklerini kullanabilmek, mobil geliştirme veya seyahat ederken çalıştığım durumlarda iş akışımı kesintiye uğratmıyor.
Ollama Nedir ve Neden Tercih Edilmeli?
Ollama, büyük dil modellerini yerel olarak çalıştırmak için tasarlanmış açık kaynaklı, basit ve güçlü bir framework. Kurulumu kolay, kullanımı pratik ve geniş bir model yelpazesini destekliyor. Ollama’yı tercih etmemdeki başlıca nedenler, bare-metal veya container ortamında LLM’leri hızla ayağa kaldırabilmesi ve Linux sistemlerle mükemmel uyumu.
Bu platform sayesinde, farklı LLM’leri (Code Llama, Deepseek Coder gibi) kolayca indirip çalıştırabilir, hatta kendi modellerinizi bile Modelfile’lar aracılığıyla özelleştirebilirsiniz. Performans konusunda da, doğru model seçimi ve donanım optimizasyonu ile bulut servislerine yakın, hatta bazı durumlarda daha iyi deneyimler elde etmek mümkün. Özellikle yüksek bant genişliği veya düşük gecikme gerektiren durumlarda yerel bir çözümün farkı hissediliyor.
Adım 1: Ollama Kurulumu – İşletim Sisteminize Özel Yaklaşım
Ollama’yı kurmak oldukça basit. Ben genelde Linux sistemler üzerinde çalıştığım için, kurulumu Debian/Ubuntu tabanlı bir sistem üzerinden göstereceğim. Ollama’nın resmi web sitesinde diğer işletim sistemleri için de detaylı talimatlar bulunuyor. İlk olarak, terminalinizi açıp aşağıdaki komutu çalıştırarak Ollama’yı sisteminize indirebilir ve kurabilirsiniz:
curl -fsSL https://ollama.com/install.sh | sh
Bu komut, Ollama’yı indirir, gerekli bağımlılıkları kurar ve systemd servisi olarak yapılandırır. Kurulum tamamlandığında, Ollama arka planda çalışmaya başlayacaktır. Kurulumun başarılı olup olmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
ollama --version
Eğer sürüm numarasını görüyorsanız, kurulumunuz başarıyla tamamlanmış demektir.
Adım 2: İlk Kod Tamamlama Modelini Çekme (Code Llama Seçimi)
Ollama kurulduktan sonra, sıra kod tamamlama için bir dil modeli indirmeye geliyor. Ollama’nın desteklediği birçok model var ancak kod tamamlama için özellikle optimize edilmiş modellerden biri Code Llama’dır. Ben genellikle 7B parametreli versiyonunu tercih ediyorum, çünkü hem yeterince güçlü hem de ortalama bir donanımda bile kabul edilebilir performans sunuyor.
Modeli indirmek için terminalde şu komutu çalıştırın:
ollama pull codellama
Bu komut, Code Llama’nın varsayılan (genellikle 7B) versiyonunu çekecektir. Eğer farklı bir versiyon veya nicemleme (quantization) seviyesi isterseniz, modeli codellama:13b veya codellama:7b-code-q4_0 gibi belirtebilirsiniz. Modelin boyutu birkaç gigabayt olabileceğinden, indirme süresi internet bağlantınızın hızına göre değişebilir.
Model indirildikten sonra, Ollama’nın çalıştığını ve modeli kullanıma hazır olduğunu doğrulamak için basit bir sohbet başlatabilirsiniz:
ollama run codellama "Merhaba, bana Python'da basit bir Fibonacci serisi fonksiyonu yazabilir misin?"
Bu komut, Code Llama modelini çalıştıracak ve size yanıt vermesini sağlayacaktır. Bu adımı, modelin doğru çalıştığını ve temel yeteneklerini test etmek için kullanırım.
Adım 3: Entegrasyon: IDE’nizde Ollama’yı Kullanma
Yerel LLM’in gücünü IDE’mize taşımak, asıl verimlilik artışını sağlayan adımdır. Ben genellikle VS Code kullandığım için entegrasyonu VS Code üzerinden anlatacağım. Piyasada Ollama ile uyumlu birçok IDE eklentisi bulunuyor, ancak Continue eklentisi bu konuda oldukça başarılı ve esnek bir yapı sunuyor.
İlk olarak, VS Code’u açın ve Extensions (Uzantılar) sekmesine gidin. Arama çubuğuna “Continue” yazıp eklentiyi yükleyin. Yüklendikten sonra, settings.json dosyanızı açarak Continue’yi Ollama ile konuşacak şekilde yapılandırmanız gerekecek. settings.json dosyasını Ctrl+, (Windows/Linux) veya Cmd+, (macOS) ile açıp arama kutusuna “Preferences: Open User Settings (JSON)” yazarak bulabilirsiniz.
Aşağıdaki yapılandırmayı settings.json dosyanıza ekleyin:
{
"continue.models": [
{
"name": "codellama",
"provider": "ollama",
"model": "codellama",
"apiBase": "http://localhost:11434"
}
],
"continue.defaultModel": "codellama"
}
Bu yapılandırma, Continue eklentisine codellama adında bir model tanımlar ve bunun Ollama sağlayıcısı üzerinden http://localhost:11434 adresindeki Ollama sunucusuna bağlanmasını söyler. apiBase adresi, Ollama’nın varsayılan API adresidir. Eğer Ollama’yı farklı bir portta veya IP adresinde çalıştırıyorsanız, bu değeri değiştirmeniz gerekir.
Yapılandırmayı kaydettikten sonra VS Code’u yeniden başlatmanız gerekebilir. Artık Continue eklentisi, kod tamamlama ve diğer AI tabanlı geliştirme görevleri için yerel Ollama sunucunuzdaki Code Llama modelini kullanacaktır. Kod yazmaya başladığınızda, eklentinin size bağlam duyarlı öneriler sunduğunu göreceksiniz.
Adım 4: Performans İpuçları ve Optimizasyonlar
Yerel LLM’ler donanım kaynaklarını yoğun kullanabilir, bu yüzden performansı optimize etmek kritik. Kendi sistemimde, özellikle PostgreSQL ve Redis gibi bellek yoğun servisler çalışırken, LLM’in sistem kaynaklarını boğmaması için bazı ayarlamalar yapıyorum. İşte birkaç ipucu:
- Model Seçimi ve Nicemleme (Quantization): Her zaman en büyük modeli kullanmak zorunda değilsiniz. Örneğin, Code Llama’nın 7B parametreli nicemlenmiş (Q4_0 veya Q5_K_M gibi) versiyonları, daha küçük dosya boyutları ve daha az bellek tüketimi ile genellikle iyi performans sunar.
ollama run codellama:7b-code-q4_0gibi belirli nicemleme seviyelerini çekerek deneyler yapın. - GPU Kullanımı: Eğer sisteminizde uyumlu bir GPU varsa (NVIDIA veya bazı AMD modelleri), Ollama otomatik olarak GPU hızlandırmasını kullanmaya çalışacaktır. Bu, CPU’ya kıyasla önemli bir performans artışı sağlar.
ollama pskomutu ile çalışan modellerin GPU kullanıp kullanmadığını kontrol edebilirsiniz. - Bellek Yönetimi: LLM’ler genellikle çok bellek tüketir. Linux’ta
cgrouplimit’leri veyasystemdunit’leri ile Ollama servisine atanacak bellek miktarını sınırlayabilirsiniz. Bu, diğer kritik servislerinizin OOM (Out Of Memory) killer tarafından sonlandırılmasını engeller. Örneğin, birsystemdoverride dosyası oluşturarak:
Ardından# /etc/systemd/system/ollama.service.d/limits.conf [Service] MemoryLimit=8Gsudo systemctl daemon-reload && sudo systemctl restart ollamaile servisi yeniden başlatın. Bu sayede Ollama’nın 8GB’dan fazla RAM kullanmasını engellemiş olursunuz. - Boşta Kalan Modelleri Kaldırma: Ollama, kullanılan modelleri bellekte tutar. Kullanmadığınız modelleri
ollama unload <model_adı>komutuyla bellekten boşaltarak kaynakları serbest bırakabilirsiniz.
Adım 5: Gelişmiş Kullanım Senaryoları ve İleri Adımlar
Ollama ile sadece kod tamamlama yapmakla kalmaz, daha gelişmiş senaryolar için de kullanabilirsiniz. Ben kendi projelerimde Ollama’yı farklı şekillerde entegre ediyorum.
-
Özel Modeller (Modelfile): Mevcut bir modelin davranışını değiştirmek veya kendi küçük verisetiniz üzerinde ince ayar yapmak isterseniz, Modelfile’lar oluşturabilirsiniz. Modelfile, bir Dockerfile’a benzer şekilde çalışır ve temel bir modelin üzerine ek talimatlar (sistem mesajları, sıcaklık ayarları, özel talimatlar) eklemenizi sağlar. Örneğin, bir Modelfile ile modelin sadece Python kodu üretmesini veya belirli bir kodlama stiline uymasını sağlayabilirsiniz.
FROM codellama:7b-code-q4_0 PARAMETER temperature 0.2 SYSTEM """You are a highly skilled Python developer. Only generate Python code, no explanations."""Bu Modelfile’ı
ollama create my-python-coder -f Modelfilekomutuyla oluşturupollama run my-python-coderile kullanabilirsiniz. -
RAG (Retrieval-Augmented Generation) Entegrasyonu: Büyük kod tabanlarında spesifik kod parçacıklarını aramak ve bu bağlamda AI’dan yardım almak için RAG mimarilerini kullanabilirsiniz. Kendi sistemime yaptığım bir entegrasyonda, kod tabanımı parçalara ayırıp bir vektör veritabanında saklıyorum. Kullanıcı bir soru sorduğunda, ilgili kod parçacıkları çekilip Ollama’daki LLM’e bağlam olarak veriliyor. Bu sayede model, sadece genel bilgiyle değil, projenin kendi kod yapısıyla ilgili yanıtlar üretebiliyor.
-
Çoklu Provider Fallback: Geliştirdiğim AI uygulamalarında, bazen yerel modelin yetersiz kaldığı veya daha güçlü bir modelin gerektiği durumlar oluyor. Bu durumlarda, Ollama’yı birincil provider olarak kullanıp, eğer yanıt kalitesi düşükse veya belirli bir token limiti aşılırsa, Groq veya OpenRouter gibi bulut tabanlı servislere fallback yapacak bir mimari kuruyorum. Bu, hem maliyeti optimize ediyor hem de esnekliği artırıyor.
Bu gibi gelişmiş kullanım senaryoları, yerel LLM’lerin sadece kod tamamlama ötesinde ne kadar güçlü olabileceğini gösteriyor. Kendi ihtiyaçlarınıza göre Ollama’yı şekillendirmek, geliştirme sürecinizi çok daha verimli hale getirebilir.
Sonuç
Yerel LLM’ler ile AI destekli kod tamamlama, gizlilik, hız ve maliyet avantajları sunarak geliştirme deneyimimizi dönüştürüyor. Ollama, bu gücü kendi makinelerimize getiren basit ama güçlü bir araç. Bu yazıda anlattığım 5 adımı takip ederek, siz de kısa sürede kendi yerel AI kod asistanınızı kurup çalıştırmaya başlayabilirsiniz.
Kendi projelerimde, özellikle hassas verilerle çalıştığım veya internet bağlantımın olmadığı durumlarda Ollama’nın sağladığı bu yerel yetenek paha biçilmez oldu. Bu kurulum, sadece bir başlangıç; Ollama’nın sunduğu esneklik sayesinde kendi Modelfile’larınızı oluşturarak veya RAG gibi daha gelişmiş sistemlerle entegre ederek çok daha fazlasını yapabilirsiniz. Bir sonraki adım, kendi özel kod asistanınızı inşa etmek olabilir.