ข้าม​ไป​ยัง​เนื้อหา

Context engineering คือ​อะไร

จบ​คอร์ส​ที่ 15 คุณ​ถือ​ของ​จริง​ติดมือ​มา​แล้ว​หนึ่ง​ชิ้น — agent support ลูกค้า​บน domain Order ที่ รัน​ได้: model claude-opus-4-8 (ใช้​เป็น​ตัวอย่าง ณ 2026-07 — id เลื่อน​ไหว​ตาม​เวลา) บวก tool สาม​ตัว getOrder / getDeliveryStatus / issueRefund บวก loop ที่​ป้อน​ผล​ของ tool กลับ​เข้า model จน​งาน​เสร็จ #15 สอน​คุณ ถือ model ให้​ถูก คอร์ส​นี้​สอน​สิ่ง​เดียว​ที่​ตัดสิน​ว่า agent ตัว​นั้น ดี​หรือ​ไม่ — คือ บริบท (context) ที่​มัน​เห็น​ใน​ทุก​เทิร์น และ​ก้าว​แรก​ของ​ทั้ง​คอร์ส​คือ​ปรับ​สายตา: มอง​สิ่ง​ที่​คุณ​สร้าง​เสร็จ​แล้ว​ใหม่ ไม่ใช่​ใน​ฐานะ “code ที่​เรียก model” แต่​ใน​ฐานะ สิ่ง​ที่​เรา​ป้อน​ให้ model เห็น

📦 code ตัวอย่าง

คอร์ส​นี้​ต่อย​อด​จาก agent Order ตัว​เดิม​ของ​คอร์ส​ที่ 15 (repo kaen-food-ordering) โดย​จะ​ค่อยๆ ประกอบ context layer คร่อม​มัน​ที​ละ​ชั้น — retrieval, memory, การ​จัด​งบ token, compaction และ​การ​จัด​ระเบียบ​ผล​ของ tool — บท​นี้​เป็น​บท​วาง​กรอบ​ความ​คิด ยัง​ไม่มี code ให้​รัน (ตั้งใจ​ให้​เป็น​เช่น​นั้น เพื่อ​ให้ retrieval ตัว​แรก​ที่​ลงมือ​สร้าง​ใน​บท​ที่ 2 มี​น้ำ​หนัก) ทุก​บท​หลัง​จาก​นี้​สร้าง​อยู่​บน​กรอบ​ที่​บท​นี้​วาง​ไว้

ทุก​อย่าง​ที่ model เห็น คือ context — ไม่ใช่​แค่​ข้อความ​ของ​ผู้​ใช้

หัวข้อ​ที่​มีชื่อ​ว่า “ทุก​อย่าง​ที่ model เห็น คือ context — ไม่ใช่​แค่​ข้อความ​ของ​ผู้​ใช้”

คน​ส่วน​ใหญ่​พอได้​ยิน​คำ​ว่า “context” จะ​นึกถึง​ข้อความ​ล่าสุด​ที่​ผู้​ใช้​พิมพ์​เข้า​มา แต่​นั่น​แคบ​เกิน​ไป​มาก Anthropic นิยาม​กว้าง​กว่า​นั้น — “Context refers to the set of tokens included when sampling from a large-language model (LLM).” แล้ว​ไล่​ส่วน​ประกอบ​ทั้งหมด​ว่า​คือ “the entire context state (system instructions, tools, [Model Context Protocol / MCP], external data, message history, etc).”

ลอง map ประโยค​นั้น​กลับ​ลง​บน agent ของ​คุณ​จาก​คอร์ส​ที่ 15 ตรงๆ ใน​ทุก​เทิร์​นที่​คุณ​เรียก model สิ่ง​ที่​เดิน​ทาง​เข้าไป​ไม่​ได้​มี​แค่​คำถาม​ของ​ลูกค้า แต่​มี​ทั้ง:

  • system prompt — บทบาท​และ​กติกา​ที่​คุณ​ตั้ง​ให้ agent
  • นิยาม​ของ tool ทั้ง​สาม​ตัว — schema ของ getOrder / getDeliveryStatus / issueRefund ที่​บอก model ว่า​เรียก​อะไร​ได้​บ้าง
  • ผล​ของ tool ที่​สะสม​พอก​ขึ้น​ทุกร​อบ — record ออ​เด​อร์ สถานะ​เดลิ​เว​อรี ผล​การ​คืน​เงิน ที่ loop ป้อน​กลับ​เข้าไป
  • ประวัติ​บท​สนทนา — ทุก​ข้อความ​ก่อน​หน้า​ใน running list ที่​คุณ​ส่ง​เข้าไป​ซ้ำ​ทุก​ครั้ง
  • ข้อความ​ล่าสุด​ของ​ผู้​ใช้ — ที่​คน​มัก​เข้าใจ​ผิด​ว่า​เป็น context ทั้งหมด ทั้ง​ที่​เป็น​แค่​ชิ้น​เดียว

ทั้ง​กอง​นี้​รวม​กัน​คือ​สิ่ง​ที่ model เห็น​ก่อน​พิมพ์ token แรก​ของ​คำ​ตอบ และ​การ​ดูแล​กอง​นี้​ให้​ดี​คือ​ศาสตร์​ที่​บท​นี้​เปิด — context engineeringContext Engineeringตาม​นิยาม​ของ Anthropic คือ 'ชุด​กลยุทธ์​ใน​การ​คัด​สรร​และ​รักษา​เซต​ของ token (ข้อมูล) ที่​เหมาะ​สม​ที่สุด​ระหว่าง​ที่ model กำลัง inference' — ไม่ใช่​แค่ prompt แต่​รวม​ทุก​อย่าง​ที่ model เห็น​ใน​แต่​ละ​เทิร์น (system prompt, tools, ผล​ของ tool, ประวัติ​บท​สนทนา) เป็น​วิวัฒนาการ​ต่อย​อด​จาก Prompt Engineering: prompt เขียน​ครั้ง​เดียว แต่ context ต้อง​คัด​สรร​ใหม่​ทุก​เทิร์น ดาว​เหนือ​ของ​ทั้ง​ศาสตร์​คือ 'หา​เซต high-signal token ที่​เล็ก​ที่สุด​ที่​ยัง​ทำให้​ได้​ผลลัพธ์​ที่​ต้องการ'Process ที่ Anthropic นิยาม​ไว้​ว่า “the set of strategies for curating and maintaining the optimal set of tokens (information) during LLM inference, including all the other information that may land there outside of the prompts.” — สังเกต​วรรค “outside of the prompts” ให้​ดี เพราะ​นั่น​คือ​หัวใจ: งาน​นี้​ไม่​ได้​จบ​ที่​การ​เขียน prompt

flowchart LR
  SP["system prompt<br/>บทบาท + กติกา"]
  TD["นิยาม tool 3 ตัว<br/>getOrder · getDeliveryStatus · issueRefund"]
  TR["ผลของ tool ที่สะสม<br/>ทุกเทิร์น"]
  H["ประวัติบทสนทนา<br/>สะสมพอกขึ้นทุกรอบ"]
  U["ข้อความล่าสุด<br/>ของผู้ใช้"]
  SP --> CW
  TD --> CW
  TR --> CW
  H --> CW
  U --> CW
  CW["context window<br/>งบ token จำกัด — ใช้แล้วหมด"] --> M["LLM สุ่มคำตอบ"]
  classDef budget fill:#0891b2,stroke:#064e5b,color:#f8fafc;
  class CW budget;

คำ​บรรยาย​ภาพ: ทั้ง​ห้า​แหล่ง — system prompt, นิยาม tool, ผล​ของ tool ที่​สะสม, ประวัติ​บท​สนทนา และ​ข้อความ​ล่าสุด​ของ​ผู้​ใช้ — ไหล​รวม​เข้า context window ก้อน​เดียว​ก่อน model จะ​สุ่ม​คำ​ตอบ ข้อความ​ของ​ผู้​ใช้​เป็น​แค่​หนึ่ง​ใน​ห้า ที่​เหลือ​คือ​สิ่ง​ที่ คุณ เป็น​คน​คัด​ว่า​จะ​ใส่ และ​ช่อง​สี​ฟ้า​คือ context window ที่​ไม่ใช่​ถัง​เปล่า​รอ​เติม แต่​เป็น​งบ token ที่​ใช้​แล้ว​หมด

context window คือ​งบ​ที่​ใช้​แล้ว​หมด ไม่ใช่​ถัง​ที่​เติม​ได้

หัวข้อ​ที่​มีชื่อ​ว่า “context window คือ​งบ​ที่​ใช้​แล้ว​หมด ไม่ใช่​ถัง​ที่​เติม​ได้”

ใน​คอร์ส​ที่ 15 คุณ​รู้จัก Context WindowContext Windowเซต​ของ token ทั้งหมด​ที่ model อ้างอิง​ได้​ตอน sampling — มอง​ให้​ถูก​คือ 'งบ​ประมาณ​จำกัด' ที่​ใช้​แล้ว​หมด ไม่ใช่ 'ถัง' ที่​เติม​ได้​เรื่อย ๆ ทุก token ที่​ใส่​เข้าไป​กิน​งบ​ก้อน​นี้​และ​ให้​ผล​ตอบแทน​ลด​ลง​เรื่อย ๆ (diminishing returns) สำหรับ agent ที่​วน​เป็น loop ข้อมูล​จะ​พอก​ขึ้น​ทุก​เทิร์น​จึง​ต้อง​คัด​สรร​ซ้ำ​ตลอดArchitecture มา​แล้ว​ใน​ฐานะ “หน่วย​ความ​จำ​ใช้​งาน” ที่​มี​เพดาน บท​นี้​ขอ​เปลี่ยน​วิธี​มอง​มัน​หนึ่ง​องศา​ที่​สำคัญ​มาก: อย่า​มอง​มัน​เป็น ถัง ที่​ยิ่ง​เติม​ยิ่ง​ดี แต่​ให้​มอง​เป็น งบ​ประมาณ ที่​ทุก​การ​ใช้​จ่าย​มี​ต้นทุน Anthropic พูด​ชัด — “Every new token introduced depletes this budget by some amount, increasing the need to carefully curate the tokens available to the LLM.” และ​สรุป​หลัก​ไว้​ว่า “Context, therefore, must be treated as a finite resource with diminishing marginal returns.” — ทรัพยากร​จำกัด​ที่​ให้​ผล​ตอบแทน​ลด​ลง​ต่อ​เนื่อง ยิ่ง​อัด​เข้าไป​มาก ไม่​ได้​แปล​ว่า​ดี​ขึ้น​ตาม​ส่วน

ทำไม​ถึง​เป็น​เช่น​นั้น? Anthropic อธิบาย​ด้วย​กรอบ​คิด​ชื่อ Attention BudgetAttention Budgetกรอบ​คิด (intuition) ที่ Anthropic ใช้​อธิบาย​ว่า model มี 'งบ​ความ​สนใจ' จำกัด​เวลา​ต้อง​อ่าน context จำนวน​มาก — เพราะ​ความ​สัมพันธ์​ระหว่าง token เป็น​แบบ n² ทุก token ใหม่​จึง​กิน​งบ​ก้อน​นี้ ⚠️ เป็น​เพียง​กรอบ​เชิง​สัญชาตญาณ ไม่ใช่​ตัวเลข​ที่​วัด​ได้​จริง ใช้​เพื่อ​เข้าใจ​ว่า​ทำไม context ต้อง​ถือ​เป็น​ทรัพยากร​จำกัดArchitecture — “LLMs have an ‘attention budget’ that they draw on when parsing large volumes of context.” เหตุผล​เชิงกล​ไก​คือ​ความ​สัมพันธ์​ระหว่าง token เป็น​แบบ “n² pairwise relationships for n tokens.” ยิ่ง token เยอะ ความ​สัมพันธ์​ที่ model ต้อง​แบ่ง​ความ​สนใจ​ไป​ดูแล​ก็​โต​แบบ​กำลัง​สอง

จุด​ที่​ต้อง​ระวัง​ไว้​ให้​ขึ้นใจ: “attention budget” เป็นก​รอบ​เชิง​สัญชาตญาณ ไม่ใช่​ตัวเลข​ที่​วัด​ออก​มา​ได้ ไม่มี field ไหน​ใน API คืน​ค่า “งบ​ความ​สนใจ​ที่​เหลือ” ให้​คุณ​อ่าน มัน​คือ วิธี​คิด ที่​ช่วย​อธิบาย​ว่า​ทำไม context ถึง​ต้อง​ถือ​เป็น​ทรัพยากร​จำกัด ไม่ใช่​มาตร​วัด​จริง (สิ่ง​ที่ วัด​ได้​จริง คือ​จำนวน token จาก field usage ซึ่ง​เรา​จะ​ลงมือ​วัด​กัน​ใน​บท​ที่ 4) การ​แยก​สอง​อย่าง​นี้​ให้​ขาด — intuition กับ measurement — คือ​วินัย​เดียว​กับ​ที่​คอร์ส #15 ยึด​มา​ตลอด

ถ้า​คุณ​เคย​ได้ยิน​คำ​ว่า “prompt engineering” มา​ก่อน คำถาม​ที่​ถูก​ต้อง​คือ context engineering ต่าง​จาก​มัน​ตรง​ไหน คำ​ตอบ​ของ Anthropic ตรง​ไป​ตรง​มา — “At Anthropic, we view context engineering as the natural progression of prompt engineering.” ไม่ใช่​ศาสตร์​คนละ​เรื่อง​ที่มา​แทนที่ แต่​คือ​ขั้น​ถัด​ไป​ที่​กว้าง​กว่า

เส้น​แบ่ง​อยู่​ที่ จังหวะ​เวลา prompt engineering คือ​การ​เขียน​คำ​สั่ง​ที่​ดี ครั้ง​เดียว — งาน​เขียน (authoring) ที่​ทำ​จบ​แล้ว​จบ​เลย ส่วน context engineering เป็น​งาน​ที่​ทำ ซ้ำ​ทุก​เทิร์น: “context engineering is iterative and the curation phase happens each time we decide what to pass to the model.” ทุก​ครั้ง​ที่ loop ของ​คุณ​จะ​เรียก model รอบ​ใหม่ คุณ (หรือ code ของ​คุณ) ต้อง​ตัดสิน​ใจ​อีก​ครั้ง​ว่า​คราว​นี้​จะ​ใส่​อะไร​เข้าไป​ใน​งบ

และ​นี่​คือ​เหตุผล​ที่ agent ทำให้​เรื่อง​นี้​คม​กว่า​แช​ตบ​อต​ตอบ​ครั้ง​เดียว​จบ​มาก — “An agent running in a loop generates more and more data that could be relevant for the next turn of inference, and this information must be cyclically refined.” agent ที่​วน​เป็น loop สร้าง​ข้อมูล​ใหม่​พอก​ขึ้น​ทุกร​อบ (ผล​ของ tool ที่​คุณ​เห็น​ใน​ไดอะแกรม​ข้าง​บน) ข้อมูล​กอง​นั้น​ต้อง​ถูก คัด​สรร​ซ้ำ​เป็น​วงจร ไม่ใช่​ปล่อย​ให้​พอก​จน​ล้น การ​เขียน prompt ดีๆ ครั้ง​เดียว​จึง​ไม่​พอ​อีก​ต่อ​ไป

ถ้า​จะ​ให้​เห็น​ภาพ​ใน​ภาษา​ที่​วิศวกร​สาย ML คุ้น Chip Huyen เทียบ​ไว้​ตรงๆ — “Context construction for foundation models is equivalent to feature engineering for classical ML models…” การ​ประกอบ context ให้ model ก็​เหมือน​การ​ทำ feature engineering ให้ model ML แบบ​ดั้งเดิม: คุณ​ไม่​ได้​โยน​ข้อมูล​ดิบ​ทั้งหมด​เข้า model แล้ว​หวัง​ผล แต่​คัด​และ​ปั้น input ให้​เป็น​สัญญาณ​ที่​ดี​ที่สุด​เท่า​ที่​ทำได้

ทุก​เทคนิค​ใน​คอร์ส​นี้​เล็ง​ไป​ที่​ประโยค​เดียวกัน — ดาว​เหนือ​ที่ Anthropic วาง​ไว้​ว่า “good context engineering means finding the smallest possible set of high-signal tokens that maximize the likelihood of some desired outcome.” อ่าน​ช้าๆ อีก​รอบ เพราะ​ทุก​คำ​มี​น้ำ​หนัก: smallest possible (เล็ก​ที่สุด​เท่า​ที่​ทำได้ — เพราะ​งบ​จำกัด) high-signal (สัญญาณ​สูง — ไม่ใช่​แค่​เยอะ) และ maximize the likelihood of some desired outcome (เพื่อ​ผลลัพธ์​ที่​ต้อง​การ​จริงๆ ไม่ใช่​ใส่​ให้​ครบ​ไว้​ก่อน)

หลัก​ข้อ​นี้​ไม่​เปลี่ยน​ไม่​ว่า​คุณ​จะ​ทำ​เทคนิค​ไหน Anthropic ย้ำ​ว่า “Whether you’re implementing compaction for long-horizon tasks, designing token-efficient tools, or enabling agents to explore their environment just-in-time, the guiding principle remains the same…” — และ​มัน​คือ​แกน​ที่​ร้อย​ทั้ง​แปดบท​ของ​คอร์ส​นี้​เข้า​ด้วย​กัน แต่ละ​บท​ที่​เหลือ​คือ วิธี​หนึ่ง​วิธี ใน​การ​เข้า​ใกล้​ดาว​เหนือ​ดวง​นี้

ที่​เหลือ​คือ​การ​ประกอบ context layer คร่อม agent Order ที​ละ​ชั้น แต่ละ​ชั้น​คือ​เครื่อง​มือ​หนึ่ง​ชิ้น​สำหรับ​หา “token สัญญาณ​สูง​ชุด​ที่​เล็ก​ที่สุด”:

  1. Retrieval (บท​ที่ 2) — เพิ่ม tool ตัว​ที่​สี่ searchOrderKnowledge ที่​ดึง​เฉพาะ​ข้อมูล​ที่​เกี่ยวข้อง​จาก​คลัง​นโยบาย/FAQ เข้า​มา​ใส่ context ตอน runtime แทนที่​จะ​ยัด​ทุก​อย่าง​ไว้​ล่วง​หน้า
  2. Memory (บท​ที่ 3) — ให้ agent เขียน​โน้ต​เก็บ​ไว้ นอก หน้าต่าง​แล้ว​อ่าน​กลับ​ข้าม session — ความ​จำ​สั้น​กับ​ความ​จำ​ยาว
  3. งบ​ประมาณ token (บท​ที่ 4) — วัด​การ​ใช้ token จริง​ของ agent #15 จาก field usage เทิร์น​ต่อ​เทิร์น มอง​หน้าต่าง​เป็น​เพดาน ไม่ใช่​เป้า
  4. Compaction สู้ context rot (บท​ที่ 5) — สรุป​ประวัติ​ที่​ยาว​ขึ้น​ให้​กระชับ โดย​รักษา​สิ่ง​ที่​ชี้ขาด​ไว้ ทิ้ง blob ที่​จัดการ​ไป​แล้ว
  5. จัด​ระเบียบ​ผล​ของ tool (บท​ที่ 6) — ปั้น​สิ่ง​ที่ tool คืน​กลับ​มา ให้​เหลือ​แต่ field ที่ agent ต้อง​ใช้​จริง ไม่ใช่ JSON ทั้ง​ก้อน
  6. แยก context ด้วย sub-agent (บท​ที่ 7) — เหตุผล​รูป​เดียว​ที่​ควร​แตก​งาน​ให้ agent ตัว​ที่​สอง และ​ทำไม​ต้อง​ใช้​อย่าง​ประหยัด (ต่อ​เนื่องจาก​คอร์ส #12)
  7. ประกอบ​เป็น context layer ตัว​เต็ม (บท​ที่ 8) — ร้อย​ทุก​ชั้น​เข้า​ด้วย​กัน​คร่อม agent Order แล้ว​ส่ง​ไม้​ต่อ​ให้​คอร์ส​ประเมิน​ผล #13

ปลาย​ทาง​ของ​คอร์ส​นี้​ไม่ใช่ agent ที่​ฉลาด​ขึ้น​เพราะ model ใหญ่​ขึ้น แต่​คือ agent เดิม​ที่ เห็น​ของ​ที่​ถูก​ต้อง ใน​ทุก​เทิร์น — บท​หน้า​เรา​เริ่ม​ลงมือ​ชั้น​แรก


🔗 อ้างอิง​ต้นทาง​ของ​บท​นี้

บท​นี้​อิง​ต้นทาง​ที่​ลง​วัน​ที่​กำกับ อ่าน​ต่อ​ได้​โดยตรง:

  • Anthropic, “Effective context engineering for AI agents” (2025-09-29) — นิยาม context engineering, context ว่า​คือ token ทั้ง​ชุด​ที่ model เห็น, “attention budget” กับ context ใน​ฐานะ​ทรัพยากร​จำกัด​ที่​ผล​ตอบแทน​ลด​ลง, การ​เป็น​วิวัฒนาการ​ต่อ​จาก prompt engineering และ​ดาว​เหนือ “smallest set of high-signal tokens”
  • Chip Huyen, “Building A Generative AI Platform” (2024-07-25) — การ​ประกอบ context ให้ foundation model เทียบ​ได้​กับ feature engineering ของ ML แบบ​ดั้งเดิม

เช็กความเข้าใจ — บทที่ 1

ข้อ 1 / 3

ในคอร์สนี้ คำว่า context ครอบคลุมอะไรบ้างในแต่ละเทิร์นที่เรียก model?