İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
RehberİleriAjan Planlaması ve Bellek

Ajan belleği ve plan katmanı kurmak

Ajan belleği üç katmana ayrılır: o turun bağlamında duran çalışma belleği, görev boyunca biriken oturum kaydı ve oturumlar arasında yaşayan kalıcı bilgi. Üçünü birden bağlama doldurmak yerine her tura yalnızca o adımın gerektirdiği parçayı getirin. Plan mesaj dizisinde değil, alanları güncellenen ayrı bir kayıtta tutulur; böylece özetleme ve kırpma planı silemez. Özetleme eşiğini sabit bir mesaj sayısına değil bağlam doluluk oranına bağlayın ve özetin hangi bilgileri kaybetmeyeceğini — kararlar, kısıtlar, kimlikler, açık sorular — önceden yazın.

ÖNKOŞULLAR

  • Araç çağıran, çalışır durumda bir ajan döngüsü ve tanımlı bir tur bütçesi
  • Her tur ve her araç çağrısı ayrı kaydedilen bir iz kaydı
  • Kalıcı bilgi için yazma erişiminiz olan bir veri deposu
  • Üretimden alınmış, uzun süren en az bir oturum kaydı

GEREKEN ARAÇLAR

  • Anahtar-değer veya belge veritabanı (kalıcı bellek için)
  • Anlamsal arama destekli bir dizin (bellek geri getirme için)
  • Belirteç sayacı — bağlam doluluğunu kalem kalem ölçmek için
  • Plan durumunu saklayacak bir durum deposu veya kuyruk
  • İz kaydı altyapısı
  1. 01

    Belleği üç katmana ayır

    Çalışma belleğini, oturum kaydını ve kalıcı bilgiyi ayrı depolarda tutun; üçünü tek mesaj dizisinde biriktiren ajan oturum uzadıkça kendi kısıtlarını unutur.

    Bellek tek bir şey değil, birbirinden ayrı üç sorunun cevabı: bu turda elde ne olmalı, bu görev boyunca ne birikti, gelecek oturumlarda ne hatırlanmalı. Üçünü tek bir mesaj dizisinde biriktirmek, en eski ve genellikle en bağlayıcı bilginin — kullanıcının ilk turda koyduğu kısıtın — ilk kırpılan şey olmasına yol açıyor.

    KatmanNe tutarNerede dururNe zaman biter
    Çalışma belleğiSıradaki adım, son turlar, getirilen parçalarModel bağlamıHer turda yeniden kurulur
    Oturum kaydıPlan, kararlar, araç sonuçları, açık sorularDurum deposuGörev kapandığında arşivlenir
    Kalıcı bilgiDoğrulanmış olgular, tercihler, üretilen çıktılarVeritabanı ve dizinSaklama süresi veya silme talebiyle
    Katman ayrımı bir zarafet değil bir silme sorunudur: "bunu unut" dendiğinde hangi depodan silineceği belli olmalı.

    Mesaj dizisine karışmış bir tercihin silinmesi pratikte mümkün değildir; ancak tüm oturumu atarak temizlenir. Katmanları en baştan ayırmanın en somut getirisi budur.

  2. 02

    Her katmana yazma kuralını tanımla

    Kalıcı belleğe yazma kendiliğinden olmasın: hangi olayın neyi yazdığını, kaydın kaynağını ve ne zamana kadar geçerli sayılacağını baştan tanımlayın.

    Kalıcı belleğe kendiliğinden yazan sistemler hızla çelişkiye düşüyor: aynı olgunun üç sürümü birikiyor ve hangisinin doğru olduğunu söyleyen bir alan bulunmuyor. Yazma bir yan etki değil açık bir karar olmalı; kararın kuralı da kodda değil, önce yazılı olarak durmalı.

    • Yazma tetikleyicisini adlandırın: kullanıcının açık talebi, doğrulanmış bir araç sonucu, kapanan bir görev.
    • Her kayda kaynak yazın: hangi oturum, hangi tur, hangi araç, hangi tarih.
    • Her kayda geçerlilik yazın: bu bilgi ne zamana kadar doğru sayılır.
    • Çelişki kuralını baştan seçin: yeni kayıt eskisini gölgeler mi, yoksa ikisi de saklanıp karar çağrı anına mı bırakılır.
    • Silme yolunu ilk günde kurun; sonradan eklenen silme, dizin ve önbellek kopyalarını yakalayamaz.
  3. 03

    Planı ayrı bir kayıt olarak tut

    Planı mesaj dizisinde değil, alanları güncellenen yapılandırılmış bir kayıtta tutun: hedef, adımlar, her adımın durumu, varsayımlar ve açık sorular.

    Plan mesaj dizisinde tutulduğunda, bağlam kırpıldığı veya özetlendiği anda kayboluyor; ajan da hedefi baştan keşfetmeye çalışıyor. Planı ayrı bir kayıt olarak tutmak bu bağı koparır: özetleme mesajları etkiler, planı etkilemez.

    yaml
    gorev_kimligi: "tedarik-analiz-0917"
    hedef: "Üç tedarikçi teklifini karşılaştır ve uygunluk notuyla özetle."
    adimlar:
      - ad: "Teklif belgelerini topla"
        durum: "tamam"
        cikti: "3 belge, oturum kaydında"
      - ad: "Uygunluk ölçütlerini çıkar"
        durum: "yurutuluyor"
      - ad: "Karşılaştırma tablosunu yaz"
        durum: "bekliyor"
    varsayimlar:
      - "Teklifler aynı para biriminde"
    acik_sorular:
      - "İkinci teklifin geçerlilik tarihi belgede yok"

    Planın iki okuyucusu var: bir sonraki tur ve insan. İkisinin de aynı kaydı okuyabilmesi hata ayıklamanın yarısını çözüyor — "ajan ne yapmaya çalışıyordu" sorusu izden değil plandan cevaplanıyor.

  4. 04

    Yürütmeyi plandan ayır

    Yürütücüye tüm planı değil sıradaki adımı ve o adımın gerektirdiği belleği verin; planı yalnızca adım başarısız olduğunda veya bir varsayım bozulduğunda güncelleyin.

    Yürütücüye tüm planı vermek iki sorun üretir: bağlamın büyük bir payı her turda plana gider ve model sıradaki adımı yapmak yerine planı yeniden tartışmaya başlar. Yürütücü yalnızca sıradaki adımı, o adımın araçlarını ve o adımın gerektirdiği bellek parçalarını görmeli.

    1. 1Planı oku

      Durumu "bekliyor" olan ilk adımı ve ona bağlı varsayımları alın.

    2. 2Bağlamı kur

      Yalnızca o adımın araç şemalarını ve sorguyla gelen bellek kayıtlarını bağlama koyun.

    3. 3Yürüt

      Adımı tek bir döngü koşusu olarak çalıştırın; tur ve çağrı bütçesi adım düzeyinde uygulansın.

    4. 4Sonucu plana yaz

      Adımın durumunu, çıktısını ve varsa yeni açık soruyu plan kaydına işleyin.

    5. 5Yeniden planla veya devam et

      Planı yalnızca adım başarısızsa ya da bir varsayım yanlışlandıysa güncelleyin.

    Yeniden planlamayı bir kurala bağlayın. Her turda planı gözden geçiren ajan turlarını iş yapmaya değil planlamaya harcıyor; hiç gözden geçirmeyen ajan ise bozulmuş bir varsayımla sonuna kadar gidiyor. Tetikleyici olarak "adım başarısız" ve "varsayım yanlışlandı" ikilisi pratikte yeterli oluyor.

  5. 05

    Bağlam bütçesini kalemlere böl

    Her turda bağlamın hangi payını sistem istemi, plan, araç şemaları, getirilen bellek ve son turların alacağını yazın; payı yazılmayan kalem sessizce düşer.

    Buradaki amaç bağlam bütçesinin tamamını tasarlamak değil, belleğin payını sabitlemek. Pay yazılmadığında kırpma sırası çalışma anında kendiliğinden oluşuyor ve en eski kalem — genellikle ilk turdaki kısıt — sessizce düşüyor.

    KalemNe içerirTaşmada davranışı
    Sistem istemi ve kurallarRol, sınırlar, çıktı biçimiKırpılmaz
    Plan özetiHedef, sıradaki adım, varsayımlarKırpılmaz
    Araç şemalarıYalnızca bu adımın araçlarıAdım dışı araçlar çıkarılır
    Getirilen bellekSorguyla gelen kalıcı kayıtlarAlaka sırasına göre azaltılır
    Son turlarHam mesajlar ve araç çıktılarıÖnce burası özetlenir
    Kırpma sırası önceden yazılmazsa çalışma anında rastgele oluşur.

    Payları ölçün: her turda kalem başına kaç belirteç harcandığını ize yazın. "Bağlam doldu" uyarısı geldiğinde hangi kalemin büyüdüğü sorusunun cevabı ölçümde olmalı, tahminde değil.

  6. 06

    Özetleme eşiğini doluluk oranına bağla

    Özetlemeyi sabit bir mesaj sayısına değil bağlam doluluk oranına bağlayın ve taşmadan önce tetikleyin; taşma anında yapılan özetleme en kritik turu keser.

    "On mesajda bir özetle" kuralı iki yönde birden yanılıyor: kısa turlarda gereksiz özet üretiyor, uzun araç çıktılarında taşmayı hiç yakalayamıyor. Doğru tetikleyici bağlam doluluk oranı ve eşik taşmadan önce gelmeli — özetlemenin kendisi de bir model çağrısıdır ve o da yer ister.

    • Aynen korunacaklar: kullanıcının kendi cümlesiyle koyduğu kısıtlar, verilen kararlar, kimlikler ve numaralar, açık sorular, geri alınamaz eylemlerin kaydı.
    • Özetlenebilecekler: araç çıktılarının gövdesi, başarısız denemelerin ayrıntısı, ara akıl yürütme.
    • Atılabilecekler: tekrar eden sistem uyarıları, aynı sonucu veren ikinci çağrının çıktısı.
    • Özetin kendisi de bir kayıttır: hangi turları kapsadığı ve ne zaman üretildiği yazılsın.
  7. 07

    Özetleme kaybını sına

    Özet üretildikten sonra, cevabı yalnızca özetlenen turlarda bulunan kontrol sorularını özete sorun; cevaplanamıyorsa özet değil kayıp üretilmiştir.

    Özetleme sessiz bir kayıp üretir: sistem çalışmaya devam eder, yalnızca cevaplar yanlışlaşır. Bu yüzden özet üretildiği anda sınanmalı; sonradan fark edilen kayıp zaten bir üretim hatasıdır.

    1. 01Özetlenen turlardan, cevabı yalnızca o turlarda bulunan beş kontrol sorusu çıkarın.
    2. 02Soruları yalnızca özeti gören bir bağlama sorun.
    3. 03Cevaplanamayan her soru için kaybın sınıfını belirleyin: kısıt, kimlik, karar ya da ayrıntı.
    4. 04Kısıt, kimlik veya karar sınıfında kayıp varsa özetleme istemini düzeltip testi tekrarlayın.
    5. 05Özetleme istemi her değiştiğinde testi yeniden koşun.

    Bu test bir değerlendirme hattının yerini tutmaz; yalnızca tek bir bileşenin kaybını ölçer. Ama uzun oturum hatalarının kayda değer bir bölümü bu bileşende doğduğu için en ucuz teşhis aracı da budur.

  8. 08

    Kalıcı belleği geri getirmeyle oku

    Kalıcı belleği her tura olduğu gibi eklemeyin; görevle ilgisine ve tazeliğine göre sorgulayıp yalnızca eşleşen kayıtları kaynağıyla birlikte bağlama koyun.

    Kalıcı belleği olduğu gibi eklemek, bellek katmanını bir bağlam yüküne çevirir ve ilgisiz kayıtlar modeli yanlış yöne çeker. Bellek de belge gibi sorgulanmalı; ama belgeden iki farkı var: tazelik ve sahiplik. Bir belge eskimeden doğru kalabilir, bir tercih eskidiği anda yanlışa döner.

    • Sorguyu görevden üretin: sıradaki adımın hedefi, geçen varlık adları ve kimlikler.
    • Tazeliği sıralamaya katın: aynı olgunun yeni kaydı eskisinin önüne geçsin.
    • Kaynağı birlikte getirin; çelişki ancak kaynakla çözülür.
    • Getirilen kayıt sayısına üst sınır koyun; sınır yoksa bellek payı diğer kalemleri yiyor.
  9. 09

    Bellekli ve belleksiz aynı görevi koştur

    Aynı görev setini bellek katmanı açık ve kapalıyken koşturup karşılaştırın; bellek her zaman iyileştirmez, eski bir kayıt yeni talimatı bastırabilir.

    Bellek eklemek her zaman iyileştirmiyor. Eski bir tercih yeni talimatı bastırabiliyor, ilgisiz bir kayıt planı saptırabiliyor, getirilen parçalar bağlamı doldurup asıl kısıtı dışarı itebiliyor. Bu yüzden bellek, açılıp kapatılabilir bir bileşen olarak kurulmalı.

    • Aynı görev setini bellek açık ve kapalıyken koşturun; farkı tek bir ortalamada değil görev görev okuyun.
    • Bellek yüzünden bozulan görevleri ayrı bir listede toplayın; bunlar getirme kuralınızın hatasıdır.
    • Tur sayısını da karşılaştırın: bellek işe yarıyorsa aynı sonuca daha az turda varılmalı.
    • Sonucu yazılı bırakın; bellek istemi veya getirme kuralı değiştiğinde karşılaştırma tekrarlanır.

    Karşılaştırmanın kurulumu ayrı bir işin konusu: görev seti, beklenen son durum ve puanlama bir değerlendirme hattı gerektiriyor. Burada gereken tek disiplin şu — bellek bir varsayım olarak değil, açılıp kapatılabilir bir değişken olarak kurulmalı.

SIK DÜŞÜLEN TUZAKLAR

  • Planı mesaj dizisinde tutmak

    Özetleme veya kırpma planı sildiğinde ajan hedefi kaybeder ve baştan başlar. Kaybın sinyali de yoktur: koşu devam ediyor, yalnızca yanlış yöne gidiyordur.

  • Her şeyi kalıcı belleğe yazmak

    Çelişen kayıtlar birikir ve yanlış olan da kalıcıdır. Silme yolu olmayan bir bellek zamanla faydadan çok zarar üretmeye başlar.

  • Özetlemeyi taşma anında yapmak

    Taşma anında tetiklenen özetleme en yeni ve genellikle en kritik turu keser; üstelik özetleme çağrısının kendisine de yer kalmamıştır.

  • Bellek kaydını kaynaksız tutmak

    Hangi turda hangi araçtan geldiği yazılmayan bir kayıt yanlış çıktığında bulunamaz; çelişkiyi çözecek hiçbir ölçüt kalmaz.

  • Bellek eklendi diye kaliteyi ölçmemek

    Bellek bazı görevlerde bozuyor. Açık ve kapalı karşılaştırması yapılmadan eklenen katman, iyileştirme değil bir varsayımdır.

KONTROL LİSTESİ

  • Üç bellek katmanı ayrı depolarda; yazma kuralı ve kaynak alanı tanımlı
  • Kalıcı bellekte saklama süresi ve silme yolu var
  • Plan mesaj dizisinden ayrı, yapılandırılmış bir kayıtta tutuluyor
  • Yürütücü tüm planı değil sıradaki adımı görüyor
  • Bağlam kalemlerinin payı yazılı ve tur başına ölçülüyor
  • Özetleme eşiği doluluk oranına bağlı ve taşmadan önce tetikleniyor
  • Özet kaybı kontrol sorularıyla sınandı ve kayıp sınıfı raporlandı
  • Kalıcı bellek sorguyla getiriliyor; bellekli ve belleksiz karşılaştırma yapıldı

Maddelerin tamamı işaretlenmeden kurulum üretime alınmamalı.

Sık sorulan sorular

Ajan belleği ile RAG aynı şey mi?

Aynı değil, mekanizmaları benziyor. RAG kurumsal belgeleri sorguyla getirir; ajan belleği ise ajanın kendi ürettiği ve doğruladığı kayıtları getirir. Fark yazma tarafında: belge deposuna ajan yazmaz, belleğe yazar. Bu yüzden belleğin RAG'de bulunmayan iki sorusu var — neyin yazılacağı ve çelişkinin nasıl çözüleceği.

Sohbet geçmişini ne zaman özetlemeli?

Sabit bir mesaj sayısında değil, bağlam doluluk oranı eşiği aştığında ve tercihen bir adım bittiğinde. Taşma anında özetlemek en yeni ve genellikle en kritik turu kesiyor. Özetleme öncesinde hangi bilgilerin aynen korunacağı — kısıtlar, kararlar, kimlikler, açık sorular — yazılı olmalı.

Ajan önceki oturumu hatırlamalı mı?

Görevine bağlı. Tekrarlayan ve kişiye özel işlerde kalıcı bellek karşılığını veriyor; tek seferlik ve birbirinden bağımsız görevlerde eski kayıt çoğunlukla gürültü. Ayrıca kullanıcıya ait kalıcı bellek kişisel veridir: saklama süresi, amaç ve silme yolu tanımlanmadan açılmamalı.

Plan katmanı ayrı bir model gerektirir mi?

Hayır. Gereken ayrı bir model değil, ayrı bir kayıt ve ayrı bir çağrı: plan yapılandırılmış bir durum olarak saklanır, yürütme yalnızca sıradaki adımı görür. Aynı model iki farklı istemle her iki rolü de üstlenebilir; ayrımın değeri modelde değil, planın özetlemeden ve kırpmadan etkilenmemesindedir.

Kaynaklar

  1. 01Sağlayıcıların ajan ve bağlam yönetimi dokümantasyonları — Model sağlayıcıları · Dokümantasyon
  2. 02Sinaptik Research — uzun oturum bellek notları — Sinaptik Lab · Teknik rapor

BUILD

Bu rehberi kurumunuzda uygulayalım mı?

Aynı mimariyi kendi verinizle kurmak için discovery oturumundan üretime kadar birlikte ilerliyoruz.