🧠 LLM ทำงานยังไง — Tokens, Context Window และ Temperature

LLM ทำงานยังไง — Tokens, Context Window และ Temperature

ก่อนจะสร้าง AI Agent หรือเขียนโค้ดเรียก API ได้อย่างถูกต้อง มีแนวคิดพื้นฐาน 3 อย่างที่ต้องเข้าใจก่อน บทความนี้อธิบายทั้งหมดแบบตรงไปตรงมา

Token คืออะไร

หลายคนนึกว่า LLM อ่านข้อความทีละคำหรือทีละตัวอักษร — แต่จริง ๆ แล้วโมเดลอ่านทีละ token ซึ่งเป็นหน่วยย่อยของข้อความที่เล็กกว่าคำแต่ใหญ่กว่าตัวอักษร

📏 หลักจำง่าย: 1 token ≈ 0.75 คำภาษาอังกฤษ ≈ 4 ตัวอักษร

ลองดูตัวอย่างให้ชัดขึ้น:

ข้อความจำนวน Token
cat1
Bangkok2 (Bang + kok)
Pydantic3 (Py + dan + tic)
I love Python4

เหตุผลที่เรื่องนี้สำคัญมีสามข้อ — ค่าใช้จ่าย API คำนวณจาก token ที่ส่งเข้าบวกกับ token ที่ได้คืน, ขนาด Context Window วัดเป็น token, และ system prompt ของคุณกิน token ไปก่อนที่ user จะถามอะไรด้วยซ้ำ


Context Window — หน่วยความจำชั่วคราวของโมเดล

ลองนึกภาพกระดาษ A4 แผ่นหนึ่ง — ทุกอย่างที่คุณเขียนลงไปในกระดาษแผ่นนั้นคือสิ่งที่ Claude “เห็น” ได้ในการเรียก API ครั้งนั้น พอกระดาษเต็มก็ใส่ไม่ได้อีก นั่นคือ Context Window

diagram
┌──────────────────────────────────────────┐
│           CONTEXT WINDOW                 │
│  (200,000 tokens สำหรับ Claude Sonnet 4.6) │
│                                          │
│  [System Prompt]          ~500 tokens    │
│  [ประวัติการสนทนา]         ~2,000 tokens  │
│  [เอกสารที่วาง]            ~10,000 tokens │
│  [คำถามของ user]           ~50 tokens     │
│  [คำตอบของ Claude]         ~500 tokens    │
└──────────────────────────────────────────┘

สิ่งที่หลายคนเข้าใจผิดคือ Claude ไม่ได้ “จำ” การสนทนาของคุณข้ามรอบ — ทุกครั้งที่เรียก API จะเริ่มนับหนึ่งใหม่เสมอ ถ้าอยากให้โมเดลรู้ว่าบทสนทนาก่อนหน้าคืออะไร คุณต้องส่งประวัติทั้งหมดมาเองทุกครั้ง

⚠️ สำคัญมาก: Claude ไม่มีความจำระหว่าง API call — คุณต้องส่ง conversation history มาเองในทุกคำขอ
python
# ต้องส่งประวัติการสนทนามาเองทุกครั้ง
messages = [
    {"role": "user",      "content": "ชื่อฉันคือนิค"},
    {"role": "assistant", "content": "สวัสดีครับนิค!"},
    {"role": "user",      "content": "ฉันชื่ออะไร?"},  # ถ้าไม่มีสองบรรทัดบน Claude จะไม่รู้
]

Temperature — ปรับระดับความสร้างสรรค์

Temperature คือตัวเลขระหว่าง 0 ถึง 1 ที่บอกโมเดลว่าควรจะ “สม่ำเสมอ” หรือ “สร้างสรรค์” แค่ไหน

Temperatureพฤติกรรมเหมาะกับ
0.0ตอบเหมือนเดิมทุกครั้งสำหรับ input เดิมAgent, SQL, JSON, Tool calling
0.5มีความหลากหลายบ้าง แต่ยังโฟกัสสรุปความ, Q&A, วิเคราะห์
1.0สุ่มสูง — input เดิมได้ผลลัพธ์ต่างกันทุกรอบระดมสมอง, เขียนเชิงสร้างสรรค์

หลักง่าย ๆ คือถ้างานต้องการความถูกต้องแม่นยำ — เช่น query SQL, สร้าง JSON, หรือเรียก tool — ให้ใช้ temperature=0 เสมอ ส่วนงานเขียนหรืองานที่ต้องการความหลากหลายค่อยเพิ่มขึ้น


ทั้ง 3 อย่างทำงานร่วมกันในโค้ดจริงยังไง

เมื่อคุณเรียก Anthropic API ทั้ง token, context window และ temperature ล้วนเกี่ยวข้องในคำขอเดียวกัน:

python
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,       # จำนวน token สูงสุดที่ Claude ส่งคืน
    temperature=0,         # deterministic — เหมาะกับ agent และ structured output
    system="คุณคือผู้ช่วยตอบคำถามจากเอกสาร...",
    messages=[
        {"role": "user", "content": "คำถาม: ... เอกสาร: ..."}
        # ทุกอย่างที่นี่ถูกโหลดเข้า context window
    ]
)

และนี่คือภาพรวมของกระบวนการทั้งหมดตั้งแต่ต้นจนจบ:

flow
ข้อความของคุณ
   ↓
Tokenizer แบ่งเป็น token
   ↓
token ทั้งหมดถูกโหลดเข้า context window
   ↓
โมเดลทำนาย token ถัดไป (วนซ้ำหลายรอบ)
   ↓
Temperature ควบคุมการสุ่มเลือก token
   ↓
token ถูกแปลงกลับเป็นข้อความ → คำตอบของคุณ

สรุปในประโยคเดียว

tokenหน่วยที่โมเดลอ่าน ≈ 0.75 คำ · ใช้วัดค่า API และขนาด context
context windowทุกอย่างที่ Claude เห็นในการ call ครั้งนั้น · รีเซ็ตทุกครั้ง ไม่มีความจำ
temperature = 0ผลลัพธ์เหมือนเดิมทุกครั้ง · ใช้กับ agent, SQL, JSON
temperature = 0.7ผลลัพธ์หลากหลาย · ใช้กับการเขียนและระดมสมอง

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *