การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน
การตั้งค่าที่แนะนำสำหรับการถามตอบเชิงข้อเท็จจริง การเขียนสร้างสรรค์ โค้ด และการสนทนา
การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
กรอบการตัดสินใจเลือกพารามิเตอร์
การเลือกพารามิเตอร์การสุ่มไม่ใช่การเดาสุ่ม แต่เป็นไปตามตรรกะที่อิงจากข้อกำหนดของงาน มีมิติสำคัญสองประการที่กำหนดการตั้งค่าที่เหมาะสม:
- ความถูกต้องของผลลัพธ์: ผลลัพธ์จะต้องถูกต้องและคาดเดาได้มากเพียงใด
- ความหลากหลายของผลลัพธ์: ผลลัพธ์ควรแตกต่างกันและสำรวจแนวทางใหม่มากเพียงใด
ความถูกต้องสูง → อุณหภูมิต่ำ ความหลากหลายสูง → อุณหภูมิสูง งานส่วนใหญ่อยู่ระหว่างขั้วทั้งสองนี้
การถามตอบข้อเท็จจริง: ความถูกต้องคือสิ่งสำคัญที่สุด
สำหรับการตอบคำถามเชิงข้อเท็จจริง โดยทั่วไปจะมีคำตอบที่ถูกต้องอยู่หนึ่งคำตอบ ความสุ่มใด ๆ จะเพิ่มโอกาสที่คำตอบจะผิด ควรใช้:
- อุณหภูมิ = 0: การถอดรหัสโดยเลือกตัวเลือกสูงสุด ซึ่งให้ผลแน่นอนอย่างสมบูรณ์
- ขอบเขตนิวเคลียส = 1.0: ไม่จำกัดขอบเขต เมื่ออุณหภูมิ=0 การสุ่มแบบนิวเคลียสจะไม่มีผล
วิธีนี้ทำให้โมเดลเลือกคำตอบที่มั่นใจที่สุดเสมอ ซึ่งมีแนวโน้มถูกต้องมากที่สุด
import openai
client = openai.OpenAI(api_key='sk-...')
# Factual Q&A configuration
def factual_qa(question):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': 'Answer factual questions concisely and accurately.'},
{'role': 'user', 'content': question}
],
temperature=0,
top_p=1.0
)
return resp.choices[0].message.content
answer = factual_qa('What is the boiling point of water at sea level?')
print(answer) # Always: '100 degrees Celsius (212 degrees Fahrenheit).'การสร้างโค้ด: เกือบเป็นแบบเลือกตัวเลือกสูงสุด
โค้ดต้องถูกต้องตามไวยากรณ์และแม่นยำตามความหมาย ความสุ่มอาจทำให้เกิดข้อผิดพลาดทางไวยากรณ์ ใช้ชื่อตัวแปรผิด หรือตรรกะไม่ถูกต้อง ควรใช้:
- อุณหภูมิ = 0–0.2: เกือบเป็นแบบเลือกตัวเลือกสูงสุด — อนุญาตให้มีความแตกต่างเล็กน้อย แต่ยังให้ความสำคัญอย่างมากกับการเลือกโทเค็นที่ถูกต้อง
- ขอบเขตนิวเคลียส = 0.95: ตัดโทเค็นจากส่วนหางสุดขั้วที่อาจทำให้เกิดข้อผิดพลาดทางไวยากรณ์
# Code generation configuration
def generate_code(task):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': 'You are an expert Python programmer. Write clean, correct code.'},
{'role': 'user', 'content': task}
],
temperature=0.1,
top_p=0.95
)
return resp.choices[0].message.content
code = generate_code('Write a Python function that merges two sorted lists.')
print(code)การสรุปเนื้อหา: การตั้งค่าระดับปานกลาง
การสรุปเนื้อหาต้องการความถูกต้อง (ไม่บิดเบือนข้อเท็จจริง) แต่ก็ได้ประโยชน์จากความแตกต่างเล็กน้อย (การเรียกใช้แต่ละครั้งอาจเน้นแง่มุมต่างกัน) ควรใช้:
- อุณหภูมิ = 0.3–0.5: ความสุ่มเล็กน้อยช่วยรักษาสำนวนที่เป็นธรรมชาติ
- ขอบเขตนิวเคลียส = 1.0: ไม่จำเป็นต้องจำกัดขอบเขตนิวเคลียสเมื่อใช้อุณหภูมิต่ำ
# Summarization configuration
def summarize(text):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': 'Summarize the following text in 3 sentences.'},
{'role': 'user', 'content': text}
],
temperature=0.4,
top_p=1.0
)
return resp.choices[0].message.content
summary = summarize(long_article)
print(summary)การสนทนา: ความแตกต่างอย่างเป็นธรรมชาติ
คำตอบในการสนทนาได้ประโยชน์จากความแตกต่างอย่างเป็นธรรมชาติ — คำถามเดียวกันไม่ควรให้สำนวนที่เหมือนกันทุกครั้ง ความสุ่มที่มากเกินไปจะทำให้คำตอบไม่สอดคล้องกัน ควรใช้:
- อุณหภูมิ = 0.7–0.9: การสนทนาที่เป็นธรรมชาติและหลากหลาย
- ขอบเขตนิวเคลียส = 0.9–0.95: ตัดโทเค็นจากส่วนหางที่ไม่น่าจะเป็นไปได้ ซึ่งทำให้สำนวนไม่เป็นธรรมชาติ
# Chat configuration
def chat_response(user_message, history):
messages = history + [{'role': 'user', 'content': user_message}]
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': 'You are a friendly, helpful assistant.'},
*messages
],
temperature=0.8,
top_p=0.9
)
reply = resp.choices[0].message.content
history.append({'role': 'user', 'content': user_message})
history.append({'role': 'assistant', 'content': reply})
return reply, historyการเขียนเชิงสร้างสรรค์: ความหลากหลายสูง
การเขียนเชิงสร้างสรรค์ให้คุณค่ากับความแปลกใหม่และสิ่งที่คาดไม่ถึง อุณหภูมิต่ำทำให้ผลลัพธ์ซ้ำซากและคาดเดาได้ อุณหภูมิสูงทำให้เกิดตัวเลือกที่มีชีวิตชีวาและคาดไม่ถึง แม้หากสูงเกินไปจะทำให้เนื้อหาไม่สอดคล้องกัน ควรใช้:
- อุณหภูมิ = 0.9–1.2: คลังคำหลากหลายและการเลือกคำที่ไม่ชัดเจนหรือคาดเดาได้ล่วงหน้า
- ขอบเขตนิวเคลียส = 0.95: ป้องกันโทเค็นจากส่วนหางที่ทำให้เนื้อหาไม่สอดคล้องกัน พร้อมเปิดให้สำรวจได้อย่างกว้างขวาง
# Creative writing configuration
def write_story_opening(prompt):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': 'You are a creative fiction writer. Write vivid, original prose.'},
{'role': 'user', 'content': f'Write a story opening for: {prompt}'}
],
temperature=1.1,
top_p=0.95
)
return resp.choices[0].message.content
opening = write_story_opening('A detective discovers her partner is the killer.')
print(opening)การระดมความคิดและการสร้างแนวคิด
สำหรับการระดมความคิด เป้าหมายคือความหลากหลายของแนวคิดให้มากที่สุด แม้จะเป็นแนวคิดที่ไม่ปกติหรือคาดไม่ถึงก็ตาม ควรใช้อุณหภูมิสูงสุดที่ยังใช้งานได้จริง:
- อุณหภูมิ = 1.0–1.5: สำรวจพื้นที่ของแนวคิดได้อย่างกว้างขวาง
- ขอบเขตนิวเคลียส = 0.95–1.0: จำกัดให้น้อยที่สุด
เรียกใช้หลายครั้งและรวบรวมผลลัพธ์ทั้งหมด จากนั้นจึงคัดเลือกแนวคิดที่ดีที่สุดด้วยตนเอง คำสั่งสำหรับการระดมความคิดได้ประโยชน์จากการขอความหลากหลายอย่างชัดเจน: 'โปรดเสนอแนวทางที่แตกต่างกัน 10 แบบ รวมถึงแนวทางที่ไม่ปกติด้วย'
# Brainstorming: run multiple times for variety
def brainstorm(topic, n_runs=5):
ideas = []
for _ in range(n_runs):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': 'Generate creative, diverse ideas. Include unusual approaches.'},
{'role': 'user', 'content': f'Give me 3 ideas for: {topic}'}
],
temperature=1.3,
top_p=0.95
)
ideas.append(resp.choices[0].message.content)
return ideas
all_ideas = brainstorm('reducing customer churn')การทดสอบความไวของพารามิเตอร์
ก่อนตัดสินใจใช้พารามิเตอร์ ให้ทำการทดสอบความไวของพารามิเตอร์: คงคำสั่งไว้เหมือนเดิม เปลี่ยนพารามิเตอร์ทีละรายการ และประเมินคุณภาพของผลลัพธ์ในการตั้งค่าแต่ละแบบ
def sensitivity_test(prompt, evaluator, temperatures, n_samples=5):
results = {}
for temp in temperatures:
scores = []
for _ in range(n_samples):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': prompt}],
temperature=temp
)
score = evaluator(resp.choices[0].message.content)
scores.append(score)
results[temp] = sum(scores) / len(scores)
for temp, score in sorted(results.items()):
print(f'T={temp}: avg score = {score:.2f}')
best_temp = max(results, key=results.get)
print(f'Best temperature: {best_temp}')
return best_tempเมื่อใดควรใช้ค่าเริ่มต้น
ไม่ใช่ทุกแอปพลิเคชันที่ต้องใช้พารามิเตอร์แบบกำหนดเอง ควรใช้ค่าเริ่มต้นเมื่อ:
- กรณีการใช้งานคือการสนทนาทั่วไป — อุณหภูมิเริ่มต้น (1.0 สำหรับส่วนติดต่อการเขียนโปรแกรมส่วนใหญ่) ได้รับการปรับแต่งมาเป็นอย่างดี
- คุณกำลังสร้างต้นแบบและยังไม่ทราบการตั้งค่าที่เหมาะสม
- งานมีความสมดุลระหว่างความถูกต้องและความสร้างสรรค์ (เช่น การร่างอีเมล)
หลักทั่วไป: ปรับแต่งพารามิเตอร์เฉพาะเมื่อพฤติกรรมเริ่มต้นทำให้เกิดปัญหาคุณภาพที่วัดได้จากการทดสอบ การปรับพารามิเตอร์ก่อนเวลาอันควรเพิ่มความซับซ้อนโดยไม่มีประโยชน์ที่วัดได้
# Defaults are often correct
default_resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'Draft a professional email declining a meeting.'}]
# No temperature or top_p specified — API defaults apply
# OpenAI default: temperature=1, top_p=1
)
print(default_resp.choices[0].message.content)บัตรอ้างอิงฉบับย่อ
ตารางสรุปการตั้งค่าที่แนะนำตามกรณีการใช้งาน:
PARAMETER_PRESETS = {
# task: (temperature, top_p, notes)
'factual_qa': (0.0, 1.0, 'greedy, max accuracy'),
'classification': (0.0, 1.0, 'deterministic labels'),
'code_generation': (0.1, 0.95, 'near-greedy, avoid tail tokens'),
'data_extraction': (0.2, 1.0, 'slight variation for robustness'),
'summarization': (0.4, 1.0, 'preserve facts, vary phrasing'),
'translation': (0.3, 1.0, 'accurate but natural'),
'chat': (0.8, 0.9, 'natural conversation'),
'email_drafting': (0.7, 0.9, 'professional but varied'),
'creative_writing': (1.1, 0.95, 'vivid, original'),
'brainstorming': (1.3, 0.95, 'maximum diversity'),
}
for task, (temp, top_p, notes) in PARAMETER_PRESETS.items():
print(f'{task:22} temp={temp}, top_p={top_p} | {notes}')ค่าปรับตามความถี่และการปรากฏ
พารามิเตอร์เพิ่มเติมสองรายการช่วยเสริมอุณหภูมิและการสุ่มแบบนิวเคลียส:
- ค่าปรับตามความถี่ (0–2): ลดความน่าจะเป็นของโทเค็นตามจำนวนครั้งที่โทเค็นนั้นปรากฏในผลลัพธ์จนถึงขณะนั้น — ป้องกันการใช้คำซ้ำ
- ค่าปรับการปรากฏ (0–2): ลดความน่าจะเป็นของโทเค็นใด ๆ ที่เคยปรากฏแล้ว — ส่งเสริมความหลากหลายของหัวข้อ
สำหรับการเขียนเชิงสร้างสรรค์ ให้เพิ่มค่าปรับตามความถี่=0.5 เพื่อลดการเลือกคำซ้ำโดยไม่เปลี่ยนอุณหภูมิ
resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'Write a paragraph about coffee.'}],
temperature=1.0,
top_p=0.95,
frequency_penalty=0.5, # discourage repeating the same words
presence_penalty=0.3 # encourage introducing new topics/aspects
)
print(resp.choices[0].message.content)ตรวจสอบความรู้
สำหรับงานที่สร้างโค้ดภาษาไพธอนซึ่งจะนำไปใช้งานจริง การกำหนดค่าพารามิเตอร์แบบใดเหมาะสมที่สุด
ทบทวน: การเลือกพารามิเตอร์การสุ่ม
จับคู่พารามิเตอร์ให้สอดคล้องกับความต้องการด้านความถูกต้องและความหลากหลาย:
- ข้อเท็จจริง/โค้ด: อุณหภูมิ=0–0.2, ขอบเขตนิวเคลียส=0.95 — ให้ความถูกต้องมาก่อน
- การสรุปเนื้อหา: อุณหภูมิ=0.3–0.5 — สร้างสมดุล
- การสนทนา: อุณหภูมิ=0.7–0.9, ขอบเขตนิวเคลียส=0.9 — ความแตกต่างอย่างเป็นธรรมชาติ
- งานสร้างสรรค์: อุณหภูมิ=0.9–1.2, ขอบเขตนิวเคลียส=0.95 — ความหลากหลาย
- การระดมความคิด: อุณหภูมิ=1.3, ขอบเขตนิวเคลียส=0.95 — การสำรวจสูงสุด
ทำการทดสอบความไวของพารามิเตอร์ ใช้ค่าเริ่มต้นเมื่อไม่พบปัญหาด้านคุณภาพ เพิ่มค่าปรับตามความถี่เมื่อมีปัญหาการใช้คำซ้ำ เนื้อหานี้เป็นบทสรุปของหลักสูตรที่ 19 ต่อไป: การทดสอบคำสั่งและการทดสอบการถดถอย
คำถามที่พบบ่อย
บทเรียน “การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อุณหภูมิใน LLM คืออะไร
- การสุ่มตัวอย่างนิวเคลียสแบบ top-p
- การสุ่มตัวอย่างแบบ top-k
- การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน