ReAct Prompting (VI)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (viết tắt của Reason + Act, dịch nghĩa: «Lý luận và Hành động») — là một mô hình thiết kế prompt cho các mô hình ngôn ngữ lớn (LLM), cho phép chúng giải quyết các nhiệm vụ phức tạp bằng cách xen kẽ giữa các suy luận bằng lời (suy nghĩ) và các hành động tương tác với môi trường bên ngoài[1]. Phương pháp này được đề xuất vào năm 2022 bởi các nhà nghiên cứu từ Google ResearchĐại học Princeton và đã trở thành một hướng tiếp cận nền tảng trong sự phát triển của các tác nhân thông minh.

Đổi mới cốt lõi của ReAct nằm ở việc kết hợp các suy luận logic — đặc trưng của các kỹ thuật như Chain-of-Thought (CoT) — với việc thực hiện các hành động bên ngoài, chẳng hạn như tìm kiếm thông tin hoặc tương tác với các giao diện lập trình ứng dụng (API). Điều này cho phép mô hình điều chỉnh kế hoạch của mình một cách linh hoạt, kiểm tra độ chính xác của thông tin và vượt qua những hạn chế trong kiến thức nội tại vốn thường đã lỗi thời hoặc không đầy đủ[2].

Tiền đề và lịch sử ra đời

Trước khi ReAct xuất hiện, có hai hướng tiếp cận chính nhưng tách biệt nhau trong việc sử dụng LLM để giải quyết các nhiệm vụ phức tạp:

  • Chuỗi suy luận (Chain-of-Thought, CoT): Mô hình tạo ra các suy luận logic từng bước để giải quyết nhiệm vụ, nhưng thực hiện điều đó trong «chân không thông tin», dựa hoàn toàn vào kiến thức nội tại của mình. Điều này thường dẫn đến các lỗi thực tế và «ảo giác»[1].
  • Lập kế hoạch hành động (Act-Only): Mô hình tạo ra một chuỗi hành động để tương tác với môi trường bên ngoài (ví dụ: trong các trò chơi văn bản), nhưng không có kế hoạch cấp cao rõ ràng. Các hệ thống như vậy xử lý kém với lỗi và không thể điều chỉnh chiến lược khi gặp phải các tình huống không lường trước.

ReAct được tạo ra để kết hợp theo hướng hiệp đồng những điểm mạnh của cả hai hướng tiếp cận. Nó cho phép mô hình không chỉ suy luận mà còn neo đậu các suy luận của mình vào các sự kiện từ thế giới bên ngoài, đồng thời điều chỉnh hành động dựa trên phản hồi nhận được.

Cơ chế hoạt động: vòng lặp «Suy nghĩ — Hành động — Quan sát»

ReAct hoạt động trong khuôn khổ một vòng lặp lặp đi lặp lại bao gồm ba thành phần chính. Mô hình tuần tự tạo ra một quỹ đạo gồm các bước Thought, ActionObservation.

Ví dụ cấu trúc prompt:

Câu hỏi: Thành phố nơi nhà phát minh nổi tiếng nhờ dòng điện xoay chiều ra đời là thủ đô của quốc gia nào?

Thought 1: Tôi cần tìm hiểu xem ai đã phát minh ra dòng điện xoay chiều. Sau đó tìm nơi sinh của người đó và kiểm tra xem thành phố đó có phải là thủ đô hay không.

Action 1: Search[nhà phát minh dòng điện xoay chiều]

Observation 1: Dòng điện xoay chiều (AC) được phát triển và phổ biến bởi Nikola Tesla.

Thought 2: Bây giờ tôi cần tìm hiểu nơi Nikola Tesla được sinh ra.

Action 2: Search[nơi sinh của Nikola Tesla]

Observation 2: Nikola Tesla sinh ra ở làng Smiljan, Đế quốc Áo (nay là Croatia).

Thought 3: Smiljan không phải là thủ đô. Do đó, câu hỏi không có câu trả lời rõ ràng theo cách diễn đạt này. Tuy nhiên, Tesla đã sống và làm việc lâu dài ở Mỹ. Có thể câu hỏi muốn nói đến thủ đô của quốc gia nơi ông thực hiện những khám phá lớn nhất. Đây là câu hỏi phức tạp hơn. Tôi phải nêu sự thật dựa trên nơi sinh. Thành phố nơi ông sinh ra không phải là thủ đô.

Final Answer: Nhà phát minh gắn liền với dòng điện xoay chiều, Nikola Tesla, sinh ra ở Smiljan (Croatia), nơi này không phải là thủ đô.

Suy nghĩ (Thought)

Mô hình tạo ra một suy luận nội tại trong đó nó phân tích nhiệm vụ, phân rã nó thành các nhiệm vụ con, hình thành hoặc điều chỉnh kế hoạch hành động và đánh giá trạng thái hiện tại. Bước này không tác động đến môi trường bên ngoài mà phục vụ cho việc lập kế hoạch nội bộ.

Hành động (Action)

Dựa trên suy luận của mình, mô hình thực hiện một hành động bên ngoài bằng cách gọi đến một trong các công cụ có sẵn. Ví dụ về các hành động:

  • Search [truy vấn] — để tìm kiếm thông tin trong cơ sở tri thức (ví dụ: Wikipedia).
  • Click [phần tử] — để điều hướng trên trang web.
  • API_call [tham số] — để gọi một API bên ngoài.

Quan sát (Observation)

Hệ thống hoặc công cụ bên ngoài thực hiện hành động và trả về kết quả (quan sát). Đây có thể là một đoạn văn bản, phản hồi API hoặc thông báo lỗi. Mô hình sử dụng quan sát này để hình thành suy nghĩ tiếp theo, khép kín vòng phản hồi[2].

Kết quả thực nghiệm và hiệu quả

Các tác giả của ReAct đã kiểm tra phương pháp trên một loạt nhiệm vụ đa dạng, chứng minh sự vượt trội của nó so với các hướng tiếp cận CoT và Act-Only.

Kết quả của ReAct so với các phương pháp cơ sở trên các benchmark chính[1]
Benchmark Nhiệm vụ ReAct (thành công/độ chính xác) Chain-of-Thought (thành công/độ chính xác) Act-Only (thành công/độ chính xác)
FEVER Kiểm tra thực tế 87.6% 82.8% 70.1%
HotpotQA Câu hỏi đa bước 31.8% 36.3% 17.0%
ALFWorld Trò chơi văn bản (lập kế hoạch) 71% 10% 13%
WebShop Điều hướng web 40% - 30.1%
  • Trong các nhiệm vụ yêu cầu kiểm tra thực tế (FEVER), ReAct vượt trội đáng kể so với CoT vì nó có thể xác minh thông tin.
  • Trong các nhiệm vụ lập kế hoạch tương tác (ALFWorld, WebShop), ReAct thể hiện lợi thế vượt trội vì có thể thích nghi với môi trường thay đổi.
  • Trong các nhiệm vụ suy luận thuần túy (HotpotQA), CoT có thể cho kết quả tương đương hoặc thậm chí tốt hơn. Tuy nhiên, hướng tiếp cận kết hợp ReAct+CoT cho thấy hiệu suất tốt nhất, đạt 35% trên HotpotQA[1].

Phê bình và hạn chế

Mặc dù hiệu quả, ReAct có một số hạn chế và điểm dễ bị tổn thương.

  • «Tính dễ vỡ» (Brittleness): Các nghiên cứu sau này cho thấy thành công của ReAct có thể không phải do sự hiệp đồng thực sự giữa suy luận và hành động, mà là do sự tương đồng cú pháp giữa các ví dụ trong prompt và nhiệm vụ hiện tại. Mô hình có thể tuân theo mẫu `Thought-Action-Observation` mà không thực sự hiểu ngữ nghĩa của các suy luận[3].
  • Chi phí tính toán: Mỗi vòng lặp ReAct đòi hỏi ít nhất một lần gọi LLM và một lần truy cập công cụ bên ngoài, khiến nó chậm hơn và tốn kém hơn so với prompting thông thường.
  • Phụ thuộc vào công cụ: Hiệu quả của tác nhân phụ thuộc trực tiếp vào chất lượng và độ tin cậy của các công cụ có sẵn. Phản hồi không chính xác hoặc nhiễu từ API có thể dẫn suy luận của mô hình theo hướng sai.

Ý nghĩa và sự phát triển tiếp theo

ReAct đã trở thành một cột mốc quan trọng trong sự phát triển của AI, đánh dấu sự chuyển đổi từ các hệ thống tạo sinh sang các hệ thống tác nhân. Nó đã đặt nền móng khái niệm và thực tiễn cho hầu hết các framework hiện đại để xây dựng tác nhân, chẳng hạn như:

  • LangChain
  • LlamaIndex
  • AutoGen

Các ý tưởng của ReAct đã trở thành điểm khởi đầu cho các kiến trúc suy luận phức tạp hơn, chẳng hạn như Reflexion (thêm vòng lặp tự phản ánh sau khi thất bại) và Tree of Thoughts (ToT) (khám phá nhiều hướng suy luận song song).

Liên kết

  • Trang dự án chính thức của ReAct
  • Mô tả ReAct trong hướng dẫn Learn Prompting
  • Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.

Tài liệu tham khảo

  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Shinn, N. et al. (2023). Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366.
  • Verma, V. et al. (2024). On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models. arXiv:2405.13966.
  • Yao, S. et al. (2022). WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. arXiv:2207.01206.
  • Shridhar, M. et al. (2020). ALFWorld: Aligning Text and Embodied Environments for Interactive Learning. arXiv:2010.03768.
  • Qin, L. et al. (2023). AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Collaboration. arXiv:2308.08155.
  • Thorne, J. et al. (2018). FEVER: A Large-Scale Dataset for Fact Extraction and Verification. arXiv:1803.05355.
  • Yang, Z. et al. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600.

Ghi chú

  1. 1.0 1.1 1.2 1.3 Yao, S., Zhao, J., Yu, D., et al. (2022). «ReAct: Synergizing Reasoning and Acting in Language Models». arXiv preprint arXiv:2210.03629. [1]
  2. 2.0 2.1 «ReAct: Synergizing Reasoning and Acting in Language Models». Google Research Blog. [2]
  3. Verma, V., et al. (2024). «On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models». arXiv preprint arXiv:2405.13966. [3]