【Çeviri】Bağlam Mühendisliği: Pencerenizi Çok Doldurmayın! Yazma, Seçme, Sıkıştırma ve İzolasyonda Dikkatli Olun, Gürültüyü Dışarıda Tutun—Yavaş Yavaş AI170 Öğrenin
Ön Notlar
- AI akıllı ajanlarının sınırları, sadece model boyutuna değil, aynı zamanda “bağlam yönetimi” becerisine de bağlıdır. Bu, CPU için bellek yapılandırmak gibidir; ajanın düşünme derinliğini ve verimliliğini belirler.
- Bağlam penceresi bir çöp kutusu değildir: Bilgi aşırı yüklenmesi, AI’nın yargısını “zehirler”, karıştırır ve kafa karışıklığı yaratır. Kesinlik, çokluktan çok daha önemlidir.
- Usta kişiler, akıllı ajanın bağlamını “yazma, seçme, sıkıştırma ve izole etme” dört adımı ile yönetir, sınırlı “belleği” etkili bir şekilde kullanarak maliyetleri düşürür ve verimliliği artırır.
- Gelecekteki rekabet, sistem verimliliği üzerinedir. Çoklu akıllı ajan yapısını kullanarak görevleri “izole” etmek ve her ajanın kendi küçük penceresinde mükemmel bir şekilde çalışmasını sağlamak, karmaşık görev sistemleri oluşturmanın anahtarıdır.
Temel Özeti
Ajanlar, görevleri yerine getirmek için bağlama ihtiyaç duyarlar. “Bağlam mühendisliği” kavramı, akıllı ajanın görevleri yerine getirirken bağlam penceresine doğru bilgiyi ekleme sanatı ve bilimidir. Bu makalede, mevcut popüler ajanların benimsediği bağlam mühendisliği stratejileri ana hatlarıyla birkaç genel modele indirgenmiştir.
Bağlam Mühendisliği (Context Engineering)
Andrej Karpathy’nin de söylediği gibi, büyük dil modelleri (LLM) aslında bir “yeni nesil işletim sistemi” gibidir. LLM, CPU gibi çalışır ve onun “bağlam penceresi” RAM işlevi görerek modelin iş belleği olur. Tıpkı RAM’in kapasitesi sınırlı olduğu gibi, LLM’nin bağlam penceresi de çeşitli bağlam kaynakları ile çalışırken kapasite sınırlamalarıyla karşılaşır. İşletim sisteminin en önemli görevlerinden biri CPU’nun RAM’ini verimli kullanmayı yönetmektir; “bağlam mühendisliği” de benzer bir rol üstlenir. Karpathy bu durumu çok iyi özetlemiştir:
Bağlam mühendisliği, “… bir sonraki adım için bağlam penceresini hassas bir şekilde doldurmanın ince sanatı ve bilimidir.”
LLM uygulamaları geliştirirken, hangi bağlam türlerini yönetmemiz gerektiğini biliyor muyuz? Bağlam mühendisliği, aşağıdaki farklı bağlam türlerini kapsamaktadır:
- • Talimatlar (Instructions) – İpuçları, bellekteki notlar, az sayıda örnek, araç tanımlamaları vb.
- • Bilgi (Knowledge) – Gerçekler, anılar vb.
- • Araçlar (Tools) – Araç çağırma geri bildirim bilgisi
Ajanlara Yönelik Bağlam Mühendisliği
Bu yıl, LLM’nin akıl yürütme ve araç çağırma konusundaki yeteneklerinin artmasıyla, insanlarda akıllı ajanlara olan ilgi giderek arttı. Ajanlar, görevleri yerine getirmek için LLM ve araçları dönüşümlü olarak kullanarak, özellikle uzun süre devam eden karmaşık görevleri işleme konusunda uzmandır.
Ancak, uzun süreli görevler ve sürekli biriken araç çağırma geri bildirimleri, ajanların genellikle büyük miktarda token tüketmesi anlamına gelir. Bu, çeşitli sorunlara yol açabilir: bağlam penceresinin kapasite sınırlarının aşılması, maliyetlerin ve gecikmelerin artması hatta ajan performansının düşmesi. Drew Breunig, çok uzun bir bağlamın şu şekillerde performans sorunlarına yol açabileceğini açıkça ifade etmiştir:
- • Bağlam zehirlenmesi (Context Poisoning): Yanlış bilgilerin bağlama girmesi durumunda.
- • Bağlam dikkat dağılması (Context Distraction): Bağlam bilgisi aşırı olduğunda, modelin orijinal eğitim bilgilere gömülmesi durumunda.
- • Bağlam kafa karışıklığı (Context Confusion): İlgisiz bağlam bilgileri modelin yanıtlarını etkilediğinde.
- • Bağlam çelişkisi (Context Clash): Bağlamdaki farklı parçaların birbiri ile çelişmesi durumunda.
Bu problemleri göz önünde bulundurarak, Cognition AI şirketi bağlam mühendisliğinin önemini vurgulamıştır:
“Bağlam mühendisliği”… aslında AI akıllı ajanların inşasında mühendislerin öncelikli görevidir.
Anthropic şirketi ise şunları belirtmiştir:
Ajanlar genellikle yüzlerce diyalog turu gerçekleştirmektedirler; bu da dikkatli bir bağlam yönetimi stratejisi benimsememizi gerektirir.
Peki günümüz geliştiricileri bu zorluklarla nasıl başa çıkıyorlar? Mevcut yöntemleri dört ana kategoriye - yazma (Write), seçme (Select), sıkıştırma (Compress) ve izole etme (Isolate) - ayırdım ve her birine örnekler verdim.
Bağlam Yazma (Write Context)
Bağlam yazma, bilgilerin bağlam penceresinin dışında biriktirilmesini ve akıllı ajanın görevlerini yerine getirirken kullanılması için depolanmasını ifade eder.
Geçici Alanlar (Scratchpads)
İnsanlar bir sorunu çözmek için not alır ve gelecekte ilgili görevleri işlerken kullanmak amacıyla bazı bilgileri hatırlayarak işler. Akıllı ajanlar da bu yetenekleri kazanmaya başlıyor! “Geçici alanlar” kullanarak not almak, ajanın görevleri yerlerine getirirken bilgileri kalıcı hale getirmenin bir yoludur. Temel fikir, bilgileri bağlam penceresinin dışında saklamak fakat gerektiğinde akıllı ajanın erişebilmesini sağlamaktır. Anthropic’in çoklu ajan araştırma sistemi bu konuda net bir örnek sunmaktadır:
“Baş araştırmacı”, bir sorunun çözümü için düşünür ve bağlamı kalıcı hale getirmek için planını “belleğe” kaydeder; zira bağlam penceresi 200.000 token’i geçtiğinde kesilebilir ve bu yüzden planı korumak kritik öneme sahiptir.
Geçici alanların uygulanma yöntemleri çeşitlidir. Bu basit bir dosya yazma işlemi gibi bir araç çağırma olabilir; aynı zaman da yürütme zamanında sabit kalacak bir durum nesnesinin bir parçası olabilir. Her iki durumda da, geçici alanlar akıllı ajanın görevleri daha iyi yerine getirmesi için faydalı bilgileri saklayabilmesini sağlar.
Anılar (Memories)
Geçici alanlar, akıllı ajanın tek bir oturumda görevleri çözmesine yardımcı olur, ancak bazı durumlarda ajanın birçok oturum boyunca bilgileri hatırlaması gerekebilir. Reflexion modeli, her turdan sonra ajanın düşünme yeteneğini artırarak, kendiliğinden ürettiği anıları yeniden kullanma fikrini tanıtmaktadır. Generative Agents modeli ise önceki ajanın geri bildirim koleksiyonundan dönemsel olarak anılar sentezleyebilmektedir.
Bu kavramlar, ChatGPT, Cursor ve Windsurf gibi popüler ürünlerde kullanılmaktadır. Kullanıcı ve akıllı ajan etkileşimine dayalı olarak, otomatik olarak uzun vadeli anılar üretebilme yeteneğine sahiptirler.
Bağlamı Seçme (Select Context)
Bağlamı seçme, akıllı ajanın görevlerini yerine getirmesine yardımcı olmak amacıyla gerekli bilgileri bağlam penceresine çekmeyi ifade eder.
Geçici Alanlar (Scratchpad)
Geçici alandan bağlam seçme mekanizması, uygulama biçimine bağlıdır. Eğer bir araç ise, akıllı ajanın sadece araç çağırma ile erişmesi yeterlidir. Eğer ajanın yürütme durumunun bir parçası ise, geliştirici her adımda durumu belli ölçüde açığa çıkarabilir. Bu, sonraki turlarda LLM’ye geçici alan bağlamını sunma konusunda hassas bir kontrol sağlar.
Anılar (Memories)
Eğer akıllı ajanın anıları saklama yeteneği varsa, o zaman mevcut görevle ilgili anıları seçme yeteneğine de ihtiyaç duyarlar. Bunun birkaç nedeni vardır: Ajan belirli bir davranış modelini öğrenmek için az sayıda örneği (durum belleği) seçebilir; kendi davranışlarını yönlendirmek için talimatları (program belleği) seçebilir; ya da görev için ilgili bir arka plan sağlamak üzere gerçekleri (anlamsal bellek) seçebilir.
Bu, seçilen anıların ilgili olmasını sağlamanın bir zorluğudur. Bazı popüler akıllı ajanlar, her zaman bağlama yüklenen küçük bir dosyayı kullanmaktadırlar. Örneğin, birçok kod akıllı ajansı, talimatları (program belleği) saklamak veya bazı durumlarda örnekleri (durum belleği) ziyaret etmek için dosyalar kullanmaktadır. Claude Code, CLAUDE.md
dosyasını kullanırken, Cursor ve Windsurf ise kural dosyası kullanmaktadır.
Ancak, eğer akıllı ajanda çok sayıda (örneğin “anlamsal bellek” türünde) gerçek veya ilişki saklanıyorsa, seçme işlemi daha karmaşık hale gelir. ChatGPT, birçok kullanıcıya özgü anılar saklar ve bunlardan seçme yapar; bu konuda iyi bir örnektir.
Vektör gömme teknikleri ve/veya bilgi grafikleri, süzme işlemlerine yardımcı olmak için yaygın bellek indeksleme teknikleridir. Ancak, bellek seçme süreçleri hala zorludur. AIEngineer Dünya Fuarı’nda, Simon Willison, bir bellek seçme hatası örneği paylaştı: ChatGPT, onun konum bilgisini hafızasından alarak yanlışlıkla istediği resme ekledi. Beklenmedik veya istenmeyen bu bellek geri alımı, bazı kullanıcıların bağlam penceresinin “artık kendi” olmadığını hissetmelerine neden olmaktadır!
Araçlar (Tools)
Akıllı ajanların araç kullanmaları gerekir; fakat sağlanan araç sayısı fazla olursa, bunlar aşırı yüklenebilir. Bu genellikle, araç tanımlarının örtüşmesinden kaynaklanır ve bu durumda model hangi aracı seçeceği konusunda kafası karışır. Araç tanımlamaları üzerinde RAG (geri kazanım destekli üretim) uygulamak, görev için en alakalı aracı almak için anlamlı benzerliklere dayanmak amacıyla bir yöntemdir. Son zamanlardaki bazı yayınlar, bu yöntemin araç seçiminin doğruluğunu üç kat artırabileceğini göstermiştir.
Bilgi (Knowledge)
Geri kazanım destekli üretim (RAG) aslında büyük bir konudur ve bağlam mühendisliğinin temel zorluklarından biri olabilir. Kod akıllı ajansı, RAG’nin büyük ölçekli üretim uygulamalarındaki en iyi örneklerinden biridir. Windsurf’un Varun, bu zorlukların bazılarını çok iyi özetlemiştir:
Kodu indekslemek = bağlam geri kazanımı değil… Yaptığımız şey, AST (soyut sözdizim ağacı) kullanarak kodu çözümlemek ve anlamsal olarak anlamlı sınırlar boyunca bölmektir… Ancak kod deposunun büyümesiyle, vektörlere göre arama, geri kazanım destekli bir yaklaşım olarak güvenilir hale gelmiyor… Çeşitli teknolojilerin kombinasyonuna güvenmemiz gerekiyor; grep/dosya araması, bilgi grafiğine dayalı arama ve… bağlamı alaka düzeyine göre yeniden sıralama adımı.
Bağlamı Sıkıştırma (Compress Context)
Bağlamı sıkıştırma, yalnızca görevlerin yerine getirilmesi için gerekli olan token’ların saklanmasını ifade eder.
Bağlam Özeti (Context Summarization)
Ajanlarla olan etkileşimler yüzlerce tur sürebilir ve bu süreçte büyük miktarda token tüketen araçlar kullanılabilir. Özelleştirme, bu zorlukların üstesinden gelmek için yaygın bir yöntemdir. Eğer Claude Code kullanmışsanız, bu uygulamanın gerçek bir örneğini görmüşsünüzdür. Bağlam penceresi