Lewati ke isi

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:

  1. Knowledge cutoff — tidak tahu kejadian setelah training
  2. Tidak bisa hitung kompleks — kalkulasi besar sering salah
  3. Tidak bisa akses real-time — cuaca, harga saham, dll
  4. 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:

  1. Question (indigo) — user tanya sesuatu
  2. Thought (amber) — LLM pikirkan: "Apa yang aku butuhkan? Tool apa yang relevan?"
  3. Action (pink) — LLM panggil tool: search, calculate, email, dll
  4. Observation (cyan) — tool return hasil kembali ke LLM
  5. Decision — apakah info sudah cukup? Kalau belum, loop kembali ke Thought (mungkin butuh tool lain). Kalau cukup, kasih jawaban final
  6. 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:

  1. Framework agent (LangChain, LlamaIndex, OpenAI Assistants API)
  2. 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

TOOLS:
- search_docs(query): cari di internal documentation
- search_web(query): cari di internet

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

Thought: reasoning
Action: tool(params)
Observation: result
... (loop)
Final Answer: jawaban

Tool Definition Pattern

TOOLS:
- name(params): description

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

← Bab 8 Lanjut Bab 10 →

Diadaptasi dari modul "ReAct" dari Learn Prompting. Berdasarkan paper "ReAct: Synergizing Reasoning and Acting in Language Models" (Yao et al., 2022). Dilisensikan Apache 2.0.