ReAct = Reasoning + Acting. It's the foundational single-agent pattern — virtually every framework (LangGraph, ADK, LangChain agents) is a variation of it.
Thought: "I need to find the customer's last order date.
I'll query the orders table."
Action: query_database(sql="SELECT MAX(order_date) FROM orders WHERE customer_id = 42")
Observation: "2024-11-03"
Thought: "I have the date. The user asked how many days ago.
Today is 2026-05-19, so that's 563 days ago."
Action: final_answer("Your last order was 563 days ago, on Nov 3 2024.")
The key insight: the explicit "Thought" step forces the model to externalize reasoning before acting, which dramatically improves tool selection accuracy and reduces hallucinated tool calls. It also gives you a trace you can audit.
Two things to notice that matter for interview articulation:
max_iters is non-negotiable. Without it, a confused agent loops forever and burns tokens. This is the #1 production guardrail.