Trả lời ngắn: ReAct Framework là cách một AI agent xen kẽ quyết định, hành động bằng công cụ và đọc kết quả từ môi trường. Observation mới cập nhật state, giúp agent điều chỉnh kế hoạch thay vì tiếp tục đoán. Triển khai an toàn chỉ lưu tóm tắt hành động, bằng chứng và lý do dừng cần thiết.

Đọc xong, bạn sẽ hiểu:

  • ReAct khác reason-only, act-only và React.js ở đâu.
  • Reason, action, observation và state nối nhau thế nào.
  • Cách đọc trace ba vòng và đặt guardrails, budget, stop condition.
  • Cách mô phỏng ReAct bằng dữ liệu giả trong 20 phút.

Lưu ý giáo dục: ReAct không yêu cầu công khai private chain-of-thought. Bài chỉ dùng action summary, state và evidence có thể audit. Thực hành dùng dữ liệu giả; hệ thật cần quyền, bảo mật, kiểm thử và người chịu trách nhiệm.

1. ReAct Framework là gì? Nghĩ và làm xen kẽ

a. Một vòng đối thoại với môi trường

Hãy tưởng tượng bạn tìm giờ mở cửa thư viện. Chỉ suy nghĩ có thể dẫn đến đoán sai; nhấp mọi link lại tốn thời gian. Cách hợp lý là xác định thông tin thiếu, tra nguồn phù hợp rồi kiểm tra đã đủ bằng chứng chưa.

ReAct là viết tắt của Reasoning and Acting: model xen kẽ quyết định và hành động. Reason ở đây là tóm tắt state và bước được phép có thể giảm bất định. Action là lời gọi tool theo schema. Observation là dữ liệu hoặc lỗi môi trường trả về.

Hình 1 — ReAct dùng hành động để tạo bằng chứng mới, rồi đưa bằng chứng ấy trở lại quyết định kế tiếp.

b. ReAct không phải React.js

React.js là thư viện JavaScript xây giao diện; ReAct Framework trong AI là mẫu tương tác giữa quyết định, hành động và phản hồi môi trường. Thêm “LLM” hoặc “agent” khi tìm tài liệu để tránh nhầm.

Công trình gốc mô tả reasoning trace xen kẽ action để nhận observation từ môi trường. Yao et al. — ReAct paper

c. Vì sao xen kẽ tốt hơn chạy mù?

Reason chọn action; observation kiểm tra giả định; state giữ điều đã biết, phần còn thiếu và budget. ReAct không tự bảo đảm sự thật: tool output vẫn cần kiểm tra.

2. Một vòng ReAct vận hành như thế nào?

a. Năm bước tối thiểu

Một vòng thực tế có thể viết thành năm bước:

  1. Reason: tóm tắt khoảng trống và chọn bước tiếp theo.
  2. Action: gọi tool với input đã kiểm schema và quyền.
  3. Observation: chuẩn hóa kết quả, lỗi và nguồn.
  4. State: ghi state delta, phần thay đổi sau observation.
  5. Stop check: complete, continue, escalate, blocked hay budget stop.

Ví dụ, goal là tìm policy hoàn tiền hiện hành. Action SEARCH_POLICY(product_id) trả hai tài liệu, một bản hết hiệu lực. State delta giữ bản hiện hành; stop check yêu cầu kiểm ngày áp dụng.

b. Tool contract biến hành động thành thứ kiểm được

Tool contract quy định input, output, quyền và loại lỗi. ACCESS_DENIED không có nghĩa “không có dữ liệu”; TIMEOUT chỉ nói lần gọi chưa hoàn tất. Phân biệt lỗi giúp retry hoặc hỏi người đúng lúc.

Grounding là gắn claim với evidence. Observation nên có source ID, phiên bản hoặc timestamp khi phù hợp. “D2 v3, mục 4” mạnh hơn “policy nói được hoàn tiền”.

c. Trace nào nên được lưu?

Trace là nhật ký có thể kiểm lại, ví dụ: “đã đọc A, gặp lỗi hết hạn, nên dừng”. Scratchpad là vùng tạm nội bộ; chỉ cần lưu hành động, bằng chứng và thay đổi trạng thái. Nhật ký an toàn còn ghi mục tiêu, dữ liệu đầu vào đã lọc, giới hạn xử lý và lý do dừng.

3. Ví dụ ba vòng: tìm câu trả lời có bằng chứng

a. Goal và tài liệu giả

Trợ lý cần trả lời: “Thư viện mở cửa Chủ nhật lúc nào?”. Hệ chỉ dùng bốn thẻ D1–D4 và ba tool giấy. Success rule: trả lời có evidence ID, phiên bản; tối đa ba vòng.

  • D1: trang giới thiệu, nói “mở cuối tuần”, không có giờ.
  • D2: lịch v3, Chủ nhật 09:00–17:00.
  • D3: lịch v2, Chủ nhật 08:00–16:00, đã hết hiệu lực.
  • D4: thông báo sửa chữa cho một ngày cụ thể.

b. Vòng 1 — tìm candidate

Reason: chưa có giờ; tìm thẻ chứa “Chủ nhật”. Action: SEARCH_CARD("Chủ nhật"). Observation: có D2, D3, D4. State delta: ba candidate chưa xác minh. Stop: continue vì nguồn mâu thuẫn.

Action giảm không gian tìm kiếm; agent không chọn ngay con số đầu tiên mà ghi xung đột cần giải quyết.

c. Vòng 2 — kiểm phiên bản

Reason: xác định lịch hiệu lực. Action: LOOKUP_ID("D2,D3"). Observation: D2 v3 hiện hành; D3 v2 đã bị thay. State delta: giữ D2, loại D3. Stop: continue vì D4 có thể là ngoại lệ.

Đây là “act-to-reason”: action làm kế hoạch tốt hơn. Trang dự án ReAct có các trajectory reasoning–action–observation. ReAct project

d. Vòng 3 — kiểm ngoại lệ và dừng

Reason: kiểm D4 có áp dụng không. Action: LOOKUP_ID("D4"). Observation: chỉ đóng ngày 28/07. State delta: mặc định D2, ngoại lệ D4. Stop: complete có điều kiện.

Câu trả lời: “Theo D2 v3, Chủ nhật mở 09:00–17:00. Riêng 28/07, D4 ghi đóng cửa sửa chữa.” Claim nào cũng có evidence.

Hình 2 — Reason-only dễ tiếp tục đoán; act-only dễ chạy tool thiếu định hướng; ReAct dùng phản hồi để cập nhật bước tiếp theo.

e. So sánh ba cách

Tiêu chí Reason-only Act-only ReAct
Cách đi Suy luận từ context sẵn có Chạy action theo chuỗi Xen kẽ quyết định và feedback
Điểm mạnh Nhanh cho câu hỏi đóng Hợp flow cố định Thích nghi khi evidence đổi
Rủi ro Đoán khi thiếu dữ liệu Tool spam, thiếu kế hoạch Loop dài, observation xấu
Dùng khi Không cần dữ liệu mới Nhánh đã xác định Đường đi phụ thuộc kết quả

Google Research mô tả reasoning giúp action tiến triển, còn action giúp theo dõi và điều chỉnh kế hoạch. Google Research — ReAct

4. Lỗi phổ biến, giới hạn và guardrails

a. Năm lỗi thường gặp

  • Reason dài: model độc thoại thay vì chọn action có ích.
  • Tool spam: lặp tool dù state không đổi.
  • Tin observation: dữ liệu có thể sai, stale hoặc chứa prompt injection.
  • Gom lỗi: timeout, denied, not-found đều thành “không có”.
  • Thiếu stop: loop chạy dù đã đủ bằng chứng.

Action tốt phải đổi được state. Kết quả lặp lại thì đổi chiến lược, hỏi người hoặc dừng.

b. Guardrails nằm ngoài lời nhắc

Guardrail giới hạn hành vi bằng allowlist tool, schema validation, quyền tối thiểu, sandbox, rate limit, approval và audit. Câu “hãy cẩn thận” không thay được kiểm soát.

Tool output là dữ liệu, không phải instruction cấp cao. Gửi email, thanh toán hoặc xóa file phải qua authorization và approval ngoài model. ReAct không thay security architecture.

c. Budget và quy tắc thoát

Loop budget giới hạn step, thời gian, token hoặc chi phí. Stop condition xác định complete, escalate, blocked hay hết budget. Bộ tối thiểu gồm max steps, timeout, duplicate detector, retry và kill switch.

Ví dụ research agent tối đa sáu tool call; nguồn chính thức mâu thuẫn thì escalate. Coding agent chỉ complete khi test và acceptance gate đạt.

d. Khi không cần ReAct

Nếu quy trình cố định, workflow tuần tự dễ kiểm soát hơn. Đổi định dạng ngày hoặc kiểm field bắt buộc không cần model tự chọn action. Dùng ReAct khi observation có thể đổi đường đi.

5. Bài tập 20 phút: viết ReAct Trace an toàn

a. Chuẩn bị bốn thẻ và ba tool giấy

Dùng D1–D4 ở ví dụ thư viện cùng ba tool giấy: SEARCH_CARD(query), LOOKUP_ID(id)ASK_HUMAN(question). Không truy cập web, tài khoản hay API thật.

Goal: “Trả lời giờ Chủ nhật, có evidence ID; thiếu dữ liệu thì hỏi người.” Budget ba vòng, mỗi vòng một action.

b. Điền trace card

Mỗi vòng ghi Goal, Action Summary, Tool + Input, Observation, State Delta, Evidence, Budget và Stop Check. Không ghi secret, dữ liệu cá nhân hay độc thoại nội bộ.

Hình 3 — Trace Card lưu phần cần cho kiểm tra và sửa lỗi, không biến private reasoning thành log công khai.

c. Mẫu đối chiếu: một vòng đã điền

Trường Mẫu
Goal Trả lời giờ mở cửa Chủ nhật, có evidence ID
Action Summary Tìm thẻ có giờ Chủ nhật
Tool + Input SEARCH_CARD("Chủ nhật")
Observation D2 nói 09:00–17:00; version v3
State Delta candidate = D2; evidence = D2
Evidence D2 v3
Budget Đã dùng 1/3 vòng
Stop Check Cần kiểm ngoại lệ; continue

d. Checklist tự chấm

  • Action có giảm khoảng trống thông tin không?
  • Input đúng schema và không chứa secret không?
  • Observation có source ID, version hoặc loại lỗi không?
  • State delta nói rõ thay đổi không?
  • Stop check có thể dừng hoặc hỏi người không?

Sau ba vòng, đối chiếu claim với evidence. State không đổi thì thêm duplicate detector hoặc đổi stop rule.

6. Tổng kết: action phải tạo observation hữu ích

a. Năm ý chính

  • ReAct xen kẽ quyết định, action và observation để cập nhật state bằng bằng chứng mới.
  • Reason hữu ích là tóm tắt bước tiếp theo, không phải độc thoại dài hay yêu cầu phơi private chain-of-thought.
  • Tool contract phải phân biệt data, lỗi và quyền; observation không mặc nhiên đáng tin.
  • Trace nên lưu action summary, state delta, evidence, budget và stop reason đủ để audit.
  • ReAct chỉ đáng dùng khi feedback có thể đổi đường đi; mọi loop cần guardrails và điều kiện dừng.

b. Câu hỏi tự kiểm tra

  • ReAct khác reason-only ở điểm nào?
  • Vì sao ACCESS_DENIED không đồng nghĩa “không có dữ liệu”?
  • Một ReAct trace an toàn nên lưu gì?
  • Khi nào workflow cố định phù hợp hơn ReAct?

c. Gợi ý đáp án

Xem gợi ý câu 1ReAct dùng action để nhận observation mới rồi cập nhật quyết định; reason-only chỉ làm việc với context đã có. → Xem mục 1 và 3.
Xem gợi ý câu 2Đó là lỗi quyền truy cập, không phải bằng chứng về sự tồn tại của dữ liệu; hệ nên kiểm quyền hoặc escalate. → Xem mục 2.
Xem gợi ý câu 3Goal, action summary, tool + input đã lọc, observation, state delta, evidence, budget và stop reason; không cần công khai private reasoning. → Xem mục 2 và 5.
Xem gợi ý câu 4Khi các bước ổn định, nhánh đã biết và observation không làm đổi đường đi, workflow đơn giản thường rẻ và dễ kiểm soát hơn. → Xem mục 4.

d. Thuật ngữ cần nhớ

Thuật ngữ Giải thích ngắn
ReAct Mẫu xen kẽ reasoning, action và observation.
Reason Tóm tắt quyết định cho bước tiếp theo.
Action Lệnh gọi tool theo contract.
Observation Kết quả hoặc lỗi từ môi trường.
State Trạng thái goal, evidence, tiến độ và budget.
Trace Bản ghi run đủ để audit.
Grounding Gắn claim với evidence kiểm được.
Tool contract Quy ước input, output, quyền và lỗi.
Loop budget Giới hạn step, thời gian, token hoặc cost.
Stop condition Quy tắc complete, escalate, blocked hoặc stop.

e. Nguồn tham khảo

f. Học tiếp gì?

Xem lại Agentic AI là gì? #31 về loop, state và autonomy. Học tiếp Think → Act → Observe #33 để tách ba nhịp và debug từng vòng agent.

Nhắc lại giáo dục: ReAct là mẫu tổ chức quyết định và phản hồi, không phải giấy phép để AI hành động tự do. Tool permission, approval, budget, logging an toàn và accountability vẫn thuộc về toàn hệ thống.