0Pricing
AI Prompt Engineering · บทเรียน

การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน

การตั้งค่าที่แนะนำสำหรับการถามตอบเชิงข้อเท็จจริง การเขียนสร้างสรรค์ โค้ด และการสนทนา

การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน

กรอบการตัดสินใจเลือกพารามิเตอร์

การเลือกพารามิเตอร์การสุ่มไม่ใช่การเดาสุ่ม แต่เป็นไปตามตรรกะที่อิงจากข้อกำหนดของงาน มีมิติสำคัญสองประการที่กำหนดการตั้งค่าที่เหมาะสม:

  1. ความถูกต้องของผลลัพธ์: ผลลัพธ์จะต้องถูกต้องและคาดเดาได้มากเพียงใด
  2. ความหลากหลายของผลลัพธ์: ผลลัพธ์ควรแตกต่างกันและสำรวจแนวทางใหม่มากเพียงใด

ความถูกต้องสูง → อุณหภูมิต่ำ ความหลากหลายสูง → อุณหภูมิสูง งานส่วนใหญ่อยู่ระหว่างขั้วทั้งสองนี้

การถามตอบข้อเท็จจริง: ความถูกต้องคือสิ่งสำคัญที่สุด

สำหรับการตอบคำถามเชิงข้อเท็จจริง โดยทั่วไปจะมีคำตอบที่ถูกต้องอยู่หนึ่งคำตอบ ความสุ่มใด ๆ จะเพิ่มโอกาสที่คำตอบจะผิด ควรใช้:

  • อุณหภูมิ = 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. อุณหภูมิใน LLM คืออะไร
  2. การสุ่มตัวอย่างนิวเคลียสแบบ top-p
  3. การสุ่มตัวอย่างแบบ top-k
  4. การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน
← กลับไปที่ AI Prompt Engineering