ReAct Pattern (Reasoning + Acting) 2026: Türkçe Derin Teknik Rehber — Akademiden Production'a

## 1. Giriş: ReAct Nedir, Neden Devrim? ### 1.1 Modern Agentic AI'ın Doğuşu ReAct, 2022 yılında **agentic AI** alanını dönüştürdü. Önceden: - **Chain-of-Thought:** Sadece düşünme (içsel akıl yürütme) - **Tool-use papers:** Tool kullanma ama düşünce zayıf - **ReAct:** İkisini BİRLEŞTİRDİ — düşün, sonra hareket et, sonucu gör, tekrar düşün. ### 1.2 Bu Rehberin Farkı (1) **Tam akademik temel** — Yao 2022 paper detayı + sonraki 5 ana evrim paper (2) **5 ReAct varyantı** — sadece Vanilla değil MRKL, Self-Ask, ReWOO, Plan-and-Execute (3) **CoT vs ReAct vs Tool Use detaylı karşılaştırma** — ne zaman hangisi (4) **25+ Türkçe pratik örnek** — web araştırma, hukuki sorgu, Türk şirket use case (5) **Production code patterns** — LangChain, LangGraph, Anthropic SDK (6) **Error handling derin analizi** — infinite loops, max iterations, tool failure (7) **Maliyet optimization** — token usage 5-15x artar, nasıl kontrol (8) **Observability + debug** — LangSmith trace patterns ## 2. CoT vs ReAct — Fundamental Fark ### 2.1 Chain-of-Thought Hatırlatma CoT, modelin SADECE içsel düşünce zincirini açıkça yazmasını sağlar: Soru: "İstanbul'da bugün hava nasıl?" CoT cevap: "Adım adım düşüneyim. İstanbul Türkiye'de büyük bir şehir. Hava değişkenlik gösterir. Hava durumu API'sine erişimim yok, bu yüzden..." **Sorun:** CoT modelin BİLDİĞİ ile sınırlı. Güncel bilgi yok, dış dünya etkileşimi yok. ### 2.2 ReAct Çözümü Aynı soruyu ReAct ile: **Thought 1:** İstanbul'un bugünkü havasını bilmek için bir hava durumu API'sini sorgulamalıyım. **Action 1:** weather_api("İstanbul") **Observation 1:** "İstanbul, 15 Mart 2026: 14°C, parçalı bulutlu, nem %65" **Thought 2:** Şimdi bu bilgiyi kullanıcıya doğal dilde sunabilirim. **Answer:** İstanbul'da bugün 14°C, parçalı bulutlu, nem %65. **ReAct'ın gücü:** Düşünce + dış dünya etkileşim → güncel, doğru, multi-step cevaplar. ### 2.3 Karşılaştırmalı Tablo ## 3. Yao et al. 2022 — Tarihi Paper ### 3.1 Paper Detayları **Başlık:** ReAct: Synergizing Reasoning and Acting in Language Models **Yazarlar:** Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao **Yayın:** ICLR 2023 (Mart 2022'de arxiv'e yüklendi) **Kurumlar:** Princeton University + Google Research ### 3.2 Ana Bulgular **Benchmark performansı:** **AlfWorld 71% sıçraması özellikle dikkat çekici** — text-based household task ortamında ReAct CoT'tan 54 puan üstün. ### 3.3 Paper'ın Önemli Tespitleri **(1) CoT yalnız hallucination üretir** — model bilmediği bilgiyi uydurur. ReAct dış doğrulama getirir. **(2) Tool-use yalnız reasoning eksik** — sadece tool çağırmak hangi tool'u, hangi sırada karar vermiyor. **(3) Sinerji etkisi** — düşünce + eylem birleşik, ayrı ayrıdan çok daha iyi. **(4) Few-shot örnekler kritik** — ReAct prompt mühendisliği few-shot örneklerle çalışıyor. **(5) Insanın kontrol edilebilir** — Thought adımları görülebilir = debug edilebilir. ## 4. Thought-Action-Observation Döngüsü Detayı ### 4.1 Standart ReAct Format ReAct prompt'ı şu yapıyı izler: Thought: [Modelin ne düşündüğü] Action: [Hangi tool, hangi argümanlarla] Observation: [Tool çıktısı] Bu üçlü her döngüde tekrar eder, sonunda: Thought: Tüm bilgiyi topladım. Answer: [Final cevap] ### 4.2 Klasik Örnek (Yao paper) **Soru:** "Aside from the Apple Remote, what other devices can control the program Apple Remote was originally designed to interact with?" **ReAct çıktısı:** Thought 1: I need to search Apple Remote and find the program it was originally designed to interact with. Action 1: Search[Apple Remote] Observation 1: The Apple Remote is a remote control introduced in October 2005 by Apple. It was originally designed to control the Front Row media center program on the iMac G5. Thought 2: Apple Remote was originally designed to control Front Row. I need to search Front Row. Action 2: Search[Front Row] Observation 2: Front Row is a discontinued media center software. It is controlled by the Apple Remote or keyboard function keys. Thought 3: Front Row is controlled by Apple Remote and keyboard function keys. So keyboard function keys can also control Front Row. Answer: Keyboard function keys. ### 4.3 Yapısal Anatomi ### 4.4 Türkçe ReAct Örneği **Soru:** "Trendyol'un 2025 cirosu ne kadardı? Bu rakam 2024'ten ne kadar değişti?" **ReAct çıktısı:** Thought 1: Trendyol'un 2025 cirosunu bulmak için web search yapmalıyım. Action 1: web_search("Trendyol 2025 yıllık ciro açıklaması") Observation 1: Trendyol 2025 yıllık ciro 200 milyar TL açıklandı (Şubat 2026 raporu). Thought 2: 2024 cirosunu da bulmalıyım karşılaştırma için. Action 2: web_search("Trendyol 2024 yıllık ciro") Observation 2: Trendyol 2024 cirosu 142 milyar TL (Şubat 2025 raporu). Thought 3: Şimdi hesaplama yapayım. 200 - 142 = 58 milyar artış. Yüzde olarak: 58/142 = %40.8. Action 3: calculator(58 / 142 * 100) Observation 3: 40.8451 Thought 4: Bilgi tamamlandı. Final cevap hazır. Answer: Trendyol'un 2025 cirosu 200 milyar TL oldu, 2024'teki 142 milyar TL'ye göre %40.8 artış gösterdi. ## 5. 5 ReAct Varyantı Detaylı ### 5.1 Varyant 1: Vanilla ReAct Orijinal Yao 2022 paper'daki standart yaklaşım. Thought-Action-Observation döngüsü, max iteration (genelde 5-15). **Use case:** Genel amaçlı multi-step QA, web research. **Strengths:** Basit, anlaşılır, debug edilebilir. **Weaknesses:** Maliyet artar her döngüde, infinite loop riski. ### 5.2 Varyant 2: MRKL (Modular Reasoning Knowledge Language) **Pattern:** Genel LLM + Specialized Modules (matematik için calculator, fact için database, vb.) **Avantajı:** Spesifik domain'lerde uzman tool'lar daha doğru. ### 5.3 Varyant 3: Self-Ask **Pattern:** Soru: "Joe Biden ABD'nin 46. başkanı oldu. 45. başkan kimdi?" Are follow-up questions needed? Yes. Follow-up: Who was the 45th US president? Intermediate answer: Donald Trump. So the final answer is: Donald Trump. **Avantajı:** Multi-hop reasoning'i daha doğal kurar. ### 5.4 Varyant 4: ReWOO (Reasoning WithOut Observation) **Pattern:** Plan: 1. plan_1 = web_search("Trendyol 2025 ciro") 2. plan_2 = web_search("Trendyol 2024 ciro") 3. plan_3 = calculator(plan_1 - plan_2) 4. Synthesize all results into answer Execute all → Final answer. **Avantajı:** Maliyet düşük, latency düşük (paralel execution). **Dezavantajı:** Plan'da hata varsa, sonradan düzeltemez. ### 5.5 Varyant 5: Plan-and-Execute (LangChain) LangChain'in introduce ettiği pattern. Önce planner LLM bir plan oluşturur (multiple steps), executor LLM bu planı sırayla uygular. **Pattern:** Planner: Step 1: Search Trendyol 2025 revenue. Step 2: Search Trendyol 2024 revenue. Step 3: Calculate difference. Step 4: Format answer. Executor: Her step'i sırayla yapar. **Avantajı:** Net planlama + execution ayrımı. Plan'ı insan onaylayabilir. ### 5.6 Karşılaştırma Tablosu ## 6. Modern LangChain ReAct Implementation ### 6.1 Basit ReAct Agent (Python)
from langchain.agents import AgentExecutor, create_react_agent
from langchain_anthropic import ChatAnthropic
from langchain.tools import Tool
from langchain_community.tools import DuckDuckGoSearchRun

# Tools tanımla
search = DuckDuckGoSearchRun()
tools = [
Tool(name="Search", func=search.run, description="Web search yapar")
]

# Model
llm = ChatAnthropic(model="claude-sonnet-4-5")

# ReAct agent oluştur
agent = create_react_agent(llm, tools, prompt=react_prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True, max_iterations=10)

# Çalıştır
result = executor.invoke({"input": "Trendyol'un 2025 cirosu ne kadar?"})

### 6.2 LangGraph State Machine (Modern Pattern) LangGraph 2024-2026'da ReAct'ın yerini almaya başladı — daha esnek, debug edilebilir state machine:
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, Sequence

class AgentState(TypedDict):
messages: Annotated[Sequence, "Conversation history"]
next_step: str

def reason(state):
# Model düşünce üret
response = llm.invoke(state['messages'])
return {"messages": state['messages'] + [response], "next_step": parse_next(response)}

def act(state):
# Tool çağır
tool_result = call_tool(state['next_step'])
return {"messages": state['messages'] + [tool_result]}

# Graph oluştur
workflow = StateGraph(AgentState)
workflow.add_node("reason", reason)
workflow.add_node("act", act)
workflow.add_edge("reason", "act")
workflow.add_conditional_edges("act", lambda s: "reason" if needs_more(s) else END)
workflow.set_entry_point("reason")

app = workflow.compile()

### 6.3 OpenAI Function Calling Pattern OpenAI 2023'te native function calling ekledi — JSON-tabanlı ReAct varyantı:
from openai import OpenAI

client = OpenAI()

tools = [
{
"type": "function",
"function": {
"name": "web_search",
"description": "Web search yapar",
"parameters": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"]
}
}
}
]

messages = [{"role": "user", "content": "Trendyol 2025 ciro nedir?"}]
response = client.chat.completions.create(
model="gpt-5",
messages=messages,
tools=tools,
tool_choice="auto"
)

# Eğer tool call gerek
if response.choices[0].message.tool_calls:
for tc in response.choices[0].message.tool_calls:
result = execute_tool(tc.function.name, tc.function.arguments)
messages.append({"role": "tool", "content": result, "tool_call_id": tc.id})
# Final response
final = client.chat.completions.create(model="gpt-5", messages=messages)

## 7. Tool Tasarımı — En Önemli Konu ### 7.1 İyi Tool 8 Prensibi **(1) Atomic** — Bir tool tek bir iş yapsın. "search_web_and_summarize" yerine "search_web" + "summarize" ayrı. **(2) Net description** — LLM tool ne yaptığını description'dan anlar. "Search" yetmez, "Web'de güncel bilgi arar ve top 5 sonucu döndürür" gibi. **(3) Strict parametre schema** — JSON schema ile parametreler net. Required vs optional belirgin. **(4) Determinstic output format** — Aynı input → aynı output. Random ya da timestamp varsa belirt. **(5) Error handling** — Tool fail olursa structured error: "Error: API timeout" gibi. Model bunu parse edip retry edebilir. **(6) Idempotent** — Aynı çağrı yan etki yapmasın (DB write değil DB read). **(7) Bounded execution** — Timeout, max input size. Infinite loop önle. **(8) Auditable** — Her tool call log'la. Debug için kritik. ### 7.2 Tool Description Örnekleri (Türkçe) **Kötü description:** "Search" **İyi description:** "web_search: Verilen sorgu için DuckDuckGo'da güncel web araması yapar. Argüman: query (string, aranacak metin). Çıktı: Top 5 sonucun başlık + URL + 2-3 cümlelik özet listesi. Kullanım: gerçek dünya bilgisi, güncel olaylar, tarihler, istatistikler için." **Çok iyi description (with example):** "web_search: Web araması yapar. Parametreler: - query (string, required): Aranacak metin (Türkçe veya İngilizce) - num_results (int, opsiyonel, default 5): Kaç sonuç dönsün Çıktı: JSON list [{"title": "...", "url": "...", "snippet": "..."}, ...] Kullanım örneği: web_search(query="Trendyol 2025 ciro", num_results=3) Ne zaman kullan: - Güncel bilgi (eğitim verisinden sonra olaylar) - İstatistik, finansal veri - Şirket bilgileri Ne zaman KULLANMA: - Genel matematik - Bilinen kavram açıklama - Yaratıcı yazım" ### 7.3 Yaygın Tool Tipleri ## 8. 25+ Türkçe Pratik ReAct Örnek ### 8.1 Web Araştırma + Sentez **Görev:** "Türk fintech sektörünün 2025 büyüme verilerini bul ve özetle." **ReAct trace:** Thought 1: Türk fintech sektörü 2025 verisi için web search yapmalıyım. Action 1: web_search("Türk fintech sektörü 2025 büyüme TÜBİSAD") Observation 1: TÜBİSAD raporu - Türk fintech 2025'te 18 milyar TL büyüklüğe ulaştı, %35 büyüme. Thought 2: Daha detaylı veri için ek araştırma. Action 2: web_search("Türk fintech 2025 yatırım sayısı startup") Observation 2: 2025'te 45 yeni fintech startup, $200M+ yatırım çekildi. Thought 3: Yeterli bilgi toplandı, özet hazır. Answer: Türk fintech sektörü 2025'te 18 milyar TL büyüklüğe ulaşarak %35 büyüme gösterdi. 45 yeni startup kuruldu ve sektör 200M+ dolar yatırım çekti. (TÜBİSAD verisi) ### 8.2 KVKK Uyum Sorgu **Görev:** "Yeni AI ürünüm için KVKK Madde 9 (yurt dışı transfer) uyum gereksinimleri neler?" Thought 1: KVKK Madde 9 detayını araştırmalıyım. Action 1: kvkk_database_search("Madde 9 yurt dışı veri transferi") Observation 1: KVKK Madde 9: (a) açık rıza, VEYA (b) yeterli koruma kararı olan ülkeler, VEYA (c) yeterli korumayı sağlayan taahhütname. Thought 2: AI servis sağlayıcı bilgisini de almalıyım (OpenAI, Anthropic). Action 2: vector_search("OpenAI KVKK uyum, EU residency") Observation 2: OpenAI ChatGPT Plus standart sözleşme - veri ABD'de işlenir. ChatGPT Team/Enterprise EU residency opt-in mevcut. Thought 3: Şimdi öneri sentezi yapabilirim. Answer: KVKK Madde 9'a uygun AI ürün için 3 strateji: (1) ChatGPT Enterprise + EU residency, (2) Mistral Le Chat (Paris datacenter native), (3) Self-host model (Türkiye datacenter). Açık rıza alma + DPA imzalama + VERBİS kayıt zorunludur. ⚠️ Bu örnek genel rehber; KVKK Sertifikalı uzman onayı şarttır. ### 8.3 Mali Analiz + Hesaplama **Görev:** "100K TL'yi 5 yıl bileşik faizle %20 yıllık nominal getirde nasıl artar? Enflasyon %35 ise reel getiri nedir?" Thought 1: Bileşik faiz formülünü uygulamalıyım. Action 1: calculator((100000 * (1.20)**5)) Observation 1: 248832 Thought 2: Şimdi enflasyon düşülü reel getiri hesabı. Action 2: calculator(((1.20/1.35)**5 - 1) * 100) Observation 2: -43.81 Thought 3: Sonuçları yorumlamalıyım. Answer: 100.000 TL nominal olarak 5 yıl sonra 248.832 TL oluyor. AMA %35 enflasyon altında reel getiri NEGATİF: %-43.8. Yani satın alma gücünüz azalıyor. ### 8.4 Çoklu API — E-ticaret Fiyat Karşılaştırma **Görev:** "iPhone 15 Pro 256GB'ın Trendyol vs Hepsiburada vs Apple Store fiyatlarını karşılaştır." Thought 1: 3 ayrı kaynak için fiyat sorgulamam gerek. Action 1: web_scrape("trendyol.com/iphone-15-pro-256gb") Observation 1: Trendyol: 64.999 TL (indirimli), normal 75.999 TL. Action 2: web_scrape("hepsiburada.com/iphone-15-pro-256gb") Observation 2: Hepsiburada: 65.499 TL, 12 ay 5.458 TL'den taksit. Action 3: web_scrape("apple.com/tr/shop/iphone-15-pro") Observation 3: Apple Store: 79.999 TL. Thought 2: Karşılaştırma tablosu hazırlayabilirim. Answer: | Kaynak | Fiyat | Not | |---|---|---| | Trendyol | 64.999 TL | İndirim aktif | | Hepsiburada | 65.499 TL | 12 ay taksit imkanı | | Apple Store | 79.999 TL | Garanti + servis premium | En ucuz: Trendyol (15.000 TL avantaj). ### 8.5 Customer Support Agent **Görev:** "Müşteri 'siparişim 5 günde gelmedi' diyor. Yardım et." Thought 1: Önce müşterinin sipariş bilgisini bulmalıyım. Action 1: ask_user("Sipariş numaranızı paylaşır mısınız?") Observation 1: Müşteri "TR-2026-A123" yazdı. Action 2: order_database.lookup("TR-2026-A123") Observation 2: Sipariş tarihi 2026-03-10, durum: kargoda, tahmin teslim 2026-03-15. Thought 2: Sipariş bugün (15 Mart) için tahminli. Önce kargo durumunu kontrol edeyim. Action 3: cargo_tracking_api("TR-2026-A123") Observation 3: Son güncelleme: kargo Ankara hub'ında, dağıtım için yola çıktı 14:30. Thought 3: Bilgi yeterli, müşteriye doğal cevap. Answer: Merhaba, sipariş #TR-2026-A123 bugün dağıtıma çıktı. Kargo aracında, akşam saatlerinde elinize ulaşacak. Sabırınız için teşekkür ederiz. ### 8.6 Code Debug Agent **Görev:** "Python kodum 'TypeError: unsupported operand type(s) for +: int and str' hatası veriyor. Debug et." Thought 1: Hatanın ne anlama geldiğini biliyorum — int + str karışımı. Kodu görmem gerek. Action 1: read_file("script.py") Observation 1: Kod yüklendi. Satır 42: result = age + " years old" Thought 2: Age int olarak tanımlanmış, string ile direkt + yapılamaz. Çözüm: str() ile cast. Action 2: edit_file("script.py", line=42, new_content='result = str(age) + " years old"') Observation 2: Düzenleme başarılı. Action 3: run_command("python script.py") Observation 3: Hata yok, çıktı: "30 years old" Answer: Hata düzeltildi. Sorun satır 42'de int olan age'i string ile birleştirme çalıştırılıyordu. str(age) ile cast ettim, şimdi çalışıyor. ### 8.7 Dosya Analizi (RAG + ReAct) **Görev:** "Şirket sözleşmesinde KVKK uyum maddeleri var mı? PDF'i incele." Thought 1: PDF'i okumam ve KVKK maddelerini aramam gerek. Action 1: pdf_load("kontrat.pdf") Observation 1: PDF 25 sayfa yüklendi, vector store'a indexlendi. Action 2: vector_search("KVKK kişisel veri koruma") Observation 2: Sayfa 12: "Madde 18 - Veri Sorumlusu", Sayfa 13: "Madde 19 - Veri Sahibi Hakları" Action 3: pdf_extract("kontrat.pdf", pages=[12, 13]) Observation 3: Madde 18 + 19 metni tam çıkarıldı. Thought 2: İçerikleri analiz edip özetlemeliyim. Answer: Evet, KVKK maddeleri sayfa 12-13'te yer alıyor. Madde 18 veri sorumlusu, Madde 19 veri sahibi hakları (Madde 11 KVKK) içeriyor. AMA: yurt dışı veri transferi (Madde 9 referansı) eksik — eklenmesi önerilir. ### 8.8 Multi-Step Hukuki Sorgu **Görev:** "Türk İş Kanunu'na göre 5 yıl çalışan birinin tazminat hakkı nedir?" Thought 1: İş Kanunu Madde 25 + Madde 14 (kıdem tazminatı) maddelerini araştırmalıyım. Action 1: legal_database_search("Türk İş Kanunu Madde 14 kıdem tazminatı") Observation 1: Madde 14: Kıdem tazminatı, her yıl için 30 günlük brüt ücret tutarındadır. 5 yıl çalışan için 5 × 30 = 150 günlük (5 ay) brüt ücret tutarında. Action 2: legal_database_search("kıdem tazminatı tavan 2026") Observation 2: 2026 yılı için kıdem tazminatı tavanı: 41.828 TL aylık. Thought 2: Hesaplama yapayım — örneğin maaş 30.000 TL ise. Action 3: calculator(30000 * 5) Observation 3: 150000 Thought 3: Sonucu detaylı sunayım. Answer: 5 yıl çalışan bir kişi için kıdem tazminatı: - Brüt maaş × 5 (yıl) = kıdem tazminat tutarı - Aylık 30.000 TL maaş ise: 150.000 TL - 2026 yılı için aylık tavan: 41.828 TL (yüksek maaşlar bu tavan ile sınırlı) - İhbar tazminatı ayrı: 5 yıl çalışmış için 8 hafta (Madde 17) ⚠️ Hukuki uyarı: Bu genel rehberdir. İş Hukuku avukatına danışılmalıdır. ### 8.9 + 16 ek Türkçe örnek (özet) (9) Akademik makale literature review (10) Veri analizi (CSV dosyası) (11) E-mail sınıflandırma + yanıt taslağı (12) Çeviri quality check (geri çeviri) (13) İçerik üretim + fact-check (14) Sosyal medya monitoring + sentiment (15) Stock analizi + tahmin (16) Türk hukuk içtihat arama (17) Otomatik rapor üretimi (18) Müşteri segmentasyon analizi (19) SEO optimizasyon checklist (20) Code review automation (21) Bug ticket triage (22) Meeting transcribe + action items (23) Personalized recommendation (24) Marketing campaign performance analysis (25) Database schema migration plan Her biri için aynı T-A-O pattern uygulanır. ## 9. Error Handling ve Edge Cases ### 9.1 Yaygın Failure Mode'ları ### 9.2 Best Practices (1) **max_iterations = 5-15** — sonsuz loop engelle (2) **Tool timeout = 30 sn** — yavaş tool'u kes (3) **Schema validation** — Pydantic veya JSON Schema ile parametre doğrula (4) **Structured error messages** — "Error: parameter X invalid format" gibi, LLM parse edebilsin (5) **Observation truncation** — uzun tool çıktıları (>2K token) kes ve özetle (6) **Memory management** — uzun conversation'larda eski adımları summarize et (7) **Cost monitoring** — her run için token + dollar usage track (8) **Fallback strategy** — agent başarısızsa hangi backup? ## 10. Maliyet Optimizasyonu ### 10.1 ReAct'ın Maliyet Karakteristiği ReAct token usage'ı CoT'tan 3-10x fazladır çünkü: - Her döngüde tüm history yeniden gönderiliyor - Thought + Action + Observation hep prompt'ta - Multi-iteration için cumulative cost **Örnek hesap:** Tek soru, 5 iteration ReAct, Claude Sonnet 4.6: - Iteration 1: 500 token input + 200 output = $1.5/$3 = $4.5 - Iteration 2: 1000 + 200 = $3 + $3 = $6 - Iteration 3: 1700 + 200 = $5.1 + $3 = $8.1 - Iteration 4: 2400 + 200 = $7.2 + $3 = $10.2 - Iteration 5: 3300 + 300 = $9.9 + $4.5 = $14.4 Toplam: ~$43 (cents olmadan, sadece example token usage) Aylık 1000 soru: ~$43,000... pratik için CoT vs ReAct cost karşılaştırması gerek. ### 10.2 Maliyet Düşürme Stratejileri **(1) Daha küçük model kullan** — basit ReAct için Haiku/Flash yeter **(2) Observation truncation** — uzun çıktıları kes (max 500 token) **(3) Prompt caching** — Anthropic Cache Control system prompt'unu cache'le (%90 indirim) **(4) ReWOO varyantı** — paralel execution, daha az LLM call **(5) Plan-and-Execute** — uzun task için tek plan + execute **(6) Max iterations sıkı** — 10 yerine 5 dene **(7) Tool output structured** — JSON, kısa, deterministic **(8) Early termination** — yeterince bilgi varsa cevap ver ## 11. Observability — LangSmith Trace Patterns ### 11.1 İyi Bir Trace Yapısı LangSmith'te ReAct trace'i ideal: 1. Root: User query 2. Child 1: Agent reasoning (LLM call 1) 3. Child 2: Tool call (Search) 4. Child 3: Tool response 5. Child 4: Agent reasoning (LLM call 2) 6. Child 5: Tool call (Calculator) 7. Child 6: Tool response 8. Child 7: Final synthesis (LLM call 3) 9. End: Final answer Her node'da: latency, token usage, cost. ### 11.2 Common Anti-Patterns Trace'te - LLM call'lar arası 30+ saniye gecikme → tool yavaş - 10+ iteration → infinite loop sınırı - Output token > 500 → model gevezelik yapıyor - Aynı tool 3+ kez aynı parametre ile çağrılıyor → infinite loop ## 12. Model Karşılaştırması — 2026 **Tavsiye:** - Production: Claude Sonnet 4.6 veya GPT-5 - Karmaşık reasoning: o3 - Maliyet kritik: Gemini Flash veya DeepSeek - KVKK + self-host: Llama 4 70B ## 13. Sık Sorulanlar **Soru: ReAct vs CoT hangisi daha iyi?** **ReAct:** Multi-step + dış bilgi gerekli + tool kullanılacaksa. **CoT:** Sadece muhakeme + içsel bilgi yeterli (matematik, mantık). **Pratik:** Çoğu modern production agentic sistem ReAct kullanır, sadece basit math/logic problemlerinde CoT yeterli. **Soru: ReAct mı Plan-and-Execute mi?** ReAct adaptive (her adım plan değişebilir). Plan-and-Execute statik plan + execution. ReAct keşif gerektiren task'lar için, Plan-and-Execute öngörülebilir task'lar için. **Soru: LangChain mi LangGraph mı?** LangChain ReAct olgun ama LangGraph daha esnek, debug edilebilir. 2026'da LangGraph state machine pattern modern best practice. **Soru: Multiple agents (multi-agent system) ReAct kullanıyor mu?** Evet. Crew AI, AutoGen, LangGraph multi-agent — her agent ReAct paradigmasında çalışır + agentlar arası coordination ek katman. **Soru: ReAct güvenlik riski var mı?** Var. Tool'lar database write, file delete gibi yapabiliyorsa LLM yanlış karar verebilir. Çözüm: (1) Confirmation step (user onaylasın), (2) Sandboxed environment, (3) Read-only tools default. **Soru: Türkçe ReAct İngilizce'den ne kadar farklı?** Çoğunlukla aynı. Modern LLM'ler Türkçe Thought + Action + Observation üretebilir. AMA bazı modellerde Thought'lar İngilizce çıkar — system prompt'ta "TÜM ÇIKTI TÜRKÇE" belirtmek gerek. **Soru: ReAct + RAG kombinasyonu nasıl?** Çok yaygın. RAG tool olarak ReAct'a dahil edilir: vector_search(query) tool'u. Modern AI Engineer rolü tam bunu yapıyor. **Soru: Production'da ReAct ne kadar maliyetli?** Tipik: $0.02 - $0.50 per query. Multi-tool query daha pahalı. Aylık 10K query: $200-5000 (model + tool seçimine bağlı). **Soru: ReAct fail rate ne kadar?** Production'da %5-15 fail (tool failure + LLM error + infinite loop). Iyi error handling ile %2-5'e düşer. **Soru: ReAct'a alternatif var mı?** Yes — Reflexion (self-critique), Self-Refine, Verbose CoT. Ama ReAct hala mainstream. ## 14. Sonuç **3 ana çıkarım:** 1. **ReAct, modern agentic AI'ın temel tekniği** — Yao 2022 paper modern LLM ekosisteminin temelini attı. 2. **5 ana varyant farklı durumlar için** — Vanilla, MRKL, Self-Ask, ReWOO, Plan-and-Execute. 3. **Production-grade ReAct = LangGraph + good tool design + observability + cost optimization.** **Bu hafta yapılacaklar:** (1) LangChain veya LangGraph kurulum + ilk ReAct agent yazma. (2) 3-5 quality tool tasarla (description detaylı, schema strict). (3) LangSmith integration + ilk 100 trace inceleme. (4) Maliyet tracking dashboard.