Bab 9: ReAct Pattern¶
AI yang cuma jawab pertanyaan = chatbot. AI yang bertindak = agent. ReAct adalah pattern yang ngubah satu jadi yang lain.
ReAct = Reasoning + Acting. Pattern ini fondasi dari semua "AI agent" modern.
Setelah Bab 9, kamu akan bisa:
- Memahami bedanya AI yang berpikir vs AI yang bertindak
- Pakai pattern Thought → Action → Observation
- Build prompt untuk agent sederhana yang pakai tools
9.1. Limitasi LLM Murni¶
LLM punya kelemahan fundamental:
- Knowledge cutoff — tidak tahu kejadian setelah training
- Tidak bisa hitung kompleks — kalkulasi besar sering salah
- Tidak bisa akses real-time — cuaca, harga saham, dll
- Tidak bisa eksekusi — kirim email, klik tombol, dll
Solusi: kasih LLM akses ke tools. Kalau tidak tahu jawaban, dia search. Kalau tidak bisa hitung, dia call kalkulator. Kalau perlu data, dia akses API.
9.2. Pattern: Thought → Action → Observation¶
ReAct = LLM ngikutin loop:
flowchart TB
Q[User Question]
T[Thought:<br/>'Aku butuh data X.<br/>Mungkin perlu pakai tool Y.']
A[Action:<br/>'search(X)'<br/>atau<br/>'calculate(...)']
O[Observation:<br/>Tool return result]
Done{Cukup info<br/>untuk jawab?}
Final[Final Answer]
Q --> T
T --> A
A --> O
O --> Done
Done -- Belum --> T
Done -- Cukup --> Final
style Q fill:#1a1a1a,stroke:#6366f1,color:#fafafa
style T fill:#1a1a1a,stroke:#f59e0b,color:#fafafa
style A fill:#1a1a1a,stroke:#ec4899,color:#fafafa
style O fill:#1a1a1a,stroke:#06b6d4,color:#fafafa
style Done fill:#1a1a1a,stroke:#f59e0b,color:#fafafa
style Final fill:#1a1a1a,stroke:#10b981,color:#fafafa
Cara baca diagram
Diagram ini menjelaskan loop ReAct — pattern fundamental untuk AI agent.
Tahapan:
- Question (indigo) — user tanya sesuatu
- Thought (amber) — LLM pikirkan: "Apa yang aku butuhkan? Tool apa yang relevan?"
- Action (pink) — LLM panggil tool:
search,calculate,email, dll - Observation (cyan) — tool return hasil kembali ke LLM
- Decision — apakah info sudah cukup? Kalau belum, loop kembali ke Thought (mungkin butuh tool lain). Kalau cukup, kasih jawaban final
- Final Answer (hijau) — jawaban ke user
Contoh real:
Q: Berapa total revenue Q1 2026 kalau bulan Januari Rp 100jt,
Februari Rp 120jt, Maret Rp 135jt?
Thought: Saya perlu jumlahkan 3 angka. Karena ini penting akurat,
saya pakai calculator tool.
Action: calculator("100000000 + 120000000 + 135000000")
Observation: 355000000
Thought: Hasilnya Rp 355jt. Saya bisa kasih jawaban final.
Final Answer: Total revenue Q1 2026 adalah Rp 355.000.000.
Kunci: LLM tidak hitung sendiri. Dia delegate ke tool. LLM jadi "orchestrator" yang tahu kapan pakai apa, bukan "calculator yang berpura-pura".
Implikasi: agent power-nya tergantung tools yang tersedia. Tanpa tools, ReAct sama saja dengan CoT biasa.
9.3. Cara Implementasi¶
ReAct biasanya implementasi via:
- Framework agent (LangChain, LlamaIndex, OpenAI Assistants API)
- Manual prompt engineering dengan tool definitions
Contoh Manual: ReAct Prompt¶
Kamu adalah AI agent yang bisa pakai tools berikut:
TOOLS:
- search(query): cari informasi di Google
- calculate(expression): hitung matematika
- weather(city): cek cuaca real-time
Format respon kamu:
Thought: [reasoning kamu]
Action: tool_name(parameter)
Observation: [hasil tool, akan diisi sistem]
... (ulangi Thought-Action-Observation kalau perlu)
Final Answer: [jawaban final ke user]
[QUESTION]
{{ pertanyaan_user }}
LLM akan generate Thought + Action. Sistem (kode kamu) yang eksekusi tool, lalu inject Observation kembali ke prompt. Loop sampai Final Answer.
Contoh Sederhana (Tanpa Tool Real)¶
Untuk demo, kamu bisa "pretend" tool execution:
Q: Apa cuaca di Jakarta sekarang dan berapa selisih dengan Tokyo?
Thought: Saya butuh data cuaca real-time untuk Jakarta dan Tokyo,
lalu hitung selisih. Pakai tool weather + calculate.
Action: weather("Jakarta")
Observation: 30°C, lembap, hujan ringan
Action: weather("Tokyo")
Observation: 18°C, cerah, kering
Thought: Selisih suhu = 30 - 18 = 12°C. Tidak perlu calculator,
hitungan simpel.
Final Answer: Saat ini Jakarta 30°C dengan hujan ringan, sedangkan
Tokyo 18°C cerah. Jakarta 12°C lebih panas dari Tokyo.
9.4. Use Case¶
Q&A dengan Knowledge Base¶
User tanya policy company: agent search docs internal dulu. Kalau tidak ada, search web sebagai fallback.
Customer Service Bot¶
TOOLS:
- get_order(order_id): lihat status order
- track_shipping(tracking_number): cek lokasi paket
- create_ticket(issue): bikin support ticket
Customer: "Order 123 belum sampai." Agent: get_order → track_shipping → kasih update / create_ticket kalau ada masalah.
Data Analyst Assistant¶
TOOLS:
- query_db(sql): jalankan SQL
- plot_chart(data): generate visualisasi
- export_csv(data): export ke file
User: "Tunjukkan trend sales 6 bulan terakhir." Agent: query_db → plot_chart → kasih insight.
9.5. Kapan ReAct vs CoT?¶
| ReAct | CoT |
|---|---|
| Butuh real-time data | Reasoning pure |
| Butuh kalkulasi tepat | Logic ringan |
| Butuh eksekusi action | Cuma analisis |
| Multi-step dengan tool | Single answer |
ReAct = upgrade dari CoT untuk task yang butuh dunia luar.
9.6. Latihan¶
9.1 — Manual ReAct¶
Tulis prompt yang simulasi ReAct (kamu kasih observation manual). Test dengan pertanyaan butuh multi-step.
9.2 — Design Tool Set¶
Pilih use case (e.g. travel assistant). Design 5 tools yang dia perlu. Tulis prompt agent-nya.
9.3 — Tantangan: Real Implementation¶
Pakai LangChain atau OpenAI Assistants API. Build agent simple dengan 2-3 tools real (calculator, web search).
ReAct Loop¶
Tool Definition Pattern¶
Kapan Pakai¶
✓ Real-time data (weather, prices) ✓ Akurat math (calculator) ✓ Knowledge base (RAG-style) ✓ Action eksekusi (email, API)
Framework¶
- LangChain (Python/JS)
- LlamaIndex (Python)
- OpenAI Assistants API
- Anthropic Tool Use