Planning & Reasoning: Agent lên kế hoạch thế nào?
Tại sao AI Agent cần 'suy nghĩ' trước khi hành động? Giải thích cơ chế ReAct, Chain-of-Thought và vòng lặp lập kế hoạch giúp agent giải quyết task phức tạp.
Tại sao ChatGPT đơn thuần thường thất bại khi bạn yêu cầu "tìm chuyến bay rẻ nhất từ Hà Nội đến Paris 3 tháng tới và book khách sạn gần Eiffel"? Nó bịa ra giá tiền và tên khách sạn thay vì thực sự lên kế hoạch. Đó là vì thiếu Planning & Reasoning — khả năng lập kế hoạch và tư duy đa bước. Đây là một trong 5 building blocks cốt lõi biến LLM từ "người trả lời câu hỏi" thành "người thực hiện nhiệm vụ".
Vấn đề
LLM thuần túy hoạt động như greedy local reasoner — chúng trả lời ngay lập tức dựa trên pattern thống kê đã học, không có quá trình "suy nghĩ" thực sự về các bước trung gian. Khi bạn đưa một yêu cầu phức tạp như "tính tổng doanh thu Q1 từ 5 file Excel nằm rải rác trong 3 folder khác nhau", LLM thường hallucinate — bắt chước cách tính toán thay vì thực sự lên kế hoạch mở từng file.
Cách tiếp cận cũ là prompt engineering dài dòng (ví dụ: "Hãy nghĩ từng bước...") nhưng vẫn giữ tính chất one-shot — chỉ một lần inference. Nếu bước 3 gặp lỗi (file bị xóa, API timeout), agent không có cơ chể để quay lại và điều chỉnh kế hoạch. Thống kê trên các benchmark như HotpotQA cho thấy: single-step agents fail khoảng 73% trên các task đòi hỏi multi-hop reasoning (suy luận nhiều bước nối tiếp).
Ý tưởng cốt lõi
Cái hay của AI Agent hiện đại là tách biệt Planning (lập kế hoạch) ra khỏi Execution (thực thi). Thay vì "nghĩ và làm" trong một lần duy nhất, agent chạy một vòng lặp suy luận-hành động (reasoning-acting loop).
ReAct: Reasoning + Acting
Pattern ReAct (Reasoning + Acting) là kiến trúc nền tảng cho hầu hết agent hiện nay. Nó chia mỗi iteration thành 3 bước chặt chẽ:
-
Thought: LLM suy nghĩ về tình trạng hiện tại, xác định "mình đang ở đâu, cần làm gì tiếp theo để tiến gần goal". Đây là bước Reasoning — xảy ra hoàn toàn trong "bộ não" LLM.
-
Action: Dựa trên thought, agent chọn Tool để thực thi (ví dụ:
read_file,search_web,calculate). Đây là bước tương tác với thế giới bên ngoài. -
Observation: Nhận kết quả trả về từ tool (nội dung file, kết quả search, lỗi API...) và đưa vào context làm Observation.
→ Sau đó loop quay lại bước Thought với thông tin mới. Cứ thế cho đến khi task hoàn thành hoặc đạt max iteration.
User: "Tính tổng doanh thu Q1"
↓
Thought: "Cần đọc file sales_q1.xlsx trước để có dữ liệu thô"
↓
Action: read_file(path="sales_q1.xlsx")
↓
Observation: "[Error] File not found at ./sales_q1.xlsx, did you mean ./data/sales_q1.xlsx?"
↓
Thought: "File nằm ở ./data/, cần đọc lại với path đúng"
↓
Action: read_file(path="./data/sales_q1.xlsx")
↓
Observation: "Dữ liệu CSV: Jan: 100M, Feb: 150M, Mar: 120M"
↓
Thought: "Đã có đủ dữ liệu, tổng = 100+150+120 = 370M"
↓
Final Answer: "370 triệu VND"Chain-of-Thought (CoT)
Chain-of-Thought là kỹ thuật bắt buộc LLM "nghĩ ra lời" trước khi đưa ra câu trả lời cuối cùng. Trong agent systems, CoT chính là Thought trace — chuỗi các suy luận nội tâm được lưu lại trong Memory, tạo thành audit trail để debug và để agent tự review.
Tích hợp vào 5 thành phần cốt lõi
Planning & Reasoning không đứng một mình. Nó là "điều phối viên" giữa các thành phần khác:
- LLM (Brain): Cung cấp khả năng suy luận ngôn ngữ để tạo Thought.
- Tools: Là cánh tay thực hiện Action.
- Memory: Lưu trữ Observation và lịch sử Thought để agent không bị "đãng trí" giữa chừng.
- SOUL.md (Identity): Định nghĩa chiến lược planning (ví dụ: "Luôn kiểm tra file tồn tại trước khi đọc", "Max 5 iterations").
Ví dụ cấu hình đơn giản trong SOUL.md:
## Planning Strategy
- Approach: ReAct (Reason → Act → Observe)
- Max iterations: 5 (tránh loop vô hạn)
- On error: Backtrack và thử phương án khác, không được bịa dữ liệu
- Tool preference: Ưu tiên dùng `calculator` cho math thay vì tính nhẩmKhoảnh khắc "à ra vậy": Agent không phải là "một câu trả lời dài ngoằn", mà là một cuộc hội thoại nội tâm giữa "bộ phận lập kế hoạch" (planner) và "bộ phận thực thi" (executor). Observation chính là feedback loop khiến agent khác biệt với script tĩnh.
Tại sao nó hoạt động
Separation of Concerns: Tách "nghĩ" (trừu tượng, logic) ra khỏi "làm" (concrete, tool execution) giúp giảm cognitive load. Planner chỉ cần lo "cần gì", không cần biết "API trả về JSON hay XML".
Error Correction Through Feedback: Mỗi Observation là một feedback loop. Nếu read_file trả về lỗi "Permission denied", Observation này được đưa vào context, và ở iteration sau Thought sẽ tự động điều chỉnh: "Có vẻ cần dùng sudo hoặc chuyển sang file khác". Đây là cơ chế self-correction mà one-shot prompting không thể có.
Traceability: Với mỗi Action, ta có thể audit lại Thought tương ứng. Khi agent book nhầm vé máy bay, ta không chỉ thấy "output sai" mà thấy cả quá trình: "À, nó search giá rồi nhưng click nhầm ngày vì Observation trả về format MM/DD/YYYY thay vì DD/MM/YYYY".
Trade-off: Cái giá phải trả là latency và token cost. Mỗi vòng lặp ReAct tốn 2-5 giây và hàng nghìn token. Nhưng với task phức tạp, chi phí này rẻ hơn nhiều so với việc sửa lỗi sau khi agent đã "bịa" ra kết quả sai lầm.
Ý nghĩa thực tế
| Cách tiếp cận | Single-shot (ChatGPT thuần) | Agent có Planning (ReAct) |
|---|---|---|
| Cơ chế | One-pass, no feedback | Iterative, observation-driven |
| Xử lý lỗi | Fail silently (hallucinate) | Backtrack & replan |
| Multi-step tasks | ~40% accuracy | ~85%+ (HotpotQA benchmark) |
| Debuggability | Black box | Transparent thought trace |
Tác động thực tế: Planning & Reasoning biến AI từ "chatbot trả lời câu hỏi" thành "trợ lý thực thi nhiệm vụ đa bước" — từ researcher tự động tìm kiếm và tổng hợp báo cáo, đến lập trình viên tự debug và sửa code qua nhiều file.
Benchmark: Trên SWE-bench (benchmark lập trình thực tế), agent sử dụng ReAct + Tool Use đạt ~43% solve rate, trong khi single-shot LLM chỉ ~12%. Sự khác biệt đến từ khả năng plan-then-execute và correct-on-error.
Ai đang dùng: Claude Code (Anthropic), OpenAI o1 (reasoning models), Devin (Cognition AI), AutoGPT, và các nền tảng RAG nâng cao đều dựa trên pattern này.
Hạn chế — kỹ thuật này KHÔNG giải quyết gì?:
- Planning horizon limit: Agent thường fail khi plan quá dài (20+ bước) do compounding error — lỗi ở bước 3 sẽ amplify qua bước 4-20.
- Tool blindness: Đôi khi agent "lười" dùng tool, cố gắng reasoning bằng parametric knowledge (ví dụ: tính toán số liệu thay vì gọi calculator), dẫn đến hallucination.
- Cost & Latency: Không phù hợp cho real-time dưới 100ms responses (ví dụ: autocomplete trong IDE).
Đào sâu hơn
Tài liệu chính thức:
- ReAct: Synergizing Reasoning and Acting in Language Models — Yao et al., 2022
- Chain-of-Thought Prompting Elicits Reasoning in LLMs — Wei et al., 2022
Cùng cụm — Core Components:
LLM — Bộ não của Agent
Về reasoning engine và cách LLM xử lý thought
Tools & Actions
Cách cho agent "tay chân" để thực thi action
Memory
Lưu trữ observation và context qua các vòng lặp
SOUL.md
Định nghĩa chiến lược planning và personality
Đọc tiếp — Level 1 (Phát triển Agent):
Orchestration Patterns
Các pattern phối hợp phức tạp: Sequential, Parallel, Evaluate loops
Agent Teams
Khi một planner không đủ, cần team agent phối hợp
Memory: Cách agent nhớ context qua conversations
Tại sao agent AI cần bộ nhớ? Giải thích kiến trúc memory 3 tầng (working, short-term, long-term), cách agent ghi nhớ người dùng và tự nâng cấp qua từng phiên...
SOUL.md: Định nghĩa tính cách và quy tắc cho agent
SOUL.md là gì? File markdown định nghĩa tính cách và ranh giới cho AI agent, giải quyết vấn đề 'nhân cách' thiếu nhất quán qua các phiên làm việc.