ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์
ทดลองใช้ temperature, max_tokens และ top_p เพื่อดูว่าพารามิเตอร์เหล่านี้เปลี่ยนรูปแบบ ความยาว และความสร้างสรรค์ของผลลัพธ์อย่างไร จากนั้นเลือกการตั้งค่าที่เหมาะกับกรณีใช้งาน
ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์ เป็นบทเรียน AI Engineering Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Engineering Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน
พารามิเตอร์หลักที่สำคัญ
มีพารามิเตอร์เพียงไม่กี่ตัวที่มีอิทธิพลต่อผลลัพธ์มากที่สุด ได้แก่ temperature, max_tokens, top_p, frequency_penalty และ presence_penalty เมื่อเข้าใจทั้งห้าตัวนี้ คุณก็จะควบคุมโมเดลได้
Temperature: การควบคุมความสุ่ม
Temperature ควบคุมความสุ่ม เมื่อค่าใกล้ 0 โมเดลจะเลือกคำที่ปลอดภัยที่สุดและให้ผลสม่ำเสมอ เหมาะกับข้อเท็จจริง ส่วนค่าประมาณ 0.7–1.0 จะทำให้ผลลัพธ์หลากหลายและสร้างสรรค์มากขึ้น ดูโค้ดได้เลย
from openai import OpenAI
client = OpenAI()
for temp in [0.0, 0.7, 1.5]:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Name a color.'}],
temperature=temp,
max_tokens=5
)
print(f'Temp {temp}: {response.choices[0].message.content}')
# Temp 0.0: Red (always most common)
# Temp 0.7: Blue (varied but sensible)
# Temp 1.5: Vermillion (surprising choices)max_tokens: การควบคุมความยาวคำตอบ
max_tokens จำกัดความยาวสูงสุดของคำตอบ ซึ่งเป็นขีดจำกัดเพื่อความปลอดภัย ไม่ใช่เป้าหมาย หากตั้งค่าต่ำเกินไป คำตอบจะถูกตัด หากตั้งค่าสูงเกินไปจะเสียเงินและเวลาโดยเปล่าประโยชน์ ควรเผื่อพื้นที่ไว้และตรวจสอบ finish_reason
# Different max_tokens for different use cases
# Classification: short answer expected
classification_response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Is this positive or negative? "Great product!"'}],
max_tokens=5 # Only need 1-2 words
)
# Detailed analysis: longer output needed
analysis_response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Analyze the pros and cons of microservices.'}],
max_tokens=800 # Need space for detailed explanation
)top_p: การสุ่มแบบกลุ่มแกนกลาง
top_p เป็นปุ่มควบคุมความสุ่มอีกแบบหนึ่ง โดยสุ่มเฉพาะโทเคนกลุ่มบนสุดที่มีความน่าจะเป็นรวมกันถึงค่า top_p เคล็ดลับคือควรปรับ temperature หรือ top_p เพียงตัวใดตัวหนึ่งในแต่ละครั้ง
# top_p usage example
response_narrow = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Continue: The sky is...'}],
top_p=0.1, # only very likely tokens (conservative, predictable)
temperature=1.0 # keep temperature at 1 when using top_p
)
response_wide = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Continue: The sky is...'}],
top_p=0.95, # most tokens eligible (creative, varied)
temperature=1.0
)ค่าปรับความถี่: การลดการซ้ำ
frequency_penalty จะลดแรงจูงใจของโมเดลในการใช้คำเดิมซ้ำ โดยปรับตามจำนวนครั้งที่คำนั้นปรากฏ ใช้ค่านี้เมื่อคำตอบยาว ๆ เริ่มซ้ำซาก ลองเริ่มที่ 0.3–0.7
# Frequency penalty to reduce repetition in long outputs
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{
'role': 'user',
'content': 'Write 5 tips for better sleep.'
}],
max_tokens=300,
frequency_penalty=0.5 # reduces repeating the same words/phrases
)
print(response.choices[0].message.content)ค่าปรับการปรากฏ: การเพิ่มความหลากหลายของหัวข้อ
presence_penalty จะผลักดันให้โมเดลนำเสนอหัวข้อใหม่ โดยลงโทษคำที่เคยปรากฏแล้วแม้เพียงครั้งเดียว เหมาะอย่างยิ่งกับการระดมความคิดที่ต้องการไอเดียสดใหม่และหลากหลาย
# Presence penalty for diverse brainstorming output
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{
'role': 'user',
'content': 'List 10 creative ways to use AI in a small business.'
}],
max_tokens=400,
presence_penalty=0.8 # encourages introducing different topics per item
)
print(response.choices[0].message.content)ลำดับ stop: จุดหยุดที่กำหนดเอง
พารามิเตอร์ stop จะรับรายการสตริงที่ทำให้การสร้างข้อความหยุดทันทีเมื่อพบสตริงเหล่านั้น (และจะไม่รวมสตริงดังกล่าวในผลลัพธ์) คุณสามารถหยุดที่การขึ้นบรรทัดใหม่เพื่อรับคำตอบบรรทัดเดียวที่สะอาด ดูโค้ดได้เลย
# Use stop sequences to get clean single-line output
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{
'role': 'user',
'content': 'What is the Python keyword for a function definition?\nAnswer:'
}],
max_tokens=20,
stop=['\n', '.'] # stop at newline or period - gets just the keyword
)
print(repr(response.choices[0].message.content)) # 'def'seed: ผลลัพธ์ที่ทำซ้ำได้
พารามิเตอร์ seed ทำให้ได้ผลลัพธ์ที่ทำซ้ำได้: เมื่อใช้ seed เดิมร่วมกับ temperature 0 จะได้คำตอบเหมือนเดิม เหมาะสำหรับการทดสอบ แต่ควรตรวจสอบ system_fingerprint เผื่อมีการเปลี่ยนแปลงระบบเบื้องหลัง
# Reproducible output with seed parameter
response1 = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Pick a random number from 1 to 10.'}],
temperature=0,
seed=42
)
response2 = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Pick a random number from 1 to 10.'}],
temperature=0,
seed=42
)
print(response1.choices[0].message.content) # same
print(response2.choices[0].message.content) # same
print('Fingerprint:', response1.system_fingerprint)การเลือกพารามิเตอร์สำหรับกรณีใช้งานทั่วไป
ไม่ต้องเดาค่าเองด้วยค่าที่ตั้งไว้ล่วงหน้าอย่างรวดเร็ว: ใช้ temperature 0 สำหรับการจัดประเภท 0.2 สำหรับคำถามและคำตอบเชิงข้อเท็จจริง และ 0.8–1.0 สำหรับการเขียนเชิงสร้างสรรค์ เริ่มจากค่าเหล่านี้แล้วปรับให้เหมาะกับงานของคุณ ดูโค้ดได้เลย
# Parameter presets for different task types
PRESETS = {
'classify': {'temperature': 0, 'max_tokens': 20},
'factual_qa': {'temperature': 0.2, 'max_tokens': 400},
'creative': {'temperature': 0.9, 'max_tokens': 1000, 'frequency_penalty': 0.3},
'code': {'temperature': 0.1, 'max_tokens': 2000},
'summary': {'temperature': 0.3, 'max_tokens': 300, 'frequency_penalty': 0.2},
}
def complete(prompt, task_type='factual_qa', **overrides):
params = {**PRESETS[task_type], **overrides}
return client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
**params
)Logprobs: การทำความเข้าใจความมั่นใจของโมเดล
logprobs จะบอกว่าโมเดลมั่นใจในโทเคนแต่ละตัวเพียงใด รวมถึงตัวเลือกอื่นที่โมเดลพิจารณา หากโมเดลมีความมั่นใจต่ำเกี่ยวกับข้อเท็จจริง นั่นอาจเป็นสัญญาณเตือนการสร้างข้อมูลหลอน ซึ่งมีประโยชน์ต่อการสร้างระบบที่ปลอดภัยยิ่งขึ้น
import math
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'The capital of France is?'}],
max_tokens=3,
logprobs=True,
top_logprobs=3 # show top 3 alternative tokens at each position
)
for token_log in response.choices[0].logprobs.content:
prob = math.exp(token_log.logprob) # convert log prob to probability
print(f'Token: {token_log.token!r} | Probability: {prob:.2%}')
for alt in token_log.top_logprobs:
print(f' Alt: {alt.token!r} -> {math.exp(alt.logprob):.2%}')การทดสอบผลของพารามิเตอร์อย่างเป็นระบบ
อย่าเดาค่าพารามิเตอร์ ให้ทดสอบแทน สร้างการค้นหาแบบตารางขนาดเล็กที่ใช้พรอมต์เดียวกันกับชุดค่าต่าง ๆ และให้คะแนนแต่ละชุด วิธีนี้เปลี่ยนการปรับแต่งจากงานเชิงศิลป์ให้กลายเป็นงานวิศวกรรม ดูโค้ดได้เลย
from itertools import product
# Systematic parameter grid search
temperatures = [0.0, 0.3, 0.7]
max_tokens_options = [100, 300]
test_prompt = 'Summarize the benefits of unit testing in 2 sentences.'
results = []
for temp, max_tok in product(temperatures, max_tokens_options):
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': test_prompt}],
temperature=temp,
max_tokens=max_tok
)
results.append({
'temperature': temp,
'max_tokens': max_tok,
'output': resp.choices[0].message.content,
'actual_tokens': resp.usage.completion_tokens
})ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจแนวคิดวิศวกรรม AI จากบทเรียนนี้
ทบทวนบทเรียน
คุณได้เรียนรู้วิธีควบคุมโมเดลแล้ว: temperature กำหนดความสุ่ม max_tokens จำกัดความยาว (อย่าลืมตรวจสอบ finish_reason!) ส่วนค่าปรับต่าง ๆ ช่วยลดการซ้ำและเพิ่มความหลากหลาย ขั้นต่อไป: การจัดการข้อผิดพลาด
คำถามที่พบบ่อย
บทเรียน “ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Engineering Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Engineering Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์”
ทดลองใช้ temperature, max_tokens และ top_p เพื่อดูว่าพารามิเตอร์เหล่านี้เปลี่ยนรูปแบบ ความยาว และความสร้างสรรค์ของผลลัพธ์อย่างไร จากนั้นเลือกการตั้งค่าที่เหมาะกับกรณีใช้งาน คุณปฏิบัติ AI Engineering Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Engineering Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Engineering Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Engineering Academy นี้ได้ไหม
ได้ บทเรียน AI Engineering Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่าสภาพแวดล้อม Python
- ปลายทางการเติมข้อความสนทนา
- ควบคุมพฤติกรรมของโมเดลด้วยพารามิเตอร์
- การจัดการข้อผิดพลาดและขีดจำกัดอัตราการเรียกใช้