Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 6 — Plan-Execute và Reflection: agent tự lập kế hoạch và tự sửa

Đã đọc 0/8 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

ReAct "vừa đi vừa nghĩ". Nhưng với nhiệm vụ nhiều bước, cách này dễ lạc hướng và tốn nhiều lời gọi. Hai mẫu kiến trúc nâng cao giải quyết điều đó: plan-execute (lập kế hoạch trước) và reflection (tự đánh giá và sửa).

Plan-Execute: nghĩ trước, làm sau

Ý tưởng: tách làm hai pha.

Pha 1 — PLAN:    LLM lập một kế hoạch nhiều bước trước.
Pha 2 — EXECUTE: thực thi từng bước (có thể bằng model rẻ hơn),
                  chỉ quay lại lập kế hoạch nếu chệch.

Ví dụ mục tiêu "Viết báo cáo đối thủ X":

PLAN:
  1. search_web("đối thủ X sản phẩm")
  2. search_web("đối thủ X giá")
  3. get_our_pricing()
  4. tổng hợp thành bảng so sánh
  5. viết báo cáo
EXECUTE: chạy lần lượt 1→5.

Ưu điểm: agent có "bức tranh lớn", ít lạc; các bước độc lập có thể chạy song song; dùng model mạnh chỉ ở pha plan → tiết kiệm. Nhược điểm: kế hoạch cứng, kém linh hoạt khi thực tế bất ngờ.

So sánh ReAct vs Plan-Execute

Tiêu chíReActPlan-Execute
Cách làmQuyết định từng bướcLập kế hoạch trước rồi chạy
Hợp vớiKhám phá, bước phụ thuộc nhauNhiệm vụ có cấu trúc rõ
Số lời gọi LLMNhiều (mỗi bước nghĩ lại)Ít hơn
Khi gặp bất ngờThích ứng tốtPhải re-plan
Thực chiến: kết hợp — plan-execute có bước "re-plan" khi một bước thất bại.

Reflection: agent tự chấm bài mình

Reflection là cho agent tự đánh giá kết quả và sửa trước khi trả cho user. Vòng lặp:

1. Generate: agent tạo kết quả nháp.
2. Reflect:  agent (hoặc một 'critic') tự hỏi:
             "Kết quả này có đạt yêu cầu? Thiếu gì? Sai đâu?"
3. Revise:   sửa dựa trên phản hồi.
4. Lặp tối đa N lần hoặc đến khi 'đạt'.

Ví dụ agent viết code: chạy thử → thấy lỗi test → phản tư "test 2 fail do thiếu xử lý null" → sửa → chạy lại. Reflection biến agent "làm một phát" thành "làm và tự kiểm".

Các bước thêm reflection vào agent

  • Sau khi có kết quả nháp, gọi thêm một lượt LLM đóng vai người phản biện với tiêu chí rõ ràng.
  • Cung cấp tín hiệu khách quan nếu có (kết quả test, lỗi runtime, schema validation) — reflection dựa trên dữ kiện tốt hơn dựa trên cảm tính.
  • Giới hạn số vòng reflection (2–3), nếu không sẽ tốn token và có thể lặp quanh.
  • Dừng khi 'đủ tốt', không cầu toàn — mỗi vòng là thêm chi phí.

Khung tư duy: chọn mẫu nào?

  • Bước phụ thuộc kết quả, cần khám phá → ReAct.
  • Nhiệm vụ có cấu trúc, biết đại thể các bước → Plan-Execute.
  • Chất lượng đầu ra quan trọng, có tín hiệu kiểm chứng → thêm Reflection.
  • Nhiệm vụ lớn → kết hợp cả ba.

Checklist

  • [ ] Đã chọn mẫu phù hợp độ cấu trúc của nhiệm vụ.
  • [ ] Plan-execute có cơ chế re-plan khi bước lỗi.
  • [ ] Reflection dựa trên tín hiệu khách quan khi có thể.
  • [ ] Giới hạn số vòng reflection.
  • [ ] Có tiêu chí "đủ tốt" để dừng.

Sai lầm thường gặp

  • Dùng plan-execute cho việc mù mờ: kế hoạch lập ra sai vì thiếu thông tin thực tế; nên dùng ReAct.
  • Kế hoạch cứng không re-plan: một bước fail kéo sập cả chuỗi.
  • Reflection không có tín hiệu khách quan: agent tự khen mình "đã tốt" dù sai — reflection thành vô nghĩa.
  • Reflection vô hạn vòng: đốt token, có khi làm kết quả tệ đi. Giới hạn 2–3 vòng.
  • Cầu toàn: cố sửa đến hoàn hảo trong khi "đủ tốt" đã đáp ứng yêu cầu — lãng phí.
Bài 7 ta ráp tất cả lại thành một agent hoàn chỉnh chạy được từ đầu đến cuối.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi