Yerel LLM ile Kodlama Asistanı Kurma: Ollama ve VS Code
Geliştirme ortamını tamamen kendi kontrolünde tutmak istiyorsan, kodunu buluta göndermeden bir yapay zeka asistanıyla çalışmak hem güvenlik hem de mahremiyet açısından en akıllıca tercih. Ollama ve VS Code’un birleşimi tam olarak bunu mümkün kılıyor: internet bağlantısı olmadan, API ücreti ödemeden, kendi donanımında çalışan bir kodlama asistanı.
Neden Yerel LLM Tercih Etmeli?
Şirket içi kod tabanları, müşteri verileri içeren projeler veya NDA kapsamındaki işler söz konusu olduğunda kodu bir bulut servisine göndermek ciddi riskler doğuruyor. GitHub Copilot ya da ChatGPT gibi araçlar güçlü olsa da her satır kodun dışarıya çıkmasına izin veriyorsun demektir.
Bunun yanında pratik faydalar da var:
- Offline çalışma: İnternet bağlantısı olmayan ortamlarda, VPN sorunlarında veya kısıtlı ağlarda bile asistanın çalışmaya devam ediyor
- Gecikme kontrolü: Lokalda çalışan bir model, sunucu kalabalığına göre değişen bulut gecikmelerinden etkilenmiyor
- Model seçimi: Göreve özel modeller arasında serbestçe geçiş yapabiliyorsun, bir servis sağlayıcısının sunduklarıyla sınırlı kalmıyorsun
- Maliyet: Bir kere donanım yatırımı yapıyorsun, aylık abonelik yok
Sistem Gereksinimleri
Kuruluma geçmeden önce donanım durumunu değerlendirmek gerekiyor. Modelin ne kadar iyi çalışacağı büyük ölçüde RAM ve GPU’na bağlı.
CPU ile çalışma:
- 7B parametreli modeller için minimum 8 GB RAM (16 GB önerilir)
- 13B parametreli modeller için minimum 16 GB RAM (32 GB önerilir)
- Yanıt süreleri GPU’ya kıyasla 3-10 kat daha yavaş olacak
NVIDIA GPU ile çalışma:
- 7B modeller için 6-8 GB VRAM yeterli
- 13B modeller için 10-12 GB VRAM gerekiyor
- RTX 3060 12GB veya daha üstü oldukça iyi sonuçlar veriyor
Apple Silicon:
- M1/M2/M3 işlemcili Mac’ler birleşik bellek mimarisi sayesinde CPU tabanlı x86 sistemlere göre çok daha iyi performans gösteriyor
- 16 GB unified memory ile 13B modeller rahat çalışıyor
Ollama Kurulumu
Ollama, yerel LLM’leri yönetmeyi son derece kolaylaştıran bir araç. Docker mantığına benzer şekilde çalışıyor: modelleri pull ediyorsun, çalıştırıyorsun, gerektiğinde kaldırıyorsun.
Linux’ta kurulum:
curl -fsSL https://ollama.com/install.sh | sh
Bu komut Ollama’yı sisteme kuruyor ve bir systemd servisi olarak yapılandırıyor. Kurulum tamamlandıktan sonra servisin çalıştığını kontrol et:
systemctl status ollama
macOS’ta kurulum:
macOS için doğrudan [ollama.com](https://ollama.com) adresinden DMG dosyasını indirip kurabilirsin. Homebrew kullanıyorsan:
brew install ollama
Ardından servisi başlat:
ollama serve
Windows’ta kurulum:
Windows için de resmi siteden EXE installer mevcut. WSL2 üzerinden de çalıştırabilirsin ancak GPU geçişi için ekstra yapılandırma gerekiyor. Native Windows installer daha az sorun çıkarıyor.
Kodlama İçin Model Seçimi
Ollama’yı kurduktan sonra model seçimi en kritik adım. Kodlama için özel olarak eğitilmiş modeller kullanmak genel amaçlı modellere kıyasla çok daha iyi sonuç veriyor.
Kodlama için öne çıkan modeller:
- codellama:7b: Meta’nın kod odaklı modeli, hafif ve hızlı
- codellama:13b: Daha büyük versiyon, karmaşık görevlerde daha başarılı
- deepseek-coder:6.7b: DeepSeek’in kodlama modeli, benchmark’larda oldukça güçlü
- deepseek-coder:33b: Güçlü donanım varsa tercih edilebilir, çok yetenekli
- qwen2.5-coder:7b: Alibaba’nın yeni nesil kodlama modeli, son dönemde çok popüler
- starcoder2:7b: Çok dilli kod desteği güçlü
- mistral:7b: Genel amaçlı ama kodlamada da iyi sonuçlar veriyor
İlk denemeler için qwen2.5-coder:7b’yi öneririm. Boyutu ve performansı arasındaki denge çok iyi:
ollama pull qwen2.5-coder:7b
İndirme tamamlandıktan sonra terminal üzerinden test edebilirsin:
ollama run qwen2.5-coder:7b
Bu komut interaktif bir REPL açıyor. Direkt soru sorabilirsin:
>>> Python'da bir FastAPI endpoint'i nasıl yazarım?
Çıkmak için /bye yazman yeterli.
Ollama API’sini Anlamak
Ollama, 11434 portunda bir REST API sunuyor. Bu API, VS Code eklentilerinin ve diğer araçların modelle iletişim kurmasını sağlıyor. API’nin nasıl çalıştığını anlamak, sorun giderme sırasında çok işine yarayacak.
Basit bir test isteği:
curl http://localhost:11434/api/generate
-d '{
"model": "qwen2.5-coder:7b",
"prompt": "Write a Python function to reverse a string",
"stream": false
}'
Chat formatında istek:
curl http://localhost:11434/api/chat
-d '{
"model": "qwen2.5-coder:7b",
"messages": [
{
"role": "user",
"content": "Explain what a decorator is in Python with an example"
}
],
"stream": false
}'
Mevcut modelleri listelemek için:
curl http://localhost:11434/api/tags
Bu endpoint’i anladıktan sonra VS Code entegrasyonu çok daha mantıklı gelecek.
VS Code Entegrasyonu: Continue Eklentisi
VS Code için en olgun ve kapsamlı Ollama entegrasyonu Continue eklentisi üzerinden sağlanıyor. GitHub Copilot’a benzer bir deneyim sunuyor ancak tamamen lokal çalışıyor.
Continue’yu VS Code Marketplace’den kur ya da komut satırından:
code --install-extension Continue.continue
Kurulum tamamlandıktan sonra VS Code’un sol panelinde Continue simgesi beliriyor. İlk açılışta seni bir yapılandırma sihirbazı karşılıyor. Buradan “Use a local model” seçeneğini seç ve Ollama’yı seç.
Continue Yapılandırması
Continue’nun ana yapılandırma dosyası ~/.continue/config.json konumunda bulunuyor. Varsayılan yapılandırmayı özelleştirmek için bu dosyayı düzenliyorsun:
cat ~/.continue/config.json
Temel bir Ollama yapılandırması şöyle görünüyor:
{
"models": [
{
"title": "Qwen2.5 Coder",
"provider": "ollama",
"model": "qwen2.5-coder:7b",
"apiBase": "http://localhost:11434"
},
{
"title": "CodeLlama 13B",
"provider": "ollama",
"model": "codellama:13b",
"apiBase": "http://localhost:11434"
}
],
"tabAutocompleteModel": {
"title": "Autocomplete",
"provider": "ollama",
"model": "qwen2.5-coder:7b",
"apiBase": "http://localhost:11434"
},
"contextProviders": [
{
"name": "code",
"params": {}
},
{
"name": "docs",
"params": {}
},
{
"name": "diff",
"params": {}
},
{
"name": "terminal",
"params": {}
},
{
"name": "problems",
"params": {}
},
{
"name": "folder",
"params": {}
},
{
"name": "codebase",
"params": {}
}
],
"slashCommands": [
{
"name": "edit",
"description": "Edit highlighted code"
},
{
"name": "comment",
"description": "Write comments for the highlighted code"
},
{
"name": "share",
"description": "Export the current chat session to markdown"
},
{
"name": "cmd",
"description": "Generate a shell command"
}
]
}
Bu yapılandırmayla hem chat hem de otomatik tamamlama için aynı modeli kullanıyorsun. Farklı görevler için farklı modeller atamak mümkün, bu konuya birazdan değineceğiz.
Continue’nun Temel Özellikleri
Chat ile Kod Yardımı
Sol paneldeki Continue simgesine tıkladığında bir chat arayüzü açılıyor. Buradan mevcut dosyan hakkında sorular sorabilirsin. @file sözdizimi ile belirli bir dosyayı bağlama ekleyebilirsin:
@file UserController.java Bu controller'daki güvenlik açıklarını incele
Inline Düzenleme
Kodu seçip Ctrl+I (Windows/Linux) veya Cmd+I (Mac) tuş kombinasyonuyla inline düzenleme modunu açabilirsin. Modele ne yapmasını istediğini yazıyorsun ve direkt kod üzerinde değişiklik öneriyor:
Bu fonksiyonun hata yönetimini iyileştir ve tip ipuçları ekle
Otomatik Tamamlama
tabAutocompleteModel yapılandırmasını ayarladıktan sonra kod yazarken Tab tuşuna basarak önerileri kabul edebilirsin. Bu özellik için daha küçük ve hızlı bir model seçmek mantıklı, aksi takdirde gecikme yazma akışını bozuyor.
Performans Optimizasyonu
GPU Katmanı Ayarı
Ollama varsayılan olarak GPU kullanımını otomatik olarak optimize etmeye çalışıyor. Ancak num_gpu parametresiyle kaç katmanın GPU’da çalışacağını kontrol edebilirsin. Bu değeri ~/.ollama/models dizinindeki model yapılandırmasında ya da API isteğinde belirtebilirsin.
Modelfile oluşturarak kendi özelleştirilmiş model yapılandırmanı kayıt altına alabilirsin:
cat << 'EOF' > ~/Modelfile
FROM qwen2.5-coder:7b
PARAMETER num_ctx 8192
PARAMETER num_gpu 35
PARAMETER temperature 0.1
PARAMETER top_p 0.9
SYSTEM """
Sen deneyimli bir yazılım geliştiricisin. Kod örneklerinde her zaman hata yönetimi ekle, tip ipuçları kullan ve kısa açıklayıcı yorumlar yaz. Türkçe açıklama istenmediği sürece kodlama dilini kullan.
"""
EOF
ollama create mydev-assistant -f ~/Modelfile
Artık bu özelleştirilmiş modeli kullanabilirsin:
ollama run mydev-assistant
Context Uzunluğu
num_ctx parametresi modelin aynı anda işleyebildiği token sayısını belirliyor. Büyük dosyalarla çalışıyorsan bu değeri artırmak gerekiyor ancak RAM tüketimi de artıyor.
Pratik değerler:
- 2048: Hızlı yanıtlar, küçük kod parçaları için
- 4096: Çoğu günlük kullanım senaryosu için yeterli
- 8192: Büyük dosyalar ve uzun konuşmalar için
- 16384: Çok büyük kod tabanı bağlamı için, güçlü donanım gerektirir
Eşzamanlı İstek Yönetimi
Birden fazla VS Code penceresi ya da terminal oturumu açıkken Ollama’nın nasıl davranacağını OLLAMA_NUM_PARALLEL ortam değişkeniyle ayarlayabilirsin:
# systemd service override ile kalıcı yapılandırma
sudo systemctl edit ollama
# Açılan dosyaya ekle:
[Service]
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Değişiklikleri uygulamak için:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Gerçek Dünya Senaryosu: Eski Kod Tabanı Modernizasyonu
Diyelim ki 5 yıllık bir PHP projesini modernize etmen gerekiyor. Projedeki eski fonksiyonları, SQL injection açıklarını ve deprecated API kullanımlarını tespit etmek için Continue’yu nasıl kullanırsın?
Önce projeyi VS Code’da aç. Continue chat panelinde @folder ile proje dizinini bağlama ekle:
@folder /var/www/eski-proje
Bu PHP projesinde güvenlik açısından riskli kalıpları bul.
Özellikle:
1. Doğrudan SQL sorgu birleştirmeleri
2. Sanitize edilmemiş kullanıcı girdileri
3. Eski mysql_* fonksiyonları
4. eval() kullanımları
Her bulgu için dosya adı, satır aralığı ve önerilen düzeltme yaz.
Model büyük olasılıkla sana öncelikli riskleri bir liste halinde sunacak. Ardından belirli bir dosyayı seçip inline düzenleme modunu kullanarak dönüşümü dosya dosya yapabilirsin.
Bu senaryoda tüm kod şirket sunucularında kalıyor. Müşteri verilerini içeren veritabanı sorguları, iş mantığı, API anahtarları hiçbiri dışarı çıkmıyor.
Birden Fazla Model ile Çalışmak
Farklı görevler için farklı modeller optimize edilmiş. Continue yapılandırmanı göreve özel model stratejisiyle güncellemek uzun vadede çok işe yarıyor:
# Frontend işler için hafif model
ollama pull qwen2.5-coder:7b
# Karmaşık mimari kararlar için güçlü model
ollama pull deepseek-coder:33b
# Hızlı otomatik tamamlama için en küçük model
ollama pull deepseek-coder:1.3b
Continue config.json’ında bu modelleri tanımladıktan sonra chat panelinde model seçiciden geçiş yapabilirsin. Küçük bir UI düzenlemesi gibi görünse de doğru model seçimi yanıt kalitesini ciddi ölçüde etkiliyor.
Sorun Giderme
Ollama servisi başlamıyor:
# Log'ları kontrol et
journalctl -u ollama -f
# Manuel başlat ve çıktıyı gör
ollama serve
VS Code’da Continue bağlanamıyor:
# API'nin çalıştığını doğrula
curl http://localhost:11434/api/tags
# Güvenlik duvarı kurallarını kontrol et
sudo ufw status
GPU kullanılmıyor:
# Nvidia driver ve CUDA kontrolü
nvidia-smi
# Ollama GPU tanıyıp tanımadığını gör
ollama run qwen2.5-coder:7b
# /show info komutunu gir, GPU bilgisi gösterilmeli
Model çok yavaş yanıt veriyor:
Önce bağlam uzunluğunu düşür. Ardından daha küçük bir model dene. CPU üzerinde 7B model makul sürelerde yanıt veriyorsa 13B’ye geçmek yerine quantization seviyesini değiştirebilirsin:
# Q4 quantization: daha hızlı, biraz daha az doğru
ollama pull qwen2.5-coder:7b-q4_0
# Q8 quantization: daha yavaş, daha doğru
ollama pull qwen2.5-coder:7b-q8_0
Ağ Üzerinden Erişim
Güçlü bir iş istasyonuna Ollama kurduysun ve aynı ağdaki dizüstü bilgisayarından da erişmek istiyorsun. Bunun için Ollama’nın hangi adreste dinlediğini değiştirmen gerekiyor:
sudo systemctl edit ollama
# Override dosyasına ekle:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload
sudo systemctl restart ollama
Artık ağdaki diğer makinelerden http://SUNUCU_IP:11434 adresine erişebilirsin. Continue yapılandırmasında apiBase değerini bu adrese güncelliyorsun. Unutma, bu yapılandırma güvenlik duvarı kuralı gerektiriyor ve yalnızca güvenilir ağlarda kullanılmalı.
Sonuç
Ollama ve Continue kombinasyonu, bulut tabanlı kodlama asistanlarına bağımlılığı ortadan kaldıran olgun ve kullanılabilir bir çözüm sunuyor. Kurulum bir defaya mahsus birkaç saatlik bir yatırım, sonrasında günlük iş akışının doğal bir parçası haline geliyor.
Başlangıç için önerim şu yolu izlemek: qwen2.5-coder:7b ile başla, Continue’yu kur ve bir hafta boyunca mevcut projelerinde kullan. Sonuçlardan memnunsanız daha büyük modelleri ve özelleştirilmiş Modelfile yapılandırmalarını araştır. Donanım yeterliyse deepseek-coder:33b gibi büyük modeller gerçekten etkileyici sonuçlar üretiyor.
Kod kalitesi, güvenlik ve verilerinin nerede gittiği konusunda kontrolü geri almak isteyenler için bu kurulum bir standart haline gelmeli. Artık her satır kodunu bir bulut şirketinin sunucularına göndermek zorunda değilsin.
