AI Ajanları için Bağlam Mühendisliği: Manus'u İnşa Etmekten Alınan Dersler
Cumartesi, Temmuz 19
Teknoloji
2025/7/18 --Yichao 'Peak' Ji
Manus projesinin en başında, ekibim ve ben kilit bir kararla karşı karşıya kaldık: açık kaynaklı temelleri kullanarak uçtan uca bir ajansal model eğitmeli miyiz, yoksa sınır modellerinin bağlam içi öğrenme yetenekleri üzerine bir ajan mı inşa etmeliyiz? NLP'deki ilk on yılımda, bu seçeneğin lüksüne sahip değildik. BERT'in uzak günlerinde (evet, yedi yıl oldu), modellerin yeni bir göreve aktarılabilmesi için ince ayar yapılması ve değerlendirilmesi gerekiyordu. Bu süreç, modeller günümüzün LLM'lerine kıyasla küçük olsa bile, her iterasyon için haftalar alabiliyordu. Hızlı hareket eden uygulamalar için, özellikle PMF öncesinde, bu tür yavaş geri bildirim döngüleri anlaşmayı bozucu etmendi. Bu, son girişimimden acı bir dersti; orada açık bilgi çıkarımı ve anlamsal arama için sıfırdan modeller eğitmiştim. Sonra GPT-3 ve Flan-T5 geldi ve kendi içimde geliştirdiğim modeller bir gecede geçersiz hale geldi. İronik olarak, aynı modeller bağlam içi öğrenmenin başlangıcını ve tamamen yeni bir ilerleme yolunu işaret ediyordu. Bu zorlu ders, seçimi netleştirdi: Manus bağlam mühendisliğine bahis oynayacaktı. Bu, iyileştirmeleri haftalar yerine saatler içinde yayınlamamızı sağlar ve ürünümüzü altta yatan modellerden bağımsız tutar: Eğer model ilerlemesi yükselen bir gelgit ise, Manus'un tekne olmasını istiyoruz, deniz tabanına yapışmış sütun değil.
Yine de, bağlam mühendisliği hiç de basit olmadı. Bu deneysel bir bilimdir—ve ajan çerçevemizi dört kez yeniden inşa ettik, her seferinde bağlamı şekillendirmenin daha iyi bir yolunu keşfettikten sonra. Bu mimari arama, prompt düzenleme ve ampirik tahmin yürütme sürecini sevgiyle "Stokastik Lisansüstü İniş" olarak adlandırıyoruz. Zarif değil, ama işe yarıyor.
Bu yazı, kendi "SGD"miz aracılığıyla ulaştığımız yerel optimumları paylaşıyor. Kendi yapay zeka ajanınızı oluşturuyorsanız, bu ilkelerin daha hızlı yakınsamanıza yardımcı olmasını umuyorum.

KV-Cache Etrafında Tasarım Yapın

Eğer sadece bir metrik seçmem gerekseydi, KV-cache isabet oranının üretim aşamasındaki bir yapay zeka ajanı için en önemli metrik olduğunu savunurdum. Bu doğrudan hem gecikmeyi hem de maliyeti etkiler. Neden olduğunu anlamak için, tipik bir ajanın nasıl çalıştığına bakalım:
Kullanıcı girdisini aldıktan sonra, ajan görevi tamamlamak için bir dizi araç kullanımı zincirinden geçer. Her iterasyonda, model mevcut bağlama dayalı olarak önceden tanımlanmış bir eylem alanından bir eylem seçer. Bu eylem daha sonra bir gözlem üretmek için ortamda (örneğin, Manus'un sanal makine sanal ortamında) yürütülür. Eylem ve gözlem, bir sonraki iterasyon için girdi oluşturan bağlama eklenir. Bu döngü görev tamamlanana kadar devam eder. Tahmin edebileceğiniz gibi, bağlam her adımda büyürken, çıktı—genellikle yapılandırılmış bir fonksiyon çağrısı—nispeten kısa kalır. Bu, ajanlarda sohbet botlarına kıyasla ön doldurma ve kod çözme arasındaki oranın oldukça dengesiz olmasına neden olur. Manus'ta, örneğin, ortalama girdi-çıktı token oranı yaklaşık 100:1'dir.
Neyse ki, aynı öneklere sahip bağlamlar KV-cache avantajından yararlanabilir, bu da ilk tokene kadar geçen süreyi (TTFT) ve çıkarım maliyetini büyük ölçüde azaltır—ister kendi barındırdığınız bir model kullanıyor olun, ister bir çıkarım API'si çağırıyor olun. Ve küçük tasarruflardan bahsetmiyoruz: örneğin Claude Sonnet ile, önbelleğe alınmış girdi tokenleri 0.30 USD/MTok maliyetindeyken, önbelleğe alınmamış olanlar 3 USD/MTok maliyetindedir—10 kat fark.

Bağlam mühendisliği perspektifinden, KV-cache isabet oranını iyileştirmek birkaç önemli uygulamayı içerir:
1.İstem önekini sabit tutun. LLM'lerin otoregresif doğası nedeniyle, tek bir token farkı bile o token ve sonrasındaki önbelleği geçersiz kılabilir. Yaygın bir hata, sistem isteminin başında bir zaman damgası—özellikle saniyeye kadar hassas olan—eklemektir. Evet, bu modelin size güncel saati söylemesini sağlar, ancak önbellek isabet oranınızı da öldürür.
2.Bağlamınızı yalnızca eklenebilir yapın. Önceki eylemleri veya gözlemleri değiştirmekten kaçının. Serileştirmenizin belirleyici olduğundan emin olun. Birçok programlama dili ve kütüphane, JSON nesnelerini serileştirirken sabit anahtar sıralamasını garanti etmez, bu da önbelleği sessizce bozabilir.
3.Gerektiğinde önbellek kesme noktalarını açıkça işaretleyin. Bazı model sağlayıcıları veya çıkarım çerçeveleri otomatik artımlı önek önbelleklemeyi desteklemez ve bunun yerine bağlamda manuel önbellek kesme noktaları eklenmesini gerektirir. Bunları atarken, potansiyel önbellek süresinin dolmasını hesaba katın ve en azından, kesme noktasının sistem isteminin sonunu içerdiğinden emin olun.
Ek olarak, vLLM gibi çerçeveleri kullanarak modelleri kendiniz barındırıyorsanız, önek/istem önbelleklemenin etkinleştirildiğinden ve istekleri dağıtılmış işçiler arasında tutarlı bir şekilde yönlendirmek için oturum kimlikleri gibi teknikleri kullandığınızdan emin olun.

Maskeleme Yapın, Silmeyin

Ajanınız daha fazla yetenek kazandıkça, eylem alanı doğal olarak daha karmaşık hale gelir—basitçe söylemek gerekirse, araç sayısı patlar. MCP'nin son zamanlardaki popülaritesi bu duruma sadece benzin döker. Eğer kullanıcı tarafından yapılandırılabilir araçlara izin verirseniz, bana güvenin: birileri kaçınılmaz olarak özenle düzenlenmiş eylem alanınıza yüzlerce gizemli aracı ekleyecektir. Sonuç olarak, model yanlış eylemi seçme veya verimsiz bir yol izleme olasılığı daha yüksektir. Kısacası, ağır silahlandırılmış ajanınız daha aptallaşır.
Doğal bir tepki, dinamik bir eylem alanı tasarlamaktır—belki de RAG benzeri bir şey kullanarak araçları talep üzerine yüklemek. Biz de Manus'ta bunu denedik. Ancak deneyimlerimiz net bir kural öneriyor: kesinlikle gerekli olmadıkça, iterasyon ortasında dinamik olarak araç ekleme veya kaldırmaktan kaçının. Bunun iki ana nedeni var:
1.Çoğu LLM'de, araç tanımları serileştirmeden sonra bağlamın ön kısmında, tipik olarak sistem isteminden önce veya sonra yer alır. Bu nedenle herhangi bir değişiklik, sonraki tüm eylemler ve gözlemler için KV-önbelleğini geçersiz kılacaktır.
2.Önceki eylemler ve gözlemler hala mevcut bağlamda tanımlanmayan araçlara atıfta bulunduğunda, model kafası karışır. Kısıtlanmış kod çözme olmadan, bu genellikle şema ihlalleri veya halüsinasyon eylemlerine yol açar.
Eylem seçimini geliştirirken bunu çözmek için Manus, araç kullanılabilirliğini yönetmek için bağlam duyarlı bir durum makinesi kullanır. Araçları kaldırmak yerine, mevcut bağlama dayalı olarak belirli eylemlerin seçimini önlemek (veya zorlamak) için kod çözme sırasında token logit'lerini maskeler.

Uygulamada, çoğu model sağlayıcısı ve çıkarım çerçevesi, araç tanımlarını değiştirmeden olmaksızın eylem alanını kısıtlamanıza olanak tanıyan bir tür yanıt ön doldurma destekler. Genellikle üç fonksiyon çağırma modu vardır (örnek olarak NousResearch'ten Hermes formatını kullanacağız):
Otomatik – Model bir fonksiyonu çağırıp çağırmamayı seçebilir. Yalnızca yanıt önekini ön doldurarak uygulanır: <|im_start|>assistant
Gerekli – Model bir fonksiyonu çağırmalıdır, ancak seçim kısıtlanmamıştır. Araç çağrı jetonuna kadar ön doldurarak uygulanır: <|im_start|>assistant<tool_call>
Belirtilmiş – Model belirli bir alt kümeden bir fonksiyonu çağırmalıdır. Fonksiyon adının başlangıcına kadar ön doldurarak uygulanır: <|im_start|>assistant<tool_call>{"name": "browser_ Bu sayede, token mantıksal değerlerini doğrudan maskeleyerek eylem seçimini kısıtlıyoruz. Örneğin, kullanıcı yeni bir girdi sağladığında, Manus bir eylem gerçekleştirmek yerine hemen yanıt vermelidir. Ayrıca eylem isimlerini tutarlı öneklerle tasarladık—örneğin, tarayıcıyla ilgili tüm araçlar browser_ ile başlar ve komut satırı araçları shell_ ile başlar. Bu, ajanın belirli bir durumda yalnızca belirli bir grup araçtan seçim yapmasını durum bilgisi olan mantıksal işlemciler kullanmadan kolayca uygulamamızı sağlar.
Bu tasarımlar, Manus ajan döngüsünün model odaklı bir mimaride bile istikrarlı kalmasını sağlamaya yardımcı olur.

Dosya Sistemini Bağlam Olarak Kullanma

Modern sınır LLM'ler artık 128K token veya daha fazla bağlam penceresi sunuyor. Ancak gerçek dünya ajan senaryolarında, bu genellikle yeterli değildir ve bazen bir dezavantaj olabilir. Üç yaygın sorun noktası vardır:
1.Gözlemler çok büyük olabilir, özellikle ajanlar web sayfaları veya PDF'ler gibi yapılandırılmamış verilerle etkileşime girdiğinde. Bağlam sınırını kolayca aşabilirsiniz.
2.Model performansı, teknik olarak pencere desteklese bile, belirli bir bağlam uzunluğunun ötesinde azalma eğilimindedir.
3.Uzun girdiler maliyetlidir, ön ek önbelleğe alma ile bile. Hala her belirteci iletmek ve doldurmak için ödeme yapıyorsunuz.
Bunu ele almak için, birçok ajan sistemi bağlam kesme veya sıkıştırma stratejileri uygular. Ancak aşırı agresif sıkıştırma kaçınılmaz olarak bilgi kaybına yol açar. Sorun temeldir: bir ajan, doğası gereği, bir sonraki eylemi tüm önceki duruma dayanarak tahmin etmelidir—ve on adım sonra hangi gözlemin kritik hale gelebileceğini güvenilir bir şekilde tahmin edemezsiniz. Mantıksal açıdan, geri döndürülemez herhangi bir sıkıştırma risk taşır. Bu nedenle Manus'ta dosya sistemini nihai bağlam olarak ele alıyoruz: boyut olarak sınırsız, doğası gereği kalıcı ve ajanın kendisi tarafından doğrudan işletilebilir. Model, isteğe bağlı olarak dosyalara yazmayı ve onları okumayı öğrenir—dosya sistemini sadece depolama olarak değil, yapılandırılmış, dışsallaştırılmış bellek olarak kullanır.

Sıkıştırma stratejilerimiz her zaman geri yüklenebilir olacak şekilde tasarlanmıştır. Örneğin, bir web sayfasının içeriği, URL korunduğu sürece bağlamdan çıkarılabilir ve bir belgenin içeriği, yolu sandbox'ta mevcut kaldığı sürece atlanabilir. Bu, Manus'un kalıcı olarak bilgi kaybetmeden bağlam uzunluğunu küçültmesine olanak tanır. Bu özelliği geliştirirken, bir Durum Uzayı Modelinin (SSM) ajansal bir ortamda etkili bir şekilde çalışması için ne gerektiğini hayal ettim. Transformerların aksine, SSM'ler tam dikkat mekanizmasından yoksundur ve uzun mesafeli geriye dönük bağımlılıklarla mücadele eder. Ancak dosya tabanlı hafızayı ustalaşabilselerdi—uzun vadeli durumu bağlam içinde tutmak yerine dışsallaştırarak—o zaman hızları ve verimlilikleri yeni bir ajan sınıfının kilidini açabilir. Ajansal SSM'ler, Sinirsel Turing Makinelerinin gerçek halefleri olabilir.

Dikkati Tekrarlama Yoluyla Manipüle Etme

Eğer Manus ile çalıştıysanız, muhtemelen ilginç bir şey fark etmişsinizdir: karmaşık görevleri ele alırken, genellikle bir todo.md dosyası oluşturur—ve görevi ilerledikçe adım adım günceller, tamamlanan öğeleri işaretler.
Bu sadece sevimli bir davranış değil—dikkati manipüle etmek için kasıtlı bir mekanizmadır.

Manus'taki tipik bir görev ortalama olarak yaklaşık 50 araç çağrısı gerektirir. Bu uzun bir döngüdür—ve Manus karar verme sürecinde LLM'lere güvendiğinden, özellikle uzun bağlamlarda veya karmaşık görevlerde konudan sapma veya önceki hedefleri unutma konusunda savunmasızdır.
Yapılacaklar listesini sürekli olarak yeniden yazarak, Manus hedeflerini bağlamın sonuna tekrar ediyor. Bu, genel planı modelin yakın dikkat aralığına iterek, "ortada kaybolma" sorunlarını önler ve hedef uyumsuzluğunu azaltır. Etkili bir şekilde, özel mimari değişikliklere ihtiyaç duymadan kendi odağını görev hedefine yönlendirmek için doğal dili kullanıyor.

Yanlış Şeyleri İçeride Tut

Ajanlar hata yapar. Bu bir hata değil - bu bir gerçektir. Dil modelleri halüsinasyon görür, ortamlar hata döndürür, harici araçlar yanlış davranır ve beklenmedik uç durumlar her zaman ortaya çıkar. Çok adımlı görevlerde, başarısızlık istisna değildir; döngünün bir parçasıdır.
Yine de, yaygın bir dürtü bu hataları gizlemektir: izi temizlemek, eylemi yeniden denemek veya modelin durumunu sıfırlamak ve sihirli "temperature" a bırakmak. Bu daha güvenli, daha kontrollü hissettiriyor. Ancak bunun bir bedeli var: Başarısızlığı silmek kanıtları ortadan kaldırır. Ve kanıt olmadan, model uyum sağlayamaz.

Deneyimlerimize göre, ajan davranışını geliştirmenin en etkili yollarından biri aldatıcı derecede basittir: yanlış dönüşleri bağlamda bırakın. Model başarısız bir eylemi—ve bunun sonucunda oluşan gözlemi veya yığın izini—gördüğünde, dahili inançlarını örtük olarak günceller. Bu, önceki tahminini benzer eylemlerden uzaklaştırır ve aynı hatayı tekrarlama olasılığını azaltır. Aslında, hata kurtarma sürecinin gerçek ajanlık davranışının en net göstergelerinden biri olduğuna inanıyoruz. Yine de, çoğunlukla ideal koşullar altında görev başarısına odaklanan çoğu akademik çalışmada ve kamuya açık kıyaslamalarda hala yeterince temsil edilmiyor.

Birkaç Örnekle Kandırılmayın

Az örnekli yönlendirme (Few-shot prompting), LLM çıktılarını iyileştirmek için yaygın bir tekniktir. Ancak ajan sistemlerinde, bu teknik ince yollarla ters tepebilir. Dil modelleri mükemmel taklitçilerdir; bağlamdaki davranış kalıbını taklit ederler. Bağlamınız benzer geçmiş eylem-gözlem çiftleriyle doluysa, model artık optimal olmadığında bile bu kalıbı takip etme eğiliminde olacaktır.
Bu, tekrarlayan kararlar veya eylemler içeren görevlerde tehlikeli olabilir. Örneğin, Manus'u 20 özgeçmişi incelemeye yardımcı olmak için kullanırken, ajan genellikle bir ritme girer—bağlamda gördüğü şey olduğu için benzer eylemleri tekrarlar. Bu, sapmaya, aşırı genellemeye veya bazen halüsinasyona yol açar.

Çözüm çeşitliliği artırmaktır. Manus, eylemler ve gözlemlerde yapılandırılmış küçük varyasyonlar—farklı serileştirme şablonları, alternatif ifadeler, sıralama veya biçimlendirmede küçük gürültüler—sunar. Bu kontrollü rastgelelik, kalıbı kırmaya ve modelin dikkatini ayarlamaya yardımcı olur. Başka bir deyişle, kendinizi bir kalıba sokmayın. Bağlamınız ne kadar tekdüze olursa, ajanınız o kadar kırılgan hale gelir.

Sonuç

Bağlam mühendisliği hala gelişmekte olan bir bilim—ancak ajan sistemleri için şimdiden vazgeçilmez. Modeller daha güçlü, daha hızlı ve daha ucuz hale geliyor olabilir, ancak hiçbir ham yetenek, bellek, çevre ve geri bildirim ihtiyacının yerini tutamaz. Bağlamı nasıl şekillendirdiğiniz, sonuçta ajanınızın nasıl davrandığını tanımlar: ne kadar hızlı çalıştığını, ne kadar iyi toparlandığını ve ne kadar ölçeklendiğini.
Manus'ta, bu dersleri tekrarlanan yeniden yazımlar, çıkmazlar ve milyonlarca kullanıcı arasında gerçek dünya testleri ile öğrendik. Burada paylaştıklarımızın hiçbiri evrensel gerçek değil—ancak bunlar bizim için işe yarayan modellerdir. Eğer bunlar size acı verici bir yinelemeyi bile önlemenize yardımcı olursa, bu yazı görevini yerine getirmiş demektir.
Ajantik gelecek, bir seferde bir bağlam oluşturularak inşa edilecektir. Onları iyi tasarlayın.