AI Prompt Engineering · บทเรียน

ปัญญาประดิษฐ์สร้างคำตอบอย่างไร

การทำนายโทเค็น ความน่าจะเป็น และเหตุผลที่ปัญญาประดิษฐ์ไม่ได้ “คิด” เหมือนมนุษย์

บทเรียน 3 จาก 413 ขั้นตอน

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

ข้อความในฐานะปัญหาความน่าจะเป็น

โดยแก่นแล้ว โมเดลภาษาทำสิ่งหนึ่งอย่าง: ทำนายโทเค็นถัดไปจากโทเค็นทั้งหมดที่อยู่ก่อนหน้า

โทเค็นคือหน่วยย่อยของข้อความ ซึ่งมีขนาดประมาณหนึ่งคำหรือส่วนหนึ่งของคำ โมเดลจะกำหนดความน่าจะเป็นให้โทเค็นทุกตัวในคลังคำศัพท์ แล้วเลือกหนึ่งตัว จากนั้นทำซ้ำกระบวนการนี้ทีละโทเค็นจนสร้างผลลัพธ์ที่สมบูรณ์

โทเค็นคืออะไร

โทเค็นเป็นเหมือนอะตอมของการประมวลผลข้อความโดย LLM ข้อความภาษาอังกฤษจะถูกแบ่งเป็นโทเค็นโดยประมาณดังนี้:

  • คำที่พบบ่อย → คำละ 1 โทเค็น (the, run)
  • คำที่พบน้อยกว่า → แบ่งเป็น 2–3 โทเค็น (running → run + ning)
  • เครื่องหมายวรรคตอนและช่องว่าง → มักเป็นโทเค็นของตนเอง

โมเดลอย่าง GPT-4o และโคลดใช้ตัวแบ่งโทเค็นที่รองรับรายการคำศัพท์มากกว่า 100,000 รายการ รวมถึงส่วนย่อยของคำในหลายภาษา

import tiktoken

encoding = tiktoken.encoding_for_model('gpt-4o')

sentence = 'The temperature parameter controls randomness in token selection.'
tokens = encoding.encode(sentence)
token_strings = [encoding.decode([t]) for t in tokens]

print(f'Sentence: {sentence}')
print(f'Token count: {len(tokens)}')
print(f'Tokens: {token_strings}')

การสร้างแบบอัตถดถอย

การสร้างข้อความเป็นแบบ อัตถดถอย: โทเค็นใหม่แต่ละตัวจะถูกต่อท้ายข้อมูลเข้าก่อนการทำนายโทเค็นถัดไป

ดังนั้น เมื่อสร้างข้อความ 'ท้องฟ้าเป็นสีฟ้า' โมเดลจะ:

  • เห็น 'ท้องฟ้า' → ทำนาย 'เป็น'
  • เห็น 'ท้องฟ้า เป็น' → ทำนาย 'สี'
  • เห็น 'ท้องฟ้า เป็น สี' → ทำนาย 'ฟ้า'
  • เห็น 'ท้องฟ้า เป็น สี ฟ้า' → ทำนายการสิ้นสุดลำดับ

นี่เป็นเหตุผลที่การสร้างข้อความจะช้าลงเมื่อผลลัพธ์ยาวมาก เพราะโทเค็นแต่ละตัวต้องผ่านการประมวลผลไปข้างหน้าแบบเต็มรูปแบบ

# Simulated autoregressive token-by-token output via streaming
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

stream = client.chat.completions.create(
    model='gpt-4o',
    stream=True,     # receive tokens as they are generated
    messages=[{'role': 'user', 'content': 'Name five planets in our solar system.'}]
)

print('Tokens arriving one by one:')
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end='', flush=True)
print()  # newline at end

อุณหภูมิ: ควบคุมความสุ่ม

อุณหภูมิ เป็นตัวเลขระหว่าง 0 ถึง 2 ที่ปรับมาตราส่วนของการแจกแจงความน่าจะเป็นก่อนการสุ่มตัวอย่าง:

  • อุณหภูมิ 0: เลือกโทเค็นที่มีความน่าจะเป็นสูงสุดเสมอ — ให้ผลแน่นอนและซ้ำซาก
  • อุณหภูมิ 1: สุ่มตามความน่าจะเป็นดิบ — สมดุล
  • อุณหภูมิ 2: ทำให้ความน่าจะเป็นแบนราบ — สุ่มมากและบางครั้งไม่ปะติดปะต่อ

ใช้อุณหภูมิต่ำสำหรับงานข้อเท็จจริง และใช้อุณหภูมิสูงขึ้นสำหรับงานสร้างสรรค์

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

prompt = 'Continue this sentence with one word: The ocean is'

for temp in [0.0, 0.7, 1.5]:
    response = client.chat.completions.create(
        model='gpt-4o',
        temperature=temp,
        max_tokens=5,
        messages=[{'role': 'user', 'content': prompt}]
    )
    word = response.choices[0].message.content.strip()
    print(f'Temperature {temp}: "{word}"')

เหตุใดผลลัพธ์จึงแตกต่างกันในแต่ละครั้ง

แม้ใช้คำสั่งเดียวกัน การเรียกใช้โมเดลเดียวกันสองครั้งก็อาจให้ผลลัพธ์แตกต่างกันได้ สาเหตุมีดังนี้:

  • การสุ่มตัวอย่างอาศัยความน่าจะเป็น — โมเดลสุ่มจากการแจกแจง ไม่ได้ค้นจากตารางสำเร็จรูป
  • ความแตกต่างทางตัวเลขเล็กน้อยในการคำนวณเลขทศนิยมอาจส่งผลต่อเนื่องกัน
  • การประมวลผลแบบขนานของฮาร์ดแวร์ทำให้เกิดความไม่แน่นอนในการให้ผลซ้ำ

ตั้งค่า temperature=0 และ seed (หากรองรับ) เพื่อเพิ่มความสามารถในการทำซ้ำให้มากที่สุด

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

prompt = 'Give me a one-word color that feels calm.'

for run in range(3):
    response = client.chat.completions.create(
        model='gpt-4o',
        temperature=1.0,   # randomness ON
        max_tokens=5,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'Run {run + 1}: {response.choices[0].message.content.strip()}')

# For reproducible outputs use seed + temperature=0
response = client.chat.completions.create(
    model='gpt-4o',
    temperature=0,
    seed=42,
    max_tokens=5,
    messages=[{'role': 'user', 'content': prompt}]
)
print(f'Deterministic: {response.choices[0].message.content.strip()}')

การสุ่มแบบท็อป-พี

ท็อป-พี (การสุ่มแบบนิวเคลียส) เป็นอีกวิธีหนึ่งในการควบคุมความสุ่ม แทนที่จะปรับมาตราส่วนของความน่าจะเป็นทั้งหมด วิธีนี้จะจำกัดการสุ่มไว้เฉพาะชุดโทเค็นที่เล็กที่สุดซึ่งมีความน่าจะเป็นสะสมมากกว่า p

  • top_p=0.1: เฉพาะโทเค็นอันดับต้น ๆ มากที่สุด (ระมัดระวัง)
  • top_p=0.9: กลุ่มตัวเลือกที่กว้างขึ้น (สร้างสรรค์)
  • top_p=1.0: โทเค็นทั้งหมด (การแจกแจงทั้งหมด)

ในทางปฏิบัติ ทีมส่วนใหญ่จะปรับ อุณหภูมิ และคงค่าท็อป-พีไว้ที่ 1.0

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Conservative generation: top_p=0.1 restricts to high-confidence tokens
response_conservative = client.chat.completions.create(
    model='gpt-4o',
    top_p=0.1,
    max_tokens=30,
    messages=[{'role': 'user', 'content': 'What is the capital of Japan?'}]
)

# Creative generation: top_p=0.95 allows broader token pool
response_creative = client.chat.completions.create(
    model='gpt-4o',
    top_p=0.95,
    max_tokens=30,
    messages=[{'role': 'user', 'content': 'Write a poetic one-liner about the moon.'}]
)

print('Conservative:', response_conservative.choices[0].message.content)
print('Creative:    ', response_creative.choices[0].message.content)

ไม่เข้าใจอย่างแท้จริง — การจับคู่รูปแบบ

LLM ไม่ได้เข้าใจภาษาในแบบเดียวกับมนุษย์ แต่เป็นระบบจับคู่รูปแบบที่ซับซ้อนอย่างยิ่ง ซึ่งได้รับการฝึกจากคลังข้อความขนาดมหาศาล

เมื่อโมเดลตอบคำถามว่า “การสังเคราะห์ด้วยแสงคืออะไร” โมเดลไม่ได้เรียกคืนข้อเท็จจริงที่จัดเก็บไว้ แต่กำลังสร้างลำดับโทเคนที่มีความเป็นไปได้ทางสถิติว่าจะตามหลังรูปแบบคำถามนั้น โดยอาศัยการพบเอกสารที่คล้ายกันนับล้านฉบับระหว่างการฝึก

# Demonstration: the model can produce plausible-sounding but wrong answers
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Asking about something nonsensical — model may still try to answer
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=128,
    messages=[{
        'role': 'user',
        'content': (
            'What is the boiling point of happiness in degrees Celsius? '
            'Please just say "I cannot answer this" if the question makes no sense.'
        )
    }]
)
print(response.content[0].text)

การฝึกเทียบกับการอนุมาน

“ความรู้” ของโมเดลถูกตรึงไว้ระหว่างการฝึกด้วยคลังข้อความขนาดใหญ่ ในการอนุมาน (เมื่อคุณส่งคำสั่ง) โมเดลจะสร้างข้อความโดยอาศัยความรู้ที่ถูกตรึงไว้นั้น โดยไม่ได้เรียนรู้หรือค้นหาอินเทอร์เน็ต

ดังนั้น โมเดลจึงไม่สามารถรู้เกี่ยวกับเหตุการณ์ที่เกิดขึ้นหลังวันสิ้นสุดข้อมูลฝึก ไม่สามารถเข้าถึงที่อยู่เว็บ และไม่สามารถตรวจสอบได้ว่าข้อเท็จจริงใดเปลี่ยนแปลงไปนับตั้งแต่การฝึกหรือไม่

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Asking the model about its own knowledge cutoff
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=128,
    messages=[{
        'role': 'user',
        'content': (
            'What is your knowledge cutoff date? '
            'And can you access the internet right now to look up today\'s news?'
        )
    }]
)
print(response.content[0].text)

เกิดอะไรขึ้นภายในการส่งผ่านไปข้างหน้า

ในภาพรวม การทำนายโทเคนแต่ละครั้งประกอบด้วยขั้นตอนต่อไปนี้:

  1. แปลงโทเคนข้อมูลเข้าทั้งหมดเป็นเวกเตอร์ฝังตัวเชิงตัวเลข
  2. ส่งผ่านโทเคนเหล่านั้นไปยังชั้นทรานส์ฟอร์เมอร์หลายชั้น (กลไกความสนใจ + การส่งต่อไปข้างหน้า)
  3. สร้างการแจกแจงความน่าจะเป็นเหนือคำศัพท์ทั้งหมด
  4. สุ่มเลือกโทเคนหนึ่งรายการจากการแจกแจงนั้น

โมเดลสมัยใหม่มีพารามิเตอร์นับพันล้านรายการที่กำหนดรูปแบบการแปลงนี้ โดยทั้งหมดเรียนรู้ระหว่างการฝึกจากข้อความของมนุษย์

# You can inspect logprobs (token probabilities) to see the model's confidence
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    max_tokens=5,
    logprobs=True,
    top_logprobs=3,
    messages=[{'role': 'user', 'content': 'The opposite of hot is'}]
)

for token_info in response.choices[0].logprobs.content:
    print(f'Chosen token: "{token_info.token}"')
    for alt in token_info.top_logprobs:
        import math
        prob = round(math.exp(alt.logprob) * 100, 1)
        print(f'  Option "{alt.token}": {prob}% probability')

ลำดับหยุด

ลำดับหยุดจะแจ้งให้โมเดลหยุดการสร้างข้อความเมื่อสร้างสตริงที่กำหนดขึ้นมา ซึ่งมีประโยชน์สำหรับ:

  • ป้องกันไม่ให้โมเดลสร้างคำตอบมากกว่าหนึ่งรายการในรายการ
  • หยุดที่ตัวคั่น เช่น ### หรือ ---END---
  • บังคับให้ผลลัพธ์มีเพียงบรรทัดเดียว

หากไม่มีลำดับหยุด โมเดลจะสร้างข้อความต่อไปจนกว่าจะถึง max_tokens หรือทำนายโทเคนสิ้นสุดลำดับ

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Stop after the first item in a numbered list
response = client.chat.completions.create(
    model='gpt-4o',
    max_tokens=64,
    stop=['2.'],   # halt as soon as '2.' appears
    messages=[{
        'role': 'user',
        'content': 'List 5 programming languages, numbered 1 through 5.'
    }]
)
print(response.choices[0].message.content)
print('Stop reason:', response.choices[0].finish_reason)

นัยเชิงปฏิบัติสำหรับผู้เขียนคำสั่ง

การเข้าใจกลไกการสร้างข้อความช่วยให้คุณเขียนคำสั่งได้ดีขึ้น:

  • ใช้ค่าอุณหภูมิ 0 สำหรับงานที่ต้องการผลลัพธ์ที่สม่ำเสมอและเป็นข้อเท็จจริง
  • ใช้ค่าอุณหภูมิ 0.7-1.0 สำหรับงานเขียนสร้างสรรค์
  • ตรวจสอบข้อเท็จจริง — โมเดลสร้างข้อความที่ฟังดูน่าเชื่อถือ แต่ไม่ได้รับประกันความจริง
  • ใช้ลำดับหยุด เพื่อควบคุมความยาวของผลลัพธ์อย่างแม่นยำ
  • คำสั่งสั้น → ผลลัพธ์สร้างสรรค์มากขึ้นแต่ควบคุมได้น้อยลง
  • คำสั่งโดยละเอียด → ผลลัพธ์มีข้อจำกัดและมุ่งเน้นมากขึ้น
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Low temperature for factual classification
fact_response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=8,
    temperature=0,   # deterministic
    messages=[{'role': 'user', 'content': 'Is Paris the capital of France? Answer YES or NO only.'}]
)
print('Factual (temp=0):', fact_response.content[0].text.strip())

# Higher temperature for creative tasks
creative_response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=64,
    temperature=1.0,
    messages=[{'role': 'user', 'content': 'Write a surprising one-line poem about code.'}]
)
print('Creative (temp=1):', creative_response.content[0].text.strip())

ตรวจสอบความรู้

คุณได้เรียนรู้แล้วว่า LLM สร้างข้อความทีละโทเคนอย่างไร มาตรวจสอบความเข้าใจเกี่ยวกับค่าอุณหภูมิกัน

นักพัฒนากำลังสร้างแชตบอตฝ่ายบริการลูกค้าที่ต้องให้คำตอบเกี่ยวกับการเรียกเก็บเงินอย่างสม่ำเสมอและถูกต้องแม่นยำ ควรตั้งค่าอุณหภูมิเป็นเท่าใดจึงจะเหมาะสมที่สุด

ปัญญาประดิษฐ์สร้างคำตอบอย่างไร — ทบทวน

ตอนนี้คุณเข้าใจกลไกเบื้องหลังคำตอบจากปัญญาประดิษฐ์ทุกคำตอบแล้ว:

  • โมเดลทำนายโทเคนถัดไปทีละรายการ — การสร้างแบบออโตรีเกรสซีฟ
  • ค่าอุณหภูมิควบคุมปริมาณความสุ่มที่เติมเข้าไปในการเลือกโทเคน
  • การสุ่มแบบท็อป-พีจำกัดการสุ่มไว้เฉพาะกลุ่มแกนกลางของโทเคนที่มีความน่าจะเป็นสูง
  • โมเดลไม่ได้เข้าใจ แต่จับคู่รูปแบบในระดับมหาศาล
  • ความรู้ถูกตรึงไว้ระหว่างการฝึก — ไม่มีข้อมูลแบบทันทีและไม่มีการเข้าถึงอินเทอร์เน็ต
  • ลำดับหยุดช่วยให้คุณควบคุมได้อย่างแม่นยำว่าผลลัพธ์จะสิ้นสุดตรงไหน
เริ่มต้นได้ฟรี

เรียนรู้ AI Prompt Engineering ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
53
บทเรียน
199

คำถามที่พบบ่อย

บทเรียน “ปัญญาประดิษฐ์สร้างคำตอบอย่างไร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ปัญญาประดิษฐ์สร้างคำตอบอย่างไร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ 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 ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ปัญญาประดิษฐ์สร้างคำตอบอย่างไร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม

ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ทำความเข้าใจส่วนติดต่อการสนทนา
  2. ประเภทคำขอที่ปัญญาประดิษฐ์รองรับ
  3. ปัญญาประดิษฐ์สร้างคำตอบอย่างไร
  4. สิ่งที่ปัญญาประดิษฐ์ทำไม่ได้
← กลับไปที่ AI Prompt Engineering