Karmaşık, çok adımlı hedefleri ele alabilen otonom ajanlar oluşturmak, modern yapay zekânın en zorlu sorunlarından biridir. Standart pekiştirmeli öğrenme veya istem tabanlı ajanlar, arama uzayının adım sayısı ile üstel olarak büyümesi nedeniyle "uzun vadeli" görevlerde genellikle zorlanır. Bunu çözmek için Hiyerarşik Görev Ayrıştırma ile Dinamik Yeniden Planlama yöntemlerini bir arada uyguluyoruz. Bu yaklaşım, üst düzey hedefleri yönetilebilir alt görevlere böler ve gerçek zamanlı geri bildirimlere dayalı olarak planı sürekli olarak ayarlar.
Hiyerarşik Ayrıştırmanın Gücü
Bir ajana "Bir web sitesi oluştur" görevini tek seferde çözmeyi söylemek yerine, bunu "Arayüz Tasarla," "Arka Ucu Yaz" ve "Yayınla" olarak ayrıştırıyoruz. Hiyerarşinin her seviyesi farklı bir zaman ölçeğinde çalışır. En üst seviye (Planlayıcı) stratejik hedeflerle ilgilenirken, alt seviyeler (Yürütücüler) taktiksel eylemleri yönetir. Bu endişelerin ayrıştırılması bilişsel yükü azaltır ve modüler hata yönetimine olanak tanır.
Örneğin, bir seyahat planlama ajanını düşünelim. Üst düzey hedef "Tokyo'ya 3 günlük bir seyahat planla" olabilir. Ayrıştırılmış alt görevler şunlar olabilir: "Uçuş bul," "Otel ayarla" ve "İtinerer oluştur." Uçuş rezervasyonu başarısız olursa, ajan tüm seyahat planlama sürecini baştan başlatmak zorunda değildir; yalnızca uçuş bileşenini yeniden planlaması gerekir.
Planlayıcı-Yürütücü Döngüsünü Uygulama
Bu mimarinin çekirdeği, Planlayıcının alt görevler listesi oluşturduğu ve Yürütücünün bunları tamamlamaya çalıştığı özyinelemeli bir döngüdür. Kritik olan nokta, sistemin yeniden planlamayı tetiklemek için başarısızlıkları veya çevresel değişiklikleri izlemesidir.
Aşağıda, yapıyı göstermek için sözde bir LLM arayüzü kullanan basitleştirilmiş bir Python uygulaması bulunmaktadır:
class Agent:
def __init__(self):
self.state = {}
self.tasks = []
def plan(self, goal):
"""Hedefi alt görevlere ayrıştır."""
print(f"Planlama yapılıyor: {goal}")
# LLM akıl yürütmesini simüle et
if "seyahat" in goal:
return ["Uçuş Bul", "Otel Ayarla", "İtinerer Oluştur"]
return ["Görevi Yap"]
def execute_task(self, task):
"""Tek bir alt görevi yürütmeye çalış."""
print(f"Yürütülüyor: {task}")
# Yürütme başarısızlığını veya başarısını simüle et
success = "Uçuş" not in task # Uçuş rezervasyonu başarısızlığını simüle et
return success
def run(self, goal):
self.tasks = self.plan(goal)
for task in self.tasks:
if not self.execute_task(task):
print(f"'{task}' görevi başarısız oldu. Yeniden planlanıyor...")
# Dinamik Yeniden Planlama: Bağlamı güncelle ve yeniden ayrıştır
new_goal = f"{goal} için alternatif uçuş bul"
self.tasks = self.plan(new_goal)
break # Yeni alt görevlerle yeniden başlat veya devam et
Dinamik Yeniden Planlama: Belirsizliği Yönetme
Statik planlar dinamik ortamlarda başarısız olur. Dinamik yeniden planlama bir geri bildirim döngüsü getirir. Her yürütme adımından sonra ajan, mevcut durumu beklenen sonuçla karşılaştırır. Bir tutarsızlık tespit edilirse (örneğin, bir web sitesi kapalıysa veya bir araç hata döndürüyorsa), ajan bir yeniden planlama olayı tetikler.
Etkili yeniden planlama için temel stratejiler şunlardır:
- Bağlam Budama: Başarısız adımları bağlam penceresinden kaldırarak jeton tasarrufu sağlayın ve kafa karışıklığını azaltın.
- Alternatif Yönlendirme: LLM'ye aynı mantığı tekrarlamak yerine, başarısız olan alt görev için alternatif bir yöntem önermesini talimat verin.
- Durum Doğrulama: Ajanın "başarı" iddiasının sistem durumuyla gerçekten eşleştiğini doğrulamak için deterministik kod kullanın.
Pratik Örnek: Kod Hata Ayıklama Ajanı
Bozuk bir Python betiğini düzeltmekle görevlendirilmiş bir ajanı hayal edin. Üst düzey hedef "Hataları düzelt" olabilir. Ayrıştırma şu şekilde görünebilir:
- Hata günlüklerini analiz et.
- Sorunlu işlevi belirle.
- Bir yama oluştur.
- Düzeltmeyi doğrulamak için testleri çalıştır.
4. Adım başarısız olursa, ajan dinamik olarak yeniden planlar. Aynı yamayı yeniden oluşturmak yerine, LLM'ye şu talimatı verir: "Test X çıktısıyla başarısız oldu. Önceki yamanın neden yetersiz olduğunu analiz et ve yeni bir hipotez oluştur." Bu iteratif iyileştirme, tek seferlik yaklaşıma kıyasla başarı oranını önemli ölçüde artırır.
Sonuç
Hiyerarşik görev ayrıştırma ve dinamik yeniden planlama, sağlam ve uzun vadeli yapay zekâ ajanları oluşturmak için vazgeçilmezdir. Karmaşık sorunları yönetilebilir parçalara bölerek ve başarılara uyum sağlama esnekliğini koruyarak, geliştiriciler yalnızca daha yetenekli değil, aynı zamanda daha verimli ajanlar oluşturabilir. LLM akıl yürütme yetenekleri geliştikçe, bu mimari kalıplar, üretim ortamlarında gerçekten otonom sistemlerin dağıtımı için standart haline gelecektir.