ReAct, LLM'lerin akıl yürütme (Thought) ile harici araç kullanımını (Action) döngüsel olarak birleştirdiği ajan prompting çerçevesidir.

ReAct (Reasoning + Acting), büyük dil modellerinin (LLM) akıl yürütme izlerini (reasoning traces) ve eylemleri (actions) birbirine kenetleyerek ürettiği bir prompting çerçevesidir. Shunyu Yao ve arkadaşları tarafından 2022 yılında yayımlanan "ReAct: Synergizing Reasoning and Acting in Language Models" makalesiyle tanıtılmıştır. Geleneksel zincir-düşünce (Chain-of-Thought) prompting'i yalnızca dahili akıl yürütmeye dayanırken, ReAct modelin aynı zamanda harici araçlarla (web arama, hesap makinesi, veritabanı sorgusu) etkileşime girmesine olanak tanır. Her adımda model önce bir düşünce üretir (Thought), ardından bir eylem gerçekleştirir (Action), sonra bu eylemin sonucunu gözlemler (Observation) ve döngü tekrarlanır. ReAct döngüsü şu şekilde işler: 1) Model mevcut bağlamı değerlendirerek sıradaki adım için bir plan düşüncesi (Thought) üretir. 2) Bir araç çağrısı veya başka bir eylem (Action) tanımlar. 3) Araçtan dönen sonucu gözlemler (Observation). 4) Gözlemi bağlama ekleyerek yeni bir Thought üretir. Bu döngü görev tamamlanana kadar devam eder. ReAct, AI ajan çerçevelerinin (LangChain, LlamaIndex, OpenAI Agents, Google Vertex AI Agents) temel akıl yürütme stratejisi olarak yaygınlaşmıştır. Özellikle açık uçlu soru cevaplama, olgusal doğrulama (fact-checking) ve çok adımlı problem çözmede saf CoT'a kıyasla belirgin doğruluk artışı sağlar. Modelin hem düşüncesini hem de eylemini izlenebilir kılması, hata ayıklamayı ve güvenilirliği artırır. Pratik uygulamada ReAct bazı zorluklarla karşılaşılır: uzun döngülerde bağlam penceresinin taşması, tekrarlanan araç çağrılarıyla oluşan eylem döngüleri (action loops) ve hatalı araç parametrelerinden kaynaklanan kırılmalar bunların başında gelir. Bu sorunlara yanıt olarak Reflexion, Plan-and-Execute ve Tree of Thoughts gibi çerçeveler geliştirilmiştir. OpenAI'nin function calling ve Anthropic'in tool use API'leri ReAct mantığını yapılandırılmış JSON araç çağrısına dönüştürerek kararlılığı önemli ölçüde artırmaktadır. 2024-2026 itibarıyla çoğu üretim ortamı ajan sistemi, ReAct'in temel Thought-Action-Observation soyutlamasını alt katman olarak korurken üzerine hafıza, paralel görev yürütme ve hata kurtarma mekanizmaları eklemektedir.

loop ReAct Döngüsü Nasıl Çalışır?

ReAct çerçevesinde model, her akıl yürütme adımını üç bileşenle üretir. Thought (Düşünce): Model, şu ana kadar edindiği bilgileri ve sıradaki adım için planını doğal dil olarak ifade eder. Bu iç monolog, dışarıdan izlenebilir ve denetlenebilir. Action (Eylem): Model, kullanabileceği araçlardan birini (arama, sorgu, hesaplama, kod çalıştırma) ve bu araca iletilecek parametreyi belirtir. Observation (Gözlem): Araçtan dönen sonuç bağlama eklenir. Model bu yeni bilgiye dayanarak bir sonraki Thought'u üretir. Döngü, model "Görev tamamlandı" kararı verene veya maksimum adım sayısına ulaşılana kadar sürer. Tüm Thought-Action-Observation zinciri, modelin neden bu kararları aldığının tam denetim kaydını oluşturur.

ReAct vs Diğer Prompting Teknikleri

chat Standart Prompting

Tek tur girdi-çıktı. Model dahili bilgisine dayanır, harici araç yok. Güncel bilgilere ve hesaplamaya erişemez.

format_list_numbered Chain-of-Thought (CoT)

Modelin adım adım düşünmesini sağlar, doğruluğu artırır. Ancak harici veri kaynakları veya araçlarla entegrasyon yoktur.

sync_alt ReAct

CoT düşüncesini harici araç kullanımıyla birleştirir. Model hem akıl yürütür hem de bilgi toplar; en güncel ve doğrulanmış yanıtları üretir.

psychology_alt Reflexion

ReAct'in üzerine inşa edilir; model geçmiş hatalarını yansıtır ve stratejisini günceller. Uzun vadeli hafıza ve öz eleştiri ekler.

apps ReAct Kullanım Alanları

  • check_circle Açık Uçlu Soru Cevaplama: Model Wikipedia, web arama veya veritabanı gibi kaynaklara erişerek güncel ve doğrulanmış yanıtlar üretir. HotpotQA ve FEVER kıyaslamalarında saf CoT'u geride bırakır.
  • check_circle Çok Adımlı Görev Planlama: ALFWorld gibi kapalı ortam simülasyonlarında ajan, her adımda ortamı gözlemleyerek planını günceller. Yazılım geliştirme ajanlarında kod çalıştırma + hata ayıklama döngüsü kurar.
  • check_circle Araç Entegrasyonu: Hesap makinesi, takvim, SQL sorgulayıcı, kod yorumlayıcı (code interpreter) gibi harici araçlarla birleştirilir. LangChain AgentExecutor ve OpenAI Assistants bunun hazır uygulamalarıdır.
  • check_circle Olgusal Doğrulama: Model iddiayı kaynaklardan bağımsız olarak kontrol eder, her doğrulama adımı izlenebilir. Yanlış bilgi üretme (hallucination) riskini önemli ölçüde azaltır.

warning Sınırlamalar ve Gelişmiş Alternatifler

ReAct çerçevesinin başlıca sınırlamaları şunlardır: Bağlam taşması — uzun döngülerde önceki Thought-Action-Observation adımları bağlam penceresine sığmaz; bu durum 4K-8K token sınırı olan modellerde özellikle belirgindir. Eylem döngüleri (action loops) — model aynı aracı tekrar tekrar çağırdığında veya hiç ilerleyemeden döndüğünde maksimum adım sınırı (max_iterations) zorunlu hale gelir. Araç hataları — yanlış parametre formatı veya beklenmedik araç yanıtları döngüyü kırabilir; sağlam hata yönetimi kritiktir.

Bu sorunlara yanıt olarak geliştirilen alternatifler: Reflexion modelin kendi hatalarını değerlendirip strateji güncellemesini içerir. Plan-and-Execute önce görevin tüm adımlarını planlar, sonra sırayla yürütür; böylece belirsizliği azaltır. Tree of Thoughts (ToT) birden fazla akıl yürütme dalını paralel araştırarak en başarılı yolu seçer. OpenAI function calling ve Anthropic tool use API'leri ise ReAct soyutlamasını yapılandırılmış JSON düzeyine taşıyarak hata oranını düşürür.

code Uygulamada ReAct: LangChain ve OpenAI Agents

  • check_circle LangChain AgentExecutor: create_react_agent(llm, tools, prompt) ile birkaç satırda ReAct ajanı kurulur. max_iterations, handle_parsing_errors ve verbose parametreleriyle döngü davranışı özelleştirilebilir.
  • check_circle OpenAI Assistants API: OpenAI'nin asistan API'si function calling aracılığıyla ReAct mantığını uygular. Her tool_call bir Action, her tool mesajı bir Observation olarak otomatik işlenir; geliştirici yalnızca araç fonksiyonlarını tanımlar.
  • check_circle LangGraph: ReAct ajanını durum makinesi (state machine) olarak modeller. Her node bir Thought, Action veya Observation adımıdır; koşullu kenarlar döngü akışını yönetir. Paralel araç çağrısı ve karmaşık hata kurtarma senaryoları için tercih edilir.
  • check_circle Sıfırdan Uygulama: Model API'sine Thought-Action-Observation formatında izler şablon olarak gönderilir; araç sonuçları bağlama Python kodu ile eklenir. Çerçeve bağımlılığı olmadan deney yapmak için uygundur.

quiz Sıkça Sorulan Sorular

  • check_circle ReAct ile AI ajan arasındaki fark nedir? ReAct bir prompting stratejisidir; AI ajan ise bu stratejiyi kullanan bir sistem tasarımıdır. Tüm ReAct ajanları ReAct kullanır ama ajan mimarisi ek bileşenler (hafıza, planlayıcı, araç kayıt defteri) de içerir.
  • check_circle ReAct hallucination'ı tamamen önler mi? Hayır, ancak önemli ölçüde azaltır. Model harici kaynaklardan bilgi aldığında doğruluk artar; ama yanlış araç çağrısı veya yanlış gözlem yorumu hâlâ hata üretebilir.
  • check_circle ReAct her LLM'de çalışır mı? Teknik olarak evet, ama etkinlik modelin instruction-following kapasitesine bağlıdır. GPT-4, Claude 3+ ve Llama 3 gibi güçlü modellerde ReAct döngüsü çok daha kararlı çalışır. Küçük modellerde Thought-Action ayrımı bozulabilir.
  • check_circle LangChain'de ReAct nasıl kullanılır? LangChain'in create_react_agent veya AgentExecutor sınıfları ile ReAct ajanı birkaç satır kodla kurulabilir. Araçlar (tools) listesi ve LLM tanımlandıktan sonra ajan otomatik Thought-Action-Observation döngüsü yürütür.
  • check_circle ReAct ile Plan-and-Execute arasındaki fark nedir? ReAct her adımda reaktif biçimde karar verir; Plan-and-Execute önce tüm planı oluşturur, sonra adımları sırayla yürütür. Belirsiz ve uzun süreli görevlerde Plan-and-Execute daha tahmin edilebilir davranış gösterir.
  • check_circle ReAct'te araç hataları nasıl yönetilir? Hata mesajı Observation olarak modele döndürülür; model bunu gözlemleyerek alternatif araç veya parametre seçer. LangChain'de handle_parsing_errors=True ayarı bu süreci otomatik olarak yönetir.