Yapay Zeka Ajanları Neden Döngüsel Çalışır?
Bir yapay zeka ajanına “Bana yarınki hava durumunu söyle ve ona göre kıyafet öner” dediğinizde, arka planda tek bir LLM çağrısı değil, sistematik bir süreç işler. Ajanın “plan oluştur → uygula → kontrol et” döngüsü kurma mantığı, tam da bu noktada devreye girer. Ajan önce görevi parçalara ayırır, ardından her adımı sırayla uygular ve sonucu değerlendirerek bir sonraki hamlesini belirler.
Bu yaklaşım, LangChain ekibinin “Plan-and-Execute” mimarisi olarak tanımladığı yapının temelini oluşturur. Pratikte en sık görülen uygulama şekli şudur: LLM + Döngü + Araçlar. Kulağa basit geliyor, değil mi? Ancak bu basitlik, doğru kurgulandığında son derece güçlü sonuçlar üretir.
Kilit Çıkarım: Ajan döngüsü, tek seferlik yanıt veren bir chatbot’tan farklı olarak, karmaşık görevleri otonom şekilde tamamlayabilen bir sistem yaratmanızı sağlar.
Başlamadan Önce
Ajan döngüsü kurmaya geçmeden önce bazı hazırlıkları tamamlamanız gerekiyor. Eksik bir parça, tüm sistemin hatalı çalışmasına yol açabilir.
Gerekenler
- Python 3.9+ kurulu bir ortam
- OpenAI, Anthropic veya yerel LLM API erişimi
- LangChain veya LangGraph kütüphanesi (pip install langchain langgraph)
- Temel prompt mühendisliği bilgisi
- Ajanın kullanacağı en az 1-2 araç (web arama, hesap makinesi, dosya okuma vb.)
Ön Koşullar
- API anahtarlarınızın environment variable olarak tanımlı olması
- Sanal ortam (venv) aktif durumda
- Rate limit’lere dikkat: Test aşamasında çok sayıda API çağrısı yapacaksınız
Süre: İlk çalışan prototipi 2-3 saat içinde kurabilirsiniz. Production-ready bir sistem için 1-2 hafta ayırın. Maliyet: GPT-4 kullanıyorsanız test başına ortalama $0.05-0.20 arası harcama bekleyin. Risk Seviyesi: Düşük-Orta. Döngü kontrolsüz kalırsa sonsuz loop’a girebilir.
Plan-Execute-Check Döngüsünü Adım Adım Kurma
Şimdi ajan döngüsünü sıfırdan inşa edelim. Her adımı dikkatle takip et; atladığın bir nokta sistemin çökmesine neden olabilir.
- Planlayıcı (Planner) Modülünü Oluştur: İlk adımda, kullanıcının isteğini alt görevlere bölen bir LLM çağrısı yaz. Prompt’ta “Bu görevi tamamlamak için hangi adımları izlemeliyim?” sorusunu sor. Çıktıyı JSON formatında al ki parse etmesi kolay olsun.
- Executor (Uygulayıcı) Katmanını Kur: Her alt görev için uygun aracı çağıran bir fonksiyon yaz. Araç seçimi için LLM’e “Bu adımı tamamlamak için hangi aracı kullanmalıyım?” sorusunu yönelt. Tool calling özelliğini aktif et.
- Checker (Kontrol) Mekanizmasını Ekle: Her adım sonrasında LLM’e “Bu adım başarılı mı? Hedefe yaklaştık mı?” sorusunu sor. Yanıta göre üç yol belirle: devam et, tekrar dene veya planı revize et.
- State Management (Durum Yönetimi) Kur: Ajanın hangi adımda olduğunu, önceki çıktıları ve kalan görevleri tutan bir state objesi oluştur. LangGraph kullanıyorsan StateGraph sınıfını tercih et.
- Döngü Koşullarını Tanımla: Maksimum iterasyon sayısı (örn: 10), timeout süresi ve başarı kriterleri belirle. Bu olmadan ajan sonsuza kadar dönebilir.
- Error Handling Ekle: API hataları, timeout’lar ve beklenmeyen çıktılar için try-except blokları yaz. Hata durumunda ajanın graceful şekilde durmasını sağla.
Pro İpucu: Döngü sayacını her zaman logla. Debugging sırasında ajanın kaçıncı iterasyonda takıldığını görmek, sorunu çözmenin yarısıdır.
Temel Kod Yapısı
Aşağıdaki yapı, plan-execute-check döngüsünün iskeletini gösteriyor:
“`python class AgentLoop: def __init__(self, llm, tools, max_iterations=10): self.llm = llm self.tools = tools self.max_iterations = max_iterations
def plan(self, task): # Görevi alt adımlara böl return self.llm.invoke(f”Plan oluştur: {task}”)
def execute(self, step): # Uygun aracı seç ve çalıştır tool = self.select_tool(step) return tool.run(step)
def check(self, result, goal): # Sonucu değerlendir return self.llm.invoke(f”Başarılı mı? Sonuç: {result}, Hedef: {goal}”)
def run(self, task): plan = self.plan(task) for i, step in enumerate(plan.steps): if i >= self.max_iterations: break result = self.execute(step) status = self.check(result, task) if status == “complete”: return result return “Max iteration reached” “`
Bu yapıyı kendi ihtiyaçlarınıza göre genişletebilirsiniz. Önemli olan üç temel fonksiyonun (plan, execute, check) birbirinden ayrı ve test edilebilir olmasıdır.
Şu Durumda Ne Yaparsın?
Senaryo: Ajanın 5. iterasyonda aynı aracı tekrar tekrar çağırdığını fark ettin. Çıktı her seferinde aynı, ama ajan “başarısız” deyip tekrar deniyor.
Çözüm: Bu klasik bir “stuck loop” durumu. Checker modülüne “Son 3 sonuç aynıysa farklı bir strateji öner” koşulu ekle. Alternatif olarak, aynı araç ardışık 3 kez çağrıldığında otomatik olarak bir üst plana dön ve yeniden planla.
ReAct vs Plan-and-Execute: Hangisini Seçmeli?
İki popüler ajan mimarisi arasında seçim yaparken görev tipine bakın:
| Özellik | ReAct (Reason + Act) | Plan-and-Execute |
|---|---|---|
| Çalışma Mantığı | Düşün → Hareket et → Gözlemle (her adımda) | Önce tüm planı yap → Sırayla uygula |
| Uygun Görevler | Kısa, dinamik görevler | Uzun, çok adımlı görevler |
| Token Tüketimi | Daha az (adım başına) | Daha fazla (plan aşamasında) |
| Esneklik | Yüksek (anlık adaptasyon) | Orta (plan revizyonu gerekir) |
| Hata Toleransı | Orta | Yüksek (checkpoint’ler sayesinde) |
Kilit Çıkarım: Basit soru-cevap için ReAct yeterli. Araştırma raporu hazırlama, çoklu API entegrasyonu gibi karmaşık işler için Plan-and-Execute tercih edin.
Sıkça Sorulan Sorular
Ajan döngüsü sonsuz loop’a girerse ne olur?
Max iteration limiti ve timeout mekanizması bu riski minimize eder. Ayrıca her iterasyonda token sayısını takip edip belirli bir eşiği aşınca durdurmak da etkili bir yöntemdir.
Hangi LLM modeli ajan döngüsü için en uygun?
GPT-4, Claude 3 ve Gemini Pro gibi modeller tool calling konusunda başarılı. Yerel modeller arasında Llama 3 ve Mistral iyi sonuçlar veriyor, ancak prompt’ları daha dikkatli yazmanız gerekir.
Ajan döngüsünü test etmenin en iyi yolu nedir?
Önce mock araçlarla (gerçek API çağrısı yapmayan sahte fonksiyonlar) test edin. Döngü mantığı doğru çalıştığından emin olduktan sonra gerçek araçlara geçin. Bu yaklaşım hem maliyet hem de debugging açısından avantaj sağlar.
Birden fazla ajan birlikte çalışabilir mi?
Evet, multi-agent sistemlerde her ajan kendi döngüsünü çalıştırır ve bir orkestratör ajan koordinasyonu sağlar. LangGraph’ın StateGraph yapısı bu tür sistemler için idealdir.
Özetle
Yapay zeka ajanlarının “plan oluştur → uygula → kontrol et” döngüsü, karmaşık görevleri otonom şekilde çözmenin temel yapı taşıdır. Bu yazıda ele aldığımız adımları özetleyelim:
- Planlayıcı modül görevi alt parçalara böler
- Executor her adımı uygun araçla çalıştırır
- Checker sonucu değerlendirir ve yönlendirir
- State management tüm süreci takip eder
- Güvenlik mekanizmaları (max iteration, timeout) sonsuz döngüyü engeller
İlk prototipinizi basit tutun: tek bir araç, maksimum 5 adımlık görevler. Sistem stabil çalışmaya başladıktan sonra karmaşıklığı artırın. Ajan geliştirme iteratif bir süreçtir; mükemmel sistemi ilk seferde kurmaya çalışmak yerine, çalışan bir temel üzerine inşa edin.