ReAct Prompting (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (ย่อมาจาก Reason + Act แปลว่า «ให้เหตุผลและกระทำ») — คือกระบวนทัศน์การออกแบบ prompt สำหรับโมเดลภาษาขนาดใหญ่ (LLM) ที่ช่วยให้โมเดลสามารถแก้ปัญหาที่ซับซ้อนได้ด้วยการสลับระหว่างการให้เหตุผลเชิงวาจา (ความคิด) และการกระทำที่โต้ตอบกับสภาพแวดล้อมภายนอก[1] วิธีการนี้ถูกเสนอขึ้นในปี 2022 โดยนักวิจัยจาก Google Research และ มหาวิทยาลัยพรินซ์ตัน และได้กลายเป็นแนวทางพื้นฐานในการพัฒนาตัวแทนอัจฉริยะ

นวัตกรรมหลักของ ReAct คือการผสมผสานการให้เหตุผลเชิงตรรกะซึ่งเป็นลักษณะเฉพาะของเทคนิคอย่าง Chain-of-Thought (CoT) เข้ากับการดำเนินการภายนอก เช่น การค้นหาข้อมูลหรือการโต้ตอบกับ API ซึ่งช่วยให้โมเดลสามารถปรับแผนได้อย่างพลวัต ตรวจสอบข้อเท็จจริง และ突破ข้อจำกัดของความรู้ภายในของตนเองที่มักจะล้าสมัยหรือไม่ครบถ้วน[2]

พื้นหลังและประวัติการสร้าง

ก่อนที่ ReAct จะปรากฏขึ้น มีแนวทางหลักสองแนวทางที่แยกจากกันสำหรับการใช้ LLM ในการแก้ปัญหาที่ซับซ้อน:

  • ลำดับของการให้เหตุผล (Chain-of-Thought, CoT): โมเดลสร้างการให้เหตุผลเชิงตรรกะทีละขั้นตอนเพื่อแก้ปัญหา แต่ทำสิ่งนี้ใน «สุญญากาศทางข้อมูล» โดยอาศัยเฉพาะความรู้ภายในของตนเอง ซึ่งมักนำไปสู่ข้อผิดพลาดเชิงข้อเท็จจริงและ «ภาพหลอน» (hallucination)[1]
  • การวางแผนการกระทำ (Act-Only): โมเดลสร้างลำดับของการกระทำเพื่อโต้ตอบกับสภาพแวดล้อมภายนอก (เช่น ในเกมข้อความ) แต่ไม่มีการวางแผนระดับสูงที่ชัดเจน ระบบเหล่านี้จัดการกับข้อผิดพลาดได้ไม่ดีและไม่สามารถปรับกลยุทธ์เมื่อเผชิญกับสถานการณ์ที่ไม่คาดคิด

ReAct ถูกสร้างขึ้นเพื่อรวมจุดแข็งของทั้งสองแนวทางเข้าด้วยกันอย่างเสริมซึ่งกันและกัน โดยช่วยให้โมเดลไม่เพียงแต่ให้เหตุผล แต่ยัง เชื่อมโยง การให้เหตุผลของตนกับข้อเท็จจริงจากโลกภายนอก และปรับการกระทำของตนตามข้อมูลป้อนกลับที่ได้รับ

กลไกการทำงาน: วงจร «ความคิด — การกระทำ — การสังเกต»

ReAct ทำงานภายในวงจรซ้ำ ๆ ที่ประกอบด้วยสามองค์ประกอบหลัก โมเดลสร้างวิถีทางที่ประกอบด้วยขั้นตอน Thought, Action และ Observation ตามลำดับ

ตัวอย่างโครงสร้าง prompt:

คำถาม: เมืองหลวงของเมืองที่นักประดิษฐ์ผู้มีชื่อเสียงด้านกระแสไฟฟ้าสลับเกิดคืออะไร?

Thought 1: ฉันต้องค้นหาว่าใครเป็นผู้ประดิษฐ์กระแสไฟฟ้าสลับ จากนั้นหาสถานที่เกิดของเขา และตรวจสอบว่าเมืองนั้นเป็นเมืองหลวงหรือไม่

Action 1: Search[ผู้ประดิษฐ์กระแสไฟฟ้าสลับ]

Observation 1: กระแสไฟฟ้าสลับ (AC) ได้รับการพัฒนาและส่งเสริมโดย Nikola Tesla

Thought 2: ตอนนี้ฉันต้องรู้ว่า Nikola Tesla เกิดที่ไหน

Action 2: Search[สถานที่เกิดของ Nikola Tesla]

Observation 2: Nikola Tesla เกิดในหมู่บ้าน Smiljan จักรวรรดิออสเตรีย (โครเอเชียในปัจจุบัน)

Thought 3: Smiljan ไม่ใช่เมืองหลวง ดังนั้นคำถามนี้ไม่มีคำตอบที่ชัดเจนในการตีความนี้ อย่างไรก็ตาม Tesla อาศัยและทำงานในสหรัฐอเมริกาเป็นเวลานาน บางทีอาจหมายถึงเมืองหลวงของประเทศที่เขาค้นพบสิ่งสำคัญ ซึ่งเป็นคำถามที่ซับซ้อนกว่า ฉันควรระบุข้อเท็จจริงตามสถานที่เกิด เมืองที่เขาเกิดไม่ใช่เมืองหลวง

Final Answer: นักประดิษฐ์ที่เกี่ยวข้องกับกระแสไฟฟ้าสลับ คือ Nikola Tesla เกิดที่ Smiljan (โครเอเชีย) ซึ่งไม่ใช่เมืองหลวง

ความคิด (Thought)

โมเดลสร้างการให้เหตุผลภายในซึ่งวิเคราะห์ปัญหา แบ่งย่อยเป็นปัญหาย่อย สร้างหรือปรับแผนการดำเนินงาน และประเมินสถานะปัจจุบัน ขั้นตอนนี้ไม่ส่งผลต่อสภาพแวดล้อมภายนอก แต่ทำหน้าที่เป็นการวางแผนภายใน

การกระทำ (Action)

จากการให้เหตุผลของตน โมเดลดำเนินการภายนอกโดยเรียกใช้เครื่องมือที่มีอยู่อย่างใดอย่างหนึ่ง ตัวอย่างของการกระทำ:

  • Search [คำค้นหา] — สำหรับค้นหาข้อมูลในฐานความรู้ (เช่น Wikipedia)
  • Click [องค์ประกอบ] — สำหรับนำทางบนหน้าเว็บ
  • API_call [พารามิเตอร์] — สำหรับเรียก API ภายนอก

การสังเกต (Observation)

ระบบหรือเครื่องมือภายนอกดำเนินการและส่งคืนผลลัพธ์ (การสังเกต) ซึ่งอาจเป็นข้อความ การตอบสนองจาก API หรือข้อความแจ้งข้อผิดพลาด โมเดลใช้การสังเกตนี้เพื่อสร้างความคิดถัดไป ปิดวงจรข้อมูลป้อนกลับ[2]

ผลการทดลองและประสิทธิภาพ

ผู้เขียน ReAct ได้ทดสอบวิธีการบน benchmark ที่หลากหลาย และแสดงให้เห็นถึงความเหนือกว่าเมื่อเปรียบเทียบกับแนวทาง CoT และ Act-Only

ผลลัพธ์ของ ReAct เปรียบเทียบกับวิธีพื้นฐานบน benchmark หลัก[1]
Benchmark งาน ReAct (ความสำเร็จ/ความแม่นยำ) Chain-of-Thought (ความสำเร็จ/ความแม่นยำ) Act-Only (ความสำเร็จ/ความแม่นยำ)
FEVER การตรวจสอบข้อเท็จจริง 87.6% 82.8% 70.1%
HotpotQA คำถามแบบหลายขั้นตอน 31.8% 36.3% 17.0%
ALFWorld เกมข้อความ (การวางแผน) 71% 10% 13%
WebShop การนำทางบนเว็บ 40% - 30.1%
  • ในงานที่ต้องการการตรวจสอบข้อเท็จจริง (FEVER) ReAct มีประสิทธิภาพเหนือกว่า CoT อย่างมีนัยสำคัญ เนื่องจากสามารถยืนยันข้อมูลได้
  • ในงานการวางแผนแบบโต้ตอบ (ALFWorld, WebShop) ReAct แสดงให้เห็นถึงข้อได้เปรียบอย่างมาก เนื่องจากสามารถปรับตัวต่อสภาพแวดล้อมที่เปลี่ยนแปลงได้
  • ในงานการให้เหตุผลล้วน ๆ (HotpotQA) CoT อาจแสดงผลลัพธ์ที่เทียบเคียงกันหรือดีกว่าได้ อย่างไรก็ตาม แนวทางผสม ReAct+CoT แสดงประสิทธิภาพที่ดีที่สุด โดยบรรลุ 35% ใน HotpotQA[1]

การวิจารณ์และข้อจำกัด

แม้จะมีประสิทธิภาพ แต่ ReAct มีข้อจำกัดและจุดอ่อนหลายประการ

  • «ความเปราะบาง» (Brittleness): งานวิจัยในภายหลังแสดงให้เห็นว่าความสำเร็จของ ReAct อาจเกี่ยวข้องไม่มากนักกับการทำงานร่วมกันอย่างแท้จริงของการให้เหตุผลและการกระทำ แต่กับความคล้ายคลึงทางไวยากรณ์ระหว่างตัวอย่างใน prompt และงานปัจจุบัน โมเดลอาจปฏิบัติตามรูปแบบ `Thought-Action-Observation` โดยไม่เข้าใจความหมายของการให้เหตุผลอย่างเต็มที่[3]
  • ต้นทุนการคำนวณ: แต่ละวงจร ReAct ต้องการการเรียก LLM อย่างน้อยหนึ่งครั้งและการเรียกใช้เครื่องมือภายนอกหนึ่งครั้ง ซึ่งทำให้ช้าและมีค่าใช้จ่ายสูงเมื่อเปรียบเทียบกับ prompt มาตรฐาน
  • การพึ่งพาเครื่องมือ: ประสิทธิภาพของตัวแทนขึ้นอยู่กับคุณภาพและความน่าเชื่อถือของเครื่องมือที่มีอยู่โดยตรง การตอบสนองที่ไม่ถูกต้องหรือมีสัญญาณรบกวนจาก API อาจทำให้การให้เหตุผลของโมเดลเดินทางผิดทิศทาง

ความสำคัญและการพัฒนาต่อไป

ReAct ได้กลายเป็นหลักไมล์สำคัญในการพัฒนา AI ซึ่งแสดงถึงการเปลี่ยนผ่านจากระบบเชิงสร้างไปสู่ระบบเชิงตัวแทน โดยได้วางรากฐานทางแนวคิดและทางปฏิบัติสำหรับ framework สมัยใหม่ส่วนใหญ่สำหรับการสร้างตัวแทน เช่น:

  • LangChain
  • LlamaIndex
  • AutoGen

แนวคิดของ ReAct ได้เป็นจุดเริ่มต้นสำหรับสถาปัตยกรรมการให้เหตุผลที่ซับซ้อนยิ่งขึ้น เช่น Reflexion (เพิ่มวงจรการสะท้อนตนเองหลังจากความล้มเหลว) และ Tree of Thoughts (ToT) (สำรวจเส้นทางการให้เหตุผลหลายเส้นทางพร้อมกัน)

ลิงก์

  • หน้าโครงการอย่างเป็นทางการของ ReAct
  • คำอธิบาย ReAct ในคู่มือ Learn Prompting
  • Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.

วรรณกรรม

  • 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.

หมายเหตุ

  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]