ReAct (reason + act)
Reasoning
Level 3 · Agentic & compositeInterleave reasoning steps with actions (tool calls) and their observed results.
ReAct combines reasoning with acting: instead of reasoning all the way to an answer in one pass, the model alternates between a Thought (what to do next and why), an Action (calling a tool or looking something up), and an Observation (the result), repeating until it has enough information for a final Answer. This lets the model correct course based on real results instead of reasoning purely from what it already knows.
When to use it
Use it whenever the task needs information or capabilities the model doesn't already have — looking something up, calling an API, running a calculation — and the right next step depends on what comes back from the previous one.
When to avoid it
Avoid it for self-contained tasks that don't need any external lookup or tool: the Thought/Action/Observation structure just adds overhead when there's nothing to observe.
Advantages
- Grounds reasoning in real intermediate results instead of assumptions
- Naturally supports multi-step tasks that depend on tool output
- Makes each decision point inspectable (why this action, given this thought)
Disadvantages
- Requires actually defining and wiring up the available actions/tools
- More tokens and turns than a direct answer
- Can loop unnecessarily if the stopping condition isn't clear
Examples
Find the current weather in the city where our next office is opening, and recommend what to pack for a 3-day visit next week. Available actions: search_web(query), get_weather(city, date_range) Stop when: you know the city, its weather for the visit dates, and can give a packing recommendation. Alternate between a Thought, an Action (one of the available actions, with its input), and an Observation (the action's result), until you can give a final Answer.
Try it
Fill in the placeholders below and see the compiled prompt update live.
What you want to achieve.
List the tools/actions the model can use, one per line (e.g. search_web(query), get_weather(city)).
When has the model gathered enough information to give a final answer?
- 34
- Words
- 239
- Characters
- 0/3
- Placeholders filled
- 1 min
- Reading time
- Completeness0
- Clarity0
- Context0
- Specificity0
- Constraints0
- Format0
- Output0
- Constraints note0
- Success criteria0
- Scope focus100
- Verification step0
- Negative example0
- Confidence0
- Placeholder syntax100
- Markdown structure0
- Fill in the remaining placeholders.
- Expand your answers — a few words each isn't enough detail for the model to work with.
- Add background context so the model understands the situation.