• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Ajanlarda görev durumu nasıl saklanır?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 1
  • Etiketler Etiketler
    otomasyon

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Bir ajanın görev durumunu güvenilir biçimde saklamak için konuşma geçmişini tek başına yeterli görmeyin; her görev için kalıcı bir kayıt oluşturun ve ajanın her adım sonunda bu kaydı güncellemesini sağlayın. En azından görev kimliği, mevcut durum, tamamlanan adımlar, bekleyen işlem, kullanılan girdiler, hata bilgisi ve son güncelleme zamanı tutulmalıdır. Böylece işlem kesilirse ajan kaldığı adımdan devam edebilir; aynı adımı ikinci kez çalıştırmamak için de idempotency kontrolü yapılabilir.

Görev durumu neyi ifade eder?​


Görev durumu, ajanın yalnızca ne konuştuğunu değil, işi hangi aşamada bıraktığını gösteren yapılandırılmış veridir. Örneğin bir müşteri destek ajanı için durum kaydı şöyle düşünülebilir:

JSON:
{
  "task_id": "siparis-8472",
  "status": "awaiting_approval",
  "goal": "Sipariş değişikliği talebini tamamla",
  "completed_steps": [
    "Müşteri doğrulandı",
    "Sipariş bulundu"
  ],
  "pending_action": "Yeni teslimat adresi için onay bekleniyor",
  "data": {
    "order_id": "8472",
    "new_address": "Örnek Mahallesi, No: 10"
  },
  "last_error": null,
  "updated_at": "2026-11-08T10:30:00Z"
}

Buradaki status ajanın hangi aşamada olduğunu, completed_steps daha önce ne yaptığını, pending_action ise sıradaki işi gösterir. Bu kayıt, modelin belleği değildir. Model her çağrıda bu veriyi okuyarak karar verir; kalıcılığı sağlayan bölüm veritabanı, dosya, anahtar-değer deposu veya iş akışı aracıdır.

Hangi bilgiyi nerede saklamalısınız?​


Kısa süreli bağlam ile kalıcı görev kaydını ayırın. Modelin mevcut yanıtı üretmesi için gereken son mesajlar veya geçici araç çıktıları çalışma belleğinde tutulabilir. Görevin yeniden başlatılabilmesi için gereken bilgiler ise kalıcı depoya yazılmalıdır.
Bilgi türüUygun saklama yeriAmaç
Son mesajlar ve geçici araç çıktılarıÇalışma belleği veya kısa süreli önbellekMevcut model çağrısını tamamlamak
Görev aşaması ve bekleyen işlemVeritabanı veya kalıcı anahtar-değer deposuKesinti sonrası devam etmek
Araç çağrıları ve sonuçlarıOlay günlüğü veya görev geçmişiDenetim ve yeniden oynatma
Uzun vadeli kullanıcı bilgisiAyrı profil veya bilgi deposuYeni görevlerde gerektiğinde kullanmak
Görev durumunu uzun bir metin özeti olarak saklamak yerine alanları belirli bir şemaya bağlamak daha güvenlidir. Özet metni okunabilir olsa da ajanın hangi adımı tamamladığını veya hangi aracın başarıyla çalıştığını kesin olarak ayırt etmek zorlaşır.

Kalıcı durum akışı nasıl kurulmalıdır?​


Görev kaydını okuyun; dış yan etkiden önce kararlı işlem anahtarını ve işlem niyetini kalıcı kayda yazıp yürütmeyi atomik olarak ayırın. Sonucu doğruladıktan sonra tamamlanma durumunu kaydedin. Dış sistemde başarı ile yerel tamamlanma kaydı arasındaki çökme, sırf yerel atomik yazmayla çözülmez: destekleniyorsa dış servise aynı idempotency anahtarını iletin; belirsiz sonucu durum sorgusuyla uzlaştırmadan işlemi yeniden başlatmayın.
  1. Görevi benzersiz bir kimlikle başlatın. Her iş için task_id üretin; örneğin aynı kullanıcının iki farklı talebi birbirine karışmamalıdır.
  2. Mevcut durumu depodan okuyun. Kayıt yoksa created veya pending gibi başlangıç durumu oluşturun; kayıt varsa ajana son durum, bekleyen işlem ve gerekli girdileri verin.
  3. Ajanın çalışabileceği tek sonraki adımı belirleyin. Ajanın aynı çağrıda kontrolsüz biçimde çok sayıda dış işlem yapması yerine, görev kaydındaki bekleyen işlem üzerinden ilerleyin.
  4. Araç sonucunu doğrulayın. Bir API başarılı HTTP yanıtı döndürse bile iş kuralının gerçekten gerçekleştiğini kontrol edin; örneğin sipariş numarasının ve işlem durumunun beklenen değerleri taşıdığını doğrulayın.
  5. Durumu atomik biçimde güncelleyin. Araç sonucu başarılıysa completed_steps alanını ve pending_action değerini birlikte değiştirin. Eski ve yeni durumun karışmaması için atomik veritabanı işlemi kullanın. Birden fazla çalışan varsa sürümü yalnız saklamakla yetinmeyin; beklenen sürümle koşullu güncelleme yaparak çakışan geçişi reddedin.
  6. İşlem kimliğini kaydedin. Idempotency anahtarını dış çağrıdan önce saklayın; dış sistemin döndürdüğü operation_id değerini alındığında aynı kayda ekleyin. Anahtarı yalnız kaydetmek yeterli değildir; yürütücü veya dış servis tekrarı gerçekten tekilleştirmelidir.
  7. Son durumu kontrol edin. Görev tamamlandıysa completed, kullanıcı yanıtı bekleniyorsa waiting_for_input, geçici hata varsa retryable_error gibi açık bir durum yazın. Ardından kaydı yeniden okuyarak beklenen değerin gerçekten depolandığını doğrulayın.

Durum ile konuşma geçmişini karıştırmayın​


Konuşma geçmişi, ajanın önceki mesajları görmesini sağlar; fakat tek başına güvenilir bir işlem kaydı değildir. Bir mesajda “e-posta gönderildi” yazması, e-postanın gerçekten gönderildiğini kanıtlamaz. Bunun için araç yanıtı, dış sistemdeki doğrulama sonucu ve işlem kimliği ayrıca saklanmalıdır.

Benzer şekilde, uzun süreli kullanıcı tercihi ile tek bir görevin durumu aynı tabloda tutulmamalıdır. “Kullanıcı HTML e-postaları tercih ediyor” kalıcı profil bilgisidir; “bu kampanyanın taslağı onay bekliyor” ise görev durumudur. Ayrı tutulmaları, bir görevin silinmesi veya arşivlenmesinin kullanıcı profilini etkilemesini önler.

Örnek: kesintiden sonra devam etme​


Varsayımsal bir rapor ajanı üç adım çalıştırsın: veriyi alacak, raporu oluşturacak ve raporu gönderecek. Veri alma tamamlandıktan sonra şu durum kaydedilir:

JSON:
{
  "task_id": "rapor-2026-11-08",
  "status": "report_pending",
  "completed_steps": ["data_fetched"],
  "pending_action": "generate_report",
  "operation_ids": ["fetch-913"]
}

Rapor oluşturmayı sürdürebilmek için alınan veriyi veya erişilebilir kalıcı anlık görüntü bağlantısını da saklayın; fetch-913 kimliği tek başına verinin yerini tutmaz. Veri kalıcı ve erişilebilir durumdaysa ajan pending_action: generate_report adımından devam edebilir. Ancak bu kayıt yalnızca verinin alındığını kanıtlar; raporun e-posta ile gönderildiğini kanıtlamaz. Gönderim için ayrı bir araç sonucu ve operation_id tutulmalıdır.

Hatalı veya eksik durum kaydı nasıl yorumlanır?​


waiting_for_input durumu, ajanın bozulduğu anlamına gelmez; insan yanıtı veya eksik bilgi beklediğini gösterir. retryable_error, aynı işlemin güvenli koşullarda yeniden denenebileceğini belirtir; fakat dış işlemin gerçekten yapılmadığı doğrulanmadan otomatik tekrar başlatılmamalıdır. failed ise yeniden denemeden önce hata nedeni ve son başarılı adım incelenmelidir.

Bir görev beklenmedik biçimde tekrar başlıyorsa önce aynı task_id ile birden fazla kayıt oluşup oluşmadığını, son durumun araç çağrısından önce mi sonra mı yazıldığını ve işlem kimliğinin saklanıp saklanmadığını kontrol edin. Durum kaydı ile dış sistem sonucu çelişiyorsa ajanın tahminine güvenmek yerine dış sistemden gerçek durumu okuyup görevi güvenli bir ara duruma alın.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst