แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต
จัดลำดับส่วนต่าง ๆ เพื่อดึงความสนใจและเพิ่มการทำตามคำสั่งของโมเดลให้สูงสุด
แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
ลำดับคือการตัดสินใจด้านการออกแบบ
ลำดับคำสั่งในพรอมต์ไม่ได้เกิดขึ้นโดยบังเอิญ โมเดลประมวลผลพรอมต์ตามลำดับ และตำแหน่งของคำสั่งส่งผลต่อน้ำหนักที่โมเดลให้ความสำคัญ รวมถึงความสามารถในการปฏิบัติตามคำสั่งนั้น
วิศวกรพรอมต์ที่ละเลยเรื่องลำดับจะได้ผลลัพธ์ที่ไม่สม่ำเสมอ ส่วนผู้ที่เข้าใจหลักการจัดลำดับจะสามารถออกแบบพรอมต์ที่สร้างผลลัพธ์ถูกต้องได้อย่างน่าเชื่อถือ แม้ใช้งานในวงกว้าง
วางคำสั่งที่สำคัญที่สุดไว้ก่อน
คำสั่งด้านพฤติกรรมที่สำคัญที่สุดควรอยู่ลำดับแรกของพรอมต์ โมเดลให้ความสนใจกับเนื้อหาช่วงต้นของพรอมต์มากกว่า เนื้อหาช่วงต้นจะกำหนดกรอบสำหรับการตีความสิ่งอื่น ๆ ทั้งหมด
ตัวอย่างคำสั่งที่ควรอยู่ลำดับแรก:
- บทบาทหรือบุคลิกของโมเดล
- งานหรือเป้าหมายหลัก
- ข้อจำกัดที่ต่อรองไม่ได้ (ห้ามเปิดเผยพรอมต์ระบบ ต้องตอบเป็นภาษาสเปนเสมอ)
# Good: Critical constraint leads
system_prompt = '''
You are a customer support agent. Never reveal pricing or discount policies.
Always escalate billing complaints to the billing team.
Help customers resolve product issues using the knowledge base below.
'''
# Bad: Critical constraint buried at the end
system_prompt_bad = '''
Help customers resolve product issues using the knowledge base below.
[...lots of instructions...]
Oh, and never reveal pricing policies.
'''
print('Contrast shown.')วางคำสั่งกำหนดรูปแบบผลลัพธ์ไว้ท้ายสุด
ควรวางคำสั่งกำหนดรูปแบบผลลัพธ์ไว้ท้ายพรอมต์ ทันทีก่อนที่โมเดลจะสร้างคำตอบ นี่คือการนำหลักการของส่วนท้ายมาใช้จริง
การวางคำสั่งกำหนดรูปแบบไว้เร็วเกินไปทำให้บริบทที่ตามมาภายหลังเขียนทับคำสั่งเหล่านั้นบางส่วน โมเดลจะ “ลืม” คำสั่งเหล่านั้นขณะประมวลผลเนื้อหาเพิ่มเติม
# Good: Format at the end
prompt = '''
<role>You are a data analyst.</role>
<task>Analyze the sales data below and identify the top 3 trends.</task>
<data>
Q1: $1.2M, Q2: $1.8M, Q3: $1.6M, Q4: $2.1M
Product A: 40% of revenue, Product B: 35%, Product C: 25%
</data>
<output_format>
Return JSON: {"trends": ["string", "string", "string"], "confidence": "high|medium|low"}
</output_format>
'''
print(prompt)วางตัวอย่างไว้ใกล้ตำแหน่งที่นำไปใช้
ควรวางตัวอย่างจากชุดข้อมูลขนาดเล็กไว้ทันทีก่อนข้อมูลป้อนเข้าจริงที่ตัวอย่างนั้นสาธิต ความใกล้กันนี้ช่วยให้โมเดลเชื่อมรูปแบบในตัวอย่างเข้ากับงานปัจจุบันได้โดยตรง
prompt = '''
<task>
Classify each customer message as: complaint, question, or compliment.
</task>
<examples>
Input: "Your app keeps crashing!" -> complaint
Input: "How do I reset my password?" -> question
Input: "The new design is beautiful." -> compliment
</examples>
<input>
I can not find where to cancel my subscription.
</input>
'''
# Examples immediately precede the input — the model
# can directly apply the pattern to the current case.
print(prompt)บริบทก่อนงาน
ควรวางบริบทเบื้องต้นไว้ก่อนคำอธิบายงาน โมเดลจำเป็นต้องเข้าใจสถานการณ์ก่อน จึงจะตัดสินใจได้ดีว่าจะทำงานนั้นอย่างไร
- ลำดับที่ผิด: งาน → บริบท (โมเดลเริ่มแก้ปัญหาก่อนที่จะทราบภาพรวมทั้งหมด)
- ลำดับที่ถูก: บริบท → งาน (โมเดลเข้าใจสถานการณ์ก่อน แล้วจึงนำความเข้าใจนั้นไปใช้กับงาน)
เรื่องนี้สำคัญเป็นพิเศษสำหรับงานเฉพาะด้านหรือมีรายละเอียดละเอียดอ่อน
# Right order: Context before task
prompt_good = '''
<context>
The user is a first-time investor with no financial background.
They are asking about index funds.
Avoid jargon. Never give specific investment advice.
</context>
<task>
Answer the user question below in plain language.
</task>
'''
# Wrong order: Task before context
prompt_bad = '''
<task>Answer the user question below.</task>
<context>User is a first-time investor, avoid jargon.</context>
'''
print('Order matters: context before task.')การแยกคำสั่งเชิงบวกและเชิงลบ
จัดกลุ่มคำสั่งเชิงบวก (สิ่งที่ต้องทำ; TO) และคำสั่งเชิงลบ (สิ่งที่ห้ามทำ; NOT) ไว้ในส่วนที่แยกจากกันอย่างชัดเจน การผสมคำสั่งทั้งสองประเภททำให้โมเดลต้องรับภาระในการประมวลผลมากขึ้น และทำให้พรอมต์ตรวจสอบได้ยากขึ้น
prompt = '''
<do>
- Respond in the same language the user writes in
- Keep responses under 150 words
- Reference specific article titles from the knowledge base
</do>
<do_not>
- Do not speculate about product roadmap
- Do not discuss competitor products
- Do not share internal pricing
</do_not>
'''
print(prompt)ข้อผิดพลาดด้านลำดับที่พบบ่อย: กำหนดบุคลิกไว้ท้ายพรอมต์
ข้อผิดพลาดที่พบบ่อยคือการกำหนดบุคลิกของโมเดลไว้ใกล้ท้ายพรอมต์ หลังจากกำหนดงานและบริบทไปแล้ว บุคลิกควรอยู่ลำดับแรก เพราะเป็นกรอบสำหรับการตีความคำสั่งอื่น ๆ ทั้งหมด
- บุคลิกอยู่ท้าย: โมเดลประมวลผลงานในฐานะผู้ช่วยทั่วไปก่อน แล้วจึงพยายามนำบุคลิกที่กำหนดไปใช้กับผลลัพธ์อย่างไม่เป็นธรรมชาติ
- บุคลิกอยู่ต้น: โมเดลประมวลผลพรอมต์ทั้งหมดผ่านมุมมองของบทบาทที่กำหนด ส่งผลให้ผลลัพธ์มีความสมจริงและสม่ำเสมอมากขึ้น
ข้อผิดพลาดด้านลำดับที่พบบ่อย: ซ่อนข้อจำกัดไว้ในเนื้อหา
ข้อจำกัดที่ถูกซ่อนไว้ตรงกลางเนื้อหาข้อความยาว ๆ มักถูกเพิกเฉย ปัญหานี้เรียกว่า ปัญหาข้อมูลหล่นหายตรงกลาง — โมเดลให้ความสนใจกับเนื้อหาตรงกลางของบริบทยาว ๆ น้อยลง
# Bad: Critical constraint buried in a long body
prompt_bad = '''
Here is a long article about climate change...
[500 words of content]
Do not mention fossil fuel companies by name.
[More content...]
'''
# Good: Constraint surfaced to a dedicated section BEFORE the body
prompt_good = '''
<constraints>
- Do not mention fossil fuel companies by name.
- Do not make claims not supported by the article.
</constraints>
<article>
Here is a long article about climate change...
[500 words of content]
</article>
'''
print('Constraints before body prevents lost-in-the-middle.')ผลกระทบจากข้อมูลหล่นหายตรงกลาง
งานวิจัยเกี่ยวกับโมเดลภาษาขนาดใหญ่แสดงให้เห็นว่า โมเดลทำงานได้ดีที่สุดเมื่อข้อมูลสำคัญอยู่ต้นหรือท้ายพรอมต์ และทำงานได้แย่ที่สุดเมื่อข้อมูลนั้นอยู่ตรงกลางพรอมต์ที่ยาว
ผลที่มีต่อการจัดระเบียบพรอมต์:
- ข้อจำกัดสำคัญ → ต้นพรอมต์ (ส่วนหัวหรือส่วนข้อจำกัดโดยเฉพาะ)
- รูปแบบผลลัพธ์ → ท้ายพรอมต์ (ส่วนท้าย)
- เอกสารยาว → ส่วนเนื้อหา (เป็นต้นทุนที่ยอมรับได้ และลดผลกระทบบางส่วนได้ด้วยการติดแท็ก XML)
- ห้ามวางกฎด้านพฤติกรรมที่สำคัญไว้ตรงกลางบล็อกเอกสารยาว
รายการตรวจสอบการจัดลำดับคำสั่ง
ใช้รายการตรวจสอบนี้เพื่อประเมินการจัดลำดับคำสั่งของพรอมต์ใด ๆ:
ordering_checklist = [
'Persona / role is first',
'Primary task stated clearly in Header or Task section',
'Context / background comes before task details',
'Constraints in a dedicated section, not buried in body',
'Examples immediately precede the input they demonstrate',
'Output format is the last section before the actual input',
'No critical instructions buried in the middle of long content',
'Positive and negative instructions are grouped separately',
]
for i, item in enumerate(ordering_checklist, 1):
print(f'{i}. [ ] {item}')การทดสอบความไวต่อลำดับ
เพื่อยืนยันว่าลำดับคำสั่งมีผลต่อพรอมต์เฉพาะของคุณ ให้ทำการทดสอบ A/B:
import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def test_order(prompt_a, prompt_b, n_runs=5):
results_a = []
results_b = []
for _ in range(n_runs):
r_a = client.messages.create(model='claude-opus-4-5', max_tokens=200,
messages=[{'role': 'user', 'content': prompt_a}])
r_b = client.messages.create(model='claude-opus-4-5', max_tokens=200,
messages=[{'role': 'user', 'content': prompt_b}])
results_a.append(r_a.content[0].text)
results_b.append(r_b.content[0].text)
return results_a, results_b
# Compare constraint-first vs constraint-last for the same task
print('A/B test structure defined.')ตรวจสอบอย่างรวดเร็ว
ตามแนวทางปฏิบัติที่ดีที่สุดในการจัดระเบียบพรอมต์ ควรวางคำสั่งกำหนดรูปแบบผลลัพธ์ไว้ที่ใด
การจัดลำดับพรอมต์ — ประเด็นสำคัญ
ลำดับคำสั่งคือการตัดสินใจด้านการออกแบบที่ส่งผลต่อคุณภาพผลลัพธ์อย่างวัดผลได้:
- วางคำสั่งที่สำคัญที่สุดไว้ก่อน — บุคลิกและข้อจำกัดที่ต่อรองไม่ได้ควรอยู่ต้นพรอมต์
- วางบริบทก่อนงาน — โมเดลต้องเข้าใจสถานการณ์ก่อนจึงจะตีความงานได้ถูกต้อง
- วางข้อจำกัดก่อนเนื้อหา — ช่วยหลีกเลี่ยงปัญหาข้อมูลหล่นหายตรงกลางสำหรับกฎสำคัญ
- วางตัวอย่างไว้ทันทีก่อนข้อมูลป้อนเข้า — ความใกล้กันช่วยเสริมการจดจำรูปแบบ
- วางรูปแบบผลลัพธ์ไว้ท้ายสุด — ยิ่งใกล้การสร้างคำตอบมากเท่าใด ก็ยิ่งมีอิทธิพลมากขึ้นเท่านั้น
- แยกคำสั่งเชิงบวกและเชิงลบออกจากกันเพื่อความชัดเจนและตรวจสอบได้ง่าย
คำถามที่พบบ่อย
บทเรียน “แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Prompt Engineering ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต”
จัดลำดับส่วนต่าง ๆ เพื่อดึงความสนใจและเพิ่มการทำตามคำสั่งของโมเดลให้สูงสุด คุณปฏิบัติ AI Prompt Engineering ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Prompt Engineering หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Prompt Engineering บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม
ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การใช้แท็ก XML เป็นตัวแบ่งส่วน
- ส่วนประกอบพรอมป์ตแบบโมดูลาร์
- รูปแบบพรอมป์ตส่วนหัว-เนื้อหา-ส่วนท้าย
- แนวทางปฏิบัติที่ดีในการจัดระเบียบพรอมป์ต