ReAct: agent vừa suy luận vừa hành động trong cùng một vòng lặp

“While large language models (LLMs) have demonstrated impressive capabilities across tasks in language understanding and interactive decision making, their abilities for reasoning (e.g. chain-of-thought prompting) and acting (e.g. action plan generation) have primarily been studied as separate topics.”

Shunyu Yao, Jeffrey Zhao, Dian Yu +4 · 7 tác giả · Princeton University and Google Research (Brain Team) · 2022 · arXiv:2210.03629

Vì sao agent phải vừa suy luận vừa hành động?

Mở

Một mô hình ngôn ngữ có thể viết ra câu trả lời nghe thuyết phục, nhưng khi người dùng hỏi về thông tin vừa xảy ra, nó vẫn bịa ra chi tiết không có thật; và một agent được giao việc thực tế có thể lên kế hoạch rất chỉn chu rồi hỏng ngay ở bước đầu tiên vì không kiểm tra lại kết quả hành động của mình. Hai lỗi ấy xuất phát từ cùng một gốc: suy luận và hành động lâu nay vẫn được xử lý như hai bài toán tách rời, trong khi mọi vấn đề thực tế đều cần hai thứ này nối tiếp nhau và chỉnh sửa nhau. Đây là bài toán của bất kỳ ai chạy agent trên máy chủ riêng: model giỏi đến đâu cũng vô dụng nếu nó không biết khi nào phải dừng lại để tra cứu.

Paper này làm gì

ReAct ghép hai chữ Reasoning và Acting: cùng một mô hình vừa viết ra chuỗi suy luận (reasoning traces), vừa sinh hành động cụ thể như gọi API hay thao tác trên môi trường, hai phần xen kẽ trong một vòng lặp duy nhất. Suy luận cho mô hình biết nó đang thiếu thông tin gì và kế hoạch đã thay đổi ra sao; hành động đưa nó ra tiếp xúc với nguồn bên ngoài, ví dụ kho tri thức hay chính trang web nó đang thao tác, thay vì dựa vào trí nhớ của chính mình. Vì vậy lỗi bịa thông tin được xử lý bằng cách tra cứu thật, còn ngoại lệ được xử lý ngay trong lúc lập kế hoạch thay vì để sai số tích lũy qua các bước sau. Tác giả áp ReAct lên tập câu hỏi trả lời và xác minh dữ kiện, cùng hai nhiệm vụ ra quyết định có tương tác, rồi so sánh với các đường cơ sở mạnh nhất thời điểm đó.

Phát hiện chính

  1. ReAct trộn chuỗi suy luận và hành động cụ thể xen kẽ trong cùng một vòng lặp, thay vì tách hai phần ra xử lý như những công đoạn riêng biệt; điểm khác biệt của paper là đặt cả hai trong đúng một vòng lặp duy nhất. (we explore the use of LLMs to generate both reasoning traces and task-specific actions in an interleaved manner)

  2. Chuỗi suy luận giúp mô hình hình thành, theo dõi và cập nhật kế hoạch hành động, đồng thời xử lý ngoại lệ khi có gì đó sai, nên kế hoạch không vỡ tan ngay khi kết quả trả về khác dự kiến. (reasoning traces help the model induce, track, and update action plans as well as handle exceptions)

  3. Trên hai nhiệm vụ ra quyết định tương tác là ALFWorld và WebShop, ReAct vượt phương pháp bắt chước và học tăng cường với mức thành công tuyệt đối cao hơn 34% và 10%, trong khi chỉ được cho một hoặc hai ví dụ trong ngữ cảnh. (On two interactive decision making benchmarks (ALFWorld and WebShop), ReAct outperforms imitation and reinforcement learning methods by an absolute success rate of 34% and 10% respectively, while being prompted with only one or two in-context examples)

Caveat

Tác giả không nêu hạn chế trong abstract. Phần tóm tắt trình bày cách hoạt động của phương pháp và các kết quả đo được, nhưng không nói phương pháp thất bại ở đâu, chạy tốt trong điều kiện nào, hay mỗi vòng lặp tiêu tốn bao nhiêu chi phí tính toán. Người đọc muốn biết ranh giới thật của ReAct phải lướt sang phần nội dung đầy đủ của paper; coi phần tóm tắt là toàn bộ đánh giá sẽ hiểu sai về ranh giới của cách tiếp cận này.

Áp vào 5ac thế nào

Vòng lặp của ReAct chính là control loop của Hermes: agent suy luận, gọi tool, đọc kết quả rồi lặp lại cho tới khi card trên Kanban hoàn thành. Khi một card thất bại, worker không tinh chỉnh model (fine-tune) mà viết lại nhận định bằng văn bản rồi chạy thử lần sau; ngoại lệ được xử lý ngay trong runtime, đúng như cách ReAct dùng chuỗi suy luận để sửa kế hoạch. Gbrain đóng vai trò nguồn tra cứu bên ngoài, tương đương Wikipedia API trong paper: agent hỏi kho tri thức trước khi trả lời, thay vì tin vào trí nhớ của model. Control loop này độc lập với model, nên 5ac đổi model ở tầng model routing mà không phải viết lại cách suy luận và hành động.

Nguồn