เพลย์บุ๊กการปรับแต่งพรอมป์ต์สำหรับ LLM
(github.com/varungodbole)เอกสารนี้เหมาะสำหรับใคร?
- เอกสารสำหรับผู้ที่ต้องการพัฒนาความสามารถในการเขียนพรอมป์ต์สำหรับ Post-Trained LLM
- เหมาะสำหรับผู้ที่แม้จะมีพื้นฐานด้านเทคนิคไม่มาก แต่มีประสบการณ์ใช้งาน LLM เบื้องต้น
- ช่วงแรก: ให้ความเข้าใจเชิงสัญชาตญาณเกี่ยวกับการฝึกหลังและพรอมป์ต์
- ช่วงหลัง: ให้ขั้นตอนและเคล็ดลับในการเขียนพรอมป์ต์อย่างเป็นรูปธรรม
ทำไมจึงต้องมีคู่มือการปรับแต่ง?
- การเขียนพรอมป์ต์สำหรับ LLM เป็นงานเชิงประสบการณ์ที่ต้องเรียนรู้และปรับแก้อย่างต่อเนื่อง
- เอกสารนี้มีเป้าหมายเพื่อแบ่งปันกลยุทธ์การเขียนพรอมป์ต์ที่มีประสิทธิภาพอย่างเป็นระบบ
- แม้จะเขียนโดยเน้นโมเดลที่ผ่านการฝึกหลังอย่าง Gemini เป็นหลัก แต่ก็สามารถนำไปใช้กับโมเดลอื่นได้
Pre-Training vs. Post-Training
การฝึกล่วงหน้า (Pre-training)
- แนวคิดของการฝึกล่วงหน้า
- การฝึกล่วงหน้าเป็นแนวคิดที่มีมานานใน deep learning โดยเป็นวิธีที่ใช้ชุดข้อมูลขนาดใหญ่กว่ามาก (B) ซึ่งคล้ายกับชุดข้อมูลขนาดเล็ก (A) เพื่อเรียนรู้คุณลักษณะทั่วไปก่อน แล้วจึงค่อยปรับละเอียดบนชุดข้อมูล A
- ตัวอย่างเช่น อาจนึกถึงชุดข้อมูลแมมโมแกรมขนาดเล็ก (A) และชุดข้อมูลภาพธรรมชาติขนาดใหญ่ที่เก็บมาจากอินเทอร์เน็ต (B)
- ขั้นตอนของการฝึกล่วงหน้า
- ฝึกโมเดลบนชุดข้อมูลขนาดใหญ่ (B) เพื่อเรียนรู้คุณลักษณะทั่วไปที่มีประโยชน์
- จากนั้นทำการ fine-tune โมเดลให้เหมาะกับชุดข้อมูล A เพื่อให้ได้ประสิทธิภาพที่ดีขึ้นบน A
- กล่าวอย่างเจาะจงคือ โมเดลจะเรียนรู้ทักษะพื้นฐาน เช่น การแบ่งส่วนวัตถุหรือการจดจำแนวคิดโดยไม่ขึ้นกับตำแหน่งในภาพจากชุดข้อมูล B ก่อน แล้วจึงต่อยอดด้วยการเรียนรู้ทักษะเฉพาะของชุดข้อมูล A
- ความจำเป็นของการฝึกล่วงหน้า
- หากไม่มีการเรียนรู้ผ่านชุดข้อมูล B ชุดข้อมูล A เพียงอย่างเดียวอาจมีข้อมูลไม่พอสำหรับการเรียนรู้ทักษะทั่วไป ทำให้ประสิทธิภาพลดลง
- โมเดลที่ได้เรียนรู้ทักษะทั่วไปจากชุดข้อมูล B แล้ว จะต้องเรียนรู้เพิ่มเติมเพียงทักษะเฉพาะทางบนชุดข้อมูล A ที่มีข้อมูลจำกัด
- กรณีของ LLM (Large Language Model)
- การฝึกล่วงหน้าของ LLM เกิดขึ้นจากการทำ “งานทำนายคำถัดไป” บนข้อความจากอินเทอร์เน็ต
- ในกระบวนการนี้ โมเดลจะเรียนรู้โครงสร้างของโลกที่สะท้อนอยู่บนเว็บโดยปริยาย
- อินเทอร์เน็ตกับการสะท้อนโลก
- คำถามว่าอินเทอร์เน็ตสะท้อนโลกแบบใดเป็นคำถามสำคัญ และเพื่อทำความเข้าใจเรื่องนี้ เราอาจใช้คำเปรียบเทียบเรื่อง “cinematic universe”
สัญชาตญาณเรื่อง 'cinematic universe' ของการฝึกล่วงหน้า
- ข้อความกับการพรรณนาโลก
- Large Language Model (LLM) เรียนรู้โลกผ่านข้อความ
- ข้อความไม่ได้มีข้อจำกัดว่าจะต้องสะท้อนเฉพาะ “ความจริง” เท่านั้น
- นอกเหนือจากข้อมูลเท็จหรือข้อความที่ผิดพลาดแล้ว ยังมีอีกหลายเหตุผลที่ทำให้ข้อความไม่ได้สะท้อนความเป็นจริงเชิงวัตถุวิสัยเพียงหนึ่งเดียว
- ตัวอย่าง: Aragorn และ Gondor
- ประโยค “Aragorn ลงท้ายที่สุดก็ได้เป็นกษัตริย์แห่ง Gondor” จะจริงหรือไม่ ขึ้นอยู่กับบริบทและข้อสมมติ
- จักรวาลภาพยนตร์ของ “The Lord of the Rings”: อาจถือว่าเป็นความจริง
- “Marvel Cinematic Universe” หรือโลกความจริง: ไม่เป็นความจริง เพราะ Aragorn และ Gondor เป็นสิ่งสมมติ
- ประโยค “Aragorn ลงท้ายที่สุดก็ได้เป็นกษัตริย์แห่ง Gondor” จะจริงหรือไม่ ขึ้นอยู่กับบริบทและข้อสมมติ
- เกณฑ์ของความจริง
- การที่ข้อความหนึ่งจริงหรือไม่นั้นขึ้นอยู่กับว่าเราตั้งอยู่บนสมมติฐานของ “โลกแบบไหน”
- นี่เป็นประเด็นที่ถกเถียงกันมายาวนานในปรัชญาและภาษาศาสตร์ และสามารถดูภาพรวมอย่างละเอียดเกี่ยวกับความจริงได้ที่ลิงก์นี้
- ในทางปฏิบัติ เราอาจทำให้เรียบง่ายเป็นแนวคิดว่า “ข้อความจะจริงหรือไม่ขึ้นอยู่กับ cinematic universe ที่ข้อความนั้นตั้งอยู่เป็นฉากหลัง”
- ข้อมูล pre-training กับ cinematic universe
- คอร์ปัสสำหรับ pre-training มีลักษณะใกล้เคียงกับผลรวมของ cinematic universe หลากหลายแบบที่วัฒนธรรมมนุษย์สร้างขึ้น
- ให้แม่นยำขึ้นคือ มันเป็นชุดรวมของวัฒนธรรมที่มีส่วนร่วมอย่างมากต่อแหล่งข้อมูลสำหรับ pre-training (เช่น เว็บ)
สำคัญ
คอร์ปัสสำหรับ pre-training อาจมองได้ว่าเป็นผลรวมของ cinematic universe ที่วัฒนธรรมมนุษย์สร้างขึ้น และสะท้อนโดยเฉพาะวัฒนธรรมที่มีส่วนสำคัญต่อแหล่งข้อมูลอย่างเว็บ
- ความเข้าใจบริบทของโมเดล
- LLM จะอนุมานว่ากำลังอยู่ใน “universe” แบบใดจากบริบทที่ได้รับ (กล่าวคือ prefix)
- จากนั้นจะปฏิบัติตามกฎ ธรรมเนียม และข้อเท็จจริงของ universe นั้น
- พรอมป์ต์ที่มีสัญญาณบริบทชัดเจนจะช่วยให้โมเดลเข้าใจ “สคริปต์” ได้ง่ายขึ้น
- ตัวอย่าง: จุดเริ่มต้นของบทความบล็อกเกี่ยวกับนิวยอร์ก (“Concrete jungle where dreams are made of ไม่ใช่แค่เนื้อเพลง แต่คือความจริงอันเปี่ยมพลังของนิวยอร์ก...”)
- ในทางกลับกัน พรอมป์ต์ที่มีบริบทอ่อน เช่น “Hi, how are you?” ทำให้โมเดลตัดสินได้ยากว่ากำลังอยู่ใน universe แบบใด
- เพราะสำนวนทั่วไปแบบนี้ปรากฏอยู่ในคอร์ปัสหลากหลายประเภท จึงเปิดความเป็นไปได้ไว้หลายทาง
- บทบาทของการฝึกหลัง (Post-training)
- เมื่อบริบทไม่เพียงพอ post-training จะมีบทบาทสำคัญในการช่วยให้โมเดลสร้างผลลัพธ์ที่เฉพาะเจาะจงและสอดคล้องกันมากขึ้น
การฝึกหลัง (Post-training)
- บทบาทของการฝึกหลัง
- การฝึกหลังให้แนวทางเกี่ยวกับ “default universe” ที่ LLM จะทำงานอยู่เป็นพื้นฐาน
- แทนที่จะให้โมเดลอนุมาน universe จากพรอมป์ต์เพียงอย่างเดียว การฝึกหลังจะกำหนดข้อสมมติบางอย่างให้คงที่ หรือกำหนดข้อจำกัดเพื่อแก้ความกำกวมอย่างสม่ำเสมอ
- สิ่งนี้จำเป็นต่อการเพิ่มประโยชน์ใช้สอยของโมเดล เช่น มีประโยชน์ในการสอนให้ LLM “ทำตามคำสั่งของผู้ใช้” เป็นค่าเริ่มต้น
- ความสำคัญของการฝึกหลัง
- หากไม่มีการฝึกหลัง คำสั่งอย่าง “เขียนรายงานเกี่ยวกับ George Washington” อาจทำงานผิดพลาดโดยกลายเป็นการสร้างข้อความที่ต่อเนื่องจากคำสั่งนั้นอย่างเดียว
- การฝึกหลังช่วยให้พฤติกรรมพื้นฐานของโมเดลสอดคล้องกับบรรทัดฐานทางสังคมมากขึ้น
- สิ่งนี้ช่วยให้โมเดลกลายเป็นเครื่องมือที่ปลอดภัยและมีประสิทธิผลยิ่งขึ้น
สำคัญ
การฝึกหลังสอนให้โมเดลทำหน้าที่พื้นฐานได้อย่างสม่ำเสมอและคงเส้นคงวาในสภาพแวดล้อมการนำไปใช้งานที่หลากหลาย
- สิ่งที่สามารถเรียนรู้ได้จากการฝึกหลัง
- สิ่งที่โมเดลเรียนรู้ได้ระหว่างการฝึกหลังมีได้ตั้งแต่เรื่องเชิงปฏิบัติและเป็นรูปธรรม ไปจนถึงเรื่องที่เป็นอัตวิสัยและเป็นส่วนตัว
- เนื้อหาสำคัญที่สามารถสอนในการฝึกหลัง
- วิธีปฏิบัติตามรูปแบบเฉพาะ
- ตัวอย่าง: Gemma's Formatter สมมติว่าโมเดลทำงานอยู่ใน cinematic universe ที่สนทนากับผู้ใช้อยู่เสมอ
- ในสถานการณ์นี้ โมเดลจะทำงานตามคำสั่งของระบบ และบทสนทนาจะเริ่มต้นด้วยเทิร์นของผู้ใช้มนุษย์เสมอ
- วิธีทำตามคำสั่งของผู้ใช้
- ตัวอย่าง: เมื่อได้รับคำขอว่า “เขียนเรียงความเกี่ยวกับสุนัข” ก็ควรต้องเขียนเรียงความจริง ๆ
- สามารถสอนผ่านการฝึกหลังเพื่อไม่ให้เพิกเฉยต่อคำขอของผู้ใช้แล้วตอบในรูปแบบอื่น
- การทำให้สอดคล้องกับ “โลกความจริง”
- ใช้เพื่อปรับ default cinematic universe ของโมเดลให้สอดคล้องกับ “โลกความจริง” ที่ผู้ใช้ส่วนใหญ่น่าจะสนใจ
- ตัวอย่าง: สำหรับคำถามว่า “คนดัง $CELEBRITY เกิดที่ไหน?” ระบบจะตั้งต้นจากข้อมูลในโลกความจริง ไม่ใช่โลกของแฟนฟิกชัน
- การเสริมความปลอดภัย
- อินเทอร์เน็ตมีบรรทัดฐานเชิงคุณค่าหลากหลาย และบางเนื้อหาอาจไม่เหมาะกับสภาพแวดล้อมการเผยแพร่เชิงพาณิชย์
- การฝึกหลังช่วยปรับโมเดลให้สอดคล้องกับนโยบายความปลอดภัยเฉพาะ และกำหนดเกณฑ์เชิงบรรทัดฐานสำหรับเนื้อหาที่สร้างขึ้น
- สิ่งนี้ทำให้โมเดลมีข้อสมมติเชิงบรรทัดฐานที่จำเป็นแฝงอยู่เมื่อต้องสร้างข้อความที่ซับซ้อน
- วิธีปฏิบัติตามรูปแบบเฉพาะ
- สรุป
- การฝึกหลังช่วยให้โมเดลทำงานได้อย่างสม่ำเสมอและตรงตามความคาดหวังในสภาพแวดล้อมการใช้งานที่หลากหลาย
- เป็นกระบวนการที่จำเป็นต่อการเพิ่มทั้งประโยชน์ใช้สอยและความปลอดภัยของโมเดลให้สูงสุด
การเก็บรวบรวมข้อมูลสำหรับการฝึกภายหลัง
- สรุปสำคัญ
- ระหว่างการฝึกภายหลัง LLM จะเรียนรู้และถูกประเมินโดยอิงจากข้อมูลที่ผู้ประเมินมนุษย์สร้างขึ้น
- ระหว่างการฝึกภายหลัง โมเดลจะใช้ผู้ประเมินมนุษย์ที่สร้างข้อมูลเป็นต้นแบบในฐานะ “นักแสดงบทบาทดิจิทัล”
- กระบวนการเก็บรวบรวมข้อมูลสำหรับการฝึกภายหลัง
- การสร้างชุดข้อมูลตัวอย่างอินพุตที่หลากหลาย
- สร้างชุดพรอมป์ต์ที่อธิบายงานที่ LLM สามารถทำได้ (เช่น ปรับโครงสร้างข้อมูลเป็น JSON, ช่วยวางแผนงานแต่งงาน เป็นต้น)
- ข้อมูลนี้อาจสร้างขึ้นจากสัญชาตญาณของนักพัฒนา หรือจากไอเดียที่ผู้ประเมินมนุษย์เสนอ
- การสรรหาผู้ประเมินมนุษย์
- บทบาทของผู้ประเมิน: เขียน “คำตอบที่ถูกต้อง” สำหรับตัวอย่างอินพุต หรือประเมินคำตอบของโมเดลตามลำดับความเหมาะสม
- ผู้ประเมินจะสร้างข้อมูลคนละประเภทกันตามขั้นตอนของการฝึกโมเดล
- การเขียนแนวทางการประเมิน
- จัดเตรียมตัวอย่างและคำแนะนำอย่างละเอียดเพื่อให้ผู้ประเมินเข้าใจงานได้ดี
- การเก็บข้อมูลและดำเนินการฝึกภายหลัง
- นำข้อมูลที่เก็บรวบรวมมาใช้กับโมเดลที่ผ่านการฝึกล่วงหน้าเพื่อทำการฝึกภายหลัง
- การนำโมเดลไปใช้งานจริง
- หลังจากเสร็จสิ้นการฝึกภายหลังแล้ว จึงนำโมเดลไปใช้งานในสภาพแวดล้อมจริง
- การสร้างชุดข้อมูลตัวอย่างอินพุตที่หลากหลาย
- ผลกระทบของการฝึกภายหลัง
- หนึ่งในเหตุผลที่ LLM สามารถแสดงพฤติกรรมคล้ายมนุษย์ได้ คือมันได้เรียนรู้จากชุดข้อมูลพฤติกรรมมนุษย์ที่ถูกรวบรวมอย่างรอบคอบ
- การฝึกล่วงหน้าสร้างความสามารถหลักของโมเดล ส่วนการฝึกภายหลังจะปรับทิศทางพฤติกรรมของโมเดลผ่านการสาธิตของมนุษย์
สำคัญ
เหตุผลที่ LLM สามารถแสดงพฤติกรรมคล้ายมนุษย์ได้ เป็นเพราะมันได้เรียนรู้จากข้อมูลพฤติกรรมมนุษย์ที่ถูกรวบรวมอย่างรอบคอบ
- ความท้าทายของการเก็บรวบรวมข้อมูลสำหรับการฝึกภายหลัง
- ความจำเจของงานที่ทำซ้ำ
- งานประเมินอาจน่าเบื่อได้ ตัวอย่างเช่น โปรแกรมเมอร์ Python ที่เก่งมากอาจรู้สึกว่าน่าสนใจกว่าถ้าได้ทำโปรเจกต์ของตัวเอง
- กวีมักชอบเขียนบทกวีของตัวเองมากกว่า และมีแนวโน้มสูงที่จะไม่สนใจการประเมินบทกวีที่ AI สร้างขึ้น
- ผู้ประเมินอาจสูญเสียแรงจูงใจจากความซ้ำซากของงาน การควบคุมความเป็นเจ้าของข้อมูลที่มีไม่มากพอ และการขาดความหมายทางสังคมของงาน
- ความยากในการนิยามคำตอบที่ “ดี”
- การนิยามคำตอบที่ “ดี” สำหรับงานหนึ่ง ๆ เป็นเรื่องซับซ้อน
- เป็นเรื่องยากที่จะกำหนดเกณฑ์ของงานที่สะท้อนความซับซ้อนของการเขียนที่ดี ความถูกต้องตามข้อเท็จจริง และความเป็นจริงทางสังคมได้อย่างชัดเจน
- เช่นเดียวกับที่ระบบกฎหมายใช้บรรทัดฐานจากคดีเพื่อแก้ปัญหากรณีขอบ งานลักษณะนี้พึ่งพาความเป็นอัตวิสัยและบริบทอย่างมาก
- ผู้ประเมินอาจเข้าใจงานไม่เพียงพอ
- มีความเป็นไปได้ที่ผู้ประเมินจะไม่เข้าใจงานอย่างถูกต้อง
- สิ่งนี้อาจเกิดขึ้นเมื่อจ้างผู้ประเมินที่มีระดับทักษะไม่เหมาะสม หรือผู้ประเมินไม่ตระหนักถึงข้อจำกัดของตนเอง
- ตัวอย่าง: เขียนคำตอบที่ผิดสำหรับคำถามชีววิทยาโดยอาศัยความรู้ระดับมหาวิทยาลัยที่ล้าสมัย
- ความผิดพลาดของมนุษย์
- มนุษย์ย่อมทำผิดพลาดได้ อาจารย์สามารถออกข้อสอบที่มีเฉลยผิดได้ และแพทย์ก็มีแนวโน้มวินิจฉัยผิดมากขึ้นเมื่ออยู่ในภาวะอ่อนล้า
- เนื่องจากคุณภาพของข้อมูลประเมินจากมนุษย์ไม่ได้สมบูรณ์แบบ ระบบ AI จึงอาจเรียนรู้จากข้อมูลที่ผิดได้บ่อยครั้งเช่นกัน
- ความจำเจของงานที่ทำซ้ำ
- สรุป
- การเก็บรวบรวมข้อมูลสำหรับการฝึกภายหลังมีบทบาทสำคัญต่อคุณภาพของโมเดล แต่ต้องใช้ความพยายามอย่างมากเพื่อรับประกันคุณภาพของข้อมูล
- การทำให้มั่นใจว่าผู้ประเมินเหมาะสมกับงานเป็นสิ่งสำคัญเพื่อให้ได้ข้อมูลที่ถูกต้องและเชื่อถือได้
การเขียนพรอมป์ต์
- สรุปสำคัญ
- เมื่อเขียน system instruction และพรอมป์ต์ ควรเขียนโดยคำนึงถึง “จิตสำนึกร่วม” ของกลุ่มผู้ประเมินในทีมฝึกภายหลัง
- หากเขียนคำสั่งให้ผู้ประเมินเข้าใจและปฏิบัติตามได้อย่างเคร่งครัด โมเดลก็มีแนวโน้มจะปฏิบัติตามได้ดีขึ้นด้วย
สำคัญ
system instruction และพรอมป์ต์ควรถูกเขียนให้สะท้อนจิตสำนึกร่วมของกลุ่มผู้ประเมินในทีมฝึกภายหลัง
ประเด็นสำคัญที่ต้องพิจารณาเมื่อเขียนพรอมป์ต์
-
ตรวจสอบว่าคำสั่งชัดเจน กระชับ และระบุอย่างชัดแจ้งหรือไม่
- ตัวอย่าง: หากเป็นคำสั่งให้สร้างโค้ด Python โปรแกรมเมอร์ Python ที่มีทักษะและถูกสุ่มเลือกมาควรอ่านแล้วเข้าใจได้ทันที
- ไม่ดี: "Write a Python function that computes prime numbers."
- ดี: "Write a Python function that computes prime numbers from 1 to 100. Include pytype annotations for the function and use 2-space indentation."
- ตัวอย่าง: หากเป็นคำสั่งให้สร้างโค้ด Python โปรแกรมเมอร์ Python ที่มีทักษะและถูกสุ่มเลือกมาควรอ่านแล้วเข้าใจได้ทันที
-
ตรวจสอบว่าคำสั่งขัดแย้งกันเองหรือทำตามได้ยากหรือไม่
- ควรเขียนให้กระชับและเป็นธรรมชาติ เพื่อให้มนุษย์ยังสามารถทำตามได้อย่างเคร่งครัดแม้ในเวลาที่เหนื่อยหรือหิว
- ไม่ดี: "Don’t write a story about a mean dog, unless it's friendly, and also sad..."
- ดี: "Write a short story (200-300 words) about a loyal golden retriever named Buddy..."
- ควรเขียนให้กระชับและเป็นธรรมชาติ เพื่อให้มนุษย์ยังสามารถทำตามได้อย่างเคร่งครัดแม้ในเวลาที่เหนื่อยหรือหิว
-
คำสั่งมีมากเกินไปหรือไม่?
- โมเดลอาจทำตามคำสั่งที่ยาวและซับซ้อนทั้งหมดได้ยาก หากเป็นไปได้ ควรแบ่งงานออกเป็นงานย่อย
- ไม่ดี: "Read each article and, for each key idea, rate it on a scale of 1-10..."
- ดี: แบ่งเป็นงานย่อย: 1) สร้างรายการแนวคิดหลัก 2) ประเมินแต่ละแนวคิด 3) แปลแนวคิดที่สำคัญที่สุด 4) สร้างโพสต์สำหรับโซเชียลมีเดีย
- โมเดลอาจทำตามคำสั่งที่ยาวและซับซ้อนทั้งหมดได้ยาก หากเป็นไปได้ ควรแบ่งงานออกเป็นงานย่อย
-
ใช้คำสั่งเชิงบวก
- การระบุว่า “ควรทำอะไร” มักมีประสิทธิภาพมากกว่าการสั่งว่า “ไม่ควรทำอะไร”
- ไม่ดี: "Don’t ever end your response with a full stop."
- ดี: "Your response should always end with an exclamation mark or a question mark."
- การระบุว่า “ควรทำอะไร” มักมีประสิทธิภาพมากกว่าการสั่งว่า “ไม่ควรทำอะไร”
-
คำสั่งที่ทำหน้าที่เป็น “ตัวเตือน” ให้โมเดล
- พิจารณาตัวอย่างอินพุตที่หลากหลาย และให้แนวทางเพิ่มเติมสำหรับกรณีที่ไม่ชัดเจน
- ตัวอย่าง: อธิบายกรณีขอบให้ชัดเจนในส่วน “ข้อพิจารณาเพิ่มเติม” หรือ “สมมติฐานเพิ่มเติม”
-
พรอมป์ต์คือไฮเปอร์พารามิเตอร์แบบใหม่
- คุณภาพของพรอมป์ต์ส่งผลอย่างมากต่อประสิทธิภาพของระบบ แม้จะเป็นไปไม่ได้ที่จะหาพรอมป์ต์ที่ “เหมาะที่สุด” แต่การทดลองเพื่อค่อย ๆ หาพรอมป์ต์ที่ดีกว่าก็สำคัญ
-
คำสั่งสำหรับการตอบว่า “ไม่ทราบ”
- ให้แนวทางอย่างชัดเจนสำหรับกรณี “ไม่ทราบ” หรือ “กำกวม” เพื่อชี้นำให้โมเดลแสดงความกำกวมอย่างชัดเจนแทนการให้คำตอบที่ผิด
-
ความเชื่อมโยงอย่างใกล้ชิดระหว่างพรอมป์ต์กับเช็กพอยต์
- พรอมป์ต์มีความเชื่อมโยงอย่างลึกซึ้งกับเช็กพอยต์ของโมเดลเฉพาะตัว ในโมเดลเวอร์ชันใหม่ พรอมป์ต์เดียวกันอาจทำงานต่างออกไป
คู่มือสไตล์การเขียนพรอมป์ต์ (พื้นฐาน)
- พิจารณาใช้ Markdown : เก็บพรอมป์ต์แต่ละรายการไว้ในไฟล์ Markdown แยกกัน และจัดโครงสร้างหัวข้อกับส่วนต่าง ๆ ให้ดีเพื่อเพิ่มความอ่านง่าย
- คำนึงถึงผู้ใช้คนอื่น : พรอมป์ต์ควรถูกเขียนไม่ใช่เพื่อโมเดลเท่านั้น แต่เพื่อผู้ดูแลรักษาด้วย
- รักษาความเรียบง่าย : หากพรอมป์ต์ยาวหรือซับซ้อนเกินไป ภาระในการดูแลรักษาเมื่อโมเดลเปลี่ยนก็อาจเพิ่มขึ้น ควรเขียนให้กระชับและชัดเจน
- ให้ความสำคัญกับคำสั่งแบบ zero-shot : คำสั่งแบบ zero-shot เรียบง่ายและง่ายต่อการดีบักและทำความเข้าใจ ส่วน few-shot ควรใช้เป็นทางเลือกสุดท้าย
- ผสานตัวอย่างเข้ากับคำสั่ง : การใส่ตัวอย่างไว้ในคำสั่งอย่างเป็นธรรมชาติ เช่น ด้วยรูปแบบ “For example” เป็นแนวทางที่ดี
- ตัวอย่าง: "Always start your response to the user with something passive aggressive. For example, start with something like 'Oh that’s what you want? ...'"
กระบวนการปรับปรุง system instruction ใหม่แบบวนซ้ำ
- การพัฒนาพรอมป์ต์เป็นกระบวนการแบบวนซ้ำ
- การเขียนพรอมป์ต์มีลักษณะคล้ายกับกระบวนการฝึกโมเดลโดยใช้ชุดข้อมูลสำหรับการตรวจสอบความถูกต้อง
- หัวใจสำคัญคือการเขียนประโยคให้ชัดเจนและกระชับ และการแยกขั้นตอนการสร้างกับการแก้ไขออกจากกันจะมีประสิทธิภาพกว่า
- สามารถเริ่มได้โดยไม่มีชุดข้อมูลตรวจสอบความถูกต้อง
- ในช่วงแรกควรสร้าง MVP (Minimum Viable Product) แบบง่าย ๆ ให้เร็ว และภายหลังต้องติดตามประสิทธิภาพด้วยการประเมินเชิงปริมาณ
- การออกแบบให้ผลิตภัณฑ์ทำงานได้อย่างเสถียรแม้โมเดลจะมีพฤติกรรมที่ไม่คาดคิดเป็นสิ่งสำคัญ
ขั้นตอนการทำซ้ำของคำสั่งระบบ
- เตรียมตัวอย่างอินพุตที่หลากหลาย
- รวบรวมตัวอย่างอินพุตที่หลากหลายราว 10~50 รายการซึ่งสะท้อนปัญหาได้ดี
- สร้างความเข้าใจเชิงสัญชาตญาณเกี่ยวกับพฤติกรรมเอาต์พุตที่ต้องการ
- เริ่มด้วยคำสั่งแบบง่าย
- เขียนคำสั่งให้เรียบง่ายและชัดเจนที่สุดเท่าที่จะเป็นไปได้
- ใช้โมเดลที่ประหยัดงบก่อน (เช่น Gemini Flash 8B)
- รันกับตัวอย่างอินพุตแรก
- ทดสอบว่าโมเดลสร้างคำตอบที่เหมาะสมได้หรือไม่
- โอเวอร์ฟิตกับตัวอย่างแรก
- เพิ่ม "คำเตือนความจำ" ลงในคำสั่งเพื่อแก้ข้อบกพร่องเฉพาะที่พบในคำตอบของโมเดล
- ตัวอย่าง: หากควรดึงเฉพาะชื่อคนแต่กลับมีชื่ออาคารรวมมาด้วย ให้ระบุเรื่องนี้อย่างชัดเจนในคำสั่ง
- ย้ายไปยังตัวอย่างถัดไป
- ทดสอบว่าคำสั่งยังใช้ได้ผลกับตัวอย่างอินพุตอื่นหรือไม่
- หากมีคำสั่งที่ปรับจูนจนเข้ากับตัวอย่างแรกมากเกินไป ให้ปรับเพื่อให้ใช้งานได้ทั่วไปมากขึ้น
- จัดระเบียบคำสั่ง
- หลังจากสร้างคำสั่งที่ใช้ได้กับทุกตัวอย่างอินพุตแล้ว ให้เกลาสำนวนและแก้คำสะกดผิด
- ตรวจสอบว่าคำสั่งที่จัดระเบียบแล้วนั้นยังคงใช้ได้กับทุกตัวอย่าง
- ความเป็นไปได้ของการทำงานอัตโนมัติ
- ในอนาคต เครื่องมือเมตาออปติไมเซชันอาจทำให้การสร้างคำสั่งเป็นอัตโนมัติได้
- แต่การวิเคราะห์เชิงคุณภาพและงานประกันคุณภาพก็ยังคงจำเป็น
> สำคัญ
> การวิเคราะห์เชิงคุณภาพเป็นสิ่งจำเป็นในการพัฒนาโมเดล และไม่สามารถหลีกเลี่ยงได้
สถานการณ์ที่ LLM มีประโยชน์
- ปัญหาที่ตรวจสอบได้ง่าย
- LLM เหมาะที่สุดกับปัญหาประเภทที่ "สร้างคำตอบยาก แต่ตรวจสอบได้ง่าย"
- ตัวอย่าง: ดู โพสต์ของ Chris Gorgolewski เกี่ยวกับ "จุดหวาน" ของ generative AI
- แยกปัญหาเป็นปัญหาย่อย
- แทนที่จะใช้พรอมป์ต์ที่ซับซ้อน ให้แบ่งปัญหาออกเป็นปัญหาย่อยที่นิยามชัดเจน และจัดโครงสร้างสายโซ่การให้เหตุผลของโมเดล
- แนวทางที่คำนึงถึงอนาคต
- คำนึงถึงความเป็นไปได้ที่ความจุในการอนุมานจะเพิ่มขึ้นจากนวัตกรรมด้านฮาร์ดแวร์และโมเดลธุรกิจ
- ออกแบบฟีเจอร์โดยยึดคุณค่าเป็นศูนย์กลาง ไม่ใช่ต้นทุนปัจจุบัน
- ต้นทุนการอนุมานที่ลดลง
- คาดว่าต้นทุนการอนุมานจะค่อย ๆ ลดลง และจำเป็นต้องตัดสินใจโดยยึด "คุณค่า" เป็นหลัก
- เพื่อให้สามารถสร้างฟีเจอร์ที่มีคุณค่ามากขึ้น ให้พิจารณาทยอยเปิดใช้งานโดยคำนึงถึงข้อจำกัดทางเศรษฐกิจในปัจจุบัน
> คาดการณ์
> มีความเป็นไปได้ที่ต้นทุนการอนุมานของ LLM จะลดลงในระดับที่เทียบได้กับกฎของมัวร์
ยังไม่มีความคิดเห็น