การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง
สร้างขั้นตอนการทำงานอย่างเป็นระบบสำหรับทดสอบและปรับปรุงพรอมต์ ระบุรูปแบบความล้มเหลว และใช้ OpenAI Playground เพื่อปรับแก้อย่างรวดเร็วก่อนเขียนโค้ดสำหรับใช้งานจริง
การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง เป็นบทเรียน AI Engineering Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Engineering Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน
การสร้างพรอมต์เป็นศาสตร์เชิงประจักษ์
วิศวกรรมพรอมต์ที่มีประสิทธิภาพไม่ได้เกี่ยวกับการค้นหาสูตรวิเศษ แต่เป็นกระบวนการเชิงประจักษ์ที่ทำซ้ำเป็นรอบ ๆ และคล้ายการแก้จุดบกพร่องมากกว่าการเขียน คุณเขียนพรอมต์ เรียกใช้กับข้อมูลนำเข้าทดสอบ สังเกตจุดที่ล้มเหลว ตั้งสมมติฐานว่าเหตุใดจึงล้มเหลว แล้วแก้ไขพรอมต์เพื่อปรับปรุง ผลจากสัญชาตญาณเพียงอย่างเดียวไม่น่าเชื่อถือ คุณจึง ต้องใช้ข้อมูล
นักพัฒนาจำนวนมากทำผิดพลาดด้วยการทดสอบพรอมต์กับตัวอย่างที่สร้างขึ้นเองเพียงหนึ่งหรือสองตัวอย่าง เห็นผลลัพธ์ที่ดี แล้วนำไปใช้งานจริง ก่อนจะพบว่าพรอมต์ล้มเหลวกับข้อมูลจริงถึง 30% กระบวนการประเมินอย่างเป็นระบบจะป้องกันปัญหานี้ด้วยการนำพรอมต์ไปทดสอบกับตัวอย่างที่หลากหลายและเป็นตัวแทนของการใช้งานจริงก่อนเปิดใช้งาน
สร้างชุดทดสอบก่อน
ก่อนเขียนพรอมต์ ให้สร้าง ชุดทดสอบมาตรฐานอ้างอิง: ชุดตัวอย่างข้อมูลนำเข้าที่เป็นตัวแทนของการใช้งานจำนวน 20-100 ตัวอย่าง พร้อมผลลัพธ์ที่คาดหวังหรือเกณฑ์ผ่าน ชุดทดสอบนี้จะเป็นค่าความจริงอ้างอิงสำหรับประเมินการเปลี่ยนแปลงของพรอมต์ทุกครั้ง
ชุดทดสอบที่ดีควรมีข้อมูลนำเข้าทั่วไป กรณีสุดขอบ (สตริงว่าง ข้อมูลนำเข้าที่ยาวมาก กรณีคลุมเครือ) ข้อมูลนำเข้าที่ออกแบบมาเพื่อทำให้พรอมต์ล้มเหลว และข้อมูลนำเข้าจากกลุ่มผู้ใช้ที่แตกต่างกัน ยิ่งชุดทดสอบมีความหลากหลายมากเท่าใด คุณก็จะยิ่งมั่นใจได้มากขึ้นว่าการเปลี่ยนแปลงพรอมต์เป็นการปรับปรุงที่แท้จริง ไม่ใช่การปรับให้เข้ากับตัวอย่างเพียงไม่กี่ตัวอย่างที่คุณนึกไว้
ชุดเครื่องมือประเมินแบบง่าย
การเขียนสคริปต์ประเมินแบบง่ายใช้เวลาหนึ่งชั่วโมง แต่ช่วยประหยัดเวลาหลายวันในการแก้จุดบกพร่องของปัญหาในระบบจริง สคริปต์จะเรียกใช้พรอมต์กับกรณีทดสอบทุกกรณี เปรียบเทียบผลลัพธ์กับผลที่คาดหวัง และรายงานอัตราการผ่าน จากนั้นคุณสามารถปรับแก้พรอมต์ซ้ำและดูได้ทันทีว่าการเปลี่ยนแปลงช่วยปรับปรุงคะแนนโดยรวมหรือไม่
import openai
client = openai.OpenAI()
# Golden test set: (input, expected_output)
test_cases = [
('The product is excellent and very fast.', 'Positive'),
('Arrived damaged and customer service ignored me.', 'Negative'),
('Delivery was on time.', 'Neutral'),
('Worst purchase of my life. Never again!', 'Negative'),
('Good value for the price.', 'Positive'),
]
def evaluate_prompt(system_prompt):
correct = 0
for text, expected in test_cases:
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': text}
],
max_tokens=10
)
prediction = resp.choices[0].message.content.strip()
if expected.lower() in prediction.lower():
correct += 1
else:
print(f'FAIL: "{text}" -> got "{prediction}", expected "{expected}"')
return correct / len(test_cases)
score = evaluate_prompt('Classify sentiment as Positive, Negative, or Neutral. Reply with one word only.')
print(f'Score: {score:.0%}')การจัดหมวดหมู่รูปแบบความล้มเหลว
เมื่อพรอมต์ของคุณล้มเหลวกับกรณีทดสอบ ให้จัดกลุ่มความล้มเหลวตามประเภทเพื่อค้นหารูปแบบ รูปแบบความล้มเหลวที่พบบ่อย ได้แก่:
- ความล้มเหลวด้านรูปแบบ: โมเดลให้คำตอบถูกต้องแต่ใช้รูปแบบไม่ถูกต้อง
- ความล้มเหลวจากความกำกวม: โมเดลตีความงานแตกต่างจากที่คุณตั้งใจ
- ความล้มเหลวในกรณีสุดขอบ: โมเดลทำงานได้กับข้อมูลนำเข้าทั่วไป แต่ล้มเหลวกับข้อมูลที่ไม่ปกติ
- ความล้มเหลวจากการหลอนข้อมูล: โมเดลสร้างเนื้อหาข้อเท็จจริงที่ผิดอย่างมั่นใจ
- การเพิกเฉยต่อคำสั่ง: โมเดลทำตามคำสั่งเพียงบางส่วนแต่พลาดข้อจำกัดเฉพาะ
ความล้มเหลวแต่ละประเภทต้องใช้วิธีแก้ที่แตกต่างกัน ความล้มเหลวด้านรูปแบบต้องใช้คำสั่งเกี่ยวกับผลลัพธ์ที่ชัดเจนยิ่งขึ้น ส่วนความล้มเหลวจากความกำกวมต้องใช้การกำหนดงานหรือตัวอย่างที่ชัดเจนกว่า
OpenAI Playground สำหรับการปรับปรุงซ้ำอย่างรวดเร็ว
OpenAI Playground (platform.openai.com/playground) เป็นเครื่องมือที่เร็วที่สุดสำหรับการปรับปรุงพรอมต์ซ้ำโดยไม่ต้องเขียนโค้ด เครื่องมือนี้ช่วยให้คุณสลับระหว่างโมเดล ปรับพารามิเตอร์ด้วยแถบเลื่อน บันทึกเวอร์ชันของพรอมต์ และเปรียบเทียบผลลัพธ์แบบเคียงข้างกัน
ใช้ Playground ในขั้นสำรวจของการพัฒนาพรอมต์ เช่น ทดลองถ้อยคำที่แตกต่าง ทดสอบกรณีสุดขอบแบบโต้ตอบ และสร้างความเข้าใจจากประสบการณ์ว่าสิ่งใดใช้ได้ผล เมื่อได้พรอมต์ที่มีแนวโน้มดีแล้ว ให้เปลี่ยนไปใช้โค้ดร่วมกับชุดเครื่องมือประเมิน เพื่อตรวจสอบอย่างเป็นระบบกับชุดทดสอบทั้งหมดก่อนนำไปใช้งาน
การจัดการเวอร์ชันพรอมต์
พรอมต์ก็คือโค้ด ควรควบคุมเวอร์ชัน ตรวจทาน และนำไปใช้งานด้วยความเข้มงวดเช่นเดียวกับโค้ดของแอปพลิเคชัน วิธีพื้นฐานที่สุดคือจัดเก็บแม่แบบพรอมต์เป็นสตริงในไฟล์ค่าคงที่ของคลังโค้ด เพื่อให้ติดตามการเปลี่ยนแปลงใน git และกำหนดให้ต้องผ่านการตรวจทานโค้ด
วิธีที่ซับซ้อนขึ้น ได้แก่ การจัดเก็บพรอมต์ในฐานข้อมูลเฉพาะสำหรับการจัดการพรอมต์ (LangSmith, PromptLayer หรือ ตาราง Supabase แบบง่าย) ติดป้ายกำกับเวอร์ชัน และทำการทดสอบ A/B ระหว่างเวอร์ชันของพรอมต์ในระบบจริง วิธีนี้สำคัญเป็นพิเศษเมื่อสมาชิกทีมหลายคนทำงานกับพรอมต์เดียวกัน หรือเมื่อจำเป็นต้องย้อนกลับการเปลี่ยนแปลงพรอมต์ที่ทำให้คุณภาพในระบบจริงลดลง
# prompts/sentiment.py
# Version 2.1 - Added explicit tie-breaking rule for mixed reviews
SENTIMENT_V2_1 = '''You are a sentiment classification assistant.
Classify the customer review sentiment as exactly one of: Positive, Negative, or Neutral.
Rules:
- Positive: overall satisfaction, praise, or recommendation
- Negative: disappointment, complaint, or warning to others
- Neutral: factual statements without strong sentiment, or equal positive and negative content
- If the review contains both positive and negative elements, choose based on the DOMINANT tone
Respond with ONLY the single word classification. No explanation.'''
# Usage:
# from prompts.sentiment import SENTIMENT_V2_1การเปรียบเทียบรูปแบบต่าง ๆ ของพรอมต์อย่างเป็นระบบ
เมื่อมีพรอมต์สองเวอร์ชันที่แข่งขันกันอยู่ ให้ทดสอบทั้งสองเวอร์ชันกับชุดทดสอบทั้งหมด แล้วเปรียบเทียบคะแนน แม้ความแม่นยำที่เพิ่มขึ้นเพียง 5% ในระบบจริงที่รองรับคำขอหลายพันรายการต่อวันก็คุ้มค่ากับความพยายามในการประเมิน อย่าเลือกพรอมต์จากตัวอย่างที่ทดสอบด้วยตนเองเพียงหนึ่งหรือสองตัวอย่างโดยเด็ดขาด — ให้เปรียบเทียบกับชุดทดสอบทั้งหมดเสมอ
สำหรับการวัดคุณภาพเชิงอัตวิสัยที่ไม่มีคำตอบถูกต้องเพียงคำตอบเดียว เช่น น้ำเสียง ความมีประโยชน์ หรือความคิดสร้างสรรค์ คุณสามารถใช้ การประเมินโดย LLM ได้ โดยส่งพรอมต์ให้โมเดลประสิทธิภาพสูงอย่าง GPT-4o ประเมินว่าคำตอบใดจากสองคำตอบตรงตามเกณฑ์คุณภาพของคุณมากกว่า วิธีนี้ช่วยขยายขอบเขตการประเมินได้เกินกว่าที่มนุษย์จะตรวจสอบได้
การแก้ไขข้อบกพร่องของผลลัพธ์ที่ไม่สม่ำเสมอ
โดยค่าเริ่มต้น ผลลัพธ์จาก LLM ไม่ได้เป็นแบบกำหนดตายตัว การตั้งค่า temperature=0 จะทำให้ผลลัพธ์เกือบกำหนดตายตัว (เลือกโทเค็นที่มีความเป็นไปได้สูงสุดในแต่ละขั้นตอน) ซึ่งจำเป็นอย่างยิ่งต่อการแก้ไขข้อบกพร่อง เพราะช่วยให้คุณเรียกใช้พรอมต์เดิมสองครั้งแล้วได้ผลลัพธ์เหมือนกัน เมื่อแก้ไขข้อบกพร่อง ให้ตั้งค่า temperature เป็น 0 เสมอ เพื่อแยกให้ออกว่าการเปลี่ยนแปลงของผลลัพธ์เกิดจากการแก้ไขพรอมต์หรือเป็นเพียงความแปรปรวนแบบสุ่ม
เมื่อแก้ไขพรอมต์เสร็จแล้ว ให้เปิดใช้ temperature บางส่วนอีกครั้งในระบบจริง หากกรณีใช้งานของคุณได้ประโยชน์จากความหลากหลาย (การเขียนเชิงสร้างสรรค์ การระดมความคิด) แต่ให้คง temperature ไว้ที่ 0 สำหรับงานดึงข้อมูลแบบมีโครงสร้างและงานจัดประเภทที่ต้องการผลลัพธ์สม่ำเสมอและทำซ้ำได้
import openai
client = openai.OpenAI()
# Deterministic mode for debugging
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Classify sentiment: Positive, Negative, or Neutral.'},
{'role': 'user', 'content': 'The product looks nice but broke after two days.'}
],
temperature=0, # deterministic
seed=42 # optional reproducibility seed
)
print(response.choices[0].message.content)การแก้ไขข้อบกพร่องของการสร้างข้อมูลหลอน
หากพรอมต์ของคุณสร้างข้อเท็จจริงที่เป็นข้อมูลหลอน ให้เพิ่มข้อจำกัดที่ทำให้การสร้างข้อมูลหลอนทำได้ยากขึ้น เทคนิคป้องกันข้อมูลหลอนที่มีประสิทธิภาพ ได้แก่:
- อ้างอิงแหล่งข้อมูล: 'ตอบโดยอ้างอิงจากบริบทที่ให้ไว้เท่านั้น หากคำตอบไม่มีอยู่ในบริบท ให้ตอบว่าไม่ทราบ'
- วัดระดับความมั่นใจ: 'ให้คะแนนความมั่นใจตั้งแต่ 1 ถึง 5 หากต่ำกว่า 3 ห้ามตอบ'
- ขั้นตอนการตรวจสอบ: 'ก่อนตอบ ให้ตรวจสอบว่าข้อเท็จจริงแต่ละข้อที่คุณวางแผนจะใช้นั้นมีอยู่ในเอกสารที่ให้ไว้'
ไม่มีเทคนิคใดกำจัดข้อมูลหลอนได้ทั้งหมด แต่การผสานการเรียกค้น (RAG) เข้ากับข้อจำกัดของพรอมต์ที่เข้มงวดจะช่วยลดปัญหานี้ได้อย่างมากสำหรับแอปพลิเคชันที่ต้องใช้ความรู้จำนวนมาก
ความยาวของพรอมต์และตำแหน่งการวางคำสั่ง
งานวิจัยแสดงให้เห็นว่า LLM ให้ความสนใจกับคำสั่งที่อยู่ ต้นและท้าย พรอมต์มากกว่าคำสั่งที่อยู่ตรงกลาง ปัญหานี้เรียกว่า ปัญหาการหลงหายในส่วนกลาง หากคุณมีพรอมต์ยาวที่มีคำสั่งสำคัญถูกฝังอยู่ตรงกลางและมีบริบทล้อมรอบ โมเดลอาจไม่ทำตามคำสั่งเหล่านั้นอย่างสม่ำเสมอ
แนวทางปฏิบัติที่ดีที่สุดคือ วางคำสั่งที่สำคัญที่สุด (คำจำกัดความของงานและข้อจำกัดสำคัญ) ไว้ที่ต้นพรอมต์ระบบ และย้ำข้อจำกัดหลักอีกครั้งที่ท้ายพรอมต์ สำหรับเอกสารยาวที่แทรกเป็นบริบท ให้วางคำถามของผู้ใช้ไว้หลังเอกสารแทนที่จะวางไว้ก่อน เพราะโมเดลจะให้น้ำหนักกับเนื้อหาล่าสุดมากกว่า
จากการสำรวจสู่ระบบจริง
วงจรการพัฒนาพรอมต์มีสามระยะ:
- การสำรวจ: ใช้ Playground เพื่อทดลองได้อย่างอิสระ มุ่งทำความเข้าใจว่าแนวคิดใดใช้ได้ผล ไม่ใช่มุ่งให้ผลลัพธ์สมบูรณ์แบบ
- การประเมิน: สร้างชุดทดสอบและเครื่องมือประเมิน เรียกใช้พรอมต์ตัวเลือกต่าง ๆ กับชุดทดสอบทั้งหมดและวัดอัตราการผ่าน ทำซ้ำจนกว่าจะถึงเกณฑ์คุณภาพที่กำหนด
- ระบบจริง: ควบคุมเวอร์ชันของพรอมต์สุดท้าย เพิ่มการติดตามเพื่อตรวจวัดตัวชี้วัดคุณภาพในระบบจริง และตั้งค่าการแจ้งเตือนเมื่อคุณภาพลดลง วางแผนการปรับปรุงในอนาคตเมื่อเวอร์ชันของโมเดลเปลี่ยนแปลง
การข้ามระยะการประเมินเป็นสาเหตุที่พบบ่อยที่สุดของคุณภาพพรอมต์ที่ถดถอยในระบบจริง เวลาที่ลงทุนกับชุดทดสอบที่เหมาะสมจะคืนผลตอบแทนให้คุณหลายเท่า
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิดวิศวกรรม AI จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า วิศวกรรมพรอมต์จำเป็นต้องมีชุดทดสอบมาตรฐานและเครื่องมือประเมินเพื่อวัดการปรับปรุงได้อย่างน่าเชื่อถือ ควรจัดหมวดหมู่รูปแบบความล้มเหลวเพื่อระบุวิธีแก้ไขที่เหมาะสมสำหรับแต่ละประเภท และ temperature 0 จำเป็นอย่างยิ่งต่อการแก้ไขข้อบกพร่อง ขณะที่การควบคุมเวอร์ชันของพรอมต์และการติดตามระบบจริงช่วยปิดวงจรคุณภาพ บทถัดไปเราจะสำรวจว่า LLM ประมวลผลข้อความผ่านโทเค็นอย่างไร และเหตุใดจำนวนโทเค็นจึงสำคัญต่อต้นทุนและบริบท
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Engineering Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง”
สร้างขั้นตอนการทำงานอย่างเป็นระบบสำหรับทดสอบและปรับปรุงพรอมต์ ระบุรูปแบบความล้มเหลว และใช้ OpenAI Playground เพื่อปรับแก้อย่างรวดเร็วก่อนเขียนโค้ดสำหรับใช้งานจริง คุณปฏิบัติ AI Engineering Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Engineering Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Engineering Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Engineering Academy นี้ได้ไหม
ได้ บทเรียน AI Engineering Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเขียนพรอมต์แบบศูนย์ตัวอย่างและไม่กี่ตัวอย่าง
- ห่วงโซ่ความคิดและการใช้เหตุผลทีละขั้นตอน
- พรอมต์ระบบและการกำหนดบุคลิก
- การปรับปรุงพรอมต์และการแก้ไขข้อบกพร่อง