ปลดล็อค Gen AI ให้เทพกว่าเดิมด้วย เทคนิคการ Prompt แบบ Chain of Thought

Thakorn
Google Cloud Thailand
4 min readJun 24, 2024

ในโลกที่ขับเคลื่อนด้วยข้อมูล AI เข้ามามีบทบาทสำคัญในการประมวลผลข้อมูลมหาศาลและช่วยเราตัดสินใจอย่างชาญฉลาด Language Model ขนาดใหญ่ อย่างเช่น Gemini หรือ ChatGPT ได้แสดงให้เห็นถึงประสิทธิภาพอันน่าทึ่งในการทำงานด้านภาษา ไม่ว่าจะเป็นการเขียนบทความ สร้างสรรค์เนื้อหา หรือแม้แต่การแปลภาษา

อย่างไรก็ตาม แม้แต่โมเดลที่ล้ำหน้าที่สุดก็ยังคงเผชิญความท้าทายในการแก้ปัญหาเชิงตรรกะที่ซับซ้อนครับ ซึ่งมนุษย์อย่างเรา ๆ ทำได้อย่างเป็นธรรมชาติ เช่น การแก้โจทย์คณิตศาสตร์ หรือการใช้ Common Sense ในการตัดสินใจ

ทีนี้คำถามคือ แล้วเราจะช่วยให้ AI มีความคิดเชิงตรรกะได้อย่างไร? Chain of Thought Prompting คือกุญแจสำคัญและเป็นคำตอบของบทความนี้ครับ

Chain of Thought ทำให้ AI คิดเป็นขั้นเป็นตอน

ลองนึกภาพ AI ที่ไม่เพียงแค่ให้คำตอบได้ แต่ยังอธิบายกระบวนการคิดเป็นขั้นตอนอย่างละเอียด เหมือนกับที่มนุษย์เราคิดหาคำตอบและใช้เหตุผลต่าง ๆ พยายามอธิบายออกมา นี่คือที่มาของเทคนิค Chain of Thought Prompting เทคนิคที่จะช่วยให้ AI แก้ปัญหาเชิงตรรกะได้ครับ

ตัวอย่าง:

  • โจทย์: “โต๊ะตัวหนึ่งมีขา 4 ขา ถ้ามีโต๊ะ 5 ตัว จะมีกี่ขา?”
  • Standard Prompting: AI อาจตอบผิดพลาด เช่น “9 ขา” เพราะทำการบวกเลขจากโจทย์ตรงๆ
  • Chain of Thought Prompting: AI จะคิดดังนี้
* "โต๊ะ 1 ตัว มี 4 ขา"
* "ดังนั้น โต๊ะ 5 ตัว จะมี 4 x 5 = 20 ขา"
* "คำตอบคือ 20"

มาดูตัวอย่างที่ดูซับซ้อนมากขึ้น ดังตัวอย่าง Prompt นี้ครับ

Q: ปัจจุบันลูกค้ามี Google Workspace 3 Accounts ต่อมาลูกค้ามีการซื้อ Google Workspace เพิ่ม เพราะมีการขยายทีมเพิ่มอีก 2 ทีม ซึ่งแต่ละทีมมีสมาชิก 4 คน ลูกค้าจะมีกี่ Account ?
A: คำตอบคือ 11 Accounts
Q: โรงคั่วกาแฟมีกาแฟในสต็อค 20 กิโลกรัม นำมาคั่วบรรจุถุง12 กิโลกรัม จำเป็นต้องซื้อกาแฟมาเพิ่มอีก 8 กิโลกรัม ดังนั้นทางโรงคั่วจะมีกาแฟเหลือทั้งหมดกี่กิโลกรัม ?
A:

สังเกตว่า AI อาจจะมีการตอบผิดเนื่องจากอาจจะข้ามขั้นตอนลำดับความคิดไป ดังนั้นเราจึงใช้เทคนิค Chain of Thought เข้าช่วยดังตัวอย่าง Prompt นี้ครับ

Q: ปัจจุบันลูกค้ามี Google Workspace 3 Accounts ต่อมาลูกค้ามีการซื้อ Google Workspace เพิ่ม เพราะมีการขยายทีมเพิ่มอีก 2 ทีม ซึ่งแต่ละทีมมีสมาชิก 4 คน ลูกค้าจะมีกี่ Account ?
A: ลูกค้ามี 3 Account มีขยายทีมเพิ่ม 2 ทีม ทีมละ 4 คน ดังนั้นขยายทีมเพิ่ม 2 x 4 = 8 คน เดิมมี 3 + 8 = 11 คำตอบคือ 11 Accounts
Q: โรงคั่วกาแฟมีกาแฟในสต็อค 20 กิโลกรัม นำมาคั่วบรรจุถุง12 กิโลกรัม จำเป็นต้องซื้อกาแฟมาเพิ่มอีก 8 กิโลกรัม ดังนั้นทางโรงคั่วจะมีกาแฟเหลือทั้งหมดกี่กิโลกรัม ?
A:

สังเกตว่าจะมีการคิดเป็นขั้นเป็นตอนและได้คำตอบที่ถูกต้องครับ การคิดและอธิบายออกมาในลักษณะนี้ ไม่ต่างจากมนุษย์หรือแม้กระทั่งผู้เขียนเองก็มีการพูดคนเดียวอยู่บ่อยครั้ง เพื่อย้ำกระบวนการคิด เช่น ตอนผัดข้าวผัด ก็จะมีการบอกขั้นตอนตัวเอง ว่าต้องผัดกระเทียมก่อนนะ ใส่หัวหอมสับลงไปด้วย พอเริ่มสุกหอมแล้ว ค่อยยีไข่ แล้วใส่ข้าวใส่ซอสเป็นอันเสร็จ การพูดคนเดียวในใจแบบนี้เราเรียกว่า Internal Monologue หรือ Inner Speech เป็นหลักการที่ทำให้เกิด Chain of Thought ครับ

จริง ๆ แล้ว AI ที่เก่งกาจก็จำลองมาจากมนุษย์นี่แหละครับ ไม่ว่าจะ Deep Learning ที่ใช้ Neural Network ก็จำลองหลักการจากโครงข่ายประสาทในสมองมนุษย์ ยิ่ง AI เก่งมากเทียมเท่ามนุษย์ ก็ยิ่งต้องคิดยิ่งต้องเหมือนมนุษย์มากขึ้นครับ

คราวนี้ลองมาดูตัวอย่างที่ซับซ้อนขึ้นและเราก็ใช้หลักการ Chain of Thought กัน

Q: ปัจจุบันลูกค้ามี Google Workspace 3 Accounts ต่อมาลูกค้ามีการซื้อ Google Workspace เพิ่ม เพราะมีการขยายทีมเพิ่มอีก 2 ทีม ซึ่งแต่ละทีมมีสมาชิก 4 คน ลูกค้าจะมีกี่ Account ?
A: ลูกค้ามี 3 Account มีขยายทีมเพิ่ม 2 ทีม ทีมละ 4 คน ดังนั้นขยายทีมเพิ่ม 2 x 4 = 8 คน เดิมมี 3 + 8 = 11 คำตอบคือ 11 Accounts
Q: โรงคั่วกาแฟ kōhī kobu มีเครื่องคั่วอยู่ 3 เครื่อง มี 1 เครื่องคั่วกาแฟได้จำนวน 20 กิโลกรัม อีก 2 เครื่องคั่วได้ 5 กิโลกรัม ในวันถัดมาได้ทำการเปลี่ยนเครื่องคั่ว 5 กิโลกรัม 1 เครื่อง เป็นเครื่อง 10 กิโลกรัม ดังนั้นจะผลิตกาแฟได้วันละกี่กิโลกรัม
A:

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

Q: ปัจจุบันลูกค้ามี Google Workspace 3 Accounts ต่อมาลูกค้ามีการซื้อ Google Workspace เพิ่ม เพราะมีการขยายทีมเพิ่มอีก 2 ทีม คือทีม AI กับทีม MKT ซึ่งแต่ละทีมมีสมาชิก 4 คน เดือนถัดมาทีม AI รับคนเพิ่มอีก 2 คนเพื่อมาทำ R&D คำถามคือเดือนถัดลูกค้าจะมีกี่ Account ?
A: ลูกค้ามี 3 Account มีขยายทีมเพิ่ม 2 ทีม ทีมละ 4 คน ดังนั้นขยายทีมเพิ่ม 2 x 4 = 8 คน เดิมมี 3 + 8 = 11 ในเดือนถัดมา ทีม AI รับคนเพิ่ม 2 คน 11+2 คำตอบคือ 13 Accounts
Q: โรงคั่วกาแฟ kōhī kobu มีเครื่องคั่วอยู่ 3 เครื่อง มี 1 เครื่องคั่วกาแฟได้จำนวน 20 กิโลกรัม อีก 2 เครื่องคั่วได้ 5 กิโลกรัม ในวันถัดมาได้ทำการเปลี่ยนเครื่องคั่ว 5 กิโลกรัม 1 เครื่อง เป็นเครื่อง 10 กิโลกรัม ดังนั้นจะผลิตกาแฟได้วันละกี่กิโลกรัม
A:

เมื่อมีการยกตัวอย่างที่มีความครอบคลุมกับ Use Case ที่เราจะใช้ก็ทำให้ผลลัพธ์ดีขึ้นและถูกต้อง อย่างไรก็ตาม จากตัวอย่างนั้น เรามีการให้ Example ซึ่งตามหลักการก็คือ Few-Shot Prompting นั่นเองที่ทำให้ AI มีลำดับความคิดมากขึ้น หากเราไม่ได้ยกตัวอย่างหรือเรียกว่า Zero-Shot Prompting ก็อาจทำได้ แต่บางครั้งอาจข้ามขั้นตอนบางลำดับที่สำคัญและมีผลต่อคำตอบครับ ด้วยการคิดแบบเป็นขั้นเป็นตอนแบบนี้ AI จะสามารถแก้โจทย์ที่ซับซ้อนขึ้นได้อย่างถูกต้องมากยิ่งขึ้น และยังช่วยให้มนุษย์เราเข้าใจกระบวนการคิดของ AI ได้ดียิ่งขึ้นอีกด้วย

Chain of Thought Use Cases

เราสมารถใช้เทคนิคนี้ใน Use Case ต่าง ๆ ได้ ไม่จำเป็นต้องเป็น Math เสมอไป ดังตัวอย่างนี้ครับ

ผลลัพธ์จาก Chain of Thought ยังใช้ได้ผลดีกับงานอื่น ๆ เช่น

  • Transforming/enriching data การแปลงข้อมูลต่าง ๆ
  • Interpreting data การอธิบายข้อมูล
  • Code generation การสร้างโค้ดและอธิบายโค้ด
  • Creating synthetic data การสังเคราะห์ข้อมูล

ข้อดีของ Chain of Thought

  1. ง่ายและใช้แรงน้อย เพราะเราแค่ Prompt เท่านั้น
  2. ใช้กับงานได้หลากหลายเปรียบเสมือนการพูดคุยเพื่อแก้ปัญหาต่างๆ
  3. สามารถใช้ตีความได้ บางครั้งที่เราต้อง Debug แต่ละ use case เราอาจใช้ตัว LLM เพื่ออธิบายหรือตีความให้ Business Users หรือคนอื่น ๆ เข้าใจได้
  4. ใช้กับ LLMs ทั่วไปได้ ไม่จำเป็นต้องเป็นค่ายใด ที่สำคัญคือไม่ต้อง Train หรือ Tune Model ใหม่
  5. ผลลัพธ์สุดท้ายหรือคำตอบที่ได้จาก LLMs มีความคลาดเคลื่อนแปรปรวนน้อยกว่า

แม้ว่าจะมีข้อดีมากมายแต่ก็มีข้อเสียบางประการที่ผู้เขียนอยากจะแจ้งไว้ให้ผู้อ่านรับทราบ เผื่อจะได้ตระหนักถึงเวลาจะใช้นะครับ

ข้อเสียของ Chain of Thought

  • ต้นทุนเพิ่มขึ้น: เนื่องจากการเรามี Prompt ที่ยาวขึ้น ทั้ง Input และ Output ทำให้ LLMs ใช้ Resources มากขึ้นไม่ว่าจะทรัพยากรด้านเวลาหรือค่าใช้จ่าย
  • ใช้เวลานานขึ้น: เนื่องจากต้อง Interpreting หรืออธิบายเราออกมาด้วยจึงทำให้ใช้เวลาตอบนานขึ้น
  • อาจเกิดการ “หลอน” (Hallucination): LLM อาจสร้างข้อมูลเท็จขึ้นมา

Chain of Thought Best Practices

  1. ห้ามใช้ LLMs ตัวเล็ก ๆ นะครับ ต้องอย่างน้อย 15B parameters ซึ่งเลือกใช้ Gemini จะดีที่สุด
  2. ใส่คำตอบหลังจากอธิบายไปแล้วใน Chain of Thought ห้ามใส่ก่อนนะครับ ประโยคจะได้เป็นเหตุผลเป็นผล
  3. ตั้งค่า Temperature เป็น 0 อย่างที่เราเคยอิธบายใน Blog ก่อน ๆ แล้วว่า การที่ค่า Temperature สูงทำให้ AI คิดสร้างสรรค์ออกนอกกรอบ ดังนั้นตั้งค่าเป็น 0 ให้ AI อยู่ในโลกความเป็นจริง
  4. ใช้ Few-Shot พยายามอย่าใช้แค่ One-Shot หรือ Zero-Shot
  5. พยายามเขียนตัวอย่างที่ครอบคลุมมากที่สุดให้ครอบคลุม
  6. พยายามอย่าใช้สมการทางคณิตศาสตร์มาให้เหตุผลหรืออธิบายแทนการอธิบายด้วยคำพูด การอธิบายด้วยคำพูดแบบ NL (Natural Language) ให้ผลดีกว่า และอาจจะใช้สมการมาช่วยเสริมก็ได้
  7. อย่าไปกังวลที่ลำดับของแต่ละตัวอย่างใน Few-Shot แต่ละแบบมากไป เพราะลำดับตัวอย่างส่งผลต่อประสิทธิภาพน้อยมาก
  8. อย่าคาดหวังว่า Chain of Thought จะปรับปรุงผลลัพธ์ได้ดีมากหากงานที่เราใช้มีหลักการให้เหตุผลแค่ 1–2 ขั้นตอน
  9. อย่ากังวลว่าผลลัพธ์จากคำถามกับตัวอย่างที่เราให้จะต้องมีขั้นตอนเหมือนกันเป๊ะๆ
  10. ให้ตัวอย่างเหมาะสมกับการกระจายตัวของข้อมูลคุณ เช่น ถ้ามีข้อมูล class A 60% class B 40% ให้เขียน 3 ตัวอย่างเป็น Class A และ 2 ตัวอย่างเป็น Class B และไม่จำเป็นต้องเขียน Few-Shot นี้เกิน 6 ตัวอย่าง เพราะอาจจะมีแค่บางงานที่ใช้ได้ดีกับตัวอย่างเยอะ ๆ

Self-Consistency คืออะไร?

อย่างไรก็ตามก็มีโอกาสที่ LLMs จะตอบผิดพลาดได้ ดังนั้นจึงใช้หลักการ Self-Consistency ซึ่งเป็นเทคนิคที่ใช้เพื่อปรับปรุงความแม่นยำของ Chain of Thought หลักการคือยิงคำถามนี้ให้ LLMs ตอบอย่างต่อเนื่องหลายครั้ง LLMs อาจจะมีคำตอบที่ดีหรือไม่ดี หรือตอบไม่เหมือนเดิม แต่อย่างไรก็ตามผลลัพธ์ที่ดีที่สุด หรืออาจจะถูกต้องจะเป็นผลลัพธ์ที่ LLMs ตอบซ้ำกันมากที่สุดหรือเรียกว่า Common Response หากนำมานับจะมีจำนวนมากที่สุดเทียบกับคำตอบอื่นอย่างมีนัยยะ

Conclusion

การ Prompt นั้นมีหลากหลายเทคนิค มีทั้งยากและง่าย และการที่ได้ผลลัพธ์ที่ดีก็คือมนุษย์อย่างเราต้อง Breif มันนี่แหละครับ และนี่คือเทคนิค Chain of Thought ที่ผมอยากจะบอกเล่าถึงผู้อ่านทุกท่านให้เข้าใจและนำไปใช้ดู และในเรื่องถัด ๆ ไป ผมจะนำอีกเทคนิคที่ต่อยอดจาก Chain of Thought นั่นคือ ReAct Prompting ที่ไม่ใช่ Javascript Framework แต่เป็น ReAct ที่ย่อมาจาก Reasoning + Acting เป็นเทคนิคที่อาจะยากนิดนึงแต่รับรองว่าสนุกแน่นอนครับ

--

--

Thakorn
Google Cloud Thailand

✨ Solution Engineering Google Cloud Partner All-star 2023 🍊 Google Cloud by Tangerine