Deep Dive: ReAct / tool-augmented reasoning
Tổng quan Agents
ReAct là một trong những mẫu nền quan trọng nhất của agentic prompting. Nó cho model vừa reasoning vừa hành động, thay vì nhốt mọi thứ trong một đoạn CoT chỉ có text.
Ý tưởng cốt lõi rất thực dụng: nếu câu hỏi cần dữ kiện ngoài model, đừng bắt model tự đoán. Hãy cho nó hành động, quan sát kết quả, rồi cập nhật suy luận.
ReAct mở ra một protocol rõ ràng giữa model và môi trường. Nhờ đó, tool use trở thành một phần của reasoning chứ không phải một add-on sau khi model đã nghĩ xong.
| Tín hiệu | Giải thích | Ý nghĩa |
|---|---|---|
| Thought | Model tóm tắt ý định | Tăng transparency |
| Action | Model đề xuất tool call | Biến suy luận thành hành động |
| Observation | Kết quả tool trả về | Cập nhật state |
Cơ chế Mechanics
Một ReAct loop chuẩn thường có ba block: Thought → Action → Observation. Điều quan trọng không phải là format đẹp, mà là format ổn định để controller của bạn parse được.
Khi action trả về, model phải xử lý nó như untrusted input. Đây là điểm mà nhiều agent prototype thất bại: họ nghĩ tool output là “sự thật”, trong khi nó chỉ là một nguồn dữ liệu khác cần kiểm soát.
ReAct protocol
Thought: I should verify the latest source.
Action: search_docs["prompt engineering taxonomy"]
Observation: retrieved the 2026 taxonomy paper
Thought: Now I can synthesize the result.ReAct là reasoning loop có tool use và observation update.
flowchart TD A[Thought] --> B[Action / tool call] B --> C[Observation] C --> D[Update state] D --> A D --> E[Final answer] A -.->|if tool not needed| E
Khi dùng Fit
ReAct phù hợp khi câu trả lời phụ thuộc vào tài nguyên ngoài model: search, database lookup, code execution, browser, MCP tool hay internal API.
Nó cũng phù hợp khi bạn muốn model tự quyết định lúc nào nên act và lúc nào nên suy luận tiếp, thay vì hard-code toàn bộ orchestration.
Ưu điểm
- Ghép reasoning với môi trường thật
- Hợp với agentic workflows
- Cho phép human/validator can thiệp giữa các bước
Nhược điểm
- Tool output là untrusted input
- Dễ sinh loop hoặc call tool thừa
- Cần protocol và guardrails chặt
Failure modes Risk
Lỗi thường gặp trong ReAct
- Model bịa action name hoặc action args.
- Observation bị trộn với instruction.
- Loop không có stop condition rõ.
- Tool call được phép nhưng output downstream không có schema.
So sánh Compare
| Technique | Khác biệt | Khi nào dùng hơn ReAct |
|---|---|---|
| Prompt chaining | Mỗi bước là một call riêng | Khi muốn kiểm soát pipeline chặt |
| Structured outputs | Schema hóa output | Khi action phải parse được ngay |
| CoT | Chỉ reasoning, không hành động | Khi không cần tool use |