|
|
เพิ่งผ่านเวลาช่วงบ่ายที่เต็มไปด้วยความตื่นเต้นจากเวิร์กช็อปสดเกี่ยวกับการเขียนและปรับแต่ง prompt สําหรับ Anthropic Claude ที่จัดขึ้นโดย Zack Witten วิศวกรด้าน Machine Learning ผู้เชี่ยวชาญด้าน NLP และชีววิทยา ที่มาแบ่งปันประสบการณ์และเทคนิคการใช้ AI รุ่นใหม่ล่าสุดอย่าง Claude เพื่อช่วยแก้ไขปัญหาและเพิ่มประสิทธิภาพการใช้งานโมเดลภาษาอย่างลึกซึ้ง |
บทความนี้จะพาไปเจาะลึกถึงประเด็นสําคัญที่ Zack ได้ถ่ายทอด ทั้งเรื่องการสร้าง prompt ที่ดี การจัดการกับ output รูปแบบ JSON การทํางานกับหลาย persona ในบทสนทนา การวิเคราะห์ข้อมูลในรูปแบบสเปรดชีต รวมถึงการจัดการกับ hallucination ของโมเดล เพื่อให้ทุกคนที่สนใจ AI ได้เข้าใจหลักการและแนวทางที่เหมาะสมสําหรับการพัฒนาแอปพลิเคชันด้วย Anthropic Claude อย่างเต็มที่ |
|
Anthropic และการเปิดตัวเทคโนโลยีล่าสุด |
ก่อนเข้าสู่เนื้อหาหลัก Zack ได้รับการแนะนําโดย Jamie Neworth หัวหน้าทีมสตาร์ทอัพของ Anthropic ซึ่งได้แนะนําฟีเจอร์และเครื่องมือใหม่ ๆ ที่เปิดตัวในช่วงเวลาสั้น ๆ ที่ผ่านมา ได้แก่ Sonnet 3.5 ซึ่งได้รับการตอบรับดีมาก และ Artifacts ซึ่งเป็นเครื่องมือที่ช่วยแปลงข้อความเป็นโค้ดสําหรับสร้างวิดีโอเกมหรือแผนภาพได้อย่างรวดเร็ว โดย Jamie เน้นย้ําว่าทีม Anthropic พร้อมสนับสนุนธุรกิจที่ต้องการขยายและพัฒนา AI บนคลาวด์ พร้อมให้คําปรึกษาและการเข้าถึง API ที่มีความสามารถสูงขึ้น |
นอกจากนี้ยังมีการพูดถึงการใช้ prompting cookbooks ที่เป็นเอกสารแนะนําวิธีการเขียน prompt สําหรับการใช้งานต่าง ๆ ที่ช่วยให้ผู้ใช้นําไปปรับใช้กับธุรกิจของตนเองได้อย่างมีประสิทธิภาพ |
เริ่มต้นกับเวิร์กช็อป: การเขียน Prompt อย่างมีประสิทธิภาพ |
จุดเริ่มต้นของเวิร์กช็อปคือการเปิดช่อง Slack ที่ชื่อว่า “PromptEng Live Workshop Anthropic” เพื่อให้ผู้เข้าร่วมส่ง prompt ที่ตนเองใช้งานจริงเข้ามา และ Zack จะนํามาอ่าน ทดสอบ และปรับปรุงสดบนคอนโซล Anthropic เพื่อให้เห็นภาพและเรียนรู้ร่วมกัน |
Zack อธิบายว่า prompt template คือ prompt ที่มีช่องว่างสําหรับตัวแปรระบุด้วย double brackets เช่น เพื่อให้ส่งข้อมูลที่แตกต่างกันเข้าไปได้ง่ายและทําซ้ําได้ และยังแนะนําให้ส่งตัวอย่างที่ prompt ทํางานผิดพลาดเพื่อให้สามารถโฟกัสแก้ไขได้ตรงจุด |
|
นอกจากนี้ Zack ยังเล่าถึงความสําคัญของการใช้ XML tags ในการแบ่งส่วนข้อมูลใน prompt เนื่องจาก Claude ถูกฝึกด้วยข้อมูลที่มี XML เป็นส่วนใหญ่ ทําให้โมเดลเข้าใจโครงสร้างได้ดีกว่าการใช้ Markdown หรือรูปแบบอื่น ๆ |
การจัดการกับรายละเอียดเล็ก ๆ เช่น การใช้ตัวพิมพ์ใหญ่ |
แม้จะเป็นเรื่องเล็กน้อย แต่องค์ประกอบอย่างการใช้ตัวพิมพ์ใหญ่ในประโยคก็ส่งผลต่อประสิทธิภาพของ prompt ได้บ้าง Zack เล่าว่าแม้จะไม่มีการศึกษาที่ชัดเจน แต่ตามประสบการณ์ส่วนตัวและข้อมูลบางส่วน พบว่าการแก้ไขไวยากรณ์และการใช้ตัวพิมพ์ใหญ่ช่วยลดข้อผิดพลาดได้มากขึ้น |
นอกจากนี้ยังแนะนําให้ใช้เครื่องมือช่วยเขียน prompt อย่าง Quad ที่มีฟีเจอร์ช่วยเติมโค้ดและปิดแท็ก XML อัตโนมัติ เพื่อให้การเขียน prompt ที่มีโครงสร้างซับซ้อนสะดวกและรวดเร็วยิ่งขึ้น |
|
การปรับปรุง Prompt เพื่อให้ตอบสั้นและตรงประเด็น |
หนึ่งในโจทย์ที่ได้รับจากผู้เข้าร่วมคือ prompt ที่ให้ Claude ตอบคําถามเกี่ยวกับตารางนัดหมายแต่ตอบยาวเกินไปและยากต่อการใช้งาน Zack จึงแนะนําให้กําหนดขอบเขตความยาวของคําตอบอย่างชัดเจน เช่น จํากัดจํานวนประโยคให้สั้นลง 1-3 ประโยค พร้อมกําหนดให้ตอบเฉพาะข้อมูลที่เกี่ยวข้องเท่านั้น |
สิ่งที่น่าสนใจคือ Claude สามารถปรับความยาวคําตอบให้เหมาะสมกับแต่ละคําถามได้เอง เช่น ตอบสั้นหากเป็นคําถามง่าย และยาวขึ้นเล็กน้อยถ้าคําถามซับซ้อนกว่า ทั้งนี้ขึ้นอยู่กับการตั้งเงื่อนไขใน prompt อย่างเหมาะสม |
|
การจัดลําดับข้อมูลและคําสั่งใน Prompt มีผลต่อการปฏิบัติตาม |
Zack แนะนําว่าควรจัดวางข้อมูลพื้นฐานหรือข้อมูลที่ต้องใช้ก่อน ตามด้วยคําสั่งหรือกฎเกณฑ์ที่ต้องการให้โมเดลปฏิบัติ โดยคําสั่งควรอยู่ท้ายสุดเพื่อให้โมเดลปฏิบัติตามได้แม่นยําขึ้น |
การใช้เครื่องหมายอัศเจรีย์ (!) เพื่อเน้นข้อความก็ช่วยให้ Claude ให้ความสําคัญกับข้อมูลหรือคําสั่งนั้น ๆ มากขึ้น แต่ก็ขึ้นอยู่กับบริบทและการใช้งานด้วย |
การเลือกภาษาสําหรับ Prompt ในงานแปลและมัลติภาษาต่าง ๆ |
เมื่อมีคําถามว่า ควรเขียน prompt เป็นภาษาอังกฤษหรือภาษาท้องถิ่นในการใช้งานกับโมเดลที่รองรับหลายภาษา Zack แนะนําว่า ถ้าผู้ใช้งานสามารถใช้ภาษาท้องถิ่นได้ดี ควรเขียน prompt เป็นภาษานั้น เพื่อให้ได้ผลลัพธ์ที่เหมาะสมและแม่นยํากว่า |
แต่ถ้าผู้ใช้เก่งภาษาอังกฤษมากกว่า ควรใช้ภาษาอังกฤษ เพื่อให้สามารถควบคุมและปรับแต่ง prompt ได้ดีกว่า อย่างไรก็ตาม การหาผู้เชี่ยวชาญภาษาท้องถิ่นมาช่วยเขียน prompt ก็ถือเป็นทางเลือกที่ดี |
การทํางานกับ JSON Output และการใช้ Assistant Prefill |
หนึ่งในหัวข้อหลักของเวิร์กช็อปคือการทําให้ Claude ตอบกลับในรูปแบบ JSON ที่ชัดเจนและไม่มีข้อความนําหรือคําอธิบายเพิ่มเติมที่ไม่ต้องการ Zack แนะนําวิธีการใช้ Assistant Prefill ซึ่งเป็นฟีเจอร์ใน API ของ Anthropic ที่ช่วยใส่ข้อความเริ่มต้นในบทสนทนาเหมือนเป็นคําพูดของโมเดล เพื่อให้โมเดลเข้าใจว่าได้เริ่มตอบ JSON แล้ว และจะไม่เพิ่มคําอธิบายหรือ preamble ที่ไม่จําเป็น |
เทคนิคนี้ช่วยลดความยุ่งยากในการเขียน prompt ที่ซับซ้อนและลดโอกาสที่โมเดลจะตอบผิดรูปแบบ นอกจากนี้ยังแนะนําการใช้แท็ก XML เช่นเพื่อแยกส่วนข้อมูล JSON ออกจากข้อความอื่น ๆ เพื่อให้ง่ายต่อการดึงข้อมูลและประมวลผลต่อไปด้วยโค้ด |
อีกเทคนิคหนึ่งที่แนะนําคือการใช้พารามิเตอร์ stop sequences ใน API เพื่อหยุดการตอบข้อความทันทีที่เจอแท็กปิด เช่น ซึ่งช่วยลดค่าใช้จ่ายและทําให้การประมวลผลแม่นยําขึ้น |
สิ่งที่สําคัญคืออย่าพยายามใส่คําสั่งมากจนเกินไปใน prompt ให้พึ่งพาการประมวลผลภายนอกด้วยโค้ดเป็นหลัก เช่น การ regex ดึงข้อมูลจากแท็ก แทนการบังคับโมเดลผ่าน prompt ที่อาจไม่เสถียร |
การทดสอบและปรับปรุง Prompt ด้วย Test Cases และ Evaluation |
Zack แนะนําว่า การทดสอบ prompt อย่างเป็นระบบด้วยชุดตัวอย่าง (test cases) เป็นวิธีที่ดีที่สุดในการประเมินประสิทธิภาพของ prompt และการปรับแต่งให้เหมาะสม เช่น การทดสอบว่าการให้โมเดลคิดเป็นขั้นตอน (chain of thought) ช่วยเพิ่มความแม่นยําหรือไม่ |
สําหรับการตรวจสอบความถูกต้องของผลลัพธ์ เช่น รูปแบบ JSON การใช้โค้ดตรวจสอบ (เช่น regex) จะดีกว่าการใช้โมเดลประเมินผล (model grading) เพราะการตรวจสอบรูปแบบข้อมูลเป็นเรื่องที่ทําได้อย่างแม่นยําและรวดเร็ว |
ส่วนการใช้โมเดลตรวจสอบผลลัพธ์ในเชิงความหมายหรือคุณภาพ อาจต้องใช้ผู้ประเมินมนุษย์ร่วมด้วย เพราะโมเดลยังไม่เสถียรและอาจให้ผลลัพธ์ที่ไม่สม่ําเสมอ |
การจัดการกับข้อมูลรูปแบบตารางและสเปรดชีตที่ยุ่งเหยิง |
หนึ่งในคําถามที่น่าสนใจคือ การใช้ Claude วิเคราะห์ข้อมูลจากสเปรดชีตหรือ CSV ที่มีรูปแบบไม่ดี เช่น มีหลายชุดข้อมูลในแผ่นเดียวกันหรือมีข้อมูลกระจัดกระจาย Zack แนะนําให้แบ่งงานออกเป็นส่วนย่อย ๆ เช่น ให้โมเดลวิเคราะห์เฉพาะบางคอลัมน์หรือบางส่วนของข้อมูลทีละน้อย เพื่อให้โมเดลโฟกัสและลดความสับสน |
เขายังเล่าว่า การคัดลอกข้อมูลสเปรดชีตลงใน prompt โดยตรงอาจไม่สะดวกและทําให้โมเดลสับสนได้ จึงแนะนําให้เตรียมข้อมูลและปรับแต่งให้เหมาะสมก่อนส่งเข้าโมเดล |
การสร้างเนื้อหาสําหรับโซเชียลมีเดียจากบทความยาว |
อีกตัวอย่างที่ Zack ทดลองคือ การใช้ Claude สร้างทวีตจํานวน 5-10 ข้อความจากบทความยาว โดยมีเงื่อนไขไม่ให้ใช้แฮชแท็ก ไม่พูดเกินจริง และไม่ให้ดูน่าอาย (cringe) ผลลัพธ์ที่ได้มีความเป็นกลางและเหมาะสม แต่ยังไม่ค่อยดึงดูดเท่าที่ควร |
Zack แนะนําว่า การให้ตัวอย่างทวีตที่ดีและไม่ดี (positive and negative examples) พร้อมคําอธิบายเหตุผล จะช่วยให้โมเดลเข้าใจแนวทางและสามารถสร้างข้อความที่น่าสนใจขึ้นโดยไม่กลายเป็น cringe ได้ |
นอกจากนี้ยังแนะนําให้เก็บตัวอย่างทวีตที่ชอบไว้ใน prompt เพื่อให้โมเดลเรียนรู้จากตัวอย่างเหล่านั้น และค่อย ๆ ปรับปรุงผลลัพธ์ในแต่ละรอบจนได้เนื้อหาที่ต้องการ |
|
การสร้างบทบาท (Persona) หลายตัวในบทสนทนาเดียวกัน |
การจําลองบทบาทหลายตัวในบทสนทนาเป็นฟีเจอร์ที่น่าสนใจ Zack แนะนําให้เขียน prompt แยกสําหรับแต่ละ persona และใช้ logic ของแอปพลิเคชันในการสลับบทบาทตามคําสั่งของผู้ใช้แทนการรวมทุก persona ไว้ใน prompt เดียว |
วิธีนี้ช่วยให้การจัดการบทสนทนาเป็นระบบและง่ายต่อการควบคุม แต่ถ้าใช้ prompt เดียว อาจเกิดปัญหาเช่น โมเดลพูดออกมาในรูปแบบที่ไม่เหมาะสม หรือพูดในนามของ persona อื่น |
นอกจากนี้ Zack ยังแนะนําให้เพิ่มชื่อ persona ไว้ในข้อความตอบกลับเพื่อให้ชัดเจนว่าแต่ละข้อความมาจากใคร และใช้คําสั่งแบบเบา ๆ ใน prompt เช่น "อย่าพูดเกินตัว" หรือ "อยู่ในบทบาทของคุณ" เพื่อช่วยให้โมเดลรักษาบทบาทได้ดีขึ้น |
การวิเคราะห์ภาพและข้อมูลที่เป็นภาพ |
สําหรับการประมวลผลข้อมูลในรูปแบบภาพ Zack เล่าว่า การเตรียมภาพให้มีคุณภาพสูงและโฟกัสเฉพาะข้อมูลที่ต้องการจะช่วยให้โมเดลเข้าใจได้ดีขึ้น เช่น การซูมภาพหรือครอปเอาส่วนที่ไม่เกี่ยวข้องออก |
นอกจากนี้ การให้โมเดลบรรยายสิ่งที่เห็นในภาพอย่างละเอียดก่อนจะช่วยให้โมเดลมีความเข้าใจบริบทมากขึ้น แต่ก็ยังมีข้อจํากัดเรื่องความแม่นยําโดยเฉพาะกับภาพที่มีลายมือหรือข้อมูลที่อ่านยาก |
ในบางกรณี หากโมเดลวิเคราะห์ผิดในจุดแรก มันอาจส่งผลให้วิเคราะห์ผิดซ้ําในส่วนถัดไป เพราะโมเดลพยายามรักษาความสอดคล้องของคําตอบ (self consistency) |
การให้คะแนนคุณภาพการแปลและการใช้ Chain of Thought |
การประเมินคุณภาพการแปลเป็นอีกโจทย์ที่ท้าทาย Zack แนะนําให้ใช้ prompt ที่มีการอธิบายเกณฑ์การให้คะแนนอย่างชัดเจน พร้อมตัวอย่างแต่ละระดับคะแนน เพื่อช่วยให้โมเดลเข้าใจและประเมินได้แม่นยําขึ้น |
นอกจากนี้ การใช้ chain of thought หรือการให้โมเดลคิดเป็นขั้นตอนก่อนตอบ จะช่วยเพิ่มความแม่นยํามากกว่าการให้โมเดลตอบคะแนนโดยตรงเพียงอย่างเดียว |
อย่างไรก็ตาม โมเดลอาจมีความลําเอียง เช่น ถ้าเนื้อหาดีหรือเรื่องราวน่าสนใจ โมเดลจะให้คะแนนสูงขึ้น แม้ว่าการแปลจะมีข้อผิดพลาดทางไวยากรณ์หรือความหมาย |
การลด Hallucination ใน AI ด้วยการดึงข้อมูลที่เกี่ยวข้องก่อนสรุป |
Hallucination หรือการที่โมเดลสร้างข้อมูลผิด ๆ เป็นปัญหาที่พบได้บ่อย Zack แนะนําว่าการแก้ไขปัญหานี้ทําได้โดยให้โมเดลดึงคําพูดหรือข้อมูลที่เกี่ยวข้องจากต้นฉบับก่อน แล้วค่อยสรุปข้อมูลแทนการสรุปโดยตรงจากข้อความทั้งหมด |
วิธีนี้จะช่วยลดโอกาสที่โมเดลจะสร้างข้อมูลที่ไม่ถูกต้องหรือเกินจริง เพราะโมเดลต้องยึดข้อมูลที่มีอยู่จริงก่อน แล้วจึงสรุปต่อ |
บทสรุปจากทีม Insiderly |
การเขียน prompt ที่ดีต้องคํานึงถึงโครงสร้างและลําดับข้อมูล การใช้ XML tags ช่วยให้โมเดลเข้าใจข้อมูลได้ชัดเจนขึ้น การกําหนดความยาวคําตอบและขอบเขตคําสั่งอย่างชัดเจนช่วยให้ผลลัพธ์เหมาะสมและใช้งานง่ายขึ้น Assistant Prefill เป็นเทคนิคสําคัญที่ช่วยให้โมเดลตอบกลับในรูปแบบ JSON ได้ตรงตามต้องการ ลดข้อความนําที่ไม่จําเป็น การทดสอบ prompt ด้วยชุดตัวอย่างและการใช้โค้ดตรวจสอบผลลัพธ์ช่วยเพิ่มความแม่นยําและลดความผิดพลาด การสร้างตัวอย่างเชิงบวกและเชิงลบ พร้อมคําอธิบายเหตุผล ช่วยให้โมเดลเรียนรู้และปรับปรุงผลลัพธ์ได้ดีขึ้น การจัดการหลาย persona ควรใช้ prompt แยกและ logic ภายนอกเพื่อควบคุมบทสนทนาได้ดีขึ้น การจัดเตรียมภาพให้ชัดเจนและโฟกัสช่วยให้โมเดลวิเคราะห์ข้อมูลภาพได้ดีขึ้น แม้จะยังมีข้อจํากัดเรื่องลายมือและความสม่ําเสมอ การใช้ chain of thought ช่วยเพิ่มความแม่นยําในการประเมินคุณภาพการแปล และลดการให้คะแนนที่ลําเอียง การลด hallucination ทําได้โดยให้โมเดลดึงข้อมูลที่เกี่ยวข้องก่อนสรุป ช่วยให้ข้อมูลที่ได้มีความน่าเชื่อถือมากขึ้น
|
เวิร์กช็อปนี้ไม่เพียงแต่แสดงเทคนิคการเขียน prompt อย่างละเอียด แต่ยังสะท้อนถึงความท้าทายและแนวทางแก้ไขที่เหมาะสมกับการใช้ AI ในโลกจริง ทําให้เห็นภาพการพัฒนา AI ที่ไม่ใช่แค่การเขียนคําสั่ง แต่เป็นการออกแบบระบบที่เข้าใจลึกซึ้งและยืดหยุ่น |
|
สําหรับคนที่สนใจพัฒนา AI ด้วย Anthropic Claude การเข้าใจหลักการเหล่านี้เป็นพื้นฐานที่จะช่วยให้การสร้างแอปพลิเคชัน AI มีประสิทธิภาพและตอบโจทย์การใช้งานได้จริงอย่างมั่นใจ |