Yapay zeka ajanları dünyasında bağlam kritik önem taşır. Claude, DeepSeek veya GPT-5 gibi yüksek performanslı bir model ile doğru bağlamı eşleştirmek planlamayı verimli kılarak çok adımlı akıl yürütmeyi geliştirir. Bu da kişiselleştirilmiş diyaloglar ve daha yüksek doğruluk oranı sağlar.
Yazan: Couchbase Yapay Zeka/Makine Öğrenimi Ürün Yöneticisi Kiran Matty
Bu makalede, bağlam mühendisliğine duyulan ihtiyaç ve sağladığı faydalardan bahsedeceğiz. Geliştiricilerin yapay zeka ajanları geliştirirken karşılaştığı zorlukları belirleyecek ve bu sorunları çözmeye yardımcı olacak bir mimari yapı önereceğiz.
Bağlam İkilemini Çözmek: Çok mu, Az mı?
Kuruluşların büyük miktarda yapılandırılmış ve yapılandırılmamış veriye erişimi bulunmaktadır. Ancak bu veriyi doğrudan ajanlara bağlam olarak vermek, doğal gürültü ve önemli bilgilerin kaybı nedeniyle görevi anlama konusunda kafa karışıklığı yaratabilir ve büyük dil modellerinin durumsal farkındalığını olumsuz yönde etkileyebilir. Uzun bağlam kullanmak her zaman bu sorunun çözümü değildir. Bununla ilgili blog yazısını buradan okuyabilirsiniz. Öte yandan, çok az bağlam göndermek ise yapay zeka ajanlarının halüsinasyon üretmesine yol açabilir. Kısaca, böyle sistemlerin girdisi çöp olursa çıktısı da çöp olur.
Bağlam mühendisliği, bir yapay zeka ajanının atanan görevleri başarıyla tamamlaması için yalnızca gerekli bilgilere sahip olmasını sağlamak amacıyla kullanılan teknikler ve araçlar topluluğunu ifade eder. LangChain’den Harrison Chase tarafından tanımlanan bağlam mühendisliği kavramı aşağıdakilerden oluşur:
Araç seçimi, yapay zeka ajanının kullanıcının belirttiği görevi tamamlamak için gereken bilgileri almak üzere doğru araçlara erişimini sağlamak anlamına gelir. Örnek olarak, bir yapay zeka ajanından iki çocuklu ve bir köpeği olan bir aile için Maui’ye yapılacak bir tatil planlamasını tamamlaması isteniyor olsun. Ajan, kullanıcının sorusunu yanıtlamak ve görevleri güvenilir şekilde yürütmek için gereken tüm araçları erişebilmelidir.
Bellek kullanımı da önemli bir faktördür. Yapay zeka ajanlarını, kullanıcı ile ajanın devam eden oturumunu kişiselleştirmek için bağlam sağlayan kısa süreli bellek ve birden çok oturum boyunca bağlam sunan uzun süreli bellek ile donatmak büyük önem taşır. Böylece etkileşimler tutarlı, gerçekçi ve daha kişiselleştirilmiş olacaktır. Bu, profil, anlamsal, episodik, diyalog ve prosedürel gibi çeşitli bellek türlerini kapsar. Ek olarak, çok ajanlı bir sistemde ajanlar arasında sorunsuz görev koordinasyonu için bağlam paylaşımında kullanılan çalışma belleğini de bunlara ekleyebiliriz.
Bir diğer bileşen ise prompt mühendisliğidir. Prompt mühendisliği, ajanın doğru “prompt”a erişmesini sağlar. Prompt, yapay zeka ajanının davranışı açısından belirli talimatlar ve kısıtlamalar dahil olmak üzere net bir şekilde tanımlanmış olmalıdır.
Son olarak, retrieval’dan bahsetmek gerekir. Kullanıcının sorusuna dayalı olarak ilgili veriyi çekmek ve büyük dil modeline göndermeden önce prompt’a eklemek, yapay zekanın başarısını artıracaktır. Bu, RAG ve doğrudan veritabanı çağrıları kullanılarak gerçekleştirilebilir. Kuruluşlar genellikle birden fazla gerçek veri kaynağı olan polyglot bir ortamda çalışır. Bu gibi durumlarda, Model Context Protocol (MCP), geliştiricilerin çeşitli veri kaynaklarından standart bir şekilde bağlam almasını sağlar.
Yukarıdaki bağlam, yapay zeka ajanıyla ve ardından büyük dil modeliyle paylaşılır. Ajan prompt’una ilgili araç adları ve araç özellikleri, kısa ve uzun süreli bellek içerikleri, prompt ve RAG, veritabanları ve SaaS servislerinden alınan ilgili içerik eklenerek görevlerin başarılı şekilde yürütülmesi sağlanır.
Süreci şöyle açıklayabiliriz:
Kullanıcı önce çok ajanlı sisteme bir istek gönderir. Yapay zeka ajanı uygulaması, katalogdan prompt ve araçları kapsayan API’ler aracılığıyla vektör deposundan RAG bağlamını; kısa ve uzun süreli belleklerden özetlenmiş konuşmaları ve operasyonel veritabanından gerekli verileri MCP sunucuları aracılığıyla alır. Yapay zeka ajanı uygulaması, prompt’u konsolide bağlam ile zenginleştirerek ajan prompt’unu oluşturur ve bunu Claude, DeepSeek veya GPT-5 gibi bir akıl yürütme modeline gönderir. Akıl yürütme döngüsü, LangGraph gibi bir yapay zeka ajanı framework’ü içerisinde başlatılır. Bu sırada akıl yürütme modeliyle mesaj alışverişi yapılır ve ilgili araçlar çağrılır. Ajan mimarisine bağlı olarak diğer ajanlar da çağrılabilir ve aralarında bağlam paylaşılabilir. Daha sonra üretilen yanıt kullanıcıya gönderilir ve kullanıcı-ajan diyaloğu, sonraki oturumlarda konuşmanın sürekliliğini sağlamak için bellekte saklanır.
Şimdi, geliştiricilerin bağlam mühendisliği sırasında karşılaştığı bazı zorluklara ve yukarıda bahsettiğimiz mimarinin bunlara nasıl çözüm olabileceğine bir göz atalım.
Yapılandırılmamış Verilerden Büyük Ölçekte Bağlam Çıkarmak
Kurumsal verilerin yüzde 80’i yapılandırılmamış verilerden oluşuyor ve bu da çoğunlukla bağlam olarak kullanılabilmelerini zorlaştırıyor. Bu yüzden geliştiriciler, önemli kullanım senaryolarını besleyecek bağlamı çıkarabilmek için Spark, Flink gibi veri işleme motorlarında ETL işlemleri gerçekleştiriyor. Bu işlemler, kaynak veritabanından yapılandırılmamış veriyi okuyup işliyor ve sonrasında ajanların kullanabilmesi için tekrar yazıyor. Yüksek performans sunsalar da bu tarz kendin yap çözümler geliştirici hızını düşürüyor ve operasyonel yük yaratıyor.
Birkaç örnek kullanım durumu arasında, müşteri desteği sunan bir yapay zekanın kolayca anlayıp harekete geçebilmesi için bir belgedeki “support_ticket_desc” alanının ayrıntılarını özetlemek; triyaj görevlisinin hasta için ilk teşhisi koyabilmesi için “patient_diagnosis” alanından tıbbi terimleri (örneğin hastalıklar, ilaçlar, semptomlar) çıkarmak; “email_content” alanındaki metnin “tanıtım amaçlı spam”, “potansiyel dolandırıcılık” veya “kimlik avı girişimi” olup olmadığını etiketlemek gibi işlemlerin yer aldığını söyleyebiliriz.
Yapay zeka fonksiyonları, geliştiricilerin SQL ifadelerinden büyük dil modellerini çağırmasına ve büyük dil modeli çıktısının formatını, tonunu ve diğer yönlerini kontrol etmek için komutlar yazmasına olanak tanır. Bir örnek vermemiz gerekirse: Bir geliştirici, yapay zeka fonksiyonlarını kullanarak bir veritabanında depolanan ürün incelemelerini özetlerle zenginleştirir. Daha sonra bir perakende yapay zeka ajanı, bunu okur ve memnuniyetsiz bir kullanıcıya bildirdiği sorunların ciddiyetine göre Müşteri Memnuniyet Puanını (CSAT) iyileştirmek için cazip bir teklif sunup sunmayacağına karar verir. Bu ajan ayrıca ürün iyileştirmesini teşvik etmek için bir ürün özelliği talebi oluşturabilir.
Bir müşterinin, bir mikserin performansı ve dayanıklılığından hayal kırıklığına uğradığı için bıraktığı aşağıdaki ürün yorumunu ele alacak olursak:
Ürün açıklaması ve yorumlara dayanarak bu mikserden oldukça umutluydum ancak ilk günden itibaren hayal kırıklığına uğradım. Ürün, yumuşak meyvelerde bile zorlanıyor ve sadece birkaç dakika kullanımdan sonra bile aşırı ısınıyor. Smoothie hazırlarken birkaç kez durup soğumasını beklemek zorunda kaldım ki bu da “yüksek hızlı” bir mikser sahibi olmanın anlamını yitirmesine neden oluyor.
Ajan Hafızasında Eskimeyi Yönetmek ve Çelişkileri Çözmek
Ajan hafızası, bağlam mühendisliğinin en kritik yapı taşlarından biridir. Ancak hafızanın zamanla eskimesini yönetebilmek ve çelişkileri çözmek geliştiriciler açısından hiç de basit bir olgu değildir.
Sohbet tabanlı ajanlar, kullanıcılarla girdikleri etkileşimler sonucu çok büyük miktarda veri biriktirir. Eğer bir ajan geçmişteki her mesajı eksiksiz hatırlarsa bağlam penceresi hızla dolacaktır ki bu da tutarlılığın bozulmasına ve yeni bilgilerin işlenememesine yol açabilir. Bu nedenle eskiyen bilgilerin zaman içinde devre dışı bırakılması gerekir. Buradaki temel zorluk her bilginin eskime hızının aynı olmamasıdır. Örnek olarak, bir perakendecinin iade politikası sık sık değişmezken, moda oldukça değişkendir. Bu yüzden, farklı kullanıcı konuşmalarında saklanan bilgiler için bilgiye özel time-to-live (TTL) uygulanması gerekir. Böylelikle bir giyim önerisi sunan yapay zeka ajanı eskimiş bilgilerle çalışmaya devam etmez. Buna ek olarak geliştiricilerin gerektiğinde hafızadaki eski bağlamı manuel olarak silebilmesi de önemlidir. Dolayısıyla ajan hafızasının, farklı hızlarda TTL uygulayabilen ve tutarlı biçimde silme işlemlerini destekleyen bir veritabanı üzerinde kurgulanması gerekir.
Çoklu ajan içeren bir sistemde ise tek bir ajan çelişkili bilgiye sahip olabilir ya da aynı oturumdaki birden fazla ajan birbiriyle çelişen bilgiler sunabilir. Bu çelişki, her mesaja bir zaman bilgisi eklenerek ve bu bilgi büyük dil modeline bağlam olarak sunularak çözülebilir. Ayrıca mesajlar, hangi ajan tarafından üretildiği gibi ek etiketlerle de zenginleştirilebilir. Böylelikle büyük dil modeli hangi bilginin hafızada tutulması gerektiğine daha sağlıklı bir şekilde karar verebilir.



