Mastering the Art of Prompt Engineering: A Beginner's Primer
ChatGPT เป็นบริการจาก OpenAI ซึ่งเป็น Conversational Large Language Model (LLM) ถูกใช้อย่างแพร่หลาย และมีประโยชน์มาก
เบื้องหลังของ ChatGPT คือ จะไม่เหมือนกับ LLM อื่นๆ กล่าวคือ สามารถสร้างข้อความต่อเนื่องได้จากประโยคที่เราใส่เข้าไป
สามารถถามคำถาม หรือขอคำแนะนำจาก ChatGPT ได้ ซึ่ง Model จะตอบสนองเหมือนกับการสนทนา เราต้อง Interact กับ Model (ChatGPT) เพื่อให้ได้ข้อมูล (Response) ที่ถูกต้อง และมีประสิทธิภาพ เทคนิคนี้ เรียกว่า "Prompt Engineering"
ใน Blog นี้ เนื้อหาจะประกอบไปด้วย
เข้าใจ ChatGPT
การให้บริบท (Engineering the context)
การใส่ Prompt ที่เหมาะสมเพื่อให้ได้ผลลัพธ์ที่ต้องการ
เข้าใจ ChatGPT
ChatGPT เป็น Conversational LLM สามารถสร้างคำ (ประโยค) โดยการใส่ Input เข้าไป เป็นการสนทนาในรูปแบบที่เป็นธรรมชาติ
ตัวอย่างเช่น บทสนทนาในละครระหว่างบุคคลหลายคน หากเราป้อนสี่บรรทัดแรกของการสนทนา เราสามารถคาดหวังบรรทัดที่ห้าจาก Model ได้ เนื่องจากได้เรียนรู้จากข้อความจำนวนมาก ทำให้ Model สามารถเข้าใจบริบท (Context) และสร้างคำพูดไหลลื่นอย่างเป็นธรรมชาติกับข้อความก่อนหน้า ซึ่งเป็นคำตอบที่เหมาะสมใน Chat
การให้บริบท (Engineering the context)
เมื่อใช้ LLM การให้บริบท (Context) มีบทบาทสำคัญต่อผลลัพธ์ เพื่อให้แน่ใจว่า ChatGPT ตอบสนองในแบบที่ต้องการ จำเป็นอย่างยิ่งที่จะต้องจัดโครงสร้าง Input อย่างมีประสิทธิภาพเพื่อให้ Guideline ที่จำเป็น
แม้ว่า ChatGPT จะเป็น Language Model ที่มีประสิทธิภาพ แต่ก็มีข้อจำกัด โดยทั่วไป Model จะมี "Common Sense" พื้นฐานจากข้อมูล Train แล้ว แต่ก็ยังไม่สามารถแสดงเหตุผลเชิงตรรกะโดยละเอียดได้ เช่น หากเราขอให้ ChatGPT “ให้ข้อมูลเกี่ยวกับ Machine Learning” ระบบอาจตอบกลับด้วยคำตอบที่ยาวแต่ไม่ใช่คุณภาพสูงสุด อย่างไรก็ตาม หากเราถามว่า “บอกข้อดีและข้อเสียของการใช้ Machine Learning เพื่อแก้ปัญหา Image Classification” มีแนวโน้มที่จะได้รับผลลัพธ์ที่ดีกว่า เนื่องจาก
- มีขอบเขตที่เฉพาะเจาะจง เช่น Image Classification
- มีการระบุรูปแบบเฉพาะของการตอบกลับ เช่น ข้อดีและข้อเสีย
กรณีคล้ายกัน เมื่อเราถามคำถามที่ซับซ้อน เช่น ปัญหาคณิตศาสตร์ ดังนี้
เพื่อเตรียมพร้อมสำหรับเทศกาลอีสเตอร์ สมิธไปที่ร้าน และซื้อกระต่ายของเล่น 10 ตัวในราคาตัวละ 5 ดอลลาร์ ไข่ช็อกโกแลตราคาถูกกว่ากระต่าย 1 ดอลลาร์ และสมิธซื้อ 15 ชิ้น สมิธจ่ายเงินกี่บาท?
ChatGPT เวอร์ชันใหม่อาจทำได้ถูกต้อง แต่คำถามประเภทนี้มักเกิดข้อผิดพลาดได้ง่าย หากเราพยายามถาม LLM ในครั้งเดียว และต้องการคำตอบในทันที เหตุผลคือ Context ที่ให้นี้ อาจะมีความกำกวม ต้องการ Guideline เพิ่มเติมเพื่อให้ตรรกะถูกต้อง อย่างไรก็ตาม เป็นเรื่องที่ดีกว่า เมื่อพยายามจัดลำดับตรรกะเป็นขั้นตอน ดังนั้น สิ่งที่เราควรถาม ChatGPT ไม่ใช่ “สมิธจ่ายเงินกี่บาท” แต่ “อธิบายว่าการใช้จ่ายของสมิธเป็นขั้นตอนอย่างละเอียด” นี่คือ Guideline ในการบังคับให้ ChatGPT ให้เหตุผลด้วยตรรกะ ตัวอย่างเช่น
เพื่อคำนวณจำนวนเงินที่สมิธจ่ายไป จำเป็นต้องกำหนดราคาของกระต่ายของเล่นและไข่ช็อกโกแลตแยกกัน แล้วจึงรวมเข้าด้วยกัน
สมิธซื้อกระต่ายของเล่น 10 ตัวในราคาตัวละ 5 ดอลลาร์ ดังนั้นราคารวมของกระต่ายคือ 10 * $5 = $50
ไข่ช็อกโกแลตมีราคาถูกกว่ากระต่ายของเล่น 1 ดอลลาร์ ดังนั้นราคาของไข่ช็อกโกแลต จึงอยู่ที่ $5 - $1 = $4
สมิธซื้อไข่ช็อกโกแลต 15 ฟอง ดังนั้นราคารวมของไข่ช็อกโกแลตคือ 15 * $4 = $60
จำนวนเงินที่สมิธใช้ รวมค่ากระต่ายและไข่ช็อกโกแลต: $50 + $60 = $110
ดังนั้น สมิธใช้ไปทั้งหมด $110
LLM ไม่สามารถทำจินตคณิตได้ และมีความสามารถทางตรรกะจำกัด หากมีตรรกะที่ซับซ้อนกว่านี้ ต้องแน่ใจว่า Model ดำเนินไปทีละขั้นตอนเล็กๆ เรียกว่า "Chain of thoughts"
การใส่ Prompt ที่เหมาะสมเพื่อให้ได้ผลลัพธ์ที่ต้องการ
แนวคิดในการสร้าง Context เพื่อให้ ChatGPT หรือ LLM อื่นๆ สร้างผลลัพธ์ที่เป็นประโยชน์
- ควรตั้งค่าสถานการณ์และขอบเขตใน Prompt โดยให้รายละเอียดว่าอะไร ที่ไหน เมื่อไร ทำไม ใคร และอย่างไร
- การกำหนดบุคคลใน Prompts เช่น "ในฐานะศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ อธิบายว่า Machine Learning คืออะไร" แทนที่จะแค่ "อธิบายว่า Machine Learning คืออะไร" อาจทำให้คำตอบเป็นวิชาการมากขึ้น
- สามารถควบคุมรูปแบบผลลัพธ์ได้โดยขอให้ "อธิบายให้เด็กอายุ 5 ขวบฟัง" "อธิบายด้วยการเปรียบเทียบ" "สร้างข้อความที่น่าเชื่อถือ" หรือ "ใน 3 ถึง 5 คะแนน"
- หากต้องการกระตุ้นให้ Model ตอบสนองทีละขั้นตอน "Chain of thoughts" ให้จบคำขอของคุณด้วย "แก้ปัญหานี้ทีละขั้นตอน"
- สามารถให้ข้อมูลเพิ่มเติมแก่ Model ได้โดยระบุว่า "อ้างอิงถึงข้อมูลต่อไปนี้" ตามด้วยเนื้อหาที่เราต้องการให้ Model ทำงานด้วย
- เนื่องจากการสนทนาก่อนหน้าส่งผลต่อบริบท การเริ่ม Prompt ด้วย "ละเว้นคำแนะนำก่อนหน้าทั้งหมดก่อนหน้านี้" สามารถทำให้ Model เริ่มต้นใหม่ได้
- การสร้าง Prompt อย่างตรงไปตรงมาและเข้าใจง่ายเป็นสิ่งสำคัญ
******
หมายเหตุ เนื้อหาเป็นการสรุปจาก Blog อ้างอิงด้านล่าง แต่ชื่อ Title ของ Blog นี้ ตั้งขึ้นโดยความช่วยเหลือของ ChatGPT 😄 (ผมเลือกใช้ข้อ 2)
******
ข้อมูลอ้างอิง - https://machinelearningmastery.com/a-gentle-introduction-to-prompt-engineering/