คุณสามารถประสบความสําเร็จได้มากมายด้วยข้อความแจ้งง่ายๆ แต่คุณภาพของผลลัพธ์ขึ้นอยู่กับจํานวนข้อมูลที่คุณให้และข้อความแจ้งที่ออกแบบมาอย่างดีเพียงใด พร้อมท์อาจมีข้อมูล เช่น คําแนะนําหรือคําถามที่คุณกําลังส่งไปยังโมเดล และรวมรายละเอียดอื่นๆ เช่น บริบท อินพุต หรือตัวอย่าง คุณสามารถใช้องค์ประกอบเหล่านี้เพื่อสั่งสอนโมเดลได้อย่างมีประสิทธิภาพมากขึ้นเพื่อปรับปรุงคุณภาพของผลลัพธ์
เริ่มต้นด้วยการดูตัวอย่างพื้นฐานของข้อความแจ้งง่ายๆ:
Prompt:
The sky is
Output:
blue.
หากคุณกําลังใช้ OpenAI Playground หรือสนามเด็กเล่น LLM อื่นๆ คุณสามารถแจ้งโมเดลตามที่แสดงในภาพหน้าจอต่อไปนี้:
นี่คือบทช่วยสอนเกี่ยวกับวิธีเริ่มต้นใช้งาน OpenAI Playground:
สิ่งที่ควรทราบก็คือ เมื่อใช้โมเดลแชท OpenAI เช่น gpt-3.5-turbo หรือ gpt-4 คุณสามารถจัดโครงสร้างข้อความแจ้งของคุณโดยใช้บทบาทที่แตกต่างกันสามบทบาท: system, user และ assistant ไม่จำเป็นต้องระบุข้อความของระบบแต่ช่วยกำหนดพฤติกรรมโดยรวมของผู้ช่วย ตัวอย่างด้านบนมีเพียงข้อความผู้ใช้ที่คุณสามารถใช้เพื่อแจ้งโมเดลโดยตรง เพื่อความง่าย ตัวอย่างทั้งหมด ยกเว้นเมื่อมีการกล่าวถึงอย่างชัดเจน จะใช้เฉพาะข้อความ user เพื่อแจ้งโมเดล gpt-3.5-turbo ข้อความ assistant ในตัวอย่างด้านบนสอดคล้องกับการตอบสนองของโมเดล คุณยังสามารถกำหนดข้อความผู้ช่วยเพื่อส่งตัวอย่างพฤติกรรมที่คุณต้องการได้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการทำงานกับโมเดลการแชทได้ที่นี่
คุณสามารถสังเกตได้จากตัวอย่างด้านบนว่าโมเดลภาษาตอบสนองด้วยลำดับโทเค็นที่สมเหตุสมผลเมื่อพิจารณาบริบท "The sky is" ผลลัพธ์อาจไม่คาดคิดหรืออยู่ไกลจากงานที่คุณต้องการทำให้สำเร็จ ในความเป็นจริง ตัวอย่างพื้นฐานนี้เน้นย้ำถึงความจำเป็นในการให้บริบทหรือคำแนะนำเพิ่มเติมเกี่ยวกับสิ่งที่คุณต้องการบรรลุผลสำเร็จด้วยระบบโดยเฉพาะ นี่คือสิ่งที่เกี่ยวกับวิศวกรรมพร้อมท์
มาลองปรับปรุงกันหน่อย:
Prompt:
Complete the sentence:
The sky is
Output:
blue during the day and dark at night.
จะดีกว่ามั้ย? ด้วยข้อความแจ้งข้างต้น คุณกำลังสั่งให้โมเดลเติมประโยคให้สมบูรณ์ ดังนั้นผลลัพธ์จึงดูดีขึ้นมาก เนื่องจากเป็นไปตามสิ่งที่คุณบอกให้ทำ ("เติมประโยคให้สมบูรณ์") วิธีการออกแบบพร้อมท์ที่มีประสิทธิภาพเพื่อสั่งโมเดลให้ทำงานที่ต้องการคือสิ่งที่เรียกว่า prompt engineering (วิศวกรรมพร้อมท์) ในคู่มือนี้
ตัวอย่างข้างต้นเป็นตัวอย่างพื้นฐานของสิ่งที่เป็นไปได้กับ LLM ในปัจจุบัน LLM ในปัจจุบันสามารถทำงานขั้นสูงได้ทุกประเภท ตั้งแต่การสรุปข้อความ การให้เหตุผลทางคณิตศาสตร์ ไปจนถึงการสร้างโค้ด
คุณได้ลองใช้ข้อความแจ้งง่ายๆ ด้านบนแล้ว พรอมต์มาตรฐานมีรูปแบบดังต่อไปนี้:
<Question>?
or
<Instruction>
คุณสามารถจัดรูปแบบนี้ให้อยู่ในรูปแบบการตอบคำถาม (QA) ซึ่งเป็นมาตรฐานในชุดข้อมูล QA จำนวนมากได้ดังนี้:
Q: <Question>?
A:
เมื่อได้รับแจ้งเช่นเดียวกับข้างต้น จะเรียกว่า พร้อมท์แบบ Zero-shot กล่าวคือ คุณกำลังพร้อมท์ให้โมเดลตอบสนองโดยตรง โดยไม่มีตัวอย่างหรือการสาธิตเกี่ยวกับงานที่คุณต้องการให้บรรลุผล โมเดลภาษาขนาดใหญ่บางโมเดลมีความสามารถในการดำเนินการพร้อมท์แบบ Zero-shot แต่ขึ้นอยู่กับความซับซ้อนและความรู้ของงานที่ทำอยู่และงานที่โมเดลได้รับการฝึกฝนให้ทำงานได้ดี
ตัวอย่างพร้อมท์ที่เป็นรูปธรรมมีดังนี้:
Prompt:
Q: What is prompt engineering?
ในโมเดลล่าสุดบางรุ่น คุณสามารถข้ามส่วน "ถาม:" ได้ เนื่องจากโมเดลเข้าใจและบอกเป็นนัยว่าเป็นงานตอบคำถามโดยพิจารณาจากวิธีการประกอบลำดับ กล่าวอีกนัยหนึ่ง พรอมต์สามารถทำให้ง่ายขึ้นดังนี้:
Prompt:
What is prompt engineering?
เมื่อพิจารณาจากรูปแบบมาตรฐานข้างต้น เทคนิคหนึ่งที่ได้รับความนิยมและมีประสิทธิภาพในการกระตุ้นเตือนเรียกว่า การกระตุ้นเตือนแบบไม่กี่ช็อต โดยที่คุณให้ตัวอย่าง (เช่น การสาธิต) คุณสามารถจัดรูปแบบพรอมต์ไม่กี่ช็อตได้ดังนี้:
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
เวอร์ชันรูปแบบ QA จะมีลักษณะดังนี้:
Q: <Question>?
A: <Answer>
Q: <Question>?
A: <Answer>
Q: <Question>?
A: <Answer>
Q: <Question>?
A:
โปรดทราบว่าไม่จำเป็นต้องใช้รูปแบบ QA รูปแบบพรอมต์ขึ้นอยู่กับงานที่ทำอยู่ ตัวอย่างเช่น คุณสามารถทำงานจำแนกประเภทอย่างง่ายและให้ตัวอย่างที่สาธิตงานดังต่อไปนี้:
Prompt:
This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //
Output:
Negative
การ Few-shot prompts ช่วยให้สามารถเรียนรู้ในบริบทได้ ซึ่งเป็นความสามารถของโมเดลภาษาในการเรียนรู้งานจากการสาธิตเล็กน้อย เราจะหารือเกี่ยวกับการแจ้งเตือนแบบ Zero-shot และการแจ้งเตือนแบบไม่กี่ช็อตในหัวข้อต่อๆ ไป