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