Gerçekten çalışan yapay zeka uygulamaları geliştirmek, mükemmel istemi (prompt) hazırlamaktan ziyade, modele beslediğiniz bilgiyi kontrol etmekle ilgilidir. Bir asistanla uzun bir sohbetin ortasında, on dakika önce söylediğiniz bir şeyi unuttuğunu fark ettiyseniz, bağlam mühendisliğinin (context engineering) başarısız olduğunda neler yaşandığını zaten hissetmişsinizdir. Yapay zekanın hafızasının kötü olduğunu varsaymak kolaydır. Gerçekte ise bağlam penceresinin (context window) katı sınırlarına çarpmışsınızdır.
Güvenilir ve duyarlı sistemler inşa etmek için üç temel unsuru anlamanız gerekir: token'lar, bağlam pencereleri ve bağlam ile hafıza arasındaki fark.
Token'lar Gerçek Para Birimidir
Token bir kelime değildir. Bir modele metin gönderdiğinizde, bir tokenizer metni daha küçük parçalara ayırır. "cat" veya "the" gibi kısa ve yaygın kelimelerin her biri tek bir token oluşturabilir. "internationalization" gibi yoğun bir teknik terim ise birkaç parçaya bölünür. Noktalama işaretleri, boşluklar ve özel karakterler de sayılır. Bu önemlidir çünkü token'lar her şeyi yönetir: API faturanız, yanıt hızı ve çıktı kalitesi.
Maliyetleri kelimeleri sayarak planlayan bir geliştirici karanlıkta uçuyordur. Kod parantezleri ve uzun değişken isimleriyle dolu yüz kelimelik bir istem, beklentilerin çok üzerine çıkabilir. Bu yüzden tokenizer'lar bağımsız araçlar olarak mevcuttur. Bir özelliği yayına almadan önce, tipik veri yüklerinizi (payload) bir tokenizer'dan geçirin. Sistem talimatlarının, biçimlendirme şablonlarının (boilerplate) ve sohbet geçmişinin, asıl kullanıcı sorgusundan daha fazla bütçe tükettiğini sık sık göreceksiniz. Token'ları ilk günden itibaren kıt bir kaynak olarak değerlendirin.
Bağlam Penceresi Sabit Bir Beyaz Tahtadır
Bağlam penceresi, bir modelin tek bir istekte görebileceği toplam bilgi miktarıdır. Bunu sabit boyutları olan bir beyaz tahta gibi düşünün. Tahtayı sistem kuralları, konuşma geçmişi, getirilen belgeler ve mevcut soruyla doldurabilirsiniz. Ancak yüzey kaplandığında, bir şeylerin feda edilmesi gerekir. Eski notlar silinmeli, fotoğraflanıp özetlenmeli ya da tahta basitçe taşmalıdır.
Modern modeller, birkaç bin token'dan yüz binlerce token'a kadar değişen bağlam pencereleri sunar. Daha büyük bir pencereyi sınırsız bir depolama alanı olarak görmek cazip gelebilir. Ancak öyle değildir. Beyaz tahtanın hâlâ kenarları vardır. Geçmiş sınırı aştığında, uygulama eski mesajları atmalı veya onları sıkıştırmalıdır. Bu kısıtlamayı anlamak, pencereye bir veritabanı gibi davranmayı bırakıp onu aktif bir çalışma alanı olarak görmenize yardımcı olur.
Bağlam Hafıza Değildir
İşte bu, deneyimli geliştiricileri bile yanıltan bir ayrımdır. Modelin kendisi durumsuzdur (stateless). Sizi dünden, geçen haftadan veya farklı bir oturumdaki on dakika öncesinden hatırlamaz. Bir yapay zeka, JavaScript yerine Python'ı tercih ettiğinizi veya kısa cevapları sevdiğinizi hatırlıyor gibi göründüğünde, bu hafıza modelde değil, uygulama katmanında yaşar.
Uygulama bu gerçekleri bir veritabanında, önbellekte (cache) veya bellek deposunda saklar. Her yeni istekte, ilgili profil verilerini isteme (prompt) geri enjekte eder. Model, sadece birinci perdedeki repliklerini içeren bir senaryoyu okumaktadır. Kalıcı bir benliği yoktur. Bu ayrımı içselleştirdiğinizde mimariniz değişir. Modelden hatırlamasını istemeyi bırakır ve doğru zamanda doğru bağlamı getiren sistemler tasarlamaya başlarsınız.
Neden Daha Fazla Bağlam Ters Tepebilir
Sağduyu, daha fazla arka plan bilgisinin daha iyi cevaplar üreteceğini söyler. Genellikle bunun tersi olur. Aşırı bağlam gürültü yaratır. Sadece bir fonksiyonun düzeltilmesine ihtiyacınız varken modele tüm kod tabanını verirseniz, onu statik gürültü içinde bir sinyal aramaya zorlarsınız. Araştırmacılar "Ortada Kaybolma" (Lost in the Middle) etkisini tanımlamışlardır: Modeller genellikle bir istemin başındaki ve sonundaki ayrıntılara daha fazla dikkat ederken, merkeze gömülmüş bilgiler seyreltilir veya görmezden gelinir. Bu, zekice kelimelerle yamayabileceğiniz bir hata değildir. Transformer tabanlı mimarilerde mevcut olan yapısal bir davranıştır.
Şişkin istemler sizi can alıcı noktanızdan da vurur. Her ek token hesaplama gerektirir. Gecikme (latency) artar. Maliyetler yükselir. Kullanıcı sabrı azalır. İlgisiz belgelerle doldurulmuş bir istem çelişkiler yaratır, modeli yan detaylarla dikkatinden uzaklaştırır ve yanıtın yanlış probleme odaklanma olasılığını artırır. Hacim, hassasiyetin düşmanıdır.
Nasıl Daha İyi Bağlam Mühendisliği Yapılır
İyi bağlam mühendisliği, acımasız bir düzenleme egzersizidir. İşte bunu pratiğe dökmenin yolları.
Yalnızca görevin gerektirdiği şeyi gönderin. Eğer bir kullanıcı iade politikanızı sorarsa; çalışan el kitabını, API dokümantasyonunu ve geçen çeyreğin pazarlama metinlerini dahil etmeyin. Alaka düzeyi, kapsamlı olmaktan daha önemlidir.
İlgili belgeleri getirmek için RAG kullanın. Retrieval-Augmented Generation (RAG), geniş bir bilgi tabanında arama yapmanıza ve yalnızca en iyi eşleşen pasajları isteme (prompt) dahil etmenize olanak tanır. Bin sayfalık bir kılavuzu pencereye boşaltmak yerine, belgelerinizi gömer (embed), kullanıcının sorgusuna karşı anlamsal bir arama (semantic search) yapar ve en alakalı üç paragrafı eklersiniz. Model tam olarak ihtiyacı olanı alır ve token bütçeniz korunmuş olur.
Eski konuşmaları özetleyin. Tam sohbet dökümleri maliyetli ve gürültülüdür. Uzun mesaj geçmişlerinin yerine sürekli güncellenen özetler kullanın. Örneğin, modele otuz tane karşılıklı mesaj beslemek yerine, tek bir paragraf saklayın: "Kullanıcı Django dağıtımı hakkında soru sordu, statik dosya hatasıyla karşılaştı ve izinleri düzeltti. Mevcut sorun, Postgres 14 üzerinde başarısız olan bir veritabanı migrasyonudur." Bu özet, yazı tahtasını karalamalarla doldurmadan durumu korur.
Uzun süreli belleği aktif sohbetten ayırın. Kullanıcı tercihleri, proje ayarları ve hesap geçmişi harici bir bellek deposuna aittir. Bu depoyu seçici bir şekilde sorgulayın. Canlı bağlam penceresi (context window), yalnızca mevcut görevi ve sürekliliği sağlamak için gereken en kısa kişisel bağlamı taşımalıdır.
Üretim ortamında token kullanımını izleyin. Gecikme artışları (latency spikes) genellikle doğrudan bağlam şişkinliğinden (context bloat) kaynaklanır. İstekler modelinizin sınırına yaklaştığında uyarılar ayarlayın. Gereksiz yük taşıyan istemleri (prompts) belirlemek için günlükleri (logs) inceleyin. Optimizasyon her seferinde aynı soruyla başlar: Görevi bozmadan neleri çıkarabiliriz?
Asıl Çıkarım
En iyi yapay zeka uygulamaları, en büyük bağlam pencerelerine sahip oldukları için kazanmazlar. Bağlamı disiplinli bir şekilde yönettikleri için kazanırlar. Devasa bir yazı tahtası, eğer karalamalarla doluysa işe yaramaz. Getiren, özetleyen ve filtreleyen sistemler kurun. Kullanıcılarınız daha hızlı yanıtlar alır, altyapı maliyetleriniz öngörülebilir kalır ve modelleriniz nihayet gerçekten önemli olan şeye odaklanır.
Kaynak: AI Context Engineering: Tokens, Context Windows, & Memory
Topluluk: Telegram'da GyaanSetu AI
