Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
LLM için Prompt Yazmak (1): Açık Talimat, Ayraçlar ve Few-shot
Prompt bir spesifikasyondur: context, görev, girdi, biçim ve kısıt. Kötü ve iyi prompt'u aynı yorum üzerinde token sayılarıyla karşılaştırıyor, ayraçlarla talimatı veriden ayırıyor, few-shot örneklerin bir sınıflandırıcıyı nasıl düzelttiğini ve nasıl yanılttığını gemma3:4b'nin gerçek çıktılarıyla görüyoruz.
LLM Cevabında Streaming: NDJSON, IAsyncEnumerable ve İlk Token Süresi
Streaming cevabı hızlandırmaz, beklemeyi kısaltır. Ollama'nın NDJSON ve OpenAI uyumlu SSE stream'lerine curl ile bakıyor, C#'ta GetStreamingResponseAsync ve TypeScript'te async iterator ile cevabı okuyup ilk token süresini ölçüyor, stream'i iki SDK'da iptal edip davranış farkını görüyoruz.
LLM'lerde Sampling: Temperature, Top-p, Top-k ve Seed
Aynı soruya neden farklı cevaplar geliyor? logprobs ile modelin aday token'larına bakıp temperature, top-k ve top-p'nin bu dağılımı nasıl değiştirdiğini hesaplıyor, seed'in tekrarlanabilirlik sözünü ve sınırlarını, num_predict ve stop sequence'leri gemma3:4b üzerinde gerçek çıktılarla görüyoruz.
LLM Mesaj Rolleri ve System Prompt: Bookstore Asistanına Kimlik Vermek
system, user ve assistant rolleri ne işe yarar ve Gemma 3'ün chat template'i onları modele nasıl taşır? Bookstore asistanına bir system prompt yazıyor, iyi bir system prompt'un parçalarını görüyor, istemcide uydurulan bir assistant mesajının modeli nasıl kandırdığını ve kullanıcı metnini talimattan ayırmanın prompt injection'a karşı ilk adım olarak ne kadar işe yaradığını gerçek çıktılarla deniyoruz.
LLM Context Window: Model Neyi Hatırlar, Neyi Sessizce Keser?
LLM API'leri stateless'tır; sohbet geçmişini her istekte sen gönderirsin ve her tur faturayı büyütür. Gemma 3 128K token desteklese de Ollama varsayılan olarak 4096'lık bir pencere ayırıyor ve 4498 token'lık bir prompt'u hiçbir hata vermeden 2051 token'a indiriyor. num_ctx'i C# ve TypeScript'te ayarlıyor, geçmişi kırpma ve özetlemeyle yönetmeyi gerçek çıktılarla deniyoruz.
LLM'lerde Token ve Tokenizer: Türkçe Neden Daha Çok Token Tutar?
Token nedir, BPE ve SentencePiece metni nasıl böler? Ollama'nın prompt_eval_count sayacıyla aynı cümlenin Türkçesini ve İngilizcesini gemma3:4b ve qwen3:4b tokenizer'larında ölçüyor; sayıların, GUID'lerin, JSON'un ve kodun kaç token tuttuğunu, chat template'in görünmeyen token'larını ve token'ın maliyet, limit ve hıza etkisini gerçek sayılarla görüyoruz.
LLM'e İlk İstek: Ollama, C# ve TypeScript ile İlk Cevap
Ollama'yı tanıyor, ollama list ve ollama ps ile modellere bakıyor, /api/chat endpoint'ine curl ile ilk isteği atıyoruz. Aynı isteği C#'ta Microsoft.Extensions.AI ve OllamaSharp ile, TypeScript'te ollama paketiyle tekrarlıyor; cevabın içindeki token sayılarını, nanosaniye cinsinden süreleri ve ilk isteğin neden yavaş olduğunu gerçek çıktılarla okuyoruz.
LLM Nedir? Geliştirici Gözüyle Büyük Dil Modelleri
Büyük dil modeli bir sonraki token'ı tahmin eden bir fonksiyondur. Bu döngüyü yerel gemma3:4b ile token token kuruyor; eğitim ile inference, base ile instruct model, open-weight ile kapalı model ve yerel ile bulut arasındaki farkları görüyor, modelin tarih, hesap ve sipariş sorularında nerede yanıldığını gerçek çıktılarla inceliyoruz.
OWASP'ın Diğer Listeleri: API Security, LLM Top 10, ASVS ve Cheat Sheet Series
Top 10'un dışına çıkıyoruz: API Security Top 10 (2023) ile BOLA, BOPLA ve BFLA ayrımı, response DTO'suyla property seviyesinde veri ifşasını önlemek, Top 10 for LLM Applications (2025), ASVS 5.0 ve Cheat Sheet Series. Serinin yeni Top 10 sürümleriyle nasıl süreceğini ve sıradaki güvenlik serilerini konuşuyoruz.
OWASP Top 10: 2021'den 2025'e Ne Değişti ve Eski Dokümanları Güncellemek
SSRF'in A01'e katılması, component sorununun Software Supply Chain Failures'a büyümesi, Security Misconfiguration'ın ikinciliğe çıkışı, yeni A10 Mishandling of Exceptional Conditions ve üç isim değişikliği. 2025 metodolojisini rakamlarıyla okuyor, eski ve yılsız kategori numaralarını bulup 2025 karşılığını öneren küçük bir .NET aracı yazıyoruz.
OWASP Top 10: 2017'den 2021'e, Semptomdan Kök Nedene
2017 listesinin 2021'de nasıl yeniden kurulduğunu inceliyoruz: Sensitive Data Exposure'dan Cryptographic Failures'a, Broken Access Control'ün bir numaraya çıkışı, XSS'in Injection'a katılması, Insecure Design ve SSRF'in gelişi. Küçük bir .NET örneğiyle SQL parametresi ile HTML encoding'in aynı kök nedene verilen cevap olduğunu gösteriyor, 2021 metodolojisini rakamlarıyla anlatıyoruz.
OWASP Top 10:2017: XXE, Insecure Deserialization ve Bugüne Kalan Dersler
OWASP Top 10:2017 listesini, yazıldığı dönemin web'ini ve 2013'ten 2017'ye değişenleri inceliyoruz. XXE'nin .NET 10'da varsayılan olarak nasıl reddedildiğini gerçek bir istekle, BinaryFormatter'ın neden artık derlenmediğini ve çalışmadığını kodla görüyor, XSS'in ayrı kategori olduğu yılları bugünkü listeyle karşılaştırıyoruz.