Güvenilir Yapay Zeka Ajanlarının Temeli

Bağlam Mühendisliği: Güvenilir Yapay Zeka Ajanlarının Temeli...

 

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.

 

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.

Şekil 1: Bağlam mühendisliği mimarisinin kavramsal görünümü (kaynak: Couchbase)

 

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.

İşte SQL kullanılarak yapılan kodsuz bir analiz:

SQL İfadesi

Response

SELECT

    review_id,

    SUMMARIZE(review_text) AS summary,

    SENTIMENT(“review_text”, prompt = “Evaluate the sentiment of the “customer_review” field on a 5-point scale: very negative, negative, neutral, positive, very Positive”) AS sentiment

FROM customer_reviews

WHERE review_text IS NOT NULL;

“sentiment”: çok olumsuz

“summary”: Mikserin, donmuş meyveleri ve buzu aşırı ısınmadan parçalayabilmek için daha güçlü bir motora, daha iyi karışımlar için daha keskin bıçaklara ve sızıntıları önlemek için daha iyi sızdırmaz bir kapağa ihtiyacı var. Kısa süreli kullanımlarda dahi ortaya çıkan yüksek gürültüyü ve yanık kokularının ortadan kaldırmak için dayanıklılık iyileştirilmelidir.

 

Yukarıdaki örnek, SQL ifadelerinden büyük dil modellerini çağırarak yukarıdaki görevleri kod yazmadan otomatikleştirebilen temel bir veritabanı gerektirir.

Bağlamı, Sınırlı Bir Bağlam Penceresine Sığdırmak

Bağlam söz konusu olduğunda,  az (ama ilgili olması)  daha çoktur !. 1 milyondan fazla token limiti, bağlamı sınırsız bellek gibi ele alabileceğiniz anlamına gelmez. Her ek tokenin; maliyet, gecikme ve performans açısından birtakım etkileri vardır. Prompt içeriğini, önemli ayrıntıların kaybolmasına neden olacak şekilde uzun ve gereksiz bağlamlarla doldurmak yerine, bağlamı yalın ve ilgili tutmak için RAG gibi teknikleri kullanabilirsiniz.

Büyük dil modellerinin kullanabileceği tüm mevcut araçları listelemek prompt’ları şişirir ve benzer araçların benzer isimlere veya araç özelliklerine sahip olması nedeniyle yapay zeka ajanının karışmasına neden olabilir. Ek olarak, araçların yeniden kullanılabilirliği olmadan ajanın başarısız olma olasılığını artıracaktır. Bununla birlikte, tüm araçları merkezi bir konumda kataloglamak yeniden kullanılabilirliği desteklemekle kalmaz, aynı zamanda kullanıcının sorusunu yanıtlamakla ilgili araçları da çeker. Bu da, iyi yazılmış araç açıklamaları ile mümkün olabilir. Örneğin aşağıdaki API, yalnızca kullanıcının sorgusunu yanıtlamak için kullanılabilecek araçları geri getirebilir:

catalog.find_tools(query="Plan a trip to Maui")

Ajan davranışı, prompt kalitesine oldukça duyarlıdır. Bu nedenle prompt’lardaki değişiklikler dikkatli bir şekilde ele alınmalıdır. Tüm prompt’larıni sürüm kontrolü ve geri alma desteği ile kataloglamak ajan davranışının tutarlı olmasını sağlar. Örneğin aşağıdaki API, bağlamı doğru tutarak yalnızca sorguyla ilgili prompt’ları alabilir:

catalog.find_prompt("query="Plan a trip to Maui")

Bunu, RAG aracılığıyla vektör araması kullanarak büyük hacimli yapılandırılmış ve yapılandırılmamış verilerden bağlamı çıkarmanıza ve ilgili araçları ve prompt’ları depolamanıza ve seçmenize olanak tanıyan yüksek performanslı bir çoklu veritabanı modeli kullanarak başarabilirsiniz.

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.

Couchbase ile Bağlam Mühendisliği

Couchbase'de, bağlam tasarlama ve hızlı bir şekilde sunma yeteneğine büyük önem verilmektedir. Bu da geliştiricilerin yüksek performanslı ve güvenilir ajanlar oluşturmasına olanak tanır. Şu anda özel önizleme aşamasında olan Couchbase Capella AI Services ve Capella NoSQL DBaaS ile, SQL++ kullanarak bağlamı çıkarabilir, bu bağlam ile prompt’ larınızı zenginleştirebilirken aynı zamanda  operasyonel, analitik, vektörler, araçlar, prompt ve bellek gibi çeşitli depoları kapsayan tek bir veri platformu olarak da yararlanabilirsiniz. AI Services özelliği olan yapay zeka işlevleri, tanıdık SQL ifadelerinden önde gelen büyük dil modellerini çağırarak büyük hacimli verilerden bağlamın çıkarılmasını otomatik bir hale getirir. Couchbase kullanılarak uygulanan bir ajan belleği, bellek bozulması gibi karmaşık ajan belleği sorunlarının üstesinden gelinmesini sağlar.

Capella AI Services'ın özel önizlemesi için buradan kayıt oluşturarak Capella NoSQL DBaaS'ı ücretsiz olarak deneyebilir ve yapay zeka ajanı uygulamanızı oluşturmaya başlayabilirsiniz.

Yazar: Kiran Matty, Couchbase Ürün Yöneticisi, Yapay Zeka/Makine Öğrenimi