การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง
ทำความเข้าใจความแตกต่างระหว่างการถามโมเดลโดยตรงกับการให้ตัวอย่าง และเรียนรู้ว่าแนวทางใดให้ผลลัพธ์ดีกว่าสำหรับงานจำแนก การดึงข้อมูล และการสร้างเนื้อหา
การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง เป็นบทเรียน AI Engineering Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Engineering Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน
Zero-Shot Prompting คืออะไร
Zero-shot prompting คือการขอให้โมเดลทำงานโดยไม่ให้ตัวอย่างวิธีทำงานใด ๆ คุณเพียงอธิบายงาน แล้วให้โมเดลใช้ความรู้ที่ผ่านการฝึกมา วิธีนี้เหมาะกับงานที่โมเดลพบเห็นบ่อยระหว่างการฝึก เช่น การแปล การสรุป หรือการจัดประเภทอย่างง่าย
ตัวอย่างเช่น การขอให้โมเดลจัดประเภทรีวิวนี้ว่าเป็นเชิงบวกหรือเชิงลบคือพรอมต์แบบ zero-shot โมเดลซึมซับตัวอย่างการจัดประเภทความรู้สึกมาหลายพันรายการระหว่างการฝึกล่วงหน้า จึงทำงานนี้ได้โดยไม่ต้องแสดงตัวอย่างไว้ในพรอมต์
ตัวอย่าง Zero-Shot อย่างง่าย
พรอมต์แบบ zero-shot มีเนื้อหากระชับและอาศัยความรู้ภายในของโมเดล จะทำงานได้ดีที่สุดเมื่องานนั้นพบได้ทั่วไปและไม่มีความกำกวม สังเกตว่าพรอมต์ด้านล่างกำหนดงานไว้อย่างชัดเจน โดยไม่แสดงตัวอย่างผลลัพธ์ที่ถูกต้อง
import openai
client = openai.OpenAI()
prompt = 'Classify the sentiment of the following customer review.\nRespond with only one word: Positive, Negative, or Neutral.\n\nReview: The delivery was fast but the packaging was damaged.\n\nSentiment:'
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
max_tokens=5
)
print(response.choices[0].message.content) # Expected: Negativeเมื่อ Zero-Shot ไม่เพียงพอ
การทำพรอมต์แบบ zero-shot อาจล้มเหลวเมื่อรูปแบบงานไม่คุ้นเคย เมื่อโมเดลต้องทำตามโครงสร้างผลลัพธ์ที่ไม่ธรรมดา หรือเมื่อคุณต้องการรูปแบบที่สม่ำเสมอแต่โมเดลอาจตีความแตกต่างกันในแต่ละครั้ง การขอให้โมเดลดึงข้อมูลออกมาเป็นโครงสร้าง JSON ที่เฉพาะเจาะจงมากและใช้ชื่อฟิลด์ที่กำหนดเองมีความเสี่ยงหากใช้พรอมต์แบบ zero-shot เพราะโมเดลต้องเดาเจตนาที่แท้จริงของคุณ
Zero-shot ยังทำงานได้ไม่ดีนักกับศัพท์เฉพาะของสาขาหรือหมวดหมู่การจัดประเภทเฉพาะกลุ่มที่โมเดลอาจไม่ค่อยพบระหว่างการฝึกล่วงหน้า ในกรณีเหล่านี้ การให้ตัวอย่างจะช่วยเพิ่มความแม่นยำได้อย่างมาก
Few-Shot Prompting คืออะไร
การพรอมป์แบบตัวอย่างไม่กี่ตัวอย่าง หมายถึงการให้ตัวอย่างของงาน 2–8 ตัวอย่างแก่โมเดล (ข้อมูลเข้าและผลลัพธ์ที่ต้องการ) ก่อนนำเสนอคำถามจริงของคุณ ตัวอย่างเหล่านี้จะสอนรูปแบบและแนวทางการจัดประเภทที่แน่นอนตามที่คุณต้องการ โดยไม่จำเป็นต้องปรับแต่งหรือลงแบบจำลองเพิ่มเติม
นี่เป็นหนึ่งในเทคนิคที่ทรงพลังที่สุดและยังถูกใช้น้อยเกินไปในวิศวกรรมพรอมป์ โมเดลจะใช้ตัวอย่างเพื่ออนุมานรูปแบบ แล้วนำไปใช้กับข้อมูลเข้าใหม่ งานวิจัยจากบทความ GPT-3 แสดงให้เห็นว่าประสิทธิภาพของงานหลายประเภทเพิ่มขึ้นอย่างมีนัยสำคัญตามจำนวนตัวอย่างจนถึงประมาณ 8 ตัวอย่าง หลังจากนั้นประโยชน์จะเริ่มคงที่ และคุณเพียงสิ้นเปลืองโทเค็นโดยเปล่าประโยชน์
โครงสร้างพรอมป์แบบตัวอย่างไม่กี่ตัวอย่าง
พรอมป์แบบตัวอย่างไม่กี่ตัวอย่างมีรูปแบบที่สม่ำเสมอ: แสดงตัวอย่าง N ตัวอย่างในรูปคู่ข้อมูลเข้า–ผลลัพธ์ จากนั้นนำเสนอข้อมูลเข้าใหม่และให้โมเดลเติมผลลัพธ์ให้สมบูรณ์ การจัดรูปแบบตัวอย่างจะสอนโมเดลถึงรูปแบบผลลัพธ์ที่แน่นอนที่คุณคาดหวัง
import openai
client = openai.OpenAI()
prompt = ('Extract the product name and price from each sentence.\n'
'Respond in the format: Product: <name> | Price: <price>\n\n'
'Sentence: The blue headphones cost $79.99.\n'
'Product: Blue Headphones | Price: $79.99\n\n'
'Sentence: You can get the leather wallet for just $34.\n'
'Product: Leather Wallet | Price: $34\n\n'
'Sentence: Order the ergonomic keyboard for $129.99 today.\n')
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
max_tokens=30
)
print(response.choices[0].message.content)การเลือกตัวอย่างที่ดีสำหรับพรอมป์แบบตัวอย่างไม่กี่ตัวอย่าง
คุณภาพของตัวอย่างมีความสำคัญพอ ๆ กับจำนวนตัวอย่าง โปรดเลือกตัวอย่างที่:
- ครอบคลุมกรณีขอบ — รวมตัวอย่างที่มีข้อมูลเข้าคลุมเครือ เพื่อให้โมเดลเห็นว่าคุณต้องการให้จัดการอย่างไร
- ครอบคลุมขอบเขตของผลลัพธ์ — หากมีการจัดประเภทสามประเภท ให้รวมตัวอย่างของแต่ละประเภทอย่างน้อยหนึ่งตัวอย่าง
- เป็นตัวแทนที่เหมาะสม — ใช้ตัวอย่างที่มีรูปแบบและความซับซ้อนใกล้เคียงกับข้อมูลเข้าจริงในระบบใช้งานจริง
- มีรูปแบบสอดคล้องกัน — ความไม่สอดคล้องกันของรูปแบบในตัวอย่างจะถูกส่งต่อไปยังผลลัพธ์ของโมเดล
การเลือกตัวอย่างที่ไม่ดีอาจทำให้ประสิทธิภาพแย่ลงจริง ๆ เนื่องจากทำให้โมเดลเข้าใจการกระจายของงานผิดไป
ซีโร่ช็อตเทียบกับตัวอย่างไม่กี่ตัวอย่าง: ควรใช้แบบใดเมื่อไร
ใช้ซีโร่ช็อตเมื่อ: งานนั้นพบได้ทั่วไปและมีคำจำกัดความชัดเจน คุณต้องการลดค่าใช้จ่ายด้านโทเค็นให้เหลือน้อยที่สุด หรือกำลังปรับแก้อย่างรวดเร็วและยังรวบรวมตัวอย่างได้ยาก ซีโร่ช็อตยังเหมาะกว่าเมื่อไม่ควรจำกัดความรู้ทั่วไปของโมเดลด้วยตัวอย่าง
ใช้ตัวอย่างไม่กี่ตัวอย่างเมื่อ: รูปแบบผลลัพธ์ไม่คุ้นเคยหรือมีกฎเข้มงวด คุณมีหมวดหมู่เฉพาะโดเมน ซีโร่ช็อตให้รูปแบบผลลัพธ์ไม่สม่ำเสมอ หรือคุณต้องการให้โมเดลทำตามรูปแบบหรือน้ำเสียงเฉพาะอย่างสม่ำเสมอ วิธีนี้มีประสิทธิภาพเป็นพิเศษสำหรับการดึงข้อมูล การจัดประเภท และการสร้างผลลัพธ์ตามข้อจำกัดด้านรูปแบบ
การใช้ตัวอย่างไม่กี่ตัวอย่างกับงานจัดประเภท
การจัดประเภทเป็นหนึ่งในกรณีการใช้งานที่ให้คุณค่าสูงที่สุดของการพรอมป์แบบตัวอย่างไม่กี่ตัวอย่าง เมื่อคุณมีป้ายกำกับแบบกำหนดเองที่ไม่ตรงกับหมวดหมู่ทั่วไป การให้ตัวอย่างจะช่วยฝึกโมเดลตามระบบการจัดหมวดหมู่ของคุณ ตัวอย่างด้านล่างกำหนดความหมายของ Bug, Feature Request และ Question อย่างชัดเจนในบริบทของบัตรแจ้งปัญหาการสนับสนุน
import openai
client = openai.OpenAI()
prompt = ('Classify the support ticket into: Bug, Feature Request, or Question.\n\n'
'Ticket: The login button does nothing when I click it.\n'
'Category: Bug\n\n'
'Ticket: Can you add dark mode to the dashboard?\n'
'Category: Feature Request\n\n'
'Ticket: How do I export my data to CSV?\n'
'Category: Question\n\n'
'Ticket: The export button crashes the app every time.\n'
'Category:')
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
max_tokens=10
)
print(response.choices[0].message.content) # Bugการพรอมป์แบบตัวอย่างเดียว
ระหว่างซีโร่ช็อตกับตัวอย่างไม่กี่ตัวอย่าง ยังมีการพรอมป์แบบตัวอย่างเดียว ซึ่งคือการให้ตัวอย่างเพียงหนึ่งตัวอย่าง วิธีนี้มักเพียงพอสำหรับแก้ปัญหารูปแบบหรือทำให้งานที่คลุมเครือชัดเจนขึ้น และใช้โทเค็นน้อยกว่าพรอมป์แบบตัวอย่างไม่กี่ตัวอย่างอย่างเต็มรูปแบบมาก ตัวอย่างเดียวเป็นขั้นแรกที่ดีในการยกระดับการแก้ปัญหาเมื่อซีโร่ช็อตให้ผลลัพธ์ไม่น่าเชื่อถือ
ในทางปฏิบัติ ให้เริ่มด้วยซีโร่ช็อต ประเมินกับข้อมูลเข้าจริงตัวอย่างหนึ่งชุด แล้วเพิ่มตัวอย่างเฉพาะจุดที่โมเดลทำงานผิดพลาด วิธีนี้ช่วยให้พรอมป์กระชับและใช้โทเค็นอย่างมีประสิทธิภาพ พร้อมมุ่งปรับปรุงตรงจุดที่สำคัญที่สุด
การเลือกตัวอย่างไม่กี่ตัวอย่างแบบไดนามิก
ในระบบใช้งานจริง การกำหนดตัวอย่างไม่กี่ตัวอย่างชุดเดิมตายตัวสำหรับทุกคำถามไม่ใช่วิธีที่เหมาะสมที่สุด การเลือกตัวอย่างไม่กี่ตัวอย่างแบบไดนามิกจะดึงตัวอย่างที่คล้ายกับข้อมูลเข้าปัจจุบันมากที่สุดจากคลังตัวอย่างที่มีป้ายกำกับ โดยใช้ความคล้ายคลึงของเวกเตอร์ฝัง จากนั้นจึงแทรกเฉพาะตัวอย่างเหล่านั้นลงในพรอมป์
ด้วยวิธีนี้ โมเดลจะเห็นตัวอย่างสาธิตที่เกี่ยวข้องที่สุดกับข้อมูลเข้าแต่ละรายการเสมอ แทนที่จะเห็นตัวอย่างทั่วไปที่อาจไม่ตรงกับรูปแบบหรือโดเมนของข้อมูลเข้า เทคนิคนี้ผสานข้อดีของการพรอมป์แบบตัวอย่างไม่กี่ตัวอย่างเข้ากับความสามารถในการขยายระบบค้นคืน และบางครั้งเรียกว่าการพรอมป์เสริมด้วยการค้นคืนโดยใช้ตัวอย่างเป็นฐาน
ข้อจำกัดด้านรูปแบบในพรอมป์แบบตัวอย่างไม่กี่ตัวอย่าง
การพรอมป์แบบตัวอย่างไม่กี่ตัวอย่างเป็นวิธีที่น่าเชื่อถือที่สุดในการบังคับใช้รูปแบบผลลัพธ์ที่เข้มงวด ก่อนที่คุณจะเข้าถึงผลลัพธ์แบบมีโครงสร้างหรือโหมด JSON ได้ การแสดงรูปแบบที่แน่นอนที่คุณคาดหวังให้โมเดลเห็น — รวมถึงชื่อฟิลด์ ตัวคั่น และลำดับ — จะเพิ่มโอกาสได้ผลลัพธ์ที่สามารถแยกวิเคราะห์ได้อย่างมาก
โปรดลงท้ายพรอมป์แบบตัวอย่างไม่กี่ตัวอย่างด้วยจุดเริ่มต้นของรูปแบบผลลัพธ์ที่คาดหวังเสมอ (เช่น วงเล็บปีกกาเปิดของออบเจ็กต์ JSON หรือชื่อฟิลด์แรก) วิธีนี้จะเตรียมโมเดลให้ต่อรูปแบบให้สมบูรณ์ แทนที่จะสรุปหรือแสดงความคิดเห็นเกี่ยวกับงานก่อน
ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิดวิศวกรรมปัญญาประดิษฐ์จากบทเรียนนี้
ทบทวนบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า: การพรอมป์แบบซีโร่ช็อตขอให้โมเดลทำงานโดยอาศัยเพียงคำอธิบาย การพรอมป์แบบตัวอย่างไม่กี่ตัวอย่างให้ตัวอย่างข้อมูลเข้า–ผลลัพธ์ 2–8 ตัวอย่างเพื่อสอนรูปแบบและระบบการจัดหมวดหมู่ และการเลือกตัวอย่างไม่กี่ตัวอย่างแบบไดนามิกจะดึงตัวอย่างที่เกี่ยวข้องที่สุดสำหรับแต่ละคำถามโดยใช้ความคล้ายคลึงของเวกเตอร์ฝัง ต่อไปเราจะสำรวจการพรอมป์แบบห่วงโซ่ความคิดสำหรับงานให้เหตุผลที่ซับซ้อน
คำถามที่พบบ่อย
บทเรียน “การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Engineering Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง”
ทำความเข้าใจความแตกต่างระหว่างการถามโมเดลโดยตรงกับการให้ตัวอย่าง และเรียนรู้ว่าแนวทางใดให้ผลลัพธ์ดีกว่าสำหรับงานจำแนก การดึงข้อมูล และการสร้างเนื้อหา คุณปฏิบัติ AI Engineering Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Engineering Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Engineering Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Engineering Academy นี้ได้ไหม
ได้ บทเรียน AI Engineering Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง
- ห่วงโซ่ความคิดและการใช้เหตุผลทีละขั้นตอน
- พรอมต์ระบบและการกำหนดบุคลิก
- การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง