ก่อนจะสร้าง AI Agent หรือเขียนโค้ดเรียก API ได้อย่างถูกต้อง มีแนวคิดพื้นฐาน 3 อย่างที่ต้องเข้าใจก่อน บทความนี้อธิบายทั้งหมดแบบตรงไปตรงมา
Token คืออะไร
หลายคนนึกว่า LLM อ่านข้อความทีละคำหรือทีละตัวอักษร — แต่จริง ๆ แล้วโมเดลอ่านทีละ token ซึ่งเป็นหน่วยย่อยของข้อความที่เล็กกว่าคำแต่ใหญ่กว่าตัวอักษร
ลองดูตัวอย่างให้ชัดขึ้น:
| ข้อความ | จำนวน Token |
|---|---|
cat | 1 |
Bangkok | 2 (Bang + kok) |
Pydantic | 3 (Py + dan + tic) |
I love Python | 4 |
เหตุผลที่เรื่องนี้สำคัญมีสามข้อ — ค่าใช้จ่าย API คำนวณจาก token ที่ส่งเข้าบวกกับ token ที่ได้คืน, ขนาด Context Window วัดเป็น token, และ system prompt ของคุณกิน token ไปก่อนที่ user จะถามอะไรด้วยซ้ำ
Context Window — หน่วยความจำชั่วคราวของโมเดล
ลองนึกภาพกระดาษ A4 แผ่นหนึ่ง — ทุกอย่างที่คุณเขียนลงไปในกระดาษแผ่นนั้นคือสิ่งที่ Claude “เห็น” ได้ในการเรียก API ครั้งนั้น พอกระดาษเต็มก็ใส่ไม่ได้อีก นั่นคือ Context Window
┌──────────────────────────────────────────┐
│ 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 จะเริ่มนับหนึ่งใหม่เสมอ ถ้าอยากให้โมเดลรู้ว่าบทสนทนาก่อนหน้าคืออะไร คุณต้องส่งประวัติทั้งหมดมาเองทุกครั้ง
# ต้องส่งประวัติการสนทนามาเองทุกครั้ง
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 ล้วนเกี่ยวข้องในคำขอเดียวกัน:
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
]
)และนี่คือภาพรวมของกระบวนการทั้งหมดตั้งแต่ต้นจนจบ:
ข้อความของคุณ
↓
Tokenizer แบ่งเป็น token
↓
token ทั้งหมดถูกโหลดเข้า context window
↓
โมเดลทำนาย token ถัดไป (วนซ้ำหลายรอบ)
↓
Temperature ควบคุมการสุ่มเลือก token
↓
token ถูกแปลงกลับเป็นข้อความ → คำตอบของคุณ
Leave a Reply